[MongoDB] ObjectID

MongoDB๋Š” ๊ณ ์œ ์˜ Unique ID ์ƒ์„ฑ ๋งค์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•œ๋‹ค.
์• ์ดˆ๋ถ€ํ„ฐ ๋ถ„์‚ฐํ™˜๊ฒฝ์„ ๊ณ ๋ คํ•˜๊ณ  ์„ค๊ณ„๋˜์—ˆ๊ธฐ์—, RDB๋“ค์ด ํ”ํžˆ ์‚ฌ์šฉํ•˜๋Š” incremental ๊ฐ’์ด ์•„๋‹ˆ๋ผ ๋žœ๋ค์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” uuid๋ฅผ ์ฑ„ํƒํ–ˆ๋‹ค.

ObjectId๋Š” ์ด 12๋ฐ”์ดํŠธ๋กœ ๊ตฌ์„ฑ๋˜๋Š”๋ฐ, ๋น… ์—”๋””์•ˆ ๊ธฐ์ค€์œผ๋กœ 4๋ฐ”์ดํŠธ-5๋ฐ”์ดํŠธ-3๋ฐ”์ดํŠธ๋กœ 3๊ฐœ ๊ณ„์ธต์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

  1. ์ฒซ๋ฒˆ์งธ 4๋ฐ”์ดํŠธ ์˜์—ญ์€ ์ดˆ ๋‹จ์œ„์˜ ํƒ€์ž„์Šคํƒฌํ”„๋‹ค.
  2. ๋‘๋ฒˆ์งธ 5๋ฐ”์ดํŠธ ์˜์—ญ์€ ๋žœ๋ค๊ฐ’์ด๋‹ค. ํ•ด๋‹น ๋จธ์‹  ์ˆ˜์ค€์—์„œ ๊ณ ์œ ์„ฑ์ด ๋ณด์žฅ๋œ๋‹ค.
  3. ์„ธ๋ฒˆ์งธ 3๋ฐ”์ดํŠธ ๊ฐ’์€ ๋‹จ์ˆœํ•œ incremental ๊ฐ’์ด๋‹ค.

์ด๋Ÿฌํ•œ ๊ตฌ์กฐ ๋•๋ถ„์— ๋ถ„์‚ฐ ํ™˜๊ฒฝ์—์„œ ๊ฐ๊ฐ์˜ ๋…ธ๋“œ๋“ค์ด ๋…๋ฆฝ์ ์œผ๋กœ id๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ณ , ๊ทธ์™€ ๋™์‹œ์— ์•ฝ๊ฐ„์˜ ์‹œ๊ฐ„์ˆœ ์ •๋ ฌ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
ํƒ€์ž„์Šคํƒฌํ”„๊ฐ€ ์ดˆ ๋‹จ์œ„์ด๊ธฐ ๋•Œ๋ฌธ์— ๋А์Šจํ•˜๊ฒŒ๋Š” ์ •๋ ฌ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.




์‚ฌ์šฉ๋ฒ•

์ปฌ๋ ‰์…˜์— ๋ฐ์ดํ„ฐ๋ฅผ ์ง‘์–ด๋„ฃ์„๋•Œ _id๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์ž๋™์œผ๋กœ ObjectId ๊ฐ’์ด ๋ถ€์—ฌ๋œ๋‹ค.

ObjectId() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž„์˜๋กœ ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ๊ณ 

ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋„˜๊ธฐ๋ฉด ๋ฌธ์ž์—ด์„ ObjectId๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.




๋œฏ์–ด๋ณด๊ธฐ

ํ•œ๋ฒˆ ์„ค๋ช…ํ•œ๋Œ€๋กœ ์ƒ์„ฑ์ด ๋˜๋Š”๊ฑด์ง€ ์—ญ๋ถ„์„์„ ํ•ด๋ณด์ž.
๋ฐฉ๊ธˆ ๋‚ด๊ฐ€ ์ƒ์„ฑํ•œ ObjectId๋Š” ์ด๊ฑด๋ฐ

65f71bcb0755d426b448106a

๋ถ„ํ•ดํ•˜๋ฉด ์ด๋Ÿฐ ๊ตฌ์กฐ๊ฐ€ ๋œ๋‹ค.

65f71bcb(ํƒ€์ž„์Šคํƒฌํ”„) 0755d426b4(๋žœ๋ค) 48106a(inc)

๊ทธ๊ฑธ ๊ทธ๋Œ€๋กœ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•ด์„œ ํƒ€์ž„์Šคํƒฌํ”„๋กœ ๊ณ„์‚ฐํ•ด๋ณด๋ฉด

๋”ฑ ๋ฐฉ๊ธˆ ์‹œ๊ฐ„์ด ๋‚˜์˜จ๋‹ค.


๋‚˜๋จธ์ง€ ์ˆซ์ž๋“ค๋„ ์ด๋ ‡๊ฒŒ ์ฐํžŒ๋‹ค.

inc ๊ฐ’์ด ๊ธฐ๋Œ€๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ฐ”๋กœ ํ•˜๋‚˜ ๋” ๋งŒ๋“ค์–ด๋ณด์ž.

65f71cad 0755d426b4 48106b

์ด๋ฒˆ์—” ์ด๋ ‡๊ฒŒ ๋‚˜์™”๋Š”๋ฐ


์—ญ์‹œ ๊ธฐ๋Œ€ํ•œ๋Œ€๋กœ 1์ด ์ฆ๊ฐ€ํ•œ ๊ฐ’์ด ๋ฐ˜ํ™˜๋˜์—ˆ๋‹ค.



์ฐธ์กฐ
https://www.mongodb.com/docs/manual/reference/method/ObjectId/
https://www.mongodb.com/community/forums/t/objectid-guarantees-absolute-insertion-order-if-just-one-replica-set-and-no-sharding-throughout-lifetime/16902/3