sh.updateZoneKeyRange()
์ ์
sh.updateZoneKeyRange(namespace, minimum, maximum, zone)
๋ฒ์ 3.4์ ์๋ก ์ถ๊ฐ๋์์ต๋๋ค.
๋ฒ์ ์ค๋ ํค ๊ฐ์ ๊ตฌ์ญ ๊ณผ ์ฐ๊ฒฐํฉ๋๋ค.
updateZoneKeyRange
๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ช ๋ น ๊ณผ ํด๋น ํฌํผsh.updateZoneKeyRange()
๋ฐsh.addTagRange()
๋ฅผ ์ค๋ฉ๋์ง ์์ ์ปฌ๋ ์ ๋๋ ์กด์ฌํ์ง ์๋ ์ปฌ๋ ์ ์์ ์คํ ์ ์์ต๋๋ค.์ค์
Mongo์ฌ ๋ฐฉ๋ฒ
์ด ํ์ด์ง์์๋
mongosh
๋ฉ์๋์ ๋ํด ์ค๋ช ํฉ๋๋ค. ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ช ๋ น ๋๋ Node.js์ ๊ฐ์ ์ธ์ด๋ณ ๋๋ผ์ด๋ฒ์ ๋ํ ์ค๋ช ์๊ฐ ์๋๋๋ค.๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ช ๋ น์ ๋ํด์๋
updateZoneKeyRange
๋ช ๋ น์ ์ฐธ์กฐํ์ญ์์ค.MongoDB API ๋๋ผ์ด๋ฒ์ ๊ฒฝ์ฐ ์ธ์ด๋ณ MongoDB ๋๋ผ์ด๋ฒ ์ค๋ช ์๋ฅผ ์ฐธ์กฐํ์ธ์.
sh.updateZoneKeyRange()
๋ค์ ์ธ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.Parameter์ ํ์ค๋ชnamespace
๋ฌธ์์ด
์ค๋ ์ปฌ๋ ์ ์ ๋ค์์คํ์ด์ค ๋
zone
์ ์ฐ๊ฒฐ๋ฉ๋๋ค.์์ ์ด ์ฑ๊ณตํ๋ ค๋ฉด ์ปฌ๋ ์ ์ ์ค๋ฉํด์ผ ํฉ๋๋ค.
minimum
๋ฌธ์
์ค๋ ํค ๊ฐ ๋ฒ์์ ํฌ๊ด์ ํํ์ ๋๋ค.
์ค๋ ํค์ ๊ฐ ํ๋๋ฅผ
<fieldname> : <value>
ํ์์ผ๋ก ์ง์ ํฉ๋๋ค. ๊ฐ์ ์ค๋ ํค์ ๋์ผํ BSON ์ ํ์ด์ด์ผ ํฉ๋๋ค.ํด์ ์ค๋ฉ์ ์ฌ์ฉํ๋ ค๋ฉด ํ๋ ๊ฐ์ด
NumberLong
์ ํ์ด์ด์ผ ํฉ๋๋ค.maximum
๋ฌธ์
์ค๋ ํค ๊ฐ ๋ฒ์์ ๋ฐฐํ์ ์ํ์ ๋๋ค.
์ค๋ ํค์ ๊ฐ ํ๋๋ฅผ
<fieldname> : <value>
ํ์์ผ๋ก ์ง์ ํฉ๋๋ค. ๊ฐ์ ์ค๋ ํค์ ๋์ผํ BSON ์ ํ์ด์ด์ผ ํฉ๋๋ค.ํด์ ์ค๋ฉ์ ์ฌ์ฉํ๋ ค๋ฉด ํ๋ ๊ฐ์ด
NumberLong
์ ํ์ด์ด์ผ ํฉ๋๋ค.zone
๋ฌธ์์ด
minimum
๋ฐmaximum
๋ก ๋ฌถ์ธ ์ค๋ ํค ๊ฐ ๋ฒ์์ ์ฐ๊ฒฐํ ๊ตฌ์ญ์ ์ด๋ฆ์ ๋๋ค.sh.updateZoneKeyRange()
์ธ์คํด์ค์ ์ฐ๊ฒฐ๋ ๊ฒฝ์ฐ์๋ง ๋ฅผ ์คํํฉ๋๋ค.mongos
ํธํ์ฑ
์ด ๋ฉ์๋๋ ๋ค์ ํ๊ฒฝ์์ ํธ์คํ ๋๋ ๋ฐฐํฌ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
MongoDB Atlas: ํด๋ผ์ฐ๋์์์ MongoDB ๋ฐฐํฌ๋ฅผ ์ํ ์์ ๊ด๋ฆฌํ ์๋น์ค
์ค์
์ด ๋ช ๋ น์ M0, M2 ๋ฐ M5 ํด๋ฌ์คํฐ์์ ์ง์๋์ง ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ์ง์๋์ง ์๋ ๋ช ๋ น์ ์ฐธ์กฐํ์ธ์.
MongoDB Enterprise: MongoDB์ ๊ตฌ๋ ๊ธฐ๋ฐ ์์ฒด ๊ด๋ฆฌ ๋ฒ์
MongoDB Community: MongoDB์ ์์ค ์ฌ์ฉ ๊ฐ๋ฅ ๋ฌด๋ฃ ์์ฒด ๊ด๋ฆฌ ๋ฒ์
ํ๋
์ค๋ ์ปฌ๋ ์
์ ๊ธฐ์กด ๋ฒ์์ ํํ์ ๋ฐ ์ํ์ ์ด ๊ฒน์น๋ ์ค๋ ํค ๊ฐ ๋ฒ์๋ ์์ฑํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๊ธฐ์กด ๋ฒ์๊ฐ 1
~ 10
์ธ ๊ฒฝ์ฐ ์ ๋ฒ์๊ฐ ๊ธฐ์กด ๋ฒ์์ ๊ฒน์น๋ฏ๋ก 5
~ 20
์ ์ ๋ฒ์๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
๊ตฌ์ญ์ ์ฌ๋ฌ ๋ฒ์์ ๋ฐ์ดํฐ์ ์ฐ๊ฒฐ๋ ์ ์์ง๋ง ๋ฒ์๋ ์ต๋ ๋จ์ผ ๊ตฌ์ญ๊ณผ ์ฐ๊ฒฐ๋ ์ ์์ต๋๋ค.
์ค๋ ํด๋ฌ์คํฐ์ ๊ตฌ์ญ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๊ตฌ์ญ ๋งค๋ด์ผ ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์.
๋น์ด ์๊ฑฐ๋ ์กด์ฌํ์ง ์๋ ์ปฌ๋ ์ ์ ๋ํ ์ด๊ธฐ ์ฒญํฌ ๋ฐฐํฌ
๋น์ด ์๊ฑฐ๋ ์กด์ฌํ์ง ์๋ ์ปฌ๋ ์
์ ๋ํด ๊ตฌ์ญ ์ค๋ฉ ์ ์ํํ๋ ค๋ sh.updateZoneKeyRange()
๊ฒฝ์ฐ, ์ปฌ๋ ์
์ ์ค๋ฉ ํ๊ธฐ ์ ์ ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ญ ๋ฐ ๊ตฌ์ญ ๋ฒ์๋ฅผ ์์ฑํฉ๋๋ค(์ดํ 4.0.2). ๋ฒ์ 4 ๋ถํฐ.0.3, ๋น์ด ์๊ฑฐ๋ ์กด์ฌํ์ง ์๋ ์ปฌ๋ ์
์ ๊ตฌ์ญ ๋ฐ ๊ตฌ์ญ ๋ฒ์๋ฅผ ์์ฑํ๋ฉด MongoDB๊ฐ ์ปฌ๋ ์
์ ์ค๋ฉํ ๋ ์ด๊ธฐ ์ฒญํฌ ์์ฑ ๋ฐ ๋ฐฐํฌ ํ๋ก์ธ์ค๋ฅผ ์ต์ ํํ ์ ์์ต๋๋ค. ์ด ์ต์ ํ๋ ํ๋ก์ธ์ค๋ ์ค๋ฉ ํ ๊ตฌ์ญ์ ์์ฑํ๋ ๊ฒ๋ณด๋ค ์ ์ ๋ฐธ๋ฐ์ ์ค๋ฒํค๋๋ก ๊ตฌ์ญ ์ค๋ฉ์ ๋ ๋น ๋ฅด๊ฒ ์ค์ ํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. ๋ฐธ๋ฐ์ ๋ ์ต์ ํ๋ ์ด๊ธฐ ์ฒญํฌ ์์ฑ ๋ฐ ๋ฐฐํฌ ํ ๋ชจ๋ ์ฒญํฌ ๊ด๋ฆฌ๋ฅผ ์ํํฉ๋๋ค.
์ด๊ธฐ ์ฒญํฌ ๋ฐฐํฌ๋ฅผ ์ํ ๊ตฌ์ญ ๋ฐ ๊ตฌ์ญ ๋ฒ์๋ฅผ ์ ์ํ๋ ์ ๋ ๋น์ด ์๊ฑฐ๋ ์กด์ฌํ์ง ์๋ ์ปฌ๋ ์ ์ ๋ํ ๊ตฌ์ญ ๋ฐ ๊ตฌ์ญ ๋ฒ์ ์ฌ์ ์ ์๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ณตํฉ ํด์ ์ค๋ ํค๋ฅผ ์ฌ์ฉํ ์ด๊ธฐ ์ฒญํฌ ๋ฐฐํฌ
MongoDB๋ ๋ณตํฉ ํด์ ์ธ๋ฑ์ค ์์ ์ปฌ๋ ์ ์ค๋ฉ์ ์ง์ํฉ๋๋ค. MongoDB๋ ๋ณตํฉ ํด์ ์ค๋ ํค์์ ๋น์ด ์๊ฑฐ๋ ์กด์ฌํ์ง ์๋ ์ปฌ๋ ์ ์ ์ค๋ฉํ ๋ ์ต์ ํ๋ ์ด๊ธฐ ์ฒญํฌ ์์ฑ ๋ฐ ๋ฐฐํฌ๋ฅผ ์ํํ ์ ์์ต๋๋ค.
ํด์๋ ํ๋๊ฐ ์ค๋ ํค์ ์ ๋์ฌ(์ฆ, ์ค๋ ํค์ ์ฒซ ๋ฒ์งธ ํ๋)์ธ ๊ฒฝ์ฐ, MongoDB๊ฐ ์ด๊ธฐ ์ฒญํฌ ์์ฑ ๋ฐ ๋ฐฐํฌ๋ฅผ ์ํํ๋ ค๋ฉด ๋ค์ ์ฌํญ์ด ๋ชจ๋ ์ถฉ์กฑ๋์ด์ผ ํฉ๋๋ค.
์ปฌ๋ ์ ์๋ ๋ชจ๋ ํํ ํ๋์ ๋ํด
MinKey
์ด๊ณ ๋ชจ๋ ์ํ ํ๋์ ๋ํดMaxKey
์ธ ๋จ์ผ ๊ตฌ์ญ ๋ฒ์๊ฐ ์์ต๋๋ค.sh.shardCollection()
๋ presplitHashedZones: true ์ต์ ์ ์ง์ ํฉ๋๋ค.
ํด์ ๋ ํ๋ ๊ฐ ์ค๋ ํค ์ ์ ๋์ฌ๊ฐ ์๋ ๊ฒฝ์ฐ(์ฆ, ์ค๋ ํค ์ ํด์๋์ง ์์ ์ ํ ํ๋๊ฐ ํ๋ ์ด์ ์๋ ๊ฒฝ์ฐ) MongoDB ๊ฐ ์ด๊ธฐ ์ฒญํฌ ์์ฑ ๋ฐ ๋ฐฐํฌ๋ฅผ ์ํํ๋ ค๋ฉด ๋ค์ ์ฌํญ์ด ๋ชจ๋ ์ถฉ์กฑ๋์ด์ผ ํฉ๋๋ค.
์ปฌ๋ ์ ์๋ ๊ณ ์ ํ ์ ๋์ฌ ํ๋ ๊ฐ์ ๊ฐ ์กฐํฉ์ ๋ํด ํ๋์ ๊ตฌ์ญ ๋ฒ์๊ฐ ์์ต๋๋ค(์: ํด์๋ ํ๋ ์์ ์ค๋ ๋ชจ๋ ํ๋).
๊ฐ ๊ตฌ์ญ ๋ฒ์ ์ ํํ์ ๋ํด ํด์ ํ๋ ์ ๋ชจ๋ ํ์ ํ๋์ ๋ํด
MinKey
๋ฅผ ์ง์ ํฉ๋๋ค.๊ฐ ๊ตฌ์ญ ๋ฒ์์ ๋ํด ํ๋ ์ด์์ ์ํ ์ ๋์ฌ ํ๋๋ ํํ ์ ๋์ฌ ํ๋์ ๋ฌ๋ผ์ผ ํฉ๋๋ค .
sh.shardCollection()
๋ presplitHashedZones: true ์ต์ ์ ์ง์ ํฉ๋๋ค.
๋ณตํฉ ํด์ ์ค๋ ํค์์ ์ด๊ธฐ ์ฒญํฌ ๋ฐฐํฌ๋ฅผ ์ํ ๊ตฌ์ญ ๋ฐ ๊ตฌ์ญ ๋ฒ์๋ฅผ ์ ์ํ๋ ๋ ์์ ํ ์ ๋ ๋น์ด ์๊ฑฐ๋ ์กด์ฌํ์ง ์๋ ์ปฌ๋ ์ ์ ๋ํ ๊ตฌ์ญ ๋ฐ ๊ตฌ์ญ ๋ฒ์ ์ฌ์ ์ ์๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ฐธ๋ฐ์
๋ฒ์๋ฅผ ๊ตฌ์ญ์ ์ฐ๊ฒฐํ ํ์๋ ๋จผ์ ๋ฐธ๋ฐ์ ๋ฅผ ์คํํด์ผ ๊ตฌ์ญ์ ํฌํจ๋๋ ๋ฒ์์ ์ฒญํฌ๋ฅผ ํด๋น ๊ตฌ์ญ ๋ด๋ถ์ ์ค๋๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ ์ ์์ต๋๋ค. ๋ฐธ๋ฐ์ฑ์ด ์๋ฃ๋ ๋๊น์ง, ์ค๋ ํด๋ฌ์คํฐ์ ๋ํด ๊ตฌ์ฑ๋ ๊ตฌ์ญ์ ๊ณ ๋ คํ ๋ ์ผ๋ถ ์ฒญํฌ๊ฐ ์๋ชป๋ ์ค๋์ ์์ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋ฐธ๋ฐ์ ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ค๋ ํด๋ฌ์คํฐ์์ ๋ง์ด๊ทธ๋ ์ด์ ์ด ์๋ํ๋ ๋ฐฉ์์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ค๋ ํด๋ฌ์คํฐ ๋ฐธ๋ฐ์ ๋งค๋ด์ผ ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์.
๋ฐ์ด๋
๊ตฌ์ญ ๋ฒ์๋ ํญ์ ํํ ๊ฒฝ๊ณ๋ฅผ ํฌํจํ๊ณ ์ํ ๊ฒฝ๊ณ๋ฅผ ์ ์ธํฉ๋๋ค.
์ญ์ ๋ ์ปฌ๋ ์
์ปฌ๋ ์ ์ ์ ๊ฑฐํ๋ฉด ๊ด๋ จ๋ ์์ญ/ํ๊ทธ ๋ฒ์๊ฐ ์ญ์ ๋ฉ๋๋ค.
์ด์ ๋ฒ์ ์์๋ MongoDB๊ฐ ์ญ์ ๋ ์ปฌ๋ ์ ์ ๋ํ ํ๊ทธ ์ฐ๊ฒฐ์ ์ ๊ฑฐํ์ง ์์์ผ๋ฉฐ, ๋์ค์ ๊ฐ์ ์ด๋ฆ์ผ๋ก ์ ์ปฌ๋ ์ ์ ๋ง๋ค๋ฉด ์ด์ ํ๊ทธ ์ฐ๊ฒฐ์ด ์ ์ปฌ๋ ์ ์ ์ ์ฉ๋ฉ๋๋ค.
๋ณด์
authentication ์ผ๋ก ์คํ๋๋ ์ค๋ ํด๋ฌ์คํฐ์ ๊ฒฝ์ฐ ๋ค์ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ฆํด์ผ ํฉ๋๋ค.
config
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ค์ํ ์ปฌ๋ ์ ์ ๋ํด ์ง์ ๋ ์์ ์ด ํฌํจ๋ ๊ถํ์ ๊ฐ์ง ์ฌ์ฉ์์ ๋๋ค.๋๋,
ํด๋ฌ์คํฐ ๋ฆฌ์์ค์ ๋ํ ๊ฐ
enableSharding
ํฌํจ๋ ๊ถํ์ ๊ฐ์ง ์ฌ์ฉ์์ ๋๋ค.
clusterAdmin
๋๋ clusterManager
๊ธฐ๋ณธ ์ ๊ณต ์ญํ ์๋ sh.updateZoneKeyRange()
๋ฐ๊ธ์ ์ ํฉํ ๊ถํ์ด ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ์ญํ ๊ธฐ๋ฐ ์ก์ธ์ค ์ ์ด ์ ๋ํ ์ค๋ช
์ ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์.
์์
์ค๋ ํค๊ฐ { a
: 1 }
์ธ ์ค๋ ์ปฌ๋ ์
exampledb.collection
์ด ์ฃผ์ด์ง๋ฉด ๋ค์ ์์
์ alpha
๊ตฌ์ญ์ ํํ์ด 1
์ด๊ณ ์ํ์ด 10
์ธ ๋ฒ์๋ฅผ ์์ฑํฉ๋๋ค.
sh.updateZoneKeyRange( "exampledb.collection", { a : 1 }, { a : 10 }, "alpha" )
๋ค์ ์์
์ null
์ zone
ํ๋์ ์ ๋ฌํ์ฌ ์ด์ ์ ์์ฑ๋ ๋ฒ์๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
sh.updateZoneKeyRange( "exampledb.collection", { a : 1 }, { a : 10 }, null )
min
๋ฐ max
๋ ๋์ ๋ฒ์์ ๊ฒฝ๊ณ์ ์ ํํ ์ผ์นํด์ผ ํฉ๋๋ค. ๋ค์ ์์
์ ์ด์ ์ ์์ฑ๋ ๋ฒ์๋ฅผ ์ ๊ฑฐํ๋ ค๊ณ ์๋ํ์ง๋ง { a : 0 }
๋ฅผ min
๋ฐ์ด๋๋ก ์ง์ ํฉ๋๋ค.
sh.updateZoneKeyRange( "exampledb.collection", { a : 0 }, { a : 10 }, null )
{ a : 0 }
๋ฐ { a : 10 }
๋ฒ์๋ ๊ธฐ์กด ๋ฒ์๋ฅผ ํฌํจํ์ง๋ง ์ ํํ ์ผ์นํ์ง ์์ผ๋ฏ๋ก updateZoneKeyRange
๋ ์๋ฌด๊ฒ๋ ์ ๊ฑฐํ์ง ์์ต๋๋ค.
๋ณตํฉ ์ค๋ ํค
์ค๋ ํค๊ฐ { a
: 1, b : 1 }
์ธ ์ค๋๋ ์ปฌ๋ ์
exampledb.collection
์ด ์ฃผ์ด์ง๋ฉด ๋ค์ ์์
์ { a: 1, b : 1 }
์ ํํ๊ณผ { a : 10, b : 10}
์ ์ํ์ ํฌํจํ๋ ๋ฒ์๋ฅผ ์์ฑํ๊ณ ์ด๋ฅผ alpha
๊ตฌ์ญ๊ณผ ์ฐ๊ฒฐํฉ๋๋ค.
sh.updateZoneKeyRange( "exampledb.collection", { a : 1, b : 1 }, { a : 10, b : 10 }, "alpha" )
๋น์ด ์๊ฑฐ๋ ์กด์ฌํ์ง ์๋ ์ปฌ๋ ์ ์ ๋ํ ๊ตฌ์ญ ๋ฐ ๊ตฌ์ญ ๋ฒ์ ์ฌ์ ์ ์
๋น์ด ์๊ฑฐ๋ ์กด์ฌํ์ง ์๋ ์ปฌ๋ ์ ์ ๊ตฌ์ญ ๋ฐ ๊ตฌ์ญ ๋ฒ์๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ, MongoDB๋ ์ปฌ๋ ์ ์ ์ค๋ฉํ ๋ ์ด๊ธฐ ์ฒญํฌ ์์ฑ ๋ฐ ๋ฐฐํฌ ํ๋ก์ธ์ค๋ฅผ ์ต์ ํํ ์ ์์ต๋๋ค. ์ด ์ต์ ํ๋ ํ๋ก์ธ์ค๋ ์ค๋ฉ ํ ๊ตฌ์ญ์ ์์ฑํ๋ ๊ฒ๋ณด๋ค ์ ์ ๋ฐธ๋ฐ์ ์ค๋ฒํค๋๋ก ๊ตฌ์ญ ์ค๋ฉ์ ๋ ๋น ๋ฅด๊ฒ ์ค์ ํ ์ ์๋๋ก ์ง์ํฉ๋๋ค. ๋ฐธ๋ฐ์ ๋ ์ต์ ํ๋ ์ด๊ธฐ ์ฒญํฌ ์์ฑ ๋ฐ ๋ฐฐํฌ ํ ๋ชจ๋ ์ฒญํฌ ๊ด๋ฆฌ๋ฅผ ์ํํฉ๋๋ค. ์์ธํ ๋ด์ฉ ์ ๋ณตํฉ ํด์ ์ค๋ ํค๋ฅผ ์ฌ์ฉํ ์ด๊ธฐ ์ฒญํฌ ๋ฐฐํฌ ๋ฅผ ์ฐธ์กฐํ์ธ์.
์๋ ์น์ ์๋ ์ธ ๊ฐ์ง ์ค๋ ํค ์ ํ์ ๋ํ ์์๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
์ธ ๊ฐ์ง ์๋ก ๋ค๋ฅธ ์ค๋ ํค ์ ํ์ ๋ํด ์ฌ์ ์ ์๋ ๊ตฌ์ญ ๋๋ ๊ตฌ์ญ ๋ฒ์๋ฅผ ์ดํด๋ณด๋ ๋ค์ ์์๋ฅผ ์ดํด๋ณด์ธ์.
๋จ์ผ ๋๋ ๋ณตํฉ ์ค๋ ํค
์ฐธ๊ณ
์ด ์์๋ ํด์ ํ๋๊ฐ ์๋ ๋จ์ผ ํ๋ ๋๋ ๋ณตํฉ ์ค๋ ํค์๋ง ์ ์ฉ๋ฉ๋๋ค.
์: { "zip" : 1 }
๋๋ { "zip" : 1, "account" : 1}
๊ตฌ์ญ ๋ง๋ค๊ธฐ
sh.addShardToZone()
๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ญ์ ์์ฑํฉ๋๋ค.
sh.addShardToZone("shardA", "DC1") sh.addShardToZone("shardB", "DC2")
๊ตฌ์ญ ๋ฒ์ ๋ง๋ค๊ธฐ
sh.updateZoneKeyRange()
๋ฅผ ์ฌ์ฉํ์ฌ exampledb
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋น contacts
์ปฌ๋ ์
์ ๋ฒ์๋ฅผ ๋ง๋ญ๋๋ค.
sh.updateZoneKeyRange( "exampledb.contacts", { zip: 10001 }, { zip: 10090 }, "DC1" ); sh.updateZoneKeyRange( "exampledb.contacts", { zip: 90001 }, { zip: 96054 }, "DC2" );
์ ํ ์ฌํญ: ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ค๋ฉ ํ์ฑํ
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ด๋ฏธ ์ค๋ฉ์ ํ์ฑํํ ๊ฒฝ์ฐ ์ด ๋จ๊ณ๋ฅผ ๊ฑด๋๋๋๋ค.
sh.enableSharding()
๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ค๋ฉ์ ํ์ฑํํฉ๋๋ค:
sh.enableSharding("exampledb")
์ปฌ๋ ์ ์ค๋ฉ
์ฐธ๊ณ
์ปฌ๋ ์ ์ด ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ ์ค๋ฉ ์์ ์ ์ปฌ๋ ์ ์ ์์ฑํฉ๋๋ค.
์ปฌ๋ ์ ์ด ๋น์ด ์๊ณ ์ค๋ ํค๋ฅผ ์ง์ํ๋ ์ธ๋ฑ์ค๊ฐ ์๋ ๊ฒฝ์ฐ ์ค๋ฉ ์์ ์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํฉ๋๋ค.
sh.shardCollection()
๋ฅผ ์ฌ์ฉํ์ฌ contacts
์ปฌ๋ ์
์ ์ค๋ฉํฉ๋๋ค.
sh.shardCollection("exampledb.contacts", { zip: 1 } );
์์ฑ๋ ์ฒญํฌ ๋ฐ ๋ฐฐํฌ ๊ฒํ
์์ฑ๋ ์ฒญํฌ์ ๋ถํฌ๋ฅผ ๋ณด๋ ค๋ฉด sh.status()
์์
์ ์คํํฉ๋๋ค.
sh.status()
์ด ๋ฉ์๋๋ ๋ค์์ ๋ฐํํฉ๋๋ค.
--- Sharding Status --- sharding version: { "_id" : 1, "minCompatibleVersion" : 5, "currentVersion" : 6, "clusterId" : ObjectId("5b80c06d35a961fd0ae1986d") } shards: { "_id" : "shardA", "host" : "shardA/mongodb0.example.net:27018,mongodb1.example.net:27018,mongodb2.example.net:27018", "state" : 1, "tags" : [ "DC1" ] } { "_id" : "shardB", "host" : "shardB/mongodb3.example.net:27018,mongodb4.example.net:27018,mongodb5.example.net:27018", "state" : 1, "tags" : [ "DC2" ] } active mongoses: "4.2.0" : 2 autosplit: Currently enabled: yes balancer: Currently enabled: yes Currently running: no Failed balancer rounds in last 5 attempts: 0 Migration Results for the last 24 hours: No recent migrations databases: { "_id" : "config", "primary" : "config", "partitioned" : true } { "_id" : "exampledb", "primary" : "shardA", "partitioned" : true, "version" : { "uuid" : UUID("6c351bcf-acd2-4fd9-82d8-9f6bd7321558"), "lastMod" : 1 } } exampledb.contacts shard key: { "zip" : 1 } unique: false balancing: true chunks: shardA 3 shardB 2 { "zip" : { "$minKey" : 1 } } -->> { "zip" : 10001 } on : shardA Timestamp(1, 0) { "zip" : 10001 } -->> { "zip" : 10090 } on : shardA Timestamp(1, 1) { "zip" : 10090 } -->> { "zip" : 90001 } on : shardB Timestamp(1, 2) { "zip" : 90001 } -->> { "zip" : 96054 } on : shardB Timestamp(1, 3) { "zip" : 96054 } -->> { "zip" : { "$maxKey" : 1 } } on : shardA Timestamp(1, 4) tag: DC1 { "zip" : 10001 } -->> { "zip" : 10090 } tag: DC2 { "zip" : 90001 } -->> { "zip" : 96054 }
์ปฌ๋ ์ ์ ๊ฒฝ์ฐ ์ค๋ฉ ์์ ์ผ๋ก shardA ๋ฐ shardB์ ๊ฑธ์ณ 5 ์ฒญํฌ(์์ญ ๋ฒ์์ ํด๋นํ๋ 2๊ฐ, ๋ค๋ฅธ ๋ชจ๋ ๊ฐ์ ํฌํจํ๋ ์ฒญํฌ 3๊ฐ)๊ฐ ์์ฑ๋์์ต๋๋ค.
ํด์ ์ ๋์ฌ๊ฐ ์๋ ๋ณตํฉ ํด์ ์ค๋ ํค
์ฐธ๊ณ
์ด ์์๋ ํด์ ํ๋๊ฐ ์ค๋ ํค์ ์ ๋์ฌ(์ฆ, ์ค๋ ํค์ ์ฒซ ๋ฒ์งธ ํ๋๊ฐ ํด์๋จ)์ธ ๋ณตํฉ ํด์ ์ค๋ ํค์๋ง ์ ์ฉ๋ฉ๋๋ค.
์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค. { "_id" : "hashed", "facility" : 1 }
MongoDB๋ ๋ณตํฉ ํด์ ์ธ๋ฑ์ค ์์ ์ปฌ๋ ์ ์ค๋ฉ์ ์ง์ํฉ๋๋ค. ๋ณตํฉ ํด์ ์ค๋ ํค์์ ์ค๋ฉํ ๋, MongoDB๋ ์ ์๋ ์์ญ ๋ฒ์๊ฐ ์ถ๊ฐ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋ ๊ฒฝ์ฐ์๋ง ๋น์ด ์๊ฑฐ๋ ์กด์ฌํ์ง ์๋ ์ปฌ๋ ์ ์ ๋ํด ์ต์ ํ๋ ์ด๊ธฐ ์ฒญํฌ ์์ฑ ๋ฐ ๋ฐฐํฌ๋ฅผ ์ํํ ์ ์์ต๋๋ค.
๋ ์ ์กฐ ์์ค ์ค ํ๋์ ๋ถ์์ ์ ์ฅํ ๋น ์ปฌ๋ ์
examples.metrics
์ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ๊ณํ๋ ์ค๋ ํค๋ { "_id" : "hashed", "facility" : 1}
์ด๋ฉฐ, ์ฌ๊ธฐ์ ํด์ ํ๋๋ ์ค๋ ํค ์ ๋์ฌ ์
๋๋ค.
๊ตฌ์ญ ๋ง๋ค๊ธฐ
๊ณํ๋ ์ค๋ ํค๋ { "_id" : "hashed", "facility" : 1 }
์
๋๋ค. ํด์๋ ํ๋๋ ์ ๋์ฌ(์ฆ, ์ค๋ ํค์ ์ฒซ ๋ฒ์งธ ํ๋)์ด๋ฏ๋ก sh.addShardToZone()
์์ฌ์ฉํ์ฌ ๋จ์ผ ๊ตฌ์ญ์ ๋ง๋ญ๋๋ค.
sh.addShardToZone("shardA", "FacilityAlpha") sh.addShardToZone("shardB", "FacilityAlpha")
๊ตฌ์ญ ๋ฒ์ ๋ง๋ค๊ธฐ
ํด์ ์ ๋์ฌ๊ฐ ์๋ ๋ณตํฉ ํด์ ์ค๋ ํค์ ์ด๊ธฐ ์ฒญํฌ ๋ฐฐํฌ์๋ ๋ชจ๋ ํํ ํ๋์ MinKey
, ๋ชจ๋ ์ํ ํ๋์ MaxKey
๊ฐ ์๋ ๋จ์ผ ๊ตฌ์ญ ๋ฒ์๊ฐ ํ์ํฉ๋๋ค.
sh.updateZoneKeyRange()
์ ์ฌ์ฉํ์ฌ ๋จ์ผ ๋ฒ์๋ฅผ ์์ฑํฉ๋๋ค.
sh.updateZoneKeyRange( "examples.metrics", { "_id" : MinKey, "facility" : MinKey }, { "_id" : MaxKey, "facility" : MaxKey }, "FacilityAlpha" );
์ ํ ์ฌํญ: ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ค๋ฉ ํ์ฑํ
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ด๋ฏธ ์ค๋ฉ์ ํ์ฑํํ ๊ฒฝ์ฐ ์ด ๋จ๊ณ๋ฅผ ๊ฑด๋๋๋๋ค.
sh.enableSharding()
๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ค๋ฉ์ ํ์ฑํํฉ๋๋ค:
sh.enableSharding("examples")
์ปฌ๋ ์ ์ค๋ฉ
์ฐธ๊ณ
์ปฌ๋ ์ ์ด ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ ์ค๋ฉ ์์ ์ ์ปฌ๋ ์ ์ ์์ฑํฉ๋๋ค.
์ปฌ๋ ์ ์ด ๋น์ด ์๊ณ ์ค๋ ํค๋ฅผ ์ง์ํ๋ ์ธ๋ฑ์ค๊ฐ ์๋ ๊ฒฝ์ฐ ์ค๋ฉ ์์ ์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํฉ๋๋ค.
์ปฌ๋ ์
์ ์ค๋ฉํ๊ณ ์ด๊ธฐ ์ฒญํฌ ์์ฑ ๋ฐ ๋ฐฐํฌ๋ฅผ ์ํํ๋ ค๋ฉด sh.shardCollection()
๋ฅผ presplitHashedZones: true ์ ํจ๊ป ์ฌ์ฉํฉ๋๋ค.
sh.shardCollection( "examples.metrics", { "_id" : "hashed", "facility" : 1 }, false, { presplitHashedZones: true } )
์์ฑ๋ ์ฒญํฌ ๋ฐ ๋ฐฐํฌ ๊ฒํ
์์ฑ๋ ์ฒญํฌ์ ๋ถํฌ๋ฅผ ๋ณด๋ ค๋ฉด sh.status()
์์
์ ์คํํฉ๋๋ค.
sh.status()
์ถ๋ ฅ์ ๋ค์๊ณผ ์ ์ฌํฉ๋๋ค(๊ฐ๋ ์ฑ์ ์ํด ๋ด์ฉ์ด ์๋ต๋จ).
--- Sharding Status --- databases: { "_id" : "config", "primary" : "config", "partitioned" : true } { "_id" : "examples", "primary" : "shardA", "partitioned" : true, "version" : { "uuid" : UUID("245f8abf-a363-48b0-8208-2a5b577bbb4e"), "lastMod" : 1 } } examples.metrics shard key: { "_id" : "hashed", "facility" : 1 } unique: false balancing: true chunks: shardA 2 shardB 2 { "_id" : { "$minKey" : 1 }, "facility" : { "$minKey" : 1 } } -->> { "_id" : NumberLong("-4611686018427387902"), "facility" : { "$minKey" : 1 } } on : shardA Timestamp(1, 0) { "_id" : NumberLong("-4611686018427387902"), "facility" : { "$minKey" : 1 } } -->> { "_id" : NumberLong(0), "facility" : { "$minKey" : 1 } } on : shardA Timestamp(1, 1) { "_id" : NumberLong(0), "facility" : { "$minKey" : 1 } } -->> { "_id" : NumberLong("4611686018427387902"), "facility" : { "$minKey" : 1 } } on : shardB Timestamp(1, 2) { "_id" : NumberLong("4611686018427387902"), "facility" : { "$minKey" : 1 } } -->> { "_id" : { "$maxKey" : 1 }, "facility" : { "$maxKey" : 1 } } on : shardB Timestamp(1, 3) tag: FacilityAlpha { "_id" : { "$minKey" : 1 }, "facility" : { "$minKey" : 1 } } -->> { "_id" : { "$maxKey" : 1 }, "facility" : { "$maxKey" : 1 } }
์ค๋ฉ ์์
์ผ๋ก ์ด 4 ์ฒญํฌ๊ฐ ์์ฑ๋์์ต๋๋ค. ๋ ๊ฐ์ ์ฒญํฌ๋ ์ ๋ ํํ๊ณผ ์ํ์ ํด๋นํฉ๋๋ค. shardA
๋ฐ shardB
์ FacilityAlpha
์ ํด๋นํ๋ ํ๋์ ๊ตฌ์ญ์ด ์์ฑ๋์์ต๋๋ค. ๊ตฌ์ญ์ ํด์ ํ๋๋ฅผ ์ฌ์ฉํ์ฌ 2 ์ฒญํฌ๋ก ์ธ๋ถํ๋์์ต๋๋ค.
์ ๋์ฌ๊ฐ ์๋ ํด์ ํ๋๊ฐ ์๋ ๋ณตํฉ ํด์ ์ค๋ ํค
์ฐธ๊ณ
์ด ์์๋ ํด์ ํ๋๊ฐ ์ค๋ ํค์ ์ ๋์ฌ๊ฐ ์๋ ๋ณตํฉ ํด์ ์ค๋ ํค์๋ง ์ ์ฉ๋ฉ๋๋ค(์ฆ, ์ค๋ ํค์ ์ฒซ ๋ฒ์งธ ํ๋๊ฐ ํด์๋์ง ์์).
์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค. { "facility" : 1, "_id" : "hashed" }
MongoDB๋ ๋ณตํฉ ํด์ ์ธ๋ฑ์ค ์์ ์ปฌ๋ ์ ์ค๋ฉ์ ์ง์ํฉ๋๋ค. ๋ณตํฉ ํด์ ์ค๋ ํค์์ ์ค๋ฉํ ๋, MongoDB๋ ์ ์๋ ์์ญ ๋ฒ์๊ฐ ์ถ๊ฐ ์๊ตฌ ์ฌํญ์ ์ถฉ์กฑํ๋ ๊ฒฝ์ฐ์๋ง ๋น์ด ์๊ฑฐ๋ ์กด์ฌํ์ง ์๋ ์ปฌ๋ ์ ์ ๋ํด ์ต์ ํ๋ ์ด๊ธฐ ์ฒญํฌ ์์ฑ ๋ฐ ๋ฐฐํฌ๋ฅผ ์ํํ ์ ์์ต๋๋ค.
๋ ์ ์กฐ ์์ค ์ค ํ๋์ ๋ถ์์ ์ ์ฅํ ๋น ์ปฌ๋ ์
examples.metrics
์ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ๊ณํ๋ ์ค๋ ํค๋ { "facility" : 1, "_id" : "hashed" }
์ด๋ฉฐ, ์ฌ๊ธฐ์ ํด์ ํ๋๋ ์ค๋ ํค ์ ๋์ฌ๊ฐ ์๋๋๋ค .
facility
ํ๋๋ ์์ค ์ด๋ฆ์ ์ ์ฅํฉ๋๋ค:"FacilityAlpha"
๋๋"FacilityBaker"
. ๊ฐ ์์ค์ ๋ฐ์ดํฐ๋ฅผ ํน์ ์ค๋๋ก ๊ฒฉ๋ฆฌํ๊ธฐ ์ํด ์ปฌ๋ ์ ์๋facility
์ ๋ํ ๊ตฌ์ญ ๋ฒ์๊ฐ ํ์ํฉ๋๋ค._id
ํ๋๋facility
ํ๋์ ๋ฎ์ ์นด๋๋๋ฆฌํฐ๋ฅผ ๋ณด์ํฉ๋๋ค. ํด์ฑ์_id
ํ๋์ ๋จ์กฐ ์ฆ๊ฐ ํน์ฑ์ ๋ณด์ํฉ๋๋ค.
๊ตฌ์ญ ๋ง๋ค๊ธฐ
sh.addShardToZone()
๋ช
๋ น์ ์ฌ์ฉํ์ฌ ๊ตฌ์ญ์ ์์ฑํฉ๋๋ค.
sh.addShardToZone("shardA", "FacilityAlpha") sh.addShardToZone("shardB", "FacilityBaker")
๊ตฌ์ญ ๋ฒ์ ๋ง๋ค๊ธฐ
๊ณํ๋ ์ค๋ ํค๋ {"facility" : 1, "_id" : "hashed"}
์
๋๋ค. facility
ํ๋์๋ FacilityAlpha
๋ฐ FacilityBaker
์ ๋ ๊ฐ์ง ๊ฐ๋ฅํ ๊ฐ์ด ์์ต๋๋ค.
ํด์ ํ๋๊ฐ ์ ๋์ฌ๊ฐ ์๋ ๋ณตํฉ ํด์ ์ค๋ ํค์ ์ด๊ธฐ ์ฒญํฌ ๋ฐฐํฌ์๋ ๊ณ ์ ํ ์ ๋์ฌ ํ๋ ๊ฐ์ ๊ฐ ์กฐํฉ์ ๋ํด ํ๋์ ๊ตฌ์ญ ๋ฒ์๊ฐ ํ์ํฉ๋๋ค(์: ํด์๋ ํ๋ ์์ ์ค๋ ๋ชจ๋ ํ๋). facility
์๋ ๋ ๊ฐ์ ๊ณ ์ ํ ์ ๋์ฌ ๊ฐ์ด ์์ผ๋ฏ๋ก ์ปฌ๋ ์
์๋ ํด๋น ๊ฐ์ ํฌํจํ๋ ์ ํํ ๋ ๊ฐ์ ๊ตฌ์ญ ๋ฒ์๊ฐ ํ์ํฉ๋๋ค.
ํํ ๋ฒ์๋ ์ ๋์ฌ๊ฐ ์๋ ๋ชจ๋ ํ๋์ ๋ํด
MinKey
๋ฅผ ์ง์ ํฉ๋๋ค.์ํ ๋ฒ์์๋ ํํ๊ณผ ๋ค๋ฅธ ์ ๋์ฌ ํ๋๊ฐ ํ๋ ์ด์ ์์ต๋๋ค.
sh.updateZoneKeyRange()
๋ฅผ ์ฌ์ฉํ์ฌ "facility": "FacilityAlpha"
์ ๋ฒ์๋ฅผ ๋ง๋ญ๋๋ค.
sh.updateZoneKeyRange( "examples.metrics", { "facility": "FacilityAlpha", "_id" : MinKey }, { "facility": "FacilityBaker", "_id" : MinKey }, "FacilityAlpha" );
๊ตฌ์ญ ๋ฒ์ ์ํ์ ๋ฐฐํ์ ์ด๋ฏ๋ก ์ด ๋ฒ์๋ ๊ณ ์ ์ค๋ ํค ์ ๋์ฌ ๊ฐ์ด
"facilty" : "FacilityAlpha"
์ด๊ณ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฐ์ด_id
์ธ ๋ฌธ์๋ง ํฌํจํฉ๋๋ค.
sh.updateZoneKeyRange()
๋ฅผ ์ฌ์ฉํ์ฌ "facility": "FacilityBaker"
์ ๋ฒ์๋ฅผ ๋ง๋ญ๋๋ค.
sh.updateZoneKeyRange( "examples.metrics", { "facility": "FacilityBaker", "_id" : MinKey }, { "facility": MaxKey, "_id" : MinKey }, "FacilityBaker" );
์ด ๋ฒ์์ ์ํ์ ๊ธฐ์ ์ ์ผ๋ก
facility
์ ๋ค๋ฅธ ๊ฐ์ ์บก์ฒํ ์ ์์ง๋ง ์ด๊ธฐ ์ฒญํฌ ๋ฐฐํฌ ๋ก์ง์facility
์ ๋ํ ๋ค๋ฅธ ๊ณ ์ ๊ฐ์ด ์กด์ฌํ์ง ์๋๋ค๋ ๊ฐ์ ์ ์์กดํฉ๋๋ค. ์ปฌ๋ ์ ์๋facility
์ดFacilityAlpha
๋๋FacilityBaker
์ธ ๋ฌธ์๋ง ํฌํจ๋์ด ์์ผ๋ฏ๋ก ์ด ๋ฒ์๋ ๊ณ ์ ์ค๋ ํค ์ ๋์ฌ ๊ฐ์ด"facility" : "FacilityBaker"
์ด๊ณ ๊ฐ๋ฅํ ๋ชจ๋ ๊ฐ์ด_id
์ธ ๋ฌธ์๋ง ํฌํจํฉ๋๋ค.
์ ํ ์ฌํญ: ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ค๋ฉ ํ์ฑํ
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ด๋ฏธ ์ค๋ฉ์ ํ์ฑํํ ๊ฒฝ์ฐ ์ด ๋จ๊ณ๋ฅผ ๊ฑด๋๋๋๋ค.
sh.enableSharding()
๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ค๋ฉ์ ํ์ฑํํฉ๋๋ค:
sh.enableSharding("examples")
์ปฌ๋ ์ ์ค๋ฉ
์ฐธ๊ณ
์ปฌ๋ ์ ์ด ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ ์ค๋ฉ ์์ ์ ์ปฌ๋ ์ ์ ์์ฑํฉ๋๋ค.
์ปฌ๋ ์ ์ด ๋น์ด ์๊ณ ์ค๋ ํค๋ฅผ ์ง์ํ๋ ์ธ๋ฑ์ค๊ฐ ์๋ ๊ฒฝ์ฐ ์ค๋ฉ ์์ ์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํฉ๋๋ค.
์ปฌ๋ ์
์ ์ค๋ฉํ๊ณ ์ด๊ธฐ ์ฒญํฌ ์์ฑ ๋ฐ ๋ฐฐํฌ๋ฅผ ์ํํ๋ ค๋ฉด sh.shardCollection()
๋ฅผ presplitHashedZones: true ์ ํจ๊ป ์ฌ์ฉํฉ๋๋ค.
sh.shardCollection( "examples.metrics", { "facility" : 1, "_id" : "hashed"}, false, { presplitHashedZones: true } )
์์ฑ๋ ์ฒญํฌ ๋ฐ ๋ฐฐํฌ ๊ฒํ
์์ฑ๋ ์ฒญํฌ์ ๋ถํฌ๋ฅผ ๋ณด๋ ค๋ฉด sh.status()
์์
์ ์คํํฉ๋๋ค.
sh.status()
์ถ๋ ฅ์ ๋ค์๊ณผ ์ ์ฌํฉ๋๋ค(๊ฐ๋ ์ฑ์ ์ํด ๋ด์ฉ์ด ์๋ต๋จ).
--- Sharding Status --- databases: { "_id" : "config", "primary" : "config", "partitioned" : true } { "_id" : "examples", "primary" : "shardA", "partitioned" : true, "version" : { "uuid" : UUID("6c351bcf-acd2-4fd9-82d8-9f6bd7321558"), "lastMod" : 1 } } examples.metrics shard key: { "facility" : 1, "_id" : "hashed" } unique: false balancing: true chunks: shardA 3 shardB 3 { "facility" : { "$minKey" : 1 }, "_id" : { "$minKey" : 1 } } -->> { "facility" : "FacilityAlpha", "_id" : { "$minKey" : 1 } } on : shard1 Timestamp(1, 0) { "facility" : "FacilityAlpha", "_id" : { "$minKey" : 1 } } -->> { "facility" : "FacilityAlpha", "_id" : NumberLong(0) } on : shard1 Timestamp(1, 1) { "facility" : "FacilityAlpha", "_id" : NumberLong(0) } -->> { "facility" : "FacilityBaker", "_id" : { "$minKey" : 1 } } on : shard1 Timestamp(1, 2) { "facility" : "FacilityBaker", "_id" : { "$minKey" : 1 } } -->> { "facility" : "FacilityBaker", "_id" : NumberLong(0) } on : shard2 Timestamp(1, 3) { "facility" : "FacilityBaker", "_id" : NumberLong(0) } -->> { "facility" : { "$maxKey" : 1 }, "_id" : { "$minKey" : 1 } } on : shard2 Timestamp(1, 4) { "facility" : { "$maxKey" : 1 }, "_id" : { "$minKey" : 1 } } -->> { "facility" : { "$maxKey" : 1 }, "_id" : { "$maxKey" : 1 } } on : shard2 Timestamp(1, 5) tag: FacilityAlpha { "facility" : "FacilityAlpha", "_id" : { "$minKey" : 1 } } -->> { "facility" : "FacilityBaker", "_id" : { "$minKey" : 1 } } tag: FacilityBaker { "facility" : "FacilityBaker", "_id" : { "$minKey" : 1 } } -->> { "facility" : { "$maxKey" : 1 }, "_id" : { "$minKey" : 1 } }
์ค๋ฉ ์์
์ผ๋ก ์ด 6 ์ฒญํฌ๊ฐ ์์ฑ๋์์ต๋๋ค. ๋ ๊ฐ์ ์ฒญํฌ๋ ์ ๋ ํํ๊ณผ ์ํ์ ํด๋นํฉ๋๋ค. shardA
์ ํ๋์ shardB
์ ๊ฐ๊ฐ FacilityAlpha
๋ฐ FacilityBaker
์ ํด๋นํ๋ ๋ ๊ฐ์ ๊ตฌ์ญ์ด ์์ฑ๋์์ต๋๋ค. ์ด๋ฌํ ๊ฐ ๊ตฌ์ญ์ ํด์ ํ๋๋ฅผ ์ฌ์ฉํ์ฌ 2 ์ฒญํฌ๋ก ๋ ์ธ๋ถํ๋์์ต๋๋ค.