Docs Menu
Docs Home
/
MongoDB ๋งค๋‰ด์–ผ
/ /

์‚ฝ์ž… ์ „์šฉ ์›Œํฌ๋กœ๋“œ๋ฅผ ์œ„ํ•œ ๋ถ„์‚ฐ ๋กœ์ปฌ ์“ฐ๊ธฐ

์ด ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ

  • Scenario
  • ์ ˆ์ฐจ

MongoDB ํƒœ๊ทธ ์ธ์‹ ์ƒค๋”ฉ์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ด€๋ฆฌ์ž๊ฐ€ ์ƒค๋“œ ํ‚ค ์˜ ๋ฒ”์œ„๋ฅผ ์ •์˜ํ•˜๊ณ  ํ•˜๋‚˜ ์ด์ƒ์˜ ์ƒค๋“œ์— ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•˜์—ฌ ์ƒค๋“œ ์ƒค๋”ฉ๋œ ํด๋Ÿฌ์Šคํ„ฐ ์˜ ๋ฐ์ดํ„ฐ ๋ฐฐํฌ๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” ๋‹ค์ค‘ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ์ƒค๋“œ cluster ๋ฐฐํฌ ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ธก ๋กœ์ง๊ณผ ํ•จ๊ป˜ Zones ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ถ„์‚ฐ๋œ ๋กœ์ปฌ ์“ฐ๊ธฐ๋Š” ๋ฌผ๋ก  replica set ์ด๋ฒคํŠธ ๋˜๋Š” ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ์žฅ์•  ๋ฐœ์ƒ ์‹œ ๋†’์€ ์“ฐ๊ธฐ ๊ฐ€์šฉ์„ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์ƒค๋“œ ์ปฌ๋ ‰์…˜ ์ž‘์—…์€ ๋น„์–ด ์žˆ๊ฑฐ๋‚˜ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ปฌ๋ ‰์…˜์„ ์ƒค๋”ฉํ•˜๊ธฐ ์ „์— ๊ตฌ์—ญ ๋ฐ ๊ตฌ์—ญ ๋ฒ”์œ„๋ฅผ ์ •์˜ํ•˜์—ฌ ์ •์˜๋œ ๊ตฌ์—ญ ๋ฒ”์œ„์— ๋Œ€ํ•œ ์ฒญํฌ์™€ ์ƒค๋“œ ํ‚ค ๊ฐ’์˜ ์ „์ฒด ๋ฒ”์œ„๋ฅผ ํฌํ•จํ•˜๋Š” ์ถ”๊ฐ€ ์ฒญํฌ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ทธ์—ญ ๋ฒ”์œ„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ดˆ๊ธฐ ์ฒญํฌ ๋ถ„๋ฐฐ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ฒญํฌ์˜ ์ดˆ๊ธฐ ์ƒ์„ฑ ๋ฐ ๋ฐฐํฌ๋ฅผ ํ†ตํ•ด ์ƒค๋”ฉ์„ ๋” ๋น ๋ฅด๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ดˆ๊ธฐ ๋ถ„๋ฐฐ ์ดํ›„์—๋Š” ๋ฐธ๋Ÿฐ์„œ๊ฐ€ ์•ž์œผ๋กœ์˜ ์ฒญํฌ ๋ถ„๋ฐฐ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋ณด๋ ค๋ฉด ๋น„์–ด ์žˆ๊ฑฐ๋‚˜ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ปฌ๋ ‰์…˜์— ๋Œ€ํ•œ ๊ตฌ์—ญ ๋ฐ ๊ตฌ์—ญ ๋ฒ”์œ„ ์‚ฌ์ „ ์ •์˜๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ค‘์š”

