๋ณต์ (๋ ํ๋ฆฌ์นด) vs ์ค๋ฉ ๋ณต์ : ๊ณ ๊ฐ์ฉ์ฑ ์ค๋ฉ: ๋ถ์ฐ์ฒ๋ฆฌ
- Config Server : ๋ฉํ ์ ๋ณด ์ ์ฅ
- Mongos : ๋ผ์ฐํฐ ์๋ฒ ( for ๋ฐ์ดํฐ ์กฐํ, ์ ์ฅ)
- Shard Server : ๋ฐ์ดํฐ ์ ์ฅ
- ์ค์ผ์ผ ์ : cpu๋ ๋ฉ๋ชจ๋ฆฌ ๋ฑ์ ์๋ฒ ์ฌ์์ UP
- ์ค์ผ์ผ ์์ : ์๋ฒ์ ์ Up
- Scale Up์๋ ํ๊ณ.
- ์ค๋ฉ์ด ํ์ํ ๊ฒ ๊ฐ์ผ๋ฉด ์ฒ์๋ถํฐ ์ค๋ฉ ์ถ์ฒ( ๋ฐ์ดํฐ ๋ถ์ฐ, ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋ ์์ ๋น์ฉ)
- ์์ง ์ค๋ฉ
- ๊ธฐ๋ฅ๋ณ๋ก ์ปฌ๋ ์ ์ grouping, ๊ทธ๋ฃน๋ณ๋ก ์ค๋ ํ ๋น.
- ๊ตฌํ ๊ฐ๋จ.
- ํ๋ก๊ทธ๋จ ๋ณํ ์ต์ํ
- ์ค๋ ๊ฐ ๋ถํ ๋ถ๊ท ํ ๋น๋ฒ (์์ฃผ ์ฐ๋ ์ปฌ๋ ์ ์ด ์๋ ์ค๋ ๋ถํ๊ฐ ๋ ํด ์ ์์.)
- ์ํ ์ค๋ฉ
- ํ๋์ ์ปฌ๋ ์ ์ ์ ์ฅ๋ ๋ํ๋จผํธ๋ค์ ์์ญ๋ณ๋ก ํํฐ์ ๋ -> 1/N ๊ฐ์ฉ ๊ฐ ์ค๋๊ฐ ๋๋ ๊ฐ์ง๋ ๋ฐฉ์
- ์ค๋ฉ์ ๊ธฐ์ค ํ๋ ์ ์ (Shard key) ์ค์.
๋ณดํต ์์คํ ๊ตฌ์กฐ ํ๋ฆ
-
๋จ์ผ ์ค๋ -> ์์ง ์ค๋ฉ -> ์์ง ๋ฐ ์ํ ์ค๋ฉ
-
์ปฌ๋ ์ ์ ๋ํ ์ค๋ฉ ๋นํ์ฑํ -> ์๋์ผ๋ก ์์ง ์ค๋ฉ
-
์ปฌ๋ ์ ์ ๋ํ ์ค๋ฉ ํ์ฑํ -> ์ํ ์ค๋ฉ
- Shard Server : ๋ค์์ ๋ ํ๋ฆฌ์นด ์ ์ผ๋ก ๊ตฌ์ฑ
- Config Server : ํ๋์ ์ค๋ ํด๋ฌ์คํฐ์ ๋จ ํ๋์ ๋ ํ๋ฆฌ์นด ์ ๋ง ์กด์ฌ
- Mongos(๋ผ์ฐํฐ) : 1๊ฐ ์ด์.
- ๋ผ์ฐํฐ
- ์ฌ์ฉ์ ์ฟผ๋ฆฌ์์ฒญ ๋ฐ์์ ์ค๋์ ์ ๋ฌํ๊ณ ์ค๋๋ก๋ถํฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ ์ฌ์ฉ์์๊ฒ ๋ฐํ
- ์ค๋ ์๋ฒ
- ์ฌ์ฉ์ ๋ฐ์ดํฐ ์ ์ฅ
- ์ปจํผ๊ทธ ์๋ฒ
- ์คํ๋ฆฟ์ ๊ดํ ๋ฉํ ์ ๋ณด
- ๋ฐ์ดํฐ ๋ฐธ๋ฐ์ฑ ์์
- ์ค๋ฉ ๋์ง ์์ ๊ฐ์ฒด์ ๋ํ ์ ๋ณด๋ ์์ (๊ฐ ์ค๋ ์๋ฒ๊ฐ ๋ก์ปฌ๋ก ๊ด๋ฆฌ)
- ์ฌ์ฉ์ ์ฟผ๋ฆฌ๊ฐ ์ฐธ์กฐํ๋ ์ปฌ๋ ์ ์ ์ฒญํฌ ๋ฉํ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ (Config Server) ๋ผ์ฐํฐ ๋ฉ๋ชจ๋ฆฌ์ ์บ์
- ์ฌ์ฉ์ ์ฟผ๋ฆฌ ์กฐ๊ฑด ๋ถ์
- ์กฐ๊ฑด์ ์ค๋ฉ ํค ์กด์ฌ -> ํด๋น ์ค๋ฉ ํค๊ฐ ํฌํจ๋ ์ฒญํฌ ์ ๋ณด ๊ฒ์ํด์ ํด๋น ์ค๋์๋ง ์์ฒญ
- ์กฐ๊ฑด์ ์ค๋ฉ ํค X -> ๋ชจ๋ ์๋ฒ์ ์์ฒญ
- ๊ฒฐ๊ณผ ๋ณํฉํ์ฌ ๋ฐํ
-
๋ผ์ฐํฐ์ ์ฒญํฌ ๋ฉํ ์ ๋ณด ์์ ๊ฒฝ์ฐ
-
๋ฉํ ์ ๋ณด๊ฐ ์ค๋๋์ด ์ค๋ ์๋ฒ์์ ๋ฐ์ ๋ฐ์ดํฐ์ ๋ง์ง ์์ ๋
-> ์ปจํผ๊ทธ ์๋ฒ ๋ถํ๋ ์ ์ ํธ
์ค๋ฉ๋ ํด๋ฌ์คํฐ๋ฅผ ์ด์ํ๋ ๋ฐ ์์ด ํ์ํ ๋ชจ๋ ์ ๋ณด ์ ์ฅ.
์ปจํผ๊ทธ ์๋ฒ์ ์ง์ ๋ก๊ทธ์ธ ํ์ฌ ํ์ธ ํ ์๋ ์์ง๋ง, ์ผ๋ฐ์ ์ผ๋ก ๋ผ์ฐํฐ๋ฅผ ์ด์ฉํด์ MongoDB ํด๋ฌ์คํฐ์ ๋ก๊ทธ์ธํ ๋ค์ config ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์ด๋ํ๋ฉด ํ์ํ ๋ฐ์ดํฐ ์กฐํํ ์ ์๋ค.
-
database
- ์ค๋ ํด๋ฌ์คํฐ๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ชฉ๋ก ๊ด๋ฆฌ
- ์ค๋ฉ ์ฌ๋ถ, ํ๋ผ์ด๋จธ๋ฆฌ ์ค๋๊ฐ ์ด๋ ์ค๋์ธ์ง
-
collections
- ์ค๋ ํด๋ฌ์คํฐ๊ฐ ๊ฐ์ง๊ณ ์๋ ์ปฌ๋ ์ ์ ๋ชฉ๋ก ๊ด๋ฆฌ
- ์ค๋ฉ๋์ง ์์ ์ปฌ๋ ์ ์ ๊ฐ ๋ก์ปฌ ์ค๋ ์๋ฒ์ ์ ์ฅ
- ๋ณ๊ฒฝ ์์ , ์ญ์ ๋ ์ปฌ๋ ์ ์ธ์ง ์ฌ๋ถ, ์ค๋ฉ ํค, ์ค๋ฉ ํค๊ฐ ์ ๋ํค์ธ์ง ์ฌ๋ถ
-
chunks
- ์ค๋ฉ๋ ์ปฌ๋ ์ ์ ๋ชจ๋ ์ฒญํฌ ์ ๋ณด ๊ด๋ฆฌ
- ์ฒญํฌ๊ฐ ํฌํจ๋ ์ปฌ๋ ์ ์ ๋ค์์คํ์ด์ค, ์ฒญํฌ๊ฐ ๊ฐ์ง๋ ๊ฐ์ ์์, ๋ ๋ฒ์, ์ค๋ ์ด๋ฆ
-
shards
- ๋ชจ๋ ์ค๋ ์๋ฒ์ ์ ๋ณด๋ฅผ ๋ ํ๋ฆฌ์นด ์ ๋จ์๋ก ๊ด๋ฆฌ
- host, tags(์ง์ญ ๊ธฐ๋ฐ ์ค๋ฉ์ผ ๋ ํ๊ทธ ๋ชฉ๋ก)
-
mongos
- ๋ผ์ฐํฐ๋ ๋งค 30์ด๋ง๋ค ์ค๋ ํด๋ฌ์คํฐ ๋ชจ๋ ๋ฉค๋ฒ์ ping ๋ฉ์์ง๋ฅผ ํตํด ํ์ธ
- ์ธ์คํด์ค๊ฐ ์ข ๋ฃ๋์ด๋ ์ญ์ ๋์ง ์์
- ์๋ฒ์ ํฌํธ๋ฅผ _id ํ๋์ ์ ์ฅ, ์คํ ์ฌ๋ถ ๋ฐ ํ ๋ฉ์์ง ์ฃผ๊ณ ๋ฐ์ ์์ ์ ์ฅ
-
settings
-
์ฒญํฌ์ ๋ฐธ๋ฐ์ฑ๊ณผ ๊ด๋ จ๋ ์์ ์ ์ค์ ์ ์ฅ
{"_id": "chunkSize", "value": 64} // ์ฒญํฌ ์ฌ์ด์ฆ 64MB {"_id": "balancer", "stopped": false} // ๋ฐธ๋ฐ์ ์๋ ์ฌ๋ถ {"_id": "autosplit", "enabled": true} // ์๋ ์ฒญํฌ์คํ๋ฆฟ ์ฌ๋ถ
-
-
version
- ๋ฒ์ ์ ๋ณด
-
lockpings
- ์ค๋ ํด๋ฌ์คํฐ ๊ฐ ๋ฉ๋ฒ์ ์ปจํผ๊ทธ ์๋ฒ์์ ์ฐ๊ฒฐ ํ์ธ ์ ๋ณด
-
locks
- ์ค๋ ์๋ฒ๋ ๋ผ์ฐํฐ ๋ฉค๋ฒ๋ค์ด ์๋ก์ ์์ ์ ๋๊ธฐํํ๋ฉด์ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉํ๋ ์ปฌ๋ ์
-
changelog
- ์ปจํผ๊ทธ ์๋ฒ์ ๋ฉํ ์ ๋ณด๋ณ๊ฒฝ์ ์ ๋ฐํ ์ด๋ฒคํธ์ ๊ดํด ์ ๋ณด์ฑ ์ด๋ ฅ ๊ด๋ฆฌ
ํด๋ฌ์คํฐ์ ๋ฉํ ์ ๋ณด๋ ์ฌ์ฉ์ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ ์ ์ง๋ฅผ ์ํ ๋งค์ฐ ์ค์ํ ์ ๋ณด์ด๋ฏ๋ก Config Server๋ฅผ 3๋ ์ด์์ผ๋ก ๋ณต์ ํ ๊ฒ์ ๊ถ์ฅ.
- ๋ฏธ๋ฌ๋ง ๋ ํํ์ ๋ฐ์ดํฐ ๋ณต์ ๋ฐฉ์ ์ฌ์ฉ (3.2 ์ด์ ๋ฒ์ )
- ์ฌ์ฉ์ ๋ฐ์ดํฐ์ ๋์ผํ๊ฒ ๋ ํ๋ฆฌ์นด ์ ์ผ๋ก ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ ์ ๊ณต (3.2 ์ด์ ๋ฒ์ )
๋ฏธ๋ฌ๋ง ๋ฐฉ์์ผ๋ก config server์ ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐํ ํ๋ ๋ฐฉ์์ผ๋ก ์๋ฒ๋ค์ ๊ฐ๊ฐ ๋ฐ๋ก ์ค์นํ๊ณ ์ด์ ํ๋ก๊ทธ๋จ(MongoDb์๋ฒ & ๋ผ์ฐํฐ์๋ฒ)์์ ๋ชจ๋ ์ ์ํ์ฌ ๊ฐ ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ๋๊ธฐํ ํ๋ค.
config ์ ๋ณด๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ ํ ๋, config server๋ค์ ์ ์ํ์ฌ ๋ณ๊ฒฝ(UPDATE)ํ๋ ๋ฌธ์ฅ์ ๊ฐ๊ฐ ์คํํ๊ณ ๋ชจ๋ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋๋ฉด ์ปค๋ฐ์ ์ํํ๋ ๋ถ์ฐ ํธ๋์ญ์ ์ ์คํํ๋ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ๋๋ค.
์ด๋ฌํ ๋ถ์ฐ ํธ๋์ญ์ ์ฒ๋ฆฌ ๋ฐฉ์์ config server์ ๋๊ธฐํ ๋ฌธ์ ๋ค์ ์์ฃผ ์ ๋ฐํ๋ ์์ธ์ด ๋๋ค. ์ ๊ธ ํ ์ด๋ธ์ ๋๊ธฐํํ์ง ๋ชปํด ๋ผ์ฐํฐ ์๋ฒ๊ฐ ์ฒญํฌ ์คํ๋ฆฟ์ด๋ ๋ฐธ๋ฐ์ฑ์ ์คํํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ ์กด์ฌํ๊ณ ์ด๋ฐ ๊ฒฝ์ฐ์๋ ์๋์ผ๋ก ๋๊ธฐํ ํด์ผ ํ๋ค. ์ ์ ์ปจํผ๊ทธ ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ๋คํํด ๋น์ ์ ์๋ฒ์ ์ ์ฌ ( ๋ฐ์ดํฐ ๋ ์ง๋ฅผ ํตํด ์ต์ ์ฌ๋ถ ํ๋จ )
3.2 ๋ฒ์ ๋ถํฐ๋ Deprecated, 3.4๋ฒ์ ๋ถํฐ๋ ๋ฏธ๋ฌ๋ง ๋ฐฉ์์ ์ปจํผ๊ทธ ์๋ฒ ๊ตฌ์ฑ์ด ์์ ํ ์์ด์ก๋ค.
์ผ๋ฐ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ค๋ ์๋ฒ์ฒ๋ผ ๋ ํ๋ฆฌ์นด ์ ์ผ๋ก ๊ตฌํํจ์ผ๋ก์จ ์ปจํผ๊ทธ ์๋ฒ์ ์ค๋ ์๋ฒ์ ๊ตฌ์ฑ๋ฐฉ์์ด ๊ฐ์์ก๋ค.
๋ ํ๋ฆฌ์นด ์ ์ผ๋ก ๊ตฌ์ถํ ๋์ ๋ค์๊ณผ ๊ฐ์ ์กฐ๊ฑด์ ๋ง์กฑํด์ผ ํ๋ค.
- ์ปจํผ๊ทธ ์๋ฒ๋ WiredTiger ์คํ ๋ฆฌ์ง ์์ง์ ์ฌ์ฉํด์ผ ํ๋ค. (must)
- ๋ ํ๋ฆฌ์นด ์ ์ ์๋นํฐ๋ฅผ ๊ฐ์ง ์ ์๋ค.
- ๋ ํ๋ฆฌ์นด ์ ์ ์ง์ฐ๋ ๋ฉค๋ฒ๋ฅผ ๊ฐ์ง ์ ์๋ค.
- ์ต์ 3๊ฐ ์ด์์ ๋ฉค๋ฒ๋ก ๊ตฌ์ฑํด์ผ ํ๋ค. (๊ถ์ฅ ์ฌํญ)
ํด๋ผ์ด์ธํธ๋ ์ปจํผ๊ทธ ์๋ฒ์ ํ๋ผ์ด๋จธ๋ฆฌ ๋ฉค๋ฒ๋ก ์ ์ํ์ฌ ์ฟผ๋ฆฌ๋ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ๋ช ๋ น์ ์คํํ๋ค.
์ต์ 3๋ ์ด์ ํฌ์ ๊ถ์ฅ
๋ฏธ๋ฌ๋ง์ผ ๋๋ 1๋ ๋๋ 3๋๋ง ํ์ฉํ๋๋ฐ ์ด๋ ์ปจํผ๊ทธ ์๋ฒ ์ฝ๋ ์์ ๊ณ ์ ๋ ์์ซ๊ฐ์ด๋ค. ๋ ํ๋ฆฌ์นด ์ ๋ฐฉ์์์๋ ์ต์ 3๊ฐ ์ด์์ ๋ฉค๋ฒ๋ฅผ ๊ถ์ฅํ๊ณ ์๋ฒ 1๋๊ฐ ์ฃฝ์ ๋๋ฅผ ๊ณ ๋ คํด ํ์ ๊ฐ๋ก ๋ง์ถฐ์ผ ํ๋ค. ๋ชจ๋ ๋ฉํ ์ ๋ณด ์กฐํ ๋ฐ ๋ณ๊ฒฝ ์ฟผ๋ฆฌ์ ReadConcern๊ณผ WriteConcern์ "majority"๋ก ์ค์ ํ๋๋ฐ, ์ด๋ ์ ์ฒด ๋ ํ๋ฆฌ์นด ์ ๋ฉค๋ฒ์ ๊ณผ๋ฐ์์ ์ ๊ทผํ ์ ์์ด์ผ๋ง ์ฟผ๋ฆฌ ์ํ ํ ์ ์๋ค. ์ฆ, ์ปจํผ๊ทธ ์๋ฒ๊ฐ 2๋์ผ ๊ฒฝ์ฐ ๋ฉค๋ฒ ์ค ํ๋๋ง ์ฃฝ์ด๋ ๋ฉํ ์ ๋ณด ์กฐํ ๋ฐ ๋ณ๊ฒฝ์ด ๋ถ๊ฐํด์ง๋ค.
- ์ปจํผ๊ทธ ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ
- ์ฒญํฌ ๋ง์ด๊ทธ๋ ์ด์ ์คํ ์
- ์ฒญํฌ ์คํ๋ฆฟ ์คํ ์
- ์ปจํผ๊ทธ ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ๊ฒฝ์ฐ
- ๋ผ์ฐํฐ ์๋ฒ๊ฐ ์๋ก ์์๋๋ ๊ฒฝ์ฐ(ํน์ ์ฌ์์)
- ์ปจํผ๊ทธ ์๋ฒ์ ๋ฉํ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๊ฒฝ์ฐ
- ์ฌ์ฉ์ ์ธ์ฆ ์ฒ๋ฆฌ ์
์์ ๊ฐ์ ๊ฒฝ์ฐ๊ฐ ์๋๋ผ๋ฉด ์ปจํผ๊ทธ ์๋ฒ์ ์ฐ๊ฒฐํ ์ ์๋๋ผ๋ ์ฌ์ฉ์์ ์ฟผ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ๋ ๋ฌธ์ ๊ฐ ์๋ค. ํ์ง๋ง, ์ปจํผ๊ทธ ์๋ฒ์ ์ ์์ด ๋ถ๊ฐ ํ๋ค๋ฉด ์๋ก์ด ์ปค๋ฅ์ ์์ฑ์ด ๋ถ๊ฐ(๊ธฐ์กด ์ปค๋ฅ์ ์์์ ์ฟผ๋ฆฌ ์คํ์ ๊ฐ๋ฅ) ํ๋ฏ๋ก ์ฅ์ ๋ก ์ฐ๊ฒฐ๋ ์ ์๋ค. ๊ทธ๋ฌ๋ ๊ฐ์ฉ์ํ๋ฅผ ์ ์งํ๋ผ!
๋ผ์ฐํฐ ์๋ฒ๋ ์ฌ์ฉ์์ ์ฟผ๋ฆฌ ์์ฒญ์ ์ค๋ ์๋ฒ๋ก ์ ๋ฌํ๊ณ ์ค๋ ์๋ฒ๋ก๋ถํฐ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ณํฉํด์ ๋ค์ ์ฌ์ฉ์์๊ฒ ๋ฐํํ๋ ํ๋ก์ ์ญํ ์ ์ํํ๋ค.
- ์ฌ์ฉ์ ์ฟผ๋ฆฌ๋ฅผ ์ ๋ฌํด์ผ ํ ์ค๋ ์๋ฒ ๊ฒฐ์ ๋ฐ ํด๋น ์ค๋๋ก ์ฟผ๋ฆฌ ์ ์ก
- ์ค๋ ์๋ฒ๋ก๋ถํฐ ๋ฐํ๋ ๊ฒฐ๊ณผ ์กฐํฉํ์ฌ ์ฌ์ฉ์์๊ฒ ๋ฐํ
- ์ค๋๊ฐ ์ฒญํฌ ๋ฐธ๋ฐ์ฑ ๋ฐ ์ฒญํฌ ์คํ๋ฆฟ ์ํ
๋ผ์ฐํฐ๋ ์ปจํผ๊ทธ ์๋ฒ๋ก๋ถํฐ ํด๋ฌ์คํฐ์ ๋ฉํ ์ ๋ณด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์บ์ํ๊ณ ์์ด์ ์ฌ์ฉ์ ์ฟผ๋ฆฌ๋ฅผ ์ด๋ ์ค๋ ์๋ฒ๋ก ์ ๋ฌํด์ผ ํ ์ง ํ๋จ ๊ฐ๋ฅํ๋ค.
๋ผ์ฐํฐ๋ ๊ฐ ์ค๋๊ฐ ๋ด๋ ค์ค ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋ก ๋ฐํํ๋๊ฒ ์๋๋ผ ํ ๋ฒ์ ํํฐ๋ง์ ๊ฑฐ์น๋ค. ์ฒญํฌ ๋ง์ด๊ทธ๋ ์ด์ ์ค์ด๊ฑฐ๋ , ์ฒญํฌ ๋ง์ด๊ทธ๋ ์ด์ ๋์ค์ ์คํจ ํ์ ๋์ ์ค๋ ํค ๊ธฐ์ค์ ๋ง์ง ์๋ ๋ํ๋จผํธ๋ค์ ์ค๋๋ก๋ถํฐ ๋ฐ์ ์ฌ ์ ์๋๋ฐ ์ด๋ฌํ ๋ํ๋จผํธ๋ค์ ์ ํจ์ฑ์ ์ฒดํฌํด์ ์ ํจํ์ง ์์ ๋ฐ์ดํฐ๋ ๋ฒ๋ฆฌ๊ณ ๋๋จธ์ง๋ง ๋ฐํํ๋ค.
๋ํ, ์ ๋ ฌ์ด๋ LIMIT ๊ทธ๋ฆฌ๊ณ SKIP ๊ฐ์ ํน์ ์ฟผ๋ฆฌ ์ต์ ์ ๋ํด์ ํน์ํ ์ฒ๋ฆฌ๋ฅผ ์ํํ๊ธฐ๋ ํ๋ค. ์ ๋ ฌ์ด ํ์ํ์ง ์์ ์ฟผ๋ฆฌ์ผ ๋๋ ๊ฐ ์ค๋๋ก๋ถํฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ผ์ด๋-๋ก๋น ๋ฐฉ์์ผ๋ก ๊ฐ์ ธ์จ ๋ค์ ๋ฐํํ๋ค.ํ์ง๋ง ์ ๋ ฌ์ด ํ์ํ ๋์๋ ๋ผ์ฐํฐ๊ฐ ์ค๋ ์๋ฒ๋ค ์ค์์ ํ๋ผ์ด๋จธ๋ฆฌ ์ค๋๋ฅผ ๊ฒฐ์ ํ์ฌ "$orderby" ์ต์ ์ ๊ฐ์ด ์ฟผ๋ฆฌ์ ์ ์กํ๋ค. ๊ทธ๋ฌ๋ฉด ํ๋ผ์ด๋จธ๋ฆฌ ์ค๋๊ฐ ๋๋จธ์ง ์ค๋๋ก๋ถํฐ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ ์ ๋ ฌ ์ํ ํ ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ๋ผ์ฐํฐ ์๋ฒ๋ก ๋ฐํํ๋ค.
์ฌ์ฉ์์ ์ฟผ๋ฆฌ์ ์ค๋ฉ ๊ธฐ์ค ํค ๊ฐ์ ๋ํ ์กฐ๊ฑด์ ๊ฐ์ง๊ณ ์๋๋์ ๋ฐ๋ผ ์ฟผ๋ฆฌ ์์ฒญ์ด ๋ฌ๋ผ์ง๋ค.
์ค๋ ํค ์กฐ๊ฑด์ ๊ฐ์ง ์ฌ์ฉ์ ์ฟผ๋ฆฌ์ ๋ํด ๋ผ์ฐํฐ๋ ์กฐ๊ฑด์ ๋ถ์ํด์ ์ฌ์ฉ์ ์ฟผ๋ฆฌ๊ฐ ์ํ๋ ๋ฐ์ดํฐ๊ฐ ์๋ ์ค๋์๋ฒ(๋ค)๋ก๋ง ์์ฒญํ๋ค.
์ค๋ ํค๋ฅผ ์ฟผ๋ฆฌ ์กฐ๊ฑด์ผ๋ก ๊ฐ์ง์ง ์๋ ๊ฒฝ์ฐ์๋ ๋ผ์ฐํฐ๊ฐ ์์ ๋ฒ์๋ฅผ ํน์ ์ค๋๋ก ์ค์ผ ์๊ฐ ์๋ค. ์ด๋ฐ ๊ฒฝ์ฐ์๋ ๋ชจ๋ ์ค๋๋ก ์ฟผ๋ฆฌ๋ฅผ ์์ฒญํด์ผ ํ๊ณ ๋ชจ๋ ์ค๋๋ก๋ถํฐ ๋ฐํ๋ ๊ฒฐ๊ณผ๋ค์ ๋ณํฉํด์ ์ฌ์ฉ์์๊ฒ ๋ฐํํด์ผ ํ๋ค.
๋ค์๊ณผ ๊ฐ์ ์ฟผ๋ฆฌ๋ ์ค๋ ํค์ ์ ํ ๋ฌด๊ดํ๊ฒ ํญ์ ๋ธ๋ก๋์บ์คํธ ์ฟผ๋ฆฌ ๋ฐฉ์์ผ๋ก๋ง ์ฒ๋ฆฌ๋๋ค.
- ๋ค์ค ์ ๋ฐ์ดํธ(Multi-Update)
- UpdateMany()์ DeleteMany() ์ ๋ฐ์ดํธ ๋์ ๊ฒ์ ์กฐ๊ฑด์ด ๋ฐ๋์ ์ค๋ ํค๋ฅผ ๋ชจ๋ ํฌํจํ๋ ๊ฒฝ์ฐ์๋ง ํ๊ฒ ์ฟผ๋ฆฌ๋ก ์คํํ ์ ์๋ค. ๋ณตํฉ ํ๋๋ฅผ ์ค๋ ํค๋ก ๊ฐ์ง๋ ์ปฌ๋ ์ ์์๋ ์ค๋ ํค๋ฅผ ๊ตฌ์ฑํ๋ ๋ชจ๋ ํ๋๊ฐ ์กฐ๊ฑด์ผ๋ก ์ฌ์ฉ๋์ด์ผ๋ง ํ๊ฒ์ฟผ๋ฆฌ๋ก ์คํ ๊ฐ๋ฅ
2.x ๋ฒ์ ์์๋ ์ค๋๋ก๋ถํฐ ์ ๋ฌ ๋ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ ฌํ๋ ์์ ๋ ์ผ๋ถ ์ํ 3.x ๋ฒ์ ์์๋ถํฐ๋ ์ ๋ ฌ๊ณผ ๊ด๋ จ๋ ๋ฌด๊ฑฐ์ด ์์ ์ ๋ชจ๋ ์ค๋ ์๋ฒ๋ก ์ฎ๊ฒจ์ก๋ค. ์ด๋ ๋ผ์ฐํฐ๋ฅผ ์์ฃผ ๊ฐ๋ณ๊ณ ๋น ๋ฅด๊ฒ ๊ตฌํํ๊ณ ์ ํ๋ MongoDB์ ๋ฐฉํฅ์ฑ์ด ์ ๋ณด์ด๋ ๋ถ๋ถ์ด๋ค.
์ค์์ฑ์ด ๋จ์ด์ง๋ ์ปดํฌ๋ํธ์ด๋ค ๋ณด๋ ๋ฐฐํฌ ๋ฐฉ๋ฒ์ ๋ํ ๊ณ ๋ฏผ์ด ์๊ธด๋ค.
์ฅ์
-
ํ๋์ ๋ฌผ๋ฆฌ ์ฅ๋น์ ์ฅ์ ๊ฐ ๋๋ฉด ํด๋น ์ฅ๋น๋ง ์๋ ๋ฉ์ถ๊ณ ๋๋จธ์ง ์๋ฒ๋ค์ ์ ์ ์๋
-
์์ฉ ํ๋ก๊ทธ๋จ๊ณผ ๊ฐ์ ๋ฌผ๋ฆฌ ์๋ฒ ์์น ๋คํธ์ํฌ ๋น์ฉ ์ต์ํ (๋ก์ปฌ ์ปค๋ฅ์ )
๋จ์
- ์์ฉํ๋ก๊ทธ๋จ ๊ฐ์ ์ฆ๊ฐ์ ํจ๊ป ์ค๋์๋ฒ๋ค์ ์ปค๋ฅ์ ์ฆ๊ฐ
- ๋ผ์ฐํฐ ์๋ฒ๋ง ์ฃฝ์ ๊ฒฝ์ฐ -> ์ด์์๋ ์์ฉ ํ๋ก๊ทธ๋จ์์์ ์์ฒญ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌ??
์ฌ๋ฌ ๊ฐ์ ๋ผ์ฐํฐ ์ฌ์ฉ์ MongoDB ๋๋ผ์ด๋ฒ๋ ๋ช ์๋ ๋ผ์ฐํฐ ์๋ฒ ์ค ์ ์ ํ ์๋ฒ ์ ํ(๊ฐ๋ฐ ์ธ์ด๋ณ ํด๋ผ์ด์ธํธ ๋๋ผ์ด๋ฒ์ ๋ฐ๋ผ ๋์ ๋ค๋ฆ)
์ฅ์
- ๋ผ์ฐํฐ ์๋ฒ ์ ๊ฐ์
- ์ค๋ ์๋ฒ์ ๋งบ์ด์ผ ํ๋ ์ปค๋ฅ์ ์ ๊ฐ์
๋จ์
- MongoDB์์ ๊ถ์ฅํ์ง ์๋ ๋ฐฉ์
- ๋ผ์ฐํฐ ๊ฐ ๋ถํ ๋ถ์ฐ ๋ฌธ์
- ๋ฌธ์ ๋ฐ์์ ๋ผ์ฐํฐ์ ๋ํ ์์ฒญ ์ค์ง ๋ฐ ๋์ด์๋ฌ์ ๋ ์์ฒญ ์ฌ ์ ๋ฌํด์ผํ๋ ๋ฑ์ ๋ฌธ์ ์
- ์์ฃผ ์ฌ์ฉ๋์ง ์์์ ๋ฒ๊ทธ ๋ ํฌํ ์ ๊ณ ํจ์น ๊ฐ๋ฅ์ฑ๋ ์๋ค.
L4 ์ค์์น๋ก ๋ฌถ์ด์ ๋ผ์ฐํฐ ์ฌ์ฉ
๋จ์
-
L4 ์ค์์น๋ฅผ ๊ฑฐ์นจ์ผ๋ก์จ ๋คํธ์ํฌ ์๋ณต ์๊ฐ ์ฆ๊ฐ
-
Find ์ฟผ๋ฆฌ์ ํ์์ GetMore ๋ช ๋ น์ด ์๋ก ๋ค๋ฅธ ๋ผ์ฐํฐ๋ก ์์ฒญ๋๋ ๊ฒฝ์ฐ ๋ฐ์
MongoCursor<Document> cursor = coll.find(query).iterator(); while(cursor.hasNext()) { Document obj = cursor.next(); // ์๋ฐ ๋๋ผ์ด๋ฒ๊ฐ ์บ์ํ ๊ฒฐ๊ณผ๊ฐ ์์ผ๋ฉด ์ปค์ id๋ฅผ ์ด์ฉํด ๋ผ์ฐํฐ๋ก ๋ค์ ๊ฒฐ๊ณผ ์์ฒญ -> ๋ค๋ฅธ ๋ผ์ฐํฐ๋ก ์์ฒญํ๊ฒ ๋๋ฉด ์๋ฌ ๋ฐ์ ... }
๋ผ์ฐํฐ๋ CPU๋ ๋ฉ๋ชจ๋ฆฌ ์์์ ๋ง์ด ์ฌ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์ ํฌ๊ฒ ๋ฌธ์ ๋์ง ์์ง๋ง ๋คํธ์ํฌ ์ฌ์ฉ๋์ ์ ์ ์ฑ์ ๋ํด์๋ ๊ณ ๋ คํด์ผ ํ๋ค. (RDBMS์ ๋นํด ๋ ์ฝ๋๋ค์ด ํฐ ํธ)
๋ผ์ฐํฐ๋ MongoDB ๋๋ผ์ด๋ฒ(Client Driver)์ MongoDb ์ค๋ ์๋ฒ๋ฅผ ์ค๊ณํ๋ ์ญํ ๋ก ํด๋ผ/์๋ฒ ์ชฝ ์ปค๋ฅ์ ์ ๋ชจ๋ ๊ฐ์ง๊ฒ ๋๋ค.
์๋ฐ ๋๋ผ์ด๋ฒ๋ฅผ ์ด์ฉํ MongoDB ์๋ฒ ์ฐ๊ฒฐ ์์
/* ๋จ์ผ ์๋ฒ ์ ์ */
ServerAddress server = new ServerAddress("single-mongodb.com", 27017);
MongoClient mongoClient = new MongoClient(server);
/* ๋ ํ๋ฆฌ์นด ์
์ ์*/
// ๋ ํ๋ฆฌ์นด ์
์ ์๋ ๋ฆฌ์คํธ ์ค๋น
List<ServerAddress> seedList = new ArrayList<ServerAddress>();
seedList.add(new ServerAddress("rs-mongodb1.com", 27017));
seedList.add(new ServerAddress("rs-mongodb2.com", 27017));
// ์ธ์ฆ ์ ๋ณด ์ค์
List<MongoCredential> credentials = new ArrayList<MongoClient>();
credentails.add(MongoCredential.createScramSha1Credential(username, DEFAULT_DB, password.toCharArray()));
// ์ ์ ์ต์
์ค์
MongoClientOptions options = MongoClientOptions.builder()
.requireReplicaSetName(ReplSetName).build();
MongoClient client = new MongoClient(seedList, credentials, options);
/* MongoDB ๋ผ์ฐํฐ ์ ์*/
// ๋ผ์ฐํฐ ๋ฆฌ์คํธ ์ค๋น
List<ServerAddress> seedList = new ArrayList<ServerAddress>();
seedList.add(new ServerAddress("mongos1.com", 27017));
seedList.add(new ServerAddress("mongos2.com", 27017));
// ์ธ์ฆ ์ ๋ณด ์ค์
List<MongoCredential> credentials = new ArrayList<MongoClient>();
credentails.add(MongoCredential.createScramSha1Credential(username, DEFAULT_DB, password.toCharArray()));
MongoClient client = new MongoClient(seedList, credentials, options);
- ์ฃผ์ด์ง ์๋ฒ(์ค๋์๋ฒ์ผ ์๋, ๋ผ์ฐํฐ์ผ ์๋ ์๋ค.)๋ก๋ง ์ฐ๊ฒฐ ์์ฑ
- ๋ ํ๋ฆฌ์นด ์ ์ด๋ฆ์ ๋ช ์ํ์ง ์์ผ๋ฉด ์ต์ด ์ ์ ์์ ์ฃผ์ด์ง ์๋ฒ๋ก๋ง ์ ์ํ๊ฒ ๋๋ค. ๋ํ ๋ชฝ๊ณ ์๋ฒ๊ฐ ์๋ ํ์ผ์ค๋ฒ๊ฐ ๋์์ ๋ ํด๋ผ์ด์ธํธ ๋๋ผ์ด๋ฒ๊ฐ ์ด๋ฅผ ์ธ์ํ์ง ๋ชปํ ์๋ ์๋ค.
- ์ฒซ๋ฒ์งธ ๋ฐฉ์์ด๋ ๋์ผํ ๋ฐฉ์์ด๋ค. ๋ค๋ง ์ฌ๋ฌ ์๋ฒ๋ฅผ ๋์ดํ์๊ธฐ ๋๋ฌธ์ ์ฟผ๋ฆฌ๋ฅผ ์๋ฒ๋ก ์ ์กํ ๋ ์ฃผ์ด์ง ์๋ฒ๋ค๊ฐ์ ๋ถํ ๋ถ์ฐ์ด๋ ํ์ผ ์ค๋ฒ์ฒ๋ฆฌ๊ฐ ์ํ๋๋ค.
MongoDB ๋ผ์ฐํฐ๋ ํด๋ผ์ด์ธํธ์์ ์ปค๋ฅ์ ๊ณผ๋ ๋ณ๊ฐ๋ก ์ค๋ ์๋ฒ์์ ์ฐ๊ฒฐ์ ๋งบ๋๋ค. ์ฆ, ํด๋ผ์ด์ธํธ์์ ์ปค๋ฅ์ ์ด ๋ง์ด ์์ฑ๋๋ค๊ณ ์ค๋์์ ์ปค๋ฅ์ ์ด ๊ทธ๋งํผ ๋ง์ด ์์ฑ๋์ง ์๋๋ค.
- TaskExecutorPool : ์๋ฒ์ CPU ์ฝ์ด ๊ฐ์๋งํผ ์ค๋น๋๋ค.
- ์ปค๋ฅ์ ํ
- ์๋ธ ์ปค๋ฅ์ ํ : ํ๋์ ์ปค๋ฅ์ ํ ๋ด์ ์ค๋ ์๋ฒ ๊ฐ์๋งํผ ์์ฑ.
๊ฐ์์ค๋ฝ๊ฒ ์์ฒญ์ด ๋ง์์ง ๊ฒฝ์ฐ ๋ถ์กฑํ ์ปค๋ฅ์ ์ผ๋ก ์ธํด ์๋ฒ ์ง์ฐ ํ์์ด ๋ฐ์ ๊ฐ๋ฅ.
์ปค๋ฅ์ ๊ด๋ จ ์ต์ ์ ํตํด ์ต์, ์ต๋ ์ปค๋ฅ์ ๊ฐ์๋ฅผ ์ง์ ํ ์ ์์ง๋ง, ์์ง ๋ผ์ฐํฐ์ ์ค๋์๋ฒ ๊ฐ์ ์ปค๋ฅ์ ์ ์ถฉ๋ถํ ์์ฑํ ์ ์๋ ์๋ฐ์ ๋ฐฉ๋ฒ์ ์ฌ์์น๊ฐ ์์ ์ํ์ด๋ค.
- ๋ ์ธ์ง ์ค๋ฉ
- ํด์ ์ค๋ฉ
- ํ๊ทธ ๊ธฐ๋ฐ ์ค๋ฉ(Tag-Aware Sharding, 3.4 ๋ฒ์ ์ดํ๋ก ์ง์ญ๊ธฐ๋ฐ ์ค๋ฉ)
๋ ์ธ์ง, ํด์ ์ค๋ฉ : ๋ฐ์ดํฐ๋ฅผ ์ด๋ค ์ฒญํฌ์ ํฌํจ์ํฌ์ง ๊ฒฐ์
ํ๊ทธ ๊ธฐ๋ฐ ์ค๋ฉ : ์์ ์ค๋ฉ ์๊ณ ๋ฆฌ์ฆ + ์ฒญํฌ์ ๋ถ์ฐ ๋ฐฉ์
์ค๋ ํด๋ฌ์คํฐ์์ ๊ฐ ์ปฌ๋ ์ ์ ์ค๋ ํค๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ฃผ ์๊ฒ ์ชผ๊ฐ์ ธ ์ฌ๋ฌ ์ค๋์์ ๋ถ์ฐ ๊ด๋ฆฌ ๋๊ณ , ์ด ์๊ฐ ์ชผ๊ฐ์ง ์กฐ๊ฐ๋ค์ ์ฒญํฌ๋ผ๊ณ ํ๋ค. ๊ฐ ์ฒญํฌ๋ ์ค๋ ํค์ ์๋ณธ ๋๋ ํด์ ๊ฐ์ ์ผ์ ๋ฒ์(์ต๋, ์ต์)๋ฅผ ๊ฐ์ง๋ค.
์ฒญํฌ๋ ๊ฐ๋ณ ๋ฐ์ดํฐ ํ์ผ(๋ฌผ๋ฆฌ์ )๋ก ์ ์ฅ๋์ง ์๋๋ค. ๋ค๋ง ๋ ผ๋ฆฌ์ ์ผ๋ก๋ง ๊ด๋ฆฌ ๋์ด์ง๊ณ ๊ทธ ์ค์ฒด๋ ์ปจํผ๊ทธ ์๋ฒ์ ๋ฉํ ๋ฐ์ดํฐ๋ก์จ ์กด์ฌํ๋ค. ์ฒญํฌ ๊ฒ์ ๋น์ฉ X
๊ธฐ๋ณธ์ ์ผ๋ก 64MB๊น์ง ์ปค์ง๊ณ ๊ทธ ์ด์ ๋๋ฉด ๋ฐธ๋ฐ์์ ์ํด ์๋ ์คํ๋ฆฟ๋๋ค.
์ค๋ ํค์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋ฒ์๋ฅผ ๋๋๊ณ , ์ฌ์ฉ์ ๋ฐ์ดํฐ๊ฐ ์ด๋ ์ฒญํฌ์ ํฌํจ๋ ์ง ๊ฒฐ์ ํ๋ ์ค๋ฉ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๋ ์ธ์ง ์ค๋ฉ์ ๋จ์ํ ๊ฐ ์ฒญํฌ๊ฐ ์ด๋ค ๋ฒ์์ ๊ฐ์ ๊ฐ์ง๋์ง๋ง ๊ฒฐ์ ํ๋ค. ์ค์ ๊ฐ ์ฒญํฌ๊ฐ ์ด๋ ์ค๋ ์๋ฒ๋ก ์ ์ฅ๋ ์ง ๊ฒฐ์ ํ๋ ๊ฒ์ ๋ ์ธ์ง ์ค๋ฉ์ ๋ฒ์์์ ๋ฒ์ด๋๋ค.
์ค๋ ํค๋ก ์ ์ ๋ ํ๋์ ๊ฐ์ ๋ณํํ์ง ์๊ณ ๋น๊ต ์ ๋ ฌํ๋ค.
์ฅ์
- ๋ฒ์ ๊ฒ์ ์ฟผ๋ฆฌ๋ฅผ ํ๊ฒ ์ฟผ๋ฆฌ๋ก ์คํํ ์ ์๋ค.
๋จ์
- ๋ฐ์ดํฐ๊ฐ ๊ท ํ์๊ฒ ๋ถ์ฐ๋์ง ์์ ๊ฐ๋ฅ์ฑ์ด ๋๋ค.
- ์ชผ๊ฐค ์ ์์ ์ ๋๊ฐ ๋๋ฉด ์ฒญํฌ๊ฐ ์ ๋ณด ์ฒญํฌ๊ฐ ๋๊ณ ์ด๋ฌํ ์ฒญํฌ์ ๋ํด์๋ ๊ด๋ฆฌ ์์ ์ ํฌ๊ธฐํ๊ฒ ๋๋ค.
- ๊ท ๋ฑ ๋ถ์ฐ ์ฌ๋ถ (MongoDB ๋ฐธ๋ฐ์ -> ์ฒญํฌ ๊ฐ์ ๊ธฐ์ค) ์ ํํ ํ์ ์ด๋ ค์. ( ๋น์ ์ ์ ์ผ๋ก ํฐ ์ฒญํฌ ์กด์ฌ ๊ฐ๋ฅ)
- ์ค๋ ํค์ ๊ฐ์ด ์ฆ๊ฐํ๋ ๋ฐฉํฅ์ธ ๊ฒฝ์ฐ ํน์ ์ฒญํฌ์๋ง insert๊ฐ ์ด๋ฃจ์ด์ง ์ ์๋ค.
์ค๋ํค ์ ์ ์ด ์ค์.!!!
์ค๋ ํค ๊ฐ์ ํด์๊ฐ์ ์ด์ฉํด์ ์ฒญํฌ๋ฅผ ํ ๋นํ๋ ์ค๋ฉ ๋ฐฉ์.(MD5 ํด์ ์ฌ์ฉ)
์ค๋ ํค ๊ฐ -> ํด์ -> ์์ชฝ 64bit ์๋ผ์ 64bit ์ ์ํ์ผ๋ก ์ฌ์ฉํ๋ค. ๊ทธ๋์ ํด์ ์ค๋ํค๊ฐ ๊ฐ์ง์ ์๋ ๊ฐ์ ๋ฒ์๋ -2^64~ 2^63-1 ์ด๋ค.
์ค์ ๋ก ํด์ ์ค๋ฉ์ด๋ผ๊ณ ํ์ง๋ง ์๋ฐํ ์๋ฏธ์์๋ ๋ ์ธ์ง ์ค๋ฉ์ด๋ค. ์ค๋ ํค์ ํด์ ๊ฒฐ๊ณผ๊ฐ์ผ๋ก ๋ ์ธ์ง ์ค๋ฉ์ ์ ์ฉํ๋ ํํ์ด๋ค. ์ด๋ก ์ธํด ๋น์ทํ ์ค๋ ํค๊ฐ์ด๋ผ ํ๋๋ผ๋ MD5 ํด์๋ฅผ ๊ฑฐ์นจ์ผ๋ก์จ ์ ์ฒด ๋ฒ์์ ๋ํด ๊ณจ๊ณ ๋ฃจ ๋ถ์ฐ๋๋ ํจ๊ณผ๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค.
๋ ์ธ์ง ์ค๋ฉ์ ๋จ์ ์ ๊ฑฐ
- ์ค๋ ํค ๊ฐ์ด ํน์ ๋ฒ์์ ์ง์ค๋ผ ์์ ๋ ๋ฐ์ํ๋ ๋ฐ์ดํฐ ๋ถ๊ท ํ
- ์ฐ์๋ ์ค๋ ํค ์ก์ธ์ค๋ก ์ธํ ํน์ ์ค๋ ์๋ฒ์ ๋ถํ ํธ์ค
๊ทธ๋ ๋ค ํ๋๋ผ๋ ์ค๋ ํค ๊ฐ์ ๋ค์์ฑ์ด ๋จ์ด์ง๋ฉด ํด์ ์ค๋ฉ์ด๋ผ๋ ๋ฐ์ดํฐ๊ฐ ํน์ ์ฒญํฌ๋ก ๋ชฐ๋ฆฌ๋ ํ์์ ํผํ ์ ์๋ค.
์ ์ฝ์ฌํญ
- ๋ฒ์ ๊ฒ์ ์ฟผ๋ฆฌ๋ ๋ธ๋ก๋์บ์คํธ ์ฟผ๋ฆฌ๋ก ์คํ
- ์ค๋ ํค ํ๋์ ๋ํด์ ํด์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํด์ผ ํจ.
ํด์ ์ธ๋ฑ์ค ์ ์ฝ์ฌํญ
- ๋จ์ผ ํ๋์ ๋ํด์๋ง ํด์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ ์ ์์ (๋ณตํฉ ์ธ๋ฑ์ค์๋ ํด์ ์ธ๋ฑ์ค X)
- ๋ฉํฐ ํค ํ๋์ ๋ํด์๋ ํด์ ์ธ๋ฑ์ค ์์ฑ X (ex. ๋ฐฐ์ด ํ๋)
- ๋ถ๋ ์์์ ํ๋๋ ์์์ ์ดํ๋ฅผ ๋ฒ๋ฆฌ๊ณ ํด์ ํจ์ ์ํ
- 2^53๋ณด๋ค ํฐ ๋ถ๋ ์์์ ์ ๋ํด์๋ ํด์ ์ธ๋ฑ์ค ์ง์X
3.2 ๋ฒ์ ๊น์ง๋ ํ๊ทธ ๊ธฐ๋ฐ ์ค๋ฉ(Tag-Aware Sharding), 3.4๋ฒ์ ๋ถํฐ๋ ์ง์ญ ๊ธฐ๋ฐ ์ค๋ฉ(Zone Sharding)์ผ๋ก ์ด๋ฆ์ด ๋ณ๊ฒฝ ๋์๋ค. ๊ธฐ๋ฅ์ ๋ณํ๊ฐ ์์๋ ๊ฒ์ ์๋๋ค.
์ง์ญ ๊ธฐ๋ฐ ์ค๋ฉ์ ๋ ๋ฆฝ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๋ฐฉ์์ด ์๋๋ผ ๋ ์ธ์ง ์ค๋ฉ์ด๋ ํด์ ์ค๋ฉ๊ณผ ๋ฐ๋์ ํจ๊ป ์ฌ์ฉํด์ผ ํ๋ค. ์ง์ญ ๊ธฐ๋ฐ ์ค๋ฉ์ ์์ ์ค๋ฉ์ ์ ์ฉํ ์ํ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ค๋๋ฅผ ํ ๋ฒ ๋ ์กฐ์ ํ ์ ์๋ ์ต์ ์ด๋ผ๊ณ ์ดํดํ ์ ์๋ค.
- ์ง์ญ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉ์ ๋ฐ์ดํฐ์ ๊ตฌ๋ถ
- ํน์ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ์ง์ ๋ ์ค๋ ์๋ฒ๋ก ๊ตฌ๋ถํด์ ๊ด๋ฆฌ
- ์ค๋ ์๋ฒ์ ํด๋์ค ๋ณ๋ก ์ ์ฅํ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ๋ถ
์ค๋ ํค๊ฐ ์ค์ํ ์ด์ ๋ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ์๋ฒ์ ๋ถ์ฐํ๋ ๋ฐฉ์์ ๊ฒฐ์ ํ๋ ์์ ์ด๋ฉด์ ํ๋ฒ ์ค์ ๋ ์ค๋ ํค๋ ๋ณ๊ฒฝ ๋ถ๊ฐํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ค๋ ํค๊ฐ ๋ชฝ๊ณ ํด๋ฌ์คํฐ์ ๋ฏธ์น๋ ์ํฅ
- ํ๊ฒ ์ฟผ๋ฆฌ์ ๋ธ๋ก๋์บ์คํธ ์ฟผ๋ฆฌ ๊ฒฐ์
- ๊ฐ ์ค๋ ์๋ฒ์ ๋ถํ ๋ถ์ฐ
- ์ฒญํฌ ๋ฐธ๋ฐ์ค ์์
๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด๊ฐ๋ ๋น๋ฒํ์ง ์์ ์ฟผ๋ฆฌ์ ๊ฒฝ์ฐ์๋ ๋ธ๋ก๋์บ์คํธ ์ฟผ๋ฆฌ๊ฐ ๋ ์ข๋ค(์๋ฒ ๋ถํ ๋ถ์ฐ ํจ๊ณผ ๋ฐ์) ํ์ง๋ง ๊ฐ๋ฒผ์ฐ๋ฉด์ ๋น๋ฒํ ์ฟผ๋ฆฌ๊ฐ ๋ธ๋ก๋์บ์คํธ์ผ ๊ฒฝ์ฐ์๋ ๋ฌธ์ ์ผ ์ ์๋ค.
์ ์ ํ์ง ๋ชปํ ์ค๋ ํค๋ ๊ฐ ์ค๋ ์๋ฒ๊ฐ ๊ฐ์ง๋ ๋ฐ์ดํฐ์ ๋ถ๊ท ํ์ ์ด๋ํ ์ ์๋ค.
๋ํ๋จผํธ์ INSERT๊ฐ ์ฌ๋ฌ ์ค๋์ ์ฒญํฌ๋ก ๊ณจ๊ณ ๋ฃจ ๋ถ์ฐ๋์ด ์ ์ฅ๋ ์ ์๊ฒ ์ค๋ํค๋ฅผ ๊ณ ๋ คํด์ผ ํ๋ค. ๊ทธ๋์ผ๋ง ๊ฐ ์ค๋๊ฐ ๊ฐ์ง ์ฒญํฌ๊ฐ ๊ณจ๊ณ ๋ฃจ ์ฑ์ฅํ๊ฒ ๋๊ณ ์ฉ๋์ด ์ปค์ง ์ฒญํฌ๊ฐ ์คํ๋ฆฟ๋๋ค ํ๋๋ผ๋ ๊ฐ๋ฅํ ํ ๋ฐธ๋ฐ์๊ฐ ์ค๋ ๊ฐ ์ฒญํฌ ์ด๋์ ์ต์ํ ํ ์ ์๋๋ก ํ๋ ๊ฒ์ด ์ข๋ค.
ํ๋ผ์ด๋จธ๋ฆฌ ์ค๋๋ ์ค๋ ํด๋ฌ์คํฐ์์ ์ค๋ฉ๋์ง ์์ ์ปฌ๋ ์ ๋ค์ ์ ์ฅํ๋ ์ค๋๋ฅผ ์๋ฏธํ๋๋ฐ ๋ ํ๋ฆฌ์นด ์ ์ ํ๋ผ์ด๋จธ๋ฆฌ์๋ ์ ํ ๋ฌด๊ดํ๋ค.
์ค๋ ํด๋ฌ์คํฐ์์ ์ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์์ฑ๋๋ฉด ์ค๋ ์ค ๋ฐ์ดํฐ๊ฐ ๊ฐ์ฅ ์ ์ ์ค๋๋ฅผ ์ ํํด ์์ฑ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ๋ผ์ด๋จธ๋ฆฌ ์ค๋๋ก ์ค์ ํ๋ค. ์ค๋ฉ๋์ง ์์ ์ปฌ๋ ์ ์ ์ ์ฅ ํ ๋ ์ด๋ ์ค๋์ ์ ์ฅํ ์ง ๊ฒฐ์ ํด์ผ ํ๋๋ฐ ์ด๋ ๊ธฐ์ค์ด ๋๋ ์ ๋ณด๊ฐ ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ๋ผ๋ฏธ์ด๋ฆฌ ์ค๋๋ค.
ํ๋ผ๋ฏธ์ด๋ฆฌ ์ค๋๋ ์ด๋์ด ๊ฐ๋ฅํ๋ค. ํนํ ์ค๋๋ฅผ ์ ๊ฑฐํ ๋ ํด๋น ์ค๋์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅธ ์ค๋๋ก ์ด๋์์ผ์ผ ํ๋ค. ์ด ๋ ์ค๋ฉ๋ ์ปฌ๋ ์ ๋ง ํด๋น ์ค๋์ ์๋ค๋ฉด sh.removeShard() ๋ช ๋ น์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅธ ์ค๋๋ก ์ด๋์ํค๊ณ ์ค๋๋ฅผ ์ ๊ฑฐํ ์ ์๋ค. ํ์ง๋ง ์ค๋ฉ๋์ง ์์ ์ปฌ๋ ์ ์ด ์๋ค๋ฉด movePrimary ๋ช ๋ น์ผ๋ก ํ๋ผ์ด๋จธ๋ฆฌ ์ค๋๋ฅผ ์ด๋์ํค๊ณ ์ค๋๋ฅผ ์ ๊ฑฐํ๋ค. ์ด๋ ๊ฒ ํ๋ผ์ด๋จธ๋ฆฌ ์ค๋์ ์ด๋์ค์๋ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ ๋ณด์ฅ์ ์ฑ ์์ง์ง ์๋๋ค.
๋ํ, ํ๋ผ์ด๋จธ๋ฆฌ ์ค๋๊ฐ ์ด๋๋ ํ์ ๋ผ์ฐํฐ์๊ฒ ๋ณ๊ฒฝ๋์์์ ์๋ ค์ผ ํ๋ค. ์ด๋ฅผ ์ํด์๋ ๋ค์์ ๋๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค.
- ๋ชจ๋ MongoDB ๋ผ์ฐํฐ ์ฌ์์
- ๋ชจ๋ MongoDB ๋ผ์ฐํฐ์์ flushRouterConfig ๋ช ๋ น ์คํ -> ์ปจํผ๊ทธ ์๋ฒ์ ๋ถํ๊ฐ ๋์์ง ์ ์์.
ํ๋ผ์ด๋จธ๋ฆฌ ์ค๋ ๋ณ๊ฒฝ์ ์๋น์ค์ ๋ง์ ์ํฅ์ ๋ฏธ์น๋ ์์ ์ผ๋ก ๊ฐ๋ฅํ๋ค๋ฉด ์ค๋ฉ ํ๊ฒฝ์์๋ ๋ชจ๋ ์ปฌ๋ ์ ์ ์ค๋ฉ์ ๊ณ ๋ คํ์!
๋ฐ์ดํฐ์ ํน์ฑ์ ๋ฐ๋ผ ๊ฐ ์ค๋๊ฐ ๊ฐ์ง ๋ฐ์ดํฐ์ ๋ถ๊ท ํ์ ์ธ์ ๋ ์ง ๋ฐ์ํ ์ ์๋ค.
MongoDB์์๋ ์ต๋ํ ๊ฐ ์ค๋๊ฐ ๊ฐ์ง ์ฒญํฌ์ ๊ฐ์๋ฅผ ๋์ผํ๊ฒ ๋ง๋ค๋ ค๊ณ ๋ ธ๋ ฅํ๊ณ ํ๋์ ์ฒญํฌ๊ฐ ๋๋ฌด ๋น๋ํด ์ง๋ ๊ฒ์ ๋ง๊ธฐ ์ํด ์ฒญํฌ์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๊ฑฐ๋ ๋ณ๊ฒฝ๋ ๋๋ง๋ค ์ฒญํฌ ์คํ๋ฆฟ ์ฌ๋ถ๋ฅผ ์ฒดํฌํ๋ ์์ ์ ์ํํ๋ค.
๋ฐธ๋ฐ์๋ ๊ฐ ์ค๋๊ฐ ์ฒญํฌ์ ๊ฐ์๋ฅผ ๋ชจ๋ํฐ๋งํ๋ค๊ฐ ์ผ์ ์์น ์ด์ ์ฐจ์ด๊ฐ ๋๋ฉด(๋ถ๊ท ํ) ์ ์ ํ ์ฒญํฌ๋ฅผ ์ฎ๊ฒจ์ ์ค๋ ๊ฐ ๋ถํ์ ๊ท ํ์ ๋ง์ถ๋ค.
์ฒญํฌ ์ด๋์ด ์์๋๋ ์๊ณ์น๊ฐ ์กด์ฌํ๋ ์ด์ ๋ ์ฒญํฌ ์ด๋์ ๋น์ฉ์ด ํฌ๊ธฐ ๋๋ฌธ์ด๋ค.
์ผ๋จ ์ฒญํฌ ์ด๋์ด ์์๋๋ฉด ์ฒญํฌ ๊ฐ์ ์ฐจ์ด๊ฐ ๊ธฐ์ค์น ์ดํ๋ก ๋จ์ด์ง ๋๊น์ง ์ด๋ ๋ถ์ฐ์ํจ๋ค. ์ด๋ ๊ฒ ๋ฐธ๋ฐ์๊ฐ ์ฒญํฌ ๋ถ๊ท ํ ๊ฐ์ง -> ์ฒญํฌ ์ด๋ ์์ ๋ฐ ์ข ๋ฃ ๊น์ง์ ์ฃผ๊ธฐ๋ฅผ ๋ฐธ๋ฐ์ฑ ๋ผ์ด๋(Balancing Round)๋ผ๊ณ ๋ถ๋ฅธ๋ค. 3.2 ๋ฒ์ ๊น์ง๋ ๋ผ์ฐํฐ์์ ๋ฐธ๋ฐ์๊ฐ ์คํ ๋์๋๋ฐ ๋ค์์ ๋ผ์ฐํฐ ์ธ์คํด์ค๋ค์ด ์ฒญํฌ ์ด๋์ ์ํํ์ง ์๋๋ก ๋๊ธฐํํ๋ ์์ ์ด ์๋๋ฐ ์ด๋ก ์ธํด ์๋ง์ ๋ผ์ฐํฐ๊ฐ ์ฒญํฌ ์ด๋์์ํด์ ๊ฒฝํฉํ๋ ์ํคํ ์ฒ๋ก ๊ตฌ์ฑ์ด ๋์๋ค. ๊ทธ๋์ 3.4๋ฒ์ ๋ถํฐ๋ ๋ฐธ๋ฐ์ ํ๋ก์ธ์ค๋ฅผ ์ปจํผ๊ทธ ์๋ฒ์์ ์ํํ๋๋ก ํ์๋ค.
์ฒญํฌ ๋ฐธ๋ฐ์ฑ์ผ๋ก ์ธํ ์ฒญํฌ ์ด๋์ ์ฌ์ฉ์ ์ฟผ๋ฆฌ ์ฒ๋ฆฌ ์๊ฐ์ ์ํฅ์ ๋ฏธ์น ์ ์๋ค. ๊ทธ๋์ ๋ฐธ๋ฐ์ฑ์ด ํน์ ์๊ฐ๋์๋ง ์คํ๋๋๋ก ์ ์ดํ ์ ์๋ ๊ธฐ๋ฅ์ด ์๋ค.
mongos> db.settings.update(
{_id: "balancer"},
{$set: {activeWindow: {start : "22:00", stop : "04:00"}}},
{upsert: true}
)
๋ชฝ๊ณ ๋๋น์ ์ฒญํฌ๋ ์๋ ๋๋ ์๋์ผ๋ก ์คํ๋ฆฟ๋ ์ ์๋๋ฐ, ์๋ ์คํ๋ฆฟ์ ์ฒญํฌ์ Document๊ฐ insert๋๊ฑฐ๋ update ๋ ๋์๋ง ํด๋น ์ฒญํฌ๋ฅผ ์คํ๋ฆฟํ ์ง ๊ฒฐ์ ํ๋ค.
- ์ปจํผ๊ทธ ์๋ฒ์ settings ์ปฌ๋ ์ ์์ balancer์ ์ค์ ๋ ์ฒญํฌ ์ฌ์ด์ฆ๋ณด๋ค ํ์ฌ ์ฒญํฌ์ ํฌ๊ธฐ๊ฐ ํด ๋
- ์ฒญํฌ ์ด๋์ ์ต๋ ๋ํ๋จผํธ ๊ฑด์๋ณด๋ค ๋ง์ ๋ํ๋จผํธ๋ฅผ ํ์ฌ ์ฒญํฌ๊ฐ ๊ฐ์ง๊ณ ์์ ๋
๊ธฐ๋ณธ์ ์ผ๋ก ์ฒญํฌ๋ 64MB ์ ๋์ ๋ฐ์ดํฐ ์กฐ๊ฐ์ผ๋ก ์ ์งํ๋ ค๊ณ ํ๋ค. ์ด ํฌ๊ธฐ๋ณด๋ค ์ปค์ง๋ฉด ์ฒญํฌ๋ฅผ ์ชผ๊ฐ๋ ์์
์ ์งํํ๋๋ฐ ์คํ๋ฆฟ์ splitVector
์ splitChunk
๋ ๋จ๊ณ๋ก ๋๋์ด ์ฒ๋ฆฌ๋๋ค.
- splitVector : ํน์ ์ฒญํฌ์์ ์คํ๋ฆฟ์ด ํ์ํ์ง ํ์ธํ๊ณ ์คํ๋ฆฟ์ด ํ์ํ๋ค๋ฉด ์คํ๋ฆฟ์ ์คํํ ์์น์ ๋ฐฐ์ด์ ๋ฆฌํดํ๋ค.
- splitChunk : ์์์ ๋ฆฌํดํ ๊ฐ์ด ์คํ๋ฆฟํ ์ ์๋ ์ ํจํ ํฌ์ธํฐ๋ฅผ ํฌํจํ๊ณ ์๋ค๋ฉด ํด๋น ์ง์ ์ ๊ธฐ์ค์ผ๋ก ์ฒญํฌ๋ฅผ ์คํ๋ฆฟํ๋๋ก splitChunk ๋ช ๋ น์ด ์คํ๋๋ค. splitChunk ์์ ์ ์ฒญํฌ ๋ฉํ ์ ๋ณด๋ฅผ ์๋ก์ด ์ฒญํฌ ์ ๋ณด๋ก ๋์ฒดํ๋ ๊ฒ์ด ์ ๋ถ์ด๋ค.
์๋์ผ๋ก ์คํ๋ฆฟ ํ์ง ๋ชปํ ๊ฒฝ์ฐ ๊ด๋ฆฌ์๊ฐ ์๋์ผ๋ก ์คํ๋ฆฟ ํ ์ ์๋ค. ์ด ๋ ์ต์ ์ ๋ฐ๋ผ ์ฉ๋์ ์คํ๋ฆฟ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง ์ ์๋ค.
- find ์ต์ : ์ฃผ์ด์ง ์กฐ๊ฑด์ ์ด์ฉํด ํน์ ์ฒญํฌ๋ฅผ ์ฐพ์ ๋ค์ ๊ทธ ์ฒญํฌ๋ฅผ ํฌ๊ธฐ๊ฐ ๊ฐ์ 2๊ฐ์ ์ฒญํฌ๋ก ์คํ๋ฆฟ ์กฐ๊ฑด์๋ ๋ฐ๋์ ์ค๋ ํค์ ์กฐ๊ฑด์ ํฌํจํด์ผ ํ๋ค
- middle ์ต์ : ์ฃผ์ด์ง ์กฐ๊ฑด์ ์ด์ฉํด ํน์ ์ฒญํฌ๋ฅผ ์ฐพ์ 2๊ฐ์ ์ฒญํฌ๋ก ์คํ๋ฆฟํ๋ค. find์๋ ๋ค๋ฅด๊ฒ ์ฃผ์ด์ง ์ค๋ ํค ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ฒญํฌ๊ฐ ์คํ๋ฆฟ ๋๋ค. ํด์ ์ค๋ฉ์์๋ ์ฌ์ฉ ๋ถ๊ฐ
- bounds ์ต์ : ํด์ ์ค๋ฉ์ ์ฌ์ฉํ๋ ์ปฌ๋ ์ ์ ์คํ๋ฆฟํ๊ธฐ ์ํ ๋ช ๋ น. ํด์ ๋ ์ค๋ ํค๊ฐ์ ๋ฒ์๋ก ์ฌ์ฉ.
์ฌ์ฉ์์ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋ ๊ณผ์ ์์ ๋น ์ฒญํฌ๊ฐ ์๊ธฐ๊ธฐ๋ ํ๋ค. ํน์ ๋ฏธ๋ฆฌ ์ฒญํฌ ์คํ๋ฆฟ์ ํด ๋์๋๋ฐ ๋ฐ์ดํฐ๊ฐ ์๋ํ ๋๋ก ์ ์ฅ๋์ง ์์ ๋น ์ฒญํฌ๋ก ์ ์ง๋ ์๋ ์๋ค. ์ด๋ฐ ๊ฒฝ์ฐ ์๋ฒ ๊ฐ์ ๋ถํ๊ฐ ๊ท ๋ฑํ๊ฒ ์ ์ง๋๊ธฐ ์ด๋ ต๋ค. ์ด๋ด ๋์ ๋น ์ฒญํฌ๋ฅผ ์ฃผ์์ ์ฐ์๋ ์ฒญํฌ์ ๋ณํฉํ ์ ์๋๋ก mergeChunks ๋ช ๋ น์ ์ ๊ณตํ๋ค.
- ๋ณํฉํ๊ณ ์ ํ๋ ์ฒญํฌ๋ ๊ฐ์ ์ค๋์ ์กด์ฌํด์ผ ํ๋ค.
- ๋ณํฉ๋๋ ์ฒญํฌ ์ค์์ ์ต์ํ ํ๋์ ์ฒญํฌ๋ ๋น์ด์์ด์ผ ํ๋ค.
- ์ฐ์๋ ์ค๋ ํค ๋ฒ์์ ์ฒญํฌ๋ง ๋ณํฉํ ์ ์๋ค.
- ๋ฐธ๋ฐ์ : From-shard๋ก๋ถํฐ moveChunk ๋ช ๋ น ์คํ
- From-Shard : ์ด๋ ๋์ ์ฒญํฌ์ ์ํ์ moveChunk์ ํ๋ผ๋ฏธํฐ ์ค๋ฅ ์ฒดํฌ
- F : To-shard์๊ฒ From-shard๋ก๋ถํฐ ์ฒญํฌ๋ฅผ ๋ณต์ฌํ๋๋ก ์ง์
- To-shard : F์ ์ธ๋ฑ์ค๋ฅผ ๋น๊ตํ ๋ค์ ํ์ํ๋ค๋ฉด ์ธ๋ฑ์ค ์์ฑ
- T : F ๋ก๋ถํฐ ์ฒญํฌ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ์ ์ฅ
- T : ์ด ์ ๋จ๊ณ๊น์ง ์คํํ๋ ๋์ ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ฅผ F๋ก๋ถํฐ ๊ฐ์ ธ์์ ์ ์ฅ
- T : Steady ์ํ
- F : ์ปจํผ๊ทธ ์๋ฒ์ ์ฒญํฌ ๋ฉํ ๋ฐ์ดํฐ ๋ณ๊ฒฝ
- F : T ๋ก ์ด๋๋ ์ฒญํฌ์ ๋ฐ์ดํฐ ์ญ์ (2.6 ๋ถํฐ๋ ๋ก์ปฌ ๋์คํฌ์ ๋ฐฑ์ )
์ผ๋ฐ์ ์ธ ํธ๋์ญ์ ์์ฑ ACID(Atomicity, Consistency, Isolation, Durability)
- MongoDB ๋จ์ผ ๋ํ๋จผํธ์ ๋ํ ๋ณ๊ฒฝ(INSERT,UPDATE,DELETE)์ ๋ชจ๋ ํธ๋์ญ์ ์ง์(์๋์ ์ผ๋ก ๋ฐ์ดํฐ๋ณ๊ฒฝ์ ๋กค๋ฐฑ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์๋ค.)
- 4 ์ ๋ ๋ฒ์ ์์๋ ๋ฉํฐ ๋ํ๋จผํธ ํธ๋์ญ์ ์ง์
- WiredTiger๋ ํธ๋์ญ์ ์ด ์ง์์ด ๊ฐ๋ฅํ ์คํ ๋ฆฌ์ง ์์ง์ด์ง๋ง ์ค๋ฉ์ผ๋ก ์ธํด ๋ฐ์ดํฐ ์ ์ด ๋ถ์ฐ๋๋ฏ๋ก ๋ถ์ฐ ํธ๋์ญ์ ์ ์ง์ํ์ง ์๋ ์ด์ ํธ๋์ญ์ ์ ํฐ ์๋ฏธ๊ฐ ์๋ค.
์ค๋ฉ๋ ์ปฌ๋ ์ ์์ ์ ๋ํฌ ์ธ๋ฑ์ค๋ ์ค๋ ํค๋ฅผ ํฌํจํ๋ ์ธ๋ฑ์ค์ ๋ํด์๋ง ์ ์ฉํ ์ ์๋ค.
๋ชจ๋ ์ปฌ๋ ์ ์ "_id" ํ๋๋ ํ๋ผ์ด๋จธ๋ฆฌ ํค ํ๋์ด๋ฉฐ ๋ฌด์กฐ๊ฑด ์ ๋ํฌํด์ผ ํ๋ค.
_id ๋ UUID์ ๊ฐ์ด ์๋ฒ, ํ๋ก์ธ์ค ์์ด๋ ๊ทธ๋ฆฌ๊ณ ์๊ฐ ์ ๋ณด๋ฅผ ์ด์ฉํด ์ค๋ณต๋์ง ์๋ ๊ฐ์ด ํ ๋น๋๋ค. ํ์ง๋ง ์ฌ์ฉ์๊ฐ ์ง์ ์ ํํ ๊ฐ์ ์ ์ฅํ ๋์๋ ์ฌ์ฉ์๊ฐ ์ง์ ๊ทธ ์ ๋ํฌํจ์ ๋ณด์ฅํด์ผ ํ๋ค. ์ค์ ๋ก ์ค๋ ๋ด์์๋ ์ค๋ณต ์ฒดํฌ๋ฅผ ํ์ง๋ง ์ ์ฒด ์ค๋์ ๋ํด์๋ ์ค๋ณต ์ฒดํฌ๋ฅผ ์ํํ์ง ์๋๋ค.
$lookup(์กฐ์ธ), $graphLookup(๊ณ์ธตํ ์ฌ๊ท ์ฟผ๋ฆฌ, ๊ทธ๋ํ ๋ฐ์ดํฐ ์ฟผ๋ฆฌ) ์คํ ์ด์ง๋ ๋ผ์ฐํฐ๊ฐ ์๋ ์ค๋ ์๋ฒ์์ ์คํ๋๋๋ฐ ์ค๋ ์๋ฒ๋ ๋ฐ์ดํฐ ์ฒ๋ฅผ ์ํด ๋ค๋ฅธ ์ค๋์ ๋ฐ์ดํฐ๋ฅผ ์ฐธ์กฐํ ์ ์์ผ๋ฏ๋ก ์์ ์ฟผ๋ฆฌ๋ค์ ์ค๋ฉ ํ๊ฒฝ์์ ์ฌ์ฉํ ์ ์๋ค.