์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ ์„ค๋ช…ํ•˜๋Š” ๊ฐœ๋…์—๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ˆ˜์ค€ ๋กœ์ง๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํŠน์ • ๋ฐฐํฌ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๋ ค๋ฉด MongoDB ์ƒค๋“œ cluster, ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฐ ๊ตฌ์—ญ์˜ ์ผ๋ฐ˜์ ์ธ ๋™์ž‘์„ ์ž˜ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” ์‚ฝ์ž… ์ „์šฉ ๋˜๋Š” ์‚ฝ์ž… ์ง‘์•ฝ์ ์ธ ์›Œํฌ๋กœ๋“œ๋ฅผ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ ์„ค๋ช…ํ•˜๋Š” ๊ฐœ๋…๊ณผ ์ „๋žต์€ ๋น ๋ฅธ ์ฝ๊ธฐ ๋˜๋Š” ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•œ ์‚ฌ์šฉ ์‚ฌ๋ก€์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฝ๊ธฐ๊ฐ€ ๋นˆ๋ฒˆํ•˜์ง€ ์•Š๊ณ  ์“ฐ๊ธฐ์— ๋น„ํ•ด ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ์‚ฝ์ž… ์ง‘์•ฝ์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ๊ฐํ•ด ๋ณด์„ธ์š”. ์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ƒค๋“œ collection์— ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉฐ, SLA ๋˜๋Š” SLO๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฑฐ์˜ ์ผ์ •ํ•œ ๊ฐ€๋™ ์‹œ๊ฐ„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์“ฐ๋Š” ๋ฌธ์„œ ํ˜•์‹์˜ ๋ถ€๋ถ„ ๋ณด๊ธฐ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

{
"_id" : ObjectId("56f08c447fe58b2e96f595fa"),
"message_id" : 329620,
"datacenter" : "alfa",
"userid" : 123,
...
}
{
"_id" : ObjectId("56f08c447fe58b2e96f595fb"),
"message_id" : 578494,
"datacenter" : "bravo",
"userid" : 456,
...
}
{
"_id" : ObjectId("56f08c447fe58b2e96f595fc"),
"message_id" : 689979,
"datacenter" : "bravo",
"userid" : 789,
...
}

์ด collection์€ { datacenter : 1, userid : 1 } ๋ณตํ•ฉ ์ธ๋ฑ์Šค๋ฅผ ์ƒค๋“œ ํ‚ค๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ๋ฌธ์„œ์˜ datacenter ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ ๊ณ ์œ  ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ๊ฐ’์— ํƒœ๊ทธ ๋ฒ”์œ„๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. datacenter ํ•„๋“œ๊ฐ€ ์—†์œผ๋ฉด ๋ฌธ์„œ๋ฅผ ํŠน์ • ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์™€ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

userid ํ•„๋“œ๋Š” datacenter์— ๋น„ํ•ด ์ƒค๋“œ ํ‚ค์— ๋†’์€ ์นด๋””๋„๋ฆฌํ‹ฐ์™€ ๋‚ฎ์€ ๋นˆ๋„ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ƒค๋“œ ํ‚ค ์„ ํƒ์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ์ง€์นจ์€ ์ƒค๋“œ ํ‚ค ์„ ํƒ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

๋ฐฐํฌ๋Š” ๋‘ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ alfa ๋ฐ bravo ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋‘ ๊ฐœ์˜ ์ƒค๋“œ, shard0000 ๋ฐ shard0001 ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ์ƒค๋“œ๋Š” ์„ธ ๋ช…์˜ ๋ฉค๋ฒ„๋กœ ๊ตฌ์„ฑ๋œ ๋ณต์ œ๋ณธ ์„ธํŠธ ์ž…๋‹ˆ๋‹ค. shard0000 ์˜ ์—๋Š” ๋‘ ๊ฐœ์˜ ๋ฉค๋ฒ„๊ฐ€ alfa ์žˆ๊ณ  ์—๋Š” ํ•˜๋‚˜์˜ ์šฐ์„ ์ˆœ์œ„ 0 ๋ฉค๋ฒ„ ๊ฐ€ bravo ์žˆ์Šต๋‹ˆ๋‹ค. shard0001 ์€ bravo ์— ๋‘ ๊ฐœ์˜ ๋ฉค๋ฒ„๊ฐ€ ์žˆ๊ณ  alfa ์— ์šฐ์„ ์ˆœ์œ„ 0 ๋ฉค๋ฒ„ ๊ฐ€ ํ•œ ๊ฐœ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณ ๊ฐ€์šฉ์„ฑ์„ ์œ„ํ•œ ์ƒค๋“œ cluster ์•„ํ‚คํ…์ฒ˜ ๋‹ค์ด์–ด๊ทธ๋žจ

์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—๋Š” ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๋‹น ํ•˜๋‚˜์˜ ํƒœ๊ทธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์ƒค๋“œ์—๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๋ณต์ œ๋ณธ ์„ธํŠธ ๊ตฌ์„ฑ์›์„ ํฌํ•จํ•˜๋Š” ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋‚˜์˜ ํƒœ๊ทธ๊ฐ€ ํ• ๋‹น๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๋งˆ๋‹ค ํ•˜๋‚˜์”ฉ ๋‘ ๊ฐ€์ง€ ํƒœ๊ทธ ๋ฒ”์œ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

alfa ๋ฐ์ดํ„ฐ ์„ผํ„ฐ

์ด ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์—์„œ ๋Œ€๋‹ค์ˆ˜์˜ ๊ตฌ์„ฑ์›์„ ๊ฐ€์ง„ ์ƒค๋“œ์— alfa ์œผ๋กœ ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ํƒœ๊ทธ ๋ฒ”์œ„๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • { "datacenter" : "alfa", "userid" : MinKey } ์˜ ํ•˜ํ•œ๊ฐ’,

  • { "datacenter" : "alfa", "userid" : MaxKey } ์˜ ์ƒํ•œ์„ ,

  • ํƒœ๊ทธ alfa

bravo ๋ฐ์ดํ„ฐ ์„ผํ„ฐ

์ด ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์—์„œ ๋Œ€๋‹ค์ˆ˜์˜ ๊ตฌ์„ฑ์›์„ ๊ฐ€์ง„ ์ƒค๋“œ์— bravo ์œผ๋กœ ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ํƒœ๊ทธ ๋ฒ”์œ„๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

  • { "datacenter" : "bravo", "userid" : MinKey } ์˜ ํ•˜ํ•œ๊ฐ’,

  • { "datacenter" : "bravo", "userid" : MaxKey } ์˜ ์ƒํ•œ์„ ,

  • ํƒœ๊ทธ bravo

์ฐธ๊ณ 

MinKey ๋ฐ MaxKey ๊ฐ’์€ ๋น„๊ต๋ฅผ ์œ„ํ•ด ์˜ˆ์•ฝ๋œ ํŠน์ˆ˜ ๊ฐ’์ž…๋‹ˆ๋‹ค.

๊ตฌ์„ฑ๋œ ํƒœ๊ทธ ๋ฐ ํƒœ๊ทธ ๋ฒ”์œ„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ mongos ๋Š” datacenter : alfa ์ด ์žˆ๋Š” ๋ฌธ์„œ๋ฅผ alfa ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๋กœ ๋ผ์šฐํŒ…ํ•˜๊ณ  datacenter : bravo ์ด ์žˆ๋Š” ๋ฌธ์„œ๋ฅผ bravo ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๋กœ ๋ผ์šฐํŒ…ํ•ฉ๋‹ˆ๋‹ค.

์‚ฝ์ž…๋˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธ๋œ ๋ฌธ์„œ๊ฐ€ ๊ตฌ์„ฑ๋œ ํƒœ๊ทธ ๋ฒ”์œ„์™€ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ ๊ด€๋ จ ํƒœ๊ทธ๊ฐ€ ์žˆ๋Š” ์ƒค๋“œ์—๋งŒ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

MongoDB๋Š” ๊ตฌ์„ฑ๋œ ํƒœ๊ทธ ๋ฒ”์œ„์™€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์„œ๋ฅผ cluster์˜ ์ƒค๋“œ์— ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ 

์œ„์—์„œ ์„ค๋ช…ํ•œ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ํด๋Ÿฌ์Šคํ„ฐ ๊ฐ€ ๊ตฌ์„ฑ๋œ ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•˜๋‹ค ๋ฒ”์œ„ ๋ฅผ ์œ„๋ฐ˜ํ•˜๋Š” ์ฒญํฌ๊ฐ€ ์—†๋Š” ์ •์ƒ ์ƒํƒœ ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฐธ๋Ÿฐ์„œ ์— ๋Œ€ํ•œ ๋‹ค์Œ ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฐธ๋Ÿฐ์„œ ๋Š” ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋œ ์ฒญํฌ๋ฅผ ์ ์ ˆํ•œ ์ƒค๋“œ ๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์ƒค๋“œ์—๋Š” ๊ตฌ์„ฑ๋œ ํƒœ๊ทธ ๋ฒ”์œ„ ๋ฐ ํƒœ๊ทธ๋ฅผ ์œ„๋ฐ˜ํ•˜๋Š” ์ฒญํฌ๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐธ๋Ÿฐ์‹ฑ์ด ์™„๋ฃŒ๋˜๋ฉด ์ƒค๋“œ์—๋Š” ๋ฒ”์œ„๊ฐ€ ํ• ๋‹น๋œ ํƒœ๊ทธ ๋ฐ ํƒœ๊ทธ ๋ฒ”์œ„๋ฅผ ์œ„๋ฐ˜ํ•˜์ง€ ์•Š๋Š” ์ฒญํฌ๋งŒ ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํƒœ๊ทธ ๋˜๋Š” ํƒœ๊ทธ ๋ฒ”์œ„๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•˜๋ฉด ์ฒญํฌ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์„ธํŠธ์˜ ํฌ๊ธฐ์™€ ํƒœ๊ทธ ๋ฒ”์œ„๊ฐ€ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์ฒญํฌ์˜ ์ˆ˜์— ๋”ฐ๋ผ ์ด๋Ÿฌํ•œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์€ ํด๋Ÿฌ์Šคํ„ฐ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • ์˜ˆ์•ฝ Windows ๋™์•ˆ ๋ฐธ๋Ÿฐ์„œ ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์Šค์ผ€์ค„๋ง ๊ธฐ๊ฐ„์„ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ํŠœํ† ๋ฆฌ์–ผ ์€ ๋ฐธ๋Ÿฐ์‹ฑ ๊ธฐ๊ฐ„ ์˜ˆ์•ฝ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ธฐ๋ณธ์ ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ๋กœ์ปฌ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๊ฐ€ ๋‹ค์šด๋˜๊ฑฐ๋‚˜ ํ•ด๋‹น ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ๋Œ€ํ•œ ์“ฐ๊ธฐ๊ฐ€ ์„ค์ •๋œ ๊ธฐ๊ฐ„ ๋‚ด์— ์Šน์ธ๋˜์ง€ ์•Š์œผ๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฌธ์„œ๋ฅผ ์“ฐ๊ธฐ๋ฅผ ์‹œ๋„ํ•˜๊ธฐ ์ „์— datacenter ํ•„๋“œ์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜์—ฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๋กœ ์ „ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์“ฐ๊ธฐ ์‹œ๊ฐ„ ์ดˆ๊ณผ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์“ฐ๊ธฐ ๊ณ ๋ ค (write concern) ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ์“ฐ๊ธฐ ์ž‘์—…์— ๋Œ€ํ•œ ์‹œ๊ฐ„ ์ œํ•œ ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์“ฐ๊ธฐ ๋˜๋Š” ์‹œ๊ฐ„ ์ดˆ๊ณผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๊ฐ ๋ฌธ์„œ์˜ datacenter ํ•„๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์“ฐ๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฌธ์„œ๊ฐ€ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๋กœ ๋ผ์šฐํŒ…๋ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๊ฐ€ ๋ชจ๋‘ ๋‹ค์šด๋˜๋ฉด ์“ฐ๊ธฐ๊ฐ€ ์„ฑ๊ณตํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์“ฐ๊ธฐ ์‹คํŒจ ํ•ด๊ฒฐ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ '๋‹ค์šด'์œผ๋กœ ํ‘œ์‹œ๋œ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ์ด ๋ณต์›๋˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ผ๋ฐ˜ ์“ฐ๊ธฐ ์ž‘์—…์„ ๊ณ„์† ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ „ํ™˜ ๋กœ์ง๊ณผ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ๊ฐ„ ํด๋ผ์ด์–ธํŠธ ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ ๋˜๋Š” ์œ ์‚ฌํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ฐ์•ˆํ•  ๋•Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋‘ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ์ค‘ ํŠน์ • ๋ฌธ์„œ๊ฐ€ ๊ธฐ๋ก๋œ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๋ฅผ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ฝ๊ธฐ ์ž‘์—…์˜ ์ผ๋ถ€๋กœ ๋ˆ„๋ฝ๋œ ๋ฌธ์„œ๊ฐ€ ์—†๋„๋ก ํ•˜๋ ค๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ datacenter ํ•„๋“œ๋ฅผ ์ฟผ๋ฆฌ์˜ ์ผ๋ถ€๋กœ ํฌํ•จ ํ•˜์ง€ ์•Š์Œ ์œผ๋กœ์จ ๋ธŒ๋กœ๋“œ์บ์ŠคํŠธ ์ฟผ๋ฆฌ ๋ฅผ ์ˆ˜ํ–‰ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ค„์ด๊ธฐ ์œ„ํ•ด nearest ์˜ ์ฝ๊ธฐ ๊ธฐ๋ณธ ์„ค์ •์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ๊ธฐ ๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋ณด๊ณ ๋œ ์‹œ๊ฐ„ ์ดˆ๊ณผ ์˜ค๋ฅ˜์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์“ฐ๊ธฐ (write) ์ž‘์—…์ด ์„ฑ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์€ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ๋ฌธ์„œ ๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜์—ฌ ์˜ค๋ฅ˜์— ์‘๋‹ตํ•˜๋ฉฐ, ์ด๋กœ ์ธํ•ด ๋‘ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์—์„œ ๋ฌธ์„œ ๊ฐ€ ์ค‘๋ณต๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์€ ์ฝ๊ธฐ ๋กœ์ง์˜ ์ผ๋ถ€๋กœ ์ค‘๋ณต ํ•ญ๋ชฉ์„ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ์“ฐ๊ธฐ๊ฐ€ ์‹คํŒจํ•˜๊ฑฐ๋‚˜ ์„ค์ •๋œ ๊ธฐ๊ฐ„ ๋‚ด์— ์“ฐ๊ธฐ๊ฐ€ ์Šน์ธ ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๋ฅผ ์ „ํ™˜ํ•˜๋Š” ๋กœ์ง์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋Œ€์ƒ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์˜ ํƒœ๊ทธ ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ datacenter ํ•„๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ๋ฌธ์„œ๋ฅผ ํ•ด๋‹น ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๋กœ ํ–ฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด alfa ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ์“ฐ๊ธฐ๋ฅผ ์‹œ๋„ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ผ๋ฐ˜ ์ ˆ์ฐจ๋ฅผ ๋”ฐ๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. datacenter : alfa ์„(๋ฅผ) ์ง€์ •ํ•˜์—ฌ ๋ฌธ์„œ ์ž‘์„ฑ์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

  2. ์“ฐ๊ธฐ ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋˜๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด alfa ๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ๋‹ค์šด๋œ ๊ฒƒ์œผ๋กœ ๋กœ๊ทธํ•ฉ๋‹ˆ๋‹ค.

  3. datacenter : bravo ์„(๋ฅผ) ์ˆ˜์ •ํ•˜์—ฌ ๋™์ผํ•œ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

  4. ์“ฐ๊ธฐ ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋˜๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด bravo ๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ๋‹ค์šด๋œ ๊ฒƒ์œผ๋กœ ๋กœ๊ทธํ•ฉ๋‹ˆ๋‹ค.

  5. alfa ๋ฐ bravo ๋ชจ๋‘ ๋‹ค์šด๋œ ๊ฒฝ์šฐ ์˜ค๋ฅ˜๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.

์“ฐ๊ธฐ ์‹คํŒจ ํ•ด๊ฒฐ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ณ„์† mongos ์ง„ํ–‰ํ•˜๋ ค๋ฉด ๋Œ€์ƒ ์ƒค๋“œ cluster ์™€ ์—ฐ๊ฒฐ๋œ ์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ƒค๋“œ ๋ณต์ œ๋ณธ ์„ธํŠธ ๋ฉค๋ฒ„์— ์ง์ ‘ ์—ฐ๊ฒฐํ•˜์—ฌ ํƒœ๊ทธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

1

alfa ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ alfa ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์˜ ๊ฐ ์ƒค๋“œ์— ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

sh.addShardTag("shard0000", "alfa")

bravo ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ bravo ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์˜ ๊ฐ ์ƒค๋“œ์— ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

sh.addShardTag("shard0001", "bravo")

sh.status() ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํŠน์ • ์ƒค๋“œ์— ํ• ๋‹น๋œ ํƒœ๊ทธ๋ฅผ ๊ฒ€ํ† ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2

alfa ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฒ”์œ„๋ฅผ ์ •์˜ํ•˜๊ณ  sh.addTagRange() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ alfa ํƒœ๊ทธ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”์„œ๋“œ์—๋Š” ๋‹ค์Œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • collection์˜ ์ „์ฒด ๋„ค์ž„์ŠคํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค.

  • ๋ฒ”์œ„์˜ ํฌ๊ด„์ ์ธ ํ•˜ํ•œ์ž…๋‹ˆ๋‹ค.

  • ๋ฒ”์œ„์˜ ๋ฐฐํƒ€์  ์ƒํ•œ์„ ์ž…๋‹ˆ๋‹ค.

  • ํƒœ๊ทธ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

sh.addTagRange(
"<database>.<collection>",
{ "datacenter" : "alfa", "userid" : MinKey },
{ "datacenter" : "alfa", "userid" : MaxKey },
"alfa"
)

bravo ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฒ”์œ„๋ฅผ ์ •์˜ํ•˜๊ณ  sh.addTagRange() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ bravo ํƒœ๊ทธ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”์„œ๋“œ์—๋Š” ๋‹ค์Œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • collection์˜ ์ „์ฒด ๋„ค์ž„์ŠคํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค.

  • ๋ฒ”์œ„์˜ ํฌ๊ด„์ ์ธ ํ•˜ํ•œ์ž…๋‹ˆ๋‹ค.

  • ๋ฒ”์œ„์˜ ๋ฐฐํƒ€์  ์ƒํ•œ์„ ์ž…๋‹ˆ๋‹ค.

  • ํƒœ๊ทธ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

sh.addTagRange(
"<database>.<collection>",
{ "datacenter" : "bravo", "userid" : MinKey },
{ "datacenter" : "bravo", "userid" : MaxKey },
"bravo"
)

MinKey ๋ฐ MaxKey ๊ฐ’์€ ๋น„๊ต๋ฅผ ์œ„ํ•ด ์˜ˆ์•ฝ๋œ ํŠน์ˆ˜ ๊ฐ’์ž…๋‹ˆ๋‹ค. MinKey ์€ ํ•ญ์ƒ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ๊ฐ’๋ณด๋‹ค ์ž‘๊ฒŒ ๋น„๊ต๋˜๋Š” ๋ฐ˜๋ฉด, MaxKey ๋Š” ํ•ญ์ƒ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ๊ฐ’๋ณด๋‹ค ํฌ๊ฒŒ ๋น„๊ต๋ฉ๋‹ˆ๋‹ค. ๊ตฌ์„ฑ๋œ ๋ฒ”์œ„๋Š” ๊ฐ datacenter ์— ๋Œ€ํ•œ ๋ชจ๋“  ์‚ฌ์šฉ์ž๋ฅผ ์บก์ฒ˜ํ•ฉ๋‹ˆ๋‹ค.

3

๋‹ค์Œ์— ๋ฐธ๋Ÿฐ์„œ ๊ฐ€ ์‹คํ–‰๋˜๋ฉด ๊ตฌ์„ฑ๋œ ๊ตฌ์—ญ๊ณผ ๊ด€๋ จํ•˜์—ฌ ์ƒค๋“œ ์ „์ฒด์— ๋ฐ์ดํ„ฐ๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐธ๋Ÿฐ์‹ฑ์ด ์™„๋ฃŒ๋˜๋ฉด alfa ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋œ ์ƒค๋“œ์—๋Š” datacenter : alfa ์ด ์žˆ๋Š” ๋ฌธ์„œ๋งŒ ํฌํ•จํ•ด์•ผ ํ•˜๊ณ , bravo ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋œ ์ƒค๋“œ์—๋Š” datacenter : bravo ์ด ์žˆ๋Š” ๋ฌธ์„œ๋งŒ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

sh.status() ์„(๋ฅผ) ์‹คํ–‰ํ•˜์—ฌ ์ฒญํฌ ๋ถ„ํฌ๋ฅผ ๊ฒ€ํ† ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๊ฐ€ ๋‹ค์šด๋˜๊ฑฐ๋‚˜ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ datacenter ํ•„๋“œ๋ฅผ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๊ธฐ๋ณธ์ ์œผ๋กœ alfa ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ๋‹ค์Œ ๋ฌธ์„œ๋ฅผ ์“ฐ๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

{
"_id" : ObjectId("56f08c447fe58b2e96f595fa"),
"message_id" : 329620,
"datacenter" : "alfa",
"userid" : 123,
...
}

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์“ฐ๊ธฐ ์‹œ๋„ ์‹œ ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์‹ ํ•˜๊ฑฐ๋‚˜ ์“ฐ๊ธฐ ํ™•์ธ์— ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์œผ๋กœ ๋กœ๊ทธํ•˜๊ณ  bravo ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋„๋ก datacenter ํ•„๋“œ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

{
"_id" : ObjectId("56f08c457fe58b2e96f595fb"),
"message_id" : 329620,
"datacenter" : "bravo",
"userid" : 123,
...
}

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ฃผ๊ธฐ์ ์œผ๋กœ alfa ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์˜ ์—ฐ๊ฒฐ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์— ๋‹ค์‹œ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ •์ƒ์ ์ธ ์“ฐ๊ธฐ๋ฅผ ์žฌ๊ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ 

ํŠนํžˆ ์˜ค๋ฅ˜๊ฐ€ ์‹œ๊ฐ„ ์ดˆ๊ณผ ์™€ ๊ด€๋ จ๋œ ๊ฒฝ์šฐ datacenter : alfa ์— ๋Œ€ํ•œ ์›๋ž˜ ์“ฐ๊ธฐ๊ฐ€ ์„ฑ๊ณตํ–ˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ message_id : 329620 ์ด ์žˆ๋Š” ๋ฌธ์„œ๊ฐ€ ๋‘ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ๋ชจ๋‘์—์„œ ์ค‘๋ณต๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ฝ๊ธฐ ์ž‘์—…์˜ ์ผ๋ถ€๋กœ ์ค‘๋ณต ํ•ญ๋ชฉ์„ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ „ํ™˜ ๋กœ์ง์œผ๋กœ ์ธํ•ด ์ž ์žฌ์ ์ธ ๋ฌธ์„œ ์ค‘๋ณต์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ฝ๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ธต์—์„œ ๋ชจ๋“  ์ค‘๋ณต ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ์ฟผ๋ฆฌ๋Š” userid ๊ฐ€ 123 ์ธ ๋ฌธ์„œ๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ userid ์€(๋Š”) ์ƒค๋“œ ํ‚ค์˜ ์ผ๋ถ€์ด์ง€๋งŒ ์ฟผ๋ฆฌ์—๋Š” datacenter ํ•„๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฏ€๋กœ ๋Œ€์ƒ ์ฝ๊ธฐ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

db.collection.find( { "userid" : 123 } )

๊ฒฐ๊ณผ๋Š” 329620 ์˜ message_id ๊ฐ€ ์žˆ๋Š” ๋ฌธ์„œ๊ฐ€ ์“ฐ๊ธฐ ์Šน์ธ์ด ์ง€์—ฐ๋œ ๊ฒฐ๊ณผ๋กœ MongoDB์— ๋‘ ๋ฒˆ ์‚ฝ์ž…๋˜์—ˆ์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

{
"_id" : ObjectId("56f08c447fe58b2e96f595fa"),
"message_id" : 329620
"datacenter" : "alfa",
"userid" : 123,
data : {...}
}
{
"_id" : ObjectId("56f08c457fe58b2e96f595fb"),
"message_id" : 329620
"datacenter" : "bravo",
"userid" : 123,
...
}

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์ค‘๋ณต ๋ฌธ์„œ๋ฅผ ๋ฌด์‹œํ•˜์—ฌ ๋‘ ๋ฌธ์„œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜๊ฑฐ๋‚˜, ๋ฌธ์„œ๊ฐ€ ํ•˜๋‚˜๋งŒ ๋‚จ์„ ๋•Œ๊นŒ์ง€ ์ค‘๋ณต ๋ฌธ์„œ๋ฅผ ์ž˜๋ผ๋‚ด๋ ค๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ค‘๋ณต ํ•ญ๋ชฉ์„ ํŠธ๋ฆฌ๋ฐํ•˜๋Š” ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์€ ObjectId.getTimestamp() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ _id ํ•„๋“œ์—์„œ ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ์ถ”์ถœํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์‚ฝ์ž…๋œ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์„œ๋‚˜ ๋งˆ์ง€๋ง‰์œผ๋กœ ์‚ฝ์ž…๋œ ๋ฌธ์„œ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” _id ํ•„๋“œ๊ฐ€ MongoDB ObjectId() ์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ObjectId("56f08c447fe58b2e96f595fa") ๊ฐ€ ์žˆ๋Š” ๋ฌธ์„œ์—์„œ getTimestamp() ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ์ด ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

ISODate("2016-03-22T00:05:24Z")

ObjectId("56f08c457fe58b2e96f595fb") ๊ฐ€ ์žˆ๋Š” ๋ฌธ์„œ์—์„œ getTimestamp() ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ์ด ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

ISODate("2016-03-22T00:05:25Z")

๋Œ์•„๊ฐ€๊ธฐ

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋˜๋Š” ๊ณ ๊ฐ ๋ณ„ ์„ธ๋ถ„ํ™”

์ด ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