๋” ๋งŽ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด ์ด ์‚ฌ์‹ค์„ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฉ”๋ชจ. ๋ฒˆ์—ญ: Jaana Dogan์€ Google์˜ ์ˆ™๋ จ๋œ ์—”์ง€๋‹ˆ์–ด๋กœ ํ˜„์žฌ Go๋กœ ์ž‘์„ฑ๋œ ํšŒ์‚ฌ ํ”„๋กœ๋•์…˜ ์„œ๋น„์Šค์˜ ๊ด€์ฐฐ ๊ฐ€๋Šฅ์„ฑ์„ ์—ฐ๊ตฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜์–ด๊ถŒ ์ฒญ์ค‘๋“ค ์‚ฌ์ด์—์„œ ํฐ ์ธ๊ธฐ๋ฅผ ์–ป์€ ์ด ๊ธฐ์‚ฌ์—์„œ ๊ทธ๋…€๋Š” ๋Œ€๊ทœ๋ชจ/์š”๊ตฌ์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ณ ๋ คํ•˜๋Š” ๋ฐ ์œ ์šฉํ•œ DBMS(๋•Œ๋กœ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ)์— ๊ด€ํ•œ ์ค‘์š”ํ•œ ๊ธฐ์ˆ  ์„ธ๋ถ€ ์‚ฌํ•ญ์„ 17๊ฐ€์ง€ ํ•ญ๋ชฉ์œผ๋กœ ์ˆ˜์ง‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋” ๋งŽ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด ์ด ์‚ฌ์‹ค์„ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

  1. 99,999%์˜ ์‹œ๊ฐ„ ๋™์•ˆ ๋„คํŠธ์›Œํฌ๊ฐ€ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค์ง€ ์•Š๋Š”๋‹ค๋ฉด ์šด์ด ์ข‹์Šต๋‹ˆ๋‹ค.
  2. ACID๋Š” ๋‹ค์–‘ํ•œ ์˜๋ฏธ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค.
  3. ๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” ์ผ๊ด€์„ฑ๊ณผ ๊ฒฉ๋ฆฌ๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ์ž์ฒด ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ์ผ๋ฐ˜์ ์ธ ์ฐจ๋‹จ์„ ์œ ์ง€ํ•˜๊ธฐ ์–ด๋ ค์šธ ๋•Œ ๋‚™๊ด€์  ์ฐจ๋‹จ์ด ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.
  5. ๋”ํ‹ฐ ์ฝ๊ธฐ(Dirty Read) ๋ฐ ๋ฐ์ดํ„ฐ ์†์‹ค ์™ธ์—๋„ ๋‹ค๋ฅธ ์˜ˆ์™ธ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  6. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์‚ฌ์šฉ์ž๊ฐ€ ํ–‰๋™ ๊ณผ์ •์— ํ•ญ์ƒ ๋™์˜ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.
  7. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ˆ˜์ค€ ์ƒค๋”ฉ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์™ธ๋ถ€๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  8. ์ž๋™ ์ฆ๊ฐ€๋Š” ์œ„ํ—˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  9. ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋Š” ์œ ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ž ๊ธ€ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  10. ์™œ๊ณก์€ ๋ชจ๋“  ์‹œ๊ฐ„ ์†Œ์Šค์—์„œ ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค.
  11. ์ง€์—ฐ์—๋Š” ๋งŽ์€ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
  12. ํŠน์ • ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•œ ์„ฑ๋Šฅ ์š”๊ตฌ ์‚ฌํ•ญ์„ ํ‰๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  13. ์ค‘์ฒฉ๋œ ํŠธ๋žœ์žญ์…˜์€ ์œ„ํ—˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  14. ํŠธ๋žœ์žญ์…˜์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ์— ์—ฐ๊ฒฐ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.
  15. ์ฟผ๋ฆฌ ํ”Œ๋ž˜๋„ˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด ๋งŽ์€ ๊ฒƒ์„ ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  16. ์˜จ๋ผ์ธ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์€ ์–ด๋ ต์ง€๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  17. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ํฌ๊ฒŒ ์ฆ๊ฐ€ํ•˜๋ฉด ์˜ˆ์ธก ๋ถˆ๊ฐ€๋Šฅ์„ฑ์ด ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ธฐ์‚ฌ์˜ ์ด์ „ ๋ฒ„์ „์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ์ฃผ์‹  Emmanuel Odeke, Rein Henrichs ๋ฐ ๊ธฐํƒ€ ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ์˜ ๋ง์”€์„ ์ „ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

99,999%์˜ ์‹œ๊ฐ„ ๋™์•ˆ ๋„คํŠธ์›Œํฌ๊ฐ€ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค์ง€ ์•Š๋Š”๋‹ค๋ฉด ์šด์ด ์ข‹์Šต๋‹ˆ๋‹ค.

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

Spanner(Google์˜ ์ „ ์„ธ๊ณ„์ ์œผ๋กœ ๋ถ„์‚ฐ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)์˜ ๊ฐ€์šฉ์„ฑ ๋น„์œจ์ด 99,999%๋กœ Google์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค. 7,6% ๋ฌธ์ œ๋Š” ๋„คํŠธ์›Œํฌ์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋™์‹œ์— ํšŒ์‚ฌ๋Š” ์ „๋ฌธ ๋„คํŠธ์›Œํฌ๋ฅผ ๊ณ ๊ฐ€์šฉ์„ฑ์˜ "์ฃผ์š” ๊ธฐ๋‘ฅ"์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ๊ณต๋ถ€ํ•˜๋‹ค ๋ฒ ์ผ๋ฆฌ์Šค์™€ ํ‚น์Šค๋ฒ„๋ฆฌ, 2014๋…„์— ์‹ค์‹œ๋œ '๋ถ„์‚ฐ ์ปดํ“จํŒ…์— ๋Œ€ํ•œ ์˜คํ•ด"๋Š” Peter Deutsch๊ฐ€ 1994๋…„์— ๊ณต์‹ํ™”ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ๊ฐ€ ์ •๋ง ์•ˆ์ •์ ์ธ๊ฐ€์š”?

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

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

ACID๋Š” ๋‹ค์–‘ํ•œ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ACID๋ผ๋Š” ์•ฝ์–ด๋Š” ์›์ž์„ฑ(Atomicity), ์ผ๊ด€์„ฑ(Consistency), ๊ฒฉ๋ฆฌ์„ฑ(Isolation), ์‹ ๋ขฐ์„ฑ(Reliability)์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํŠธ๋žœ์žญ์…˜ ์†์„ฑ์€ ์žฅ์• , ์˜ค๋ฅ˜, ํ•˜๋“œ์›จ์–ด ์˜ค๋ฅ˜ ๋“ฑ์ด ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ ์œ ํšจ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ACID ๋˜๋Š” ์œ ์‚ฌํ•œ ์ฒด๊ณ„๊ฐ€ ์—†์œผ๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž์‹ ์ด ๋‹ด๋‹นํ•˜๋Š” ๊ฒƒ๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋‹ด๋‹นํ•˜๋Š” ๊ฒƒ์„ ๊ตฌ๋ณ„ํ•˜๊ธฐ ์–ด๋ ค์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ด€๊ณ„ํ˜• ํŠธ๋žœ์žญ์…˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ACID๋ฅผ ์ค€์ˆ˜ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜์ง€๋งŒ NoSQL๊ณผ ๊ฐ™์€ ์ƒˆ๋กœ์šด ์ ‘๊ทผ ๋ฐฉ์‹์€ ๊ตฌํ˜„ ๋น„์šฉ์ด ๋งŽ์ด ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ACID ํŠธ๋žœ์žญ์…˜์ด ์—†๋Š” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํƒ„์ƒ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.

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

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

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

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

๋””์Šคํฌ์— ์ปค๋ฐ‹ํ•˜๋Š” ๊ฒƒ์€ ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค. ๋นˆ๋ฒˆํ•œ ์ปค๋ฐ‹์„ ํ”ผํ•จ์œผ๋กœ์จ ๊ฐœ๋ฐœ์ž๋Š” ์•ˆ์ •์„ฑ์„ ํฌ์ƒํ•˜๋ฉด์„œ ๋…น์Œ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. MongoDB๋Š” ํ˜„์žฌ ๋กœ๊น…์„ ์ง€์›ํ•˜์ง€๋งŒ ๋กœ๊ทธ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ 100ms๋งˆ๋‹ค ์บก์ฒ˜๋˜๋ฏ€๋กœ ๋”ํ‹ฐ ์“ฐ๊ธฐ๋Š” ์—ฌ์ „ํžˆ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์— ์˜ํ–ฅ์„ ๋ฏธ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ์œ„ํ—˜์€ ํ›จ์”ฌ ๋‚ฎ์ง€๋งŒ ๋กœ๊ทธ์™€ ๊ทธ์— ํ‘œ์‹œ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์œ ์‚ฌํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค๊ฐ€ ์—ฌ์ „ํžˆ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” ๊ณ ์œ ํ•œ ์ผ๊ด€์„ฑ ๋ฐ ๊ฒฉ๋ฆฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

๋” ๋งŽ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด ์ด ์‚ฌ์‹ค์„ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ธฐ์กด ๋™์‹œ์„ฑ ๋ชจ๋ธ ๋ฐ ์ด๋“ค ๊ฐ„์˜ ๊ด€๊ณ„ ๊ฒ€ํ† 

SQL ํ‘œ์ค€์€ XNUMX๊ฐ€์ง€ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€๋งŒ ์ •์˜ํ•˜์ง€๋งŒ ์ด๋ก ์ ์œผ๋กœ๋‚˜ ์‹ค์ œ์ ์œผ๋กœ๋Š” ๋” ๋งŽ์€ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์ด ์žˆ์Šต๋‹ˆ๋‹ค. Jepson.io ๊ธฐ์กด ๋™์‹œ์„ฑ ๋ชจ๋ธ์— ๋Œ€ํ•œ ํ›Œ๋ฅญํ•œ ๊ฐœ์š”๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Google Spanner๋Š” ํด๋ก ๋™๊ธฐํ™”๋ฅผ ํ†ตํ•ด ์™ธ๋ถ€ ์ง๋ ฌ์„ฑ์„ ๋ณด์žฅํ•˜๋ฉฐ ์ด๋Š” ๋” ์—„๊ฒฉํ•œ ๊ฒฉ๋ฆฌ ๊ณ„์ธต์ด์ง€๋งŒ ํ‘œ์ค€ ๊ฒฉ๋ฆฌ ๊ณ„์ธต์—์„œ๋Š” ์ •์˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

SQL ํ‘œ์ค€์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์„ ์–ธ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค.

  • ์ง๋ ฌํ™” ๊ฐ€๋Šฅ (๊ฐ€์žฅ ์—„๊ฒฉํ•˜๊ณ  ๋น„์šฉ์ด ๋งŽ์ด ๋“ญ๋‹ˆ๋‹ค): ์ง๋ ฌํ™” ๊ฐ€๋Šฅ ์‹คํ–‰์€ ์ผ๋ถ€ ์ˆœ์ฐจ ํŠธ๋žœ์žญ์…˜ ์‹คํ–‰๊ณผ ๋™์ผํ•œ ํšจ๊ณผ๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค. ์ˆœ์ฐจ์  ์‹คํ–‰์€ ๊ฐ ํ›„์† ํŠธ๋žœ์žญ์…˜์ด ์ด์ „ ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋œ ํ›„์—๋งŒ ์‹œ์ž‘๋จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ˆ˜์ค€์ด๋ผ๋Š” ์ ์— ์œ ์˜ํ•ด์•ผ ํ•œ๋‹ค. ์ง๋ ฌํ™” ๊ฐ€๋Šฅ ์Šค๋ƒ…์ƒท ๊ฒฉ๋ฆฌ ์ž์ฒด๋Š” SQL ํ‘œ์ค€์— ํ‘œ์‹œ๋˜์ง€ ์•Š์ง€๋งŒ ํ•ด์„์˜ ์ฐจ์ด๋กœ ์ธํ•ด ์†Œ์œ„ ์Šค๋ƒ…์ƒท ๊ฒฉ๋ฆฌ(์˜ˆ: Oracle)๋กœ ๊ตฌํ˜„๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.
  • ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ์ฝ๊ธฐ: ํ˜„์žฌ ํŠธ๋žœ์žญ์…˜์˜ ์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ๋ ˆ์ฝ”๋“œ๋Š” ํ˜„์žฌ ํŠธ๋žœ์žญ์…˜์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜(์˜ˆ: ์ƒˆ ํ–‰)์— ์˜ํ•ด ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์€ ๋ณด์ด์ง€ ์•Š๋Š”.
  • ์ปค๋ฐ‹๋œ ์ฝ๊ธฐ: ์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋Š” ํŠธ๋žœ์žญ์…˜์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ํŠธ๋žœ์žญ์…˜์€ ์ปค๋ฐ‹๋œ ๋ฐ์ดํ„ฐ๋งŒ ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ฐ€์ƒ ์ฝ๊ธฐ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜์ด ์ƒˆ ํ–‰์„ ์‚ฝ์ž…ํ•˜๊ณ  ์ปค๋ฐ‹ํ•˜๋Š” ๊ฒฝ์šฐ ํ˜„์žฌ ํŠธ๋žœ์žญ์…˜์€ ์ฟผ๋ฆฌ ์‹œ ํ•ด๋‹น ํ–‰์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ์ฝ๊ธฐ (๊ฐ€์žฅ ๋œ ์—„๊ฒฉํ•˜๊ณ  ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ์ˆ˜์ค€): ๋”ํ‹ฐ ์ฝ๊ธฐ๊ฐ€ ํ—ˆ์šฉ๋˜๋ฉฐ, ํŠธ๋žœ์žญ์…˜์€ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ ์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ด ์ˆ˜์ค€์€ ์ฟผ๋ฆฌ์™€ ๊ฐ™์€ ๋Œ€๋žต์ ์ธ ์ถ”์ •์— ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. COUNT(*) ์ฑ…์ƒ ์œ„์—.

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

๊ฒฉ๋ฆฌ ์ˆ˜์ค€์— ๋Œ€ํ•œ ์ง€์›์€ ์ข…์ข… ํŠน์ • DBMS์—์„œ ๊ด‘๊ณ ๋˜์ง€๋งŒ ํ•ด๋‹น ๋™์ž‘์„ ์ฃผ์˜ ๊นŠ๊ฒŒ ์—ฐ๊ตฌํ•ด์•ผ๋งŒ ์‹ค์ œ๋กœ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋” ๋งŽ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด ์ด ์‚ฌ์‹ค์„ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋‹ค์–‘ํ•œ DBMS์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์˜ ๋™์‹œ์„ฑ ์ด์ƒ ๊ฒ€ํ† 

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

์ผ๋ฐ˜์ ์ธ ์ฐจ๋‹จ์„ ์œ ์ง€ํ•˜๊ธฐ ์–ด๋ ค์šธ ๋•Œ ๋‚™๊ด€์  ์ฐจ๋‹จ์ด ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

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

๋‚™๊ด€์  ์ž ๊ธˆ ๋ฌธ์ž์—ด์„ ์ฝ์„ ๋•Œ ๋ฒ„์ „, ์ฒดํฌ์„ฌ ๋˜๋Š” ๋งˆ์ง€๋ง‰ ์ˆ˜์ • ์‹œ๊ฐ„์„ ๊ณ ๋ คํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ•ญ๋ชฉ์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์ „์— ์›์ž ๋ฒ„์ „ ๋ณ€๊ฒฝ์ด ์—†๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

UPDATE products
SET name = 'Telegraph receiver', version = 2
WHERE id = 1 AND version = 1

์ด ๊ฒฝ์šฐ ํ…Œ์ด๋ธ”์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. products ๋‹ค๋ฅธ ์ž‘์—…์ด ์ด์ „์— ์ด ํ–‰์„ ๋ณ€๊ฒฝํ•œ ๊ฒฝ์šฐ์—๋Š” ์ˆ˜ํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ํ–‰์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ํ•œ ํ–‰์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•˜๋ฉฐ ์—…๋ฐ์ดํŠธ๊ฐ€ ์„ฑ๊ณตํ–ˆ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ํ‹ฐ ์ฝ๊ธฐ(Dirty Read) ๋ฐ ๋ฐ์ดํ„ฐ ์†์‹ค ์™ธ์— ๋‹ค๋ฅธ ์˜ˆ์™ธ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋”ํ‹ฐ ์ฝ๊ธฐ ๋ฐ ๋ฐ์ดํ„ฐ ์†์‹ค๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์Ÿ ์กฐ๊ฑด์˜ ๊ฐ€๋Šฅ์„ฑ์— ์ค‘์ ์„ ๋‘ก๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฐ์ดํ„ฐ ์ด์ƒ ํ˜„์ƒ์€ ์—ฌ๊ธฐ์„œ ๋๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

์˜ˆ๋ฅผ ๋“ค์–ด, ํ•œ ๋ช…์˜ ์šด์˜์ž๊ฐ€ ํ•ญ์ƒ ํ†ตํ™” ์ค‘์ด์–ด์•ผ ํ•˜๋Š” ๋ชจ๋‹ˆํ„ฐ๋ง ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ณ ๋ คํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

BEGIN tx1;                      BEGIN tx2;
SELECT COUNT(*)
FROM operators
WHERE oncall = true;
0                               SELECT COUNT(*)
                                FROM operators
                                WHERE oncall = TRUE;
                                0
UPDATE operators                UPDATE operators
SET oncall = TRUE               SET oncall = TRUE
WHERE userId = 4;               WHERE userId = 2;
COMMIT tx1;                     COMMIT tx2;

์œ„ ์ƒํ™ฉ์—์„œ ๋‘ ํŠธ๋žœ์žญ์…˜์ด ๋ชจ๋‘ ์„ฑ๊ณต์ ์œผ๋กœ ์ปค๋ฐ‹๋˜๋ฉด ๋ ˆ์ฝ”๋“œ ์†์ƒ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๋”ํ‹ฐ ์ฝ๊ธฐ๋‚˜ ๋ฐ์ดํ„ฐ ์†์‹ค์€ ์—†์—ˆ์ง€๋งŒ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์ด ์†์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋‘ ์‚ฌ๋žŒ์ด ๋™์‹œ์— ํ†ตํ™” ์ค‘์ธ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.

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

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฌด์—‡์„ ํ•ด์•ผ ํ• ์ง€์— ๋Œ€ํ•ด ํ•ญ์ƒ ๋™์˜ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

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

๊ฐœ๋ฐœ ์ค‘์—, ํŠนํžˆ ๋น„์ฐจ๋‹จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ž‘์—…ํ•  ๋•Œ ์ž˜๋ชป๋œ ์Šคํƒ€์ผ๊ณผ ๋‚ฎ์€ ๊ฐ€๋…์„ฑ์œผ๋กœ ์ธํ•ด ์‚ฌ์šฉ์ž๋Š” ํŠธ๋žœ์žญ์…˜์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค๊ณ  ๋ฏฟ๊ฒŒ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ํŠธ๋žœ์žญ์…˜์€ ์–ด๋–ค ์ˆœ์„œ๋กœ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋„์ฐฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์–ผํ• ๋ณด๋ฉด ์•„๋ž˜ ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” T1๊ณผ T2๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ํ˜ธ์ถœ๋˜๋Š”๋ฐ, ์ด ํ•จ์ˆ˜๋“ค์ด ๋…ผ๋ธ”๋กœํ‚น์ด๋ผ๋ฉด ์ฆ‰์‹œ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์•ฝ์†, ํ˜ธ์ถœ ์ˆœ์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋“ค์–ด๊ฐ„ ์ˆœ๊ฐ„์— ๋”ฐ๋ผ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.

result1 = T1() // ์‹ค์ œ ๊ฒฐ๊ณผ๋Š” ์•ฝ์†์ž…๋‹ˆ๋‹ค.
๊ฒฐ๊ณผ2 = T2()

์›์ž์„ฑ์ด ํ•„์š”ํ•˜๊ณ (์ฆ‰, ๋ชจ๋“  ์ž‘์—…์„ ์™„๋ฃŒํ•˜๊ฑฐ๋‚˜ ์ค‘๋‹จํ•ด์•ผ ํ•จ) ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•œ ๊ฒฝ์šฐ ์ž‘์—… T1 ๋ฐ T2๋Š” ๋‹จ์ผ ํŠธ๋žœ์žญ์…˜ ๋‚ด์—์„œ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ˆ˜์ค€ ์ƒค๋”ฉ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์™ธ๋ถ€๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒค๋”ฉ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ˆ˜ํ‰์œผ๋กœ ๋ถ„ํ• ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ž๋™์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜ํ‰์œผ๋กœ ๋ถ„ํ• ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ˜๋ฉด ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋ถ„ํ• ํ•  ์ˆ˜ ์—†๊ฑฐ๋‚˜ ๊ทธ๋‹ค์ง€ ๋Šฅ์ˆ™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์„ค๊ณ„์ž/๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •ํ™•ํ•˜๊ฒŒ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ด ์ž‘์—…์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์œ„์ž„ํ•˜๋Š” ๋Œ€์‹  ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์— ์ˆ˜ํ‰ ํŒŒํ‹ฐ์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์„ธ์Šค๋ฅผ "์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ˆ˜์ค€ ์ƒค๋”ฉ"์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. (์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ˆ˜์ค€ ์ƒค๋”ฉ).

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

๋” ๋งŽ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด ์ด ์‚ฌ์‹ค์„ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ƒค๋”ฉ ์„œ๋น„์Šค์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๊ฐ€ ๋ถ„๋ฆฌ๋œ ์•„ํ‚คํ…์ฒ˜์˜ ์˜ˆ

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

์ž๋™ ์ฆ๊ฐ€๋Š” ์œ„ํ—˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

AUTOINCREMENT๋Š” ๊ธฐ๋ณธ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ID ์ƒ์„ฑ๊ธฐ๋กœ ์‚ฌ์šฉ๋˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์‹๋ณ„์ž๋ฅผ ์ƒ์„ฑํ•˜๋„๋ก ์„ค๊ณ„๋œ ํ…Œ์ด๋ธ”์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์žˆ์Šต๋‹ˆ๋‹ค. ์ž๋™ ์ฆ๊ฐ€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ด์ƒ์ ์ด์ง€ ์•Š์€ ๋ฐ์—๋Š” ๋ช‡ ๊ฐ€์ง€ ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ž๋™ ์ฆ๊ฐ€๋Š” ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ID๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด ์ „์—ญ ์ž ๊ธˆ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์‹  UUID๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋…ธ๋“œ ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž ๊ธˆ์„ ์‚ฌ์šฉํ•œ ์ž๋™ ์ฆ๊ฐ€๋Š” ๊ฒฝํ•ฉ์„ ์•ผ๊ธฐํ•˜๊ณ  ๋ถ„์‚ฐ ์ƒํ™ฉ์—์„œ ์‚ฝ์ž… ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ์ €ํ•˜์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ DBMS(์˜ˆ: MySQL)๋Š” ๋งˆ์Šคํ„ฐ-๋งˆ์Šคํ„ฐ ๋ณต์ œ๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ํŠน๋ณ„ํ•œ ๊ตฌ์„ฑ๊ณผ ๋” ์„ธ์‹ฌํ•œ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ตฌ์„ฑ ์‹œ ์‹ค์ˆ˜๋ฅผ ์ €์ง€๋ฅด๊ธฐ ์‰ฝ๊ณ  ์ด๋กœ ์ธํ•ด ๋…น์Œ์ด ์‹คํŒจํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” ๊ธฐ๋ณธ ํ‚ค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ๋ถ„ํ•  ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฐ์† ID๋กœ ์ธํ•ด ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋Š” ํ•ซ์ŠคํŒŸ์ด ๋ฐœ์ƒํ•˜๊ณ  ์ผ๋ถ€ ํŒŒํ‹ฐ์…˜์—์„œ๋Š” ๋กœ๋“œ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ๋ฐ˜๋ฉด ๋‹ค๋ฅธ ํŒŒํ‹ฐ์…˜์€ ์œ ํœด ์ƒํƒœ๋กœ ์œ ์ง€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ ํ‚ค๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ–‰์— ์•ก์„ธ์Šคํ•˜๋Š” ๊ฐ€์žฅ ๋น ๋ฅธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ ˆ์ฝ”๋“œ๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๋” ๋‚˜์€ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ์ˆœ์ฐจ ID๋Š” ํ…Œ์ด๋ธ”์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์—ด์„ ์˜๋ฏธ ์—†๋Š” ๊ฐ’์œผ๋กœ ์ฑ„์›Œ์ง„ ์“ธ๋ชจ ์—†๋Š” ์—ด๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์ „์—ญ์ ์œผ๋กœ ๊ณ ์œ ํ•˜๊ณ  ์ž์—ฐ์Šค๋Ÿฌ์šด ๊ธฐ๋ณธ ํ‚ค(์˜ˆ: ์‚ฌ์šฉ์ž ์ด๋ฆ„)๋ฅผ ์„ ํƒํ•˜์‹ญ์‹œ์˜ค.

์ ‘๊ทผ ๋ฐฉ์‹์„ ๊ฒฐ์ •ํ•˜๊ธฐ ์ „์— ์ž๋™ ์ฆ๊ฐ€ ID ๋ฐ UUID๊ฐ€ ์ธ๋ฑ์‹ฑ, ํŒŒํ‹ฐ์…”๋‹ ๋ฐ ์ƒค๋”ฉ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์„ ๊ณ ๋ คํ•˜์„ธ์š”.

์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋Š” ์œ ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ž ๊ธˆ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

MVCC(๋‹ค์ค‘ ๋ฒ„์ „ ๋™์‹œ์„ฑ ์ œ์–ด)๋Š” ์œ„์—์„œ ๊ฐ„๋žตํ•˜๊ฒŒ ์„ค๋ช…ํ•œ ๋งŽ์€ ์ผ๊ด€์„ฑ ์š”๊ตฌ ์‚ฌํ•ญ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(์˜ˆ: Postgres, Spanner)๋Š” MVCC๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠธ๋žœ์žญ์…˜์— ์Šค๋ƒ…์ƒท(์ด์ „ ๋ฒ„์ „์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)์„ "๊ณต๊ธ‰"ํ•ฉ๋‹ˆ๋‹ค. ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ์Šค๋ƒ…์ƒท ํŠธ๋žœ์žญ์…˜์„ ์ง๋ ฌํ™”ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ ์Šค๋ƒ…์ƒท์—์„œ ์ฝ์„ ๋•Œ ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐ์ดํ„ฐ์—์„œ ๋ถ„์„์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๋Œ€๋žต์ ์ธ ์ง‘๊ณ„ ๊ฐ’์„ ๊ณ„์‚ฐํ•  ๋•Œ ์•ฝ๊ฐ„ ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ๊ฒƒ์ด ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ ˆ๊ฑฐ์‹œ ๋ฐ์ดํ„ฐ ์ž‘์—…์˜ ์ฒซ ๋ฒˆ์งธ ์ด์ ์€ ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ์งง๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(ํŠนํžˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์—ฌ๋Ÿฌ ์ง€์—ญ์— ๋ถ„์‚ฐ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ). ๋‘ ๋ฒˆ์งธ๋Š” ์ฝ๊ธฐ ์ „์šฉ ํŠธ๋žœ์žญ์…˜์—๋Š” ์ž ๊ธˆ์ด ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ ๋งŽ์ด ์ฝ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ค‘์š”ํ•œ ์ด์ ์ž…๋‹ˆ๋‹ค.

๋” ๋งŽ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด ์ด ์‚ฌ์‹ค์„ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๋Š” ํƒœํ‰์–‘ ๋ฐ˜๋Œ€ํŽธ์— ์ตœ์‹  ๋ฒ„์ „์ด ์žˆ์–ด๋„ 5์ดˆ ์ „์˜ ๋กœ์ปฌ ๋ณต์ œ๋ณธ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์Šต๋‹ˆ๋‹ค.

DBMS๋Š” ์ด์ „ ๋ฒ„์ „์„ ์ž๋™์œผ๋กœ ์ œ๊ฑฐํ•˜๋ฉฐ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์š”์ฒญ ์‹œ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Postgres๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์šฉ์ž๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. VACUUM ์š”์ฒญ ์‹œ ์ž๋™์œผ๋กœ ์ด ์ž‘์—…์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. Spanner๋Š” ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ธฐ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ XNUMX์‹œ๊ฐ„๋ณด๋‹ค ์˜ค๋ž˜๋œ ์Šค๋ƒ…์ƒท์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ์‹œ๊ฐ„ ์†Œ์Šค๋Š” ์™œ๊ณก๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

์›์ž์‹œ๊ณ„์™€ GPS ์‹œ๊ณ„๋Š” ํ˜„์žฌ ์‹œ๊ฐ„์„ ํ™•์ธํ•˜๋Š” ๋ฐ ๋” ์ ํ•ฉํ•˜์ง€๋งŒ ๋น„์šฉ์ด ๋งŽ์ด ๋“ค๊ณ  ๋ณต์žกํ•œ ์„ค์ •์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ๋ชจ๋“  ์ž๋™์ฐจ์— ์„ค์น˜ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์—์„œ๋Š” ๊ณ„์ธตํ˜• ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์›์ž ๋ฐ/๋˜๋Š” GPS ์‹œ๊ณ„๋Š” ์ •ํ™•ํ•œ ์‹œ๊ฐ„์„ ํ‘œ์‹œํ•œ ํ›„ ๋ณด์กฐ ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์œผ๋กœ ๋ฐฉ์†ก๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐ ์‹œ์Šคํ…œ์ด ์ •ํ™•ํ•œ ์‹œ๊ฐ„์—์„œ ํŠน์ • ์˜คํ”„์…‹์„ ๊ฒฝํ—˜ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

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

Google TrueTime์€ ์™„์ „ํžˆ ๋‹ค๋ฅธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ทจํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์€ ์ด ๋ฐฉํ–ฅ์œผ๋กœ์˜ Google์˜ ๋ฐœ์ „์ด ์›์ž ์‹œ๊ณ„์™€ GPS ์‹œ๊ณ„๋กœ์˜ ์ง„๋ถ€ํ•œ ์ „ํ™˜์œผ๋กœ ์„ค๋ช…๋œ๋‹ค๊ณ  ๋ฏฟ์ง€๋งŒ ์ด๋Š” ํฐ ๊ทธ๋ฆผ์˜ ์ผ๋ถ€์ผ๋ฟ์ž…๋‹ˆ๋‹ค. TrueTime์˜ ์ž‘๋™ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • TrueTime์€ GPS์™€ ์›์ž ์‹œ๊ณ„๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ์‹œ๊ณ„์—๋Š” ์ƒ๊ด€ ๊ด€๊ณ„๊ฐ€ ์—†๋Š” ์˜ค๋ฅ˜ ๋ชจ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. [์ž์„ธํ•œ ๋‚ด์šฉ์€ 5ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ์—ฌ๊ธฐ์— - ๋Œ€๋žต. ๋ฒˆ์—ญ), ๋”ฐ๋ผ์„œ ๊ณต๋™ ์‚ฌ์šฉ์œผ๋กœ ์‹ ๋ขฐ์„ฑ์ด ๋†’์•„์ง‘๋‹ˆ๋‹ค.
  • TrueTime์—๋Š” ํŠน์ดํ•œ API๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธก์ • ์˜ค๋ฅ˜์™€ ๋ถˆํ™•์‹ค์„ฑ์ด ๋‚ด์žฅ๋œ ๊ฐ„๊ฒฉ์œผ๋กœ ์‹œ๊ฐ„์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ์ˆœ๊ฐ„์€ ๊ฐ„๊ฒฉ์˜ ์ƒํ•œ ๊ฒฝ๊ณ„์™€ ํ•˜ํ•œ ๊ฒฝ๊ณ„ ์‚ฌ์ด์˜ ์–ด๋”˜๊ฐ€์— ์žˆ์Šต๋‹ˆ๋‹ค. Google์˜ ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ธ Spanner๋Š” ํ˜„์žฌ ์‹œ๊ฐ„์ด ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚ฌ๋‹ค๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ํŠนํžˆ ๋งˆ์Šคํ„ฐ์˜ ๋ถˆํ™•์‹ค์„ฑ์ด ๋†’์€ ๊ฒฝ์šฐ ์‹œ์Šคํ…œ์— ์•ฝ๊ฐ„์˜ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ๋ฐœ์ƒ์‹œํ‚ค์ง€๋งŒ ์ „์—ญ์ ์œผ๋กœ ๋ถ„์‚ฐ๋œ ์ƒํ™ฉ์—์„œ๋„ ์ •ํ™•์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

๋” ๋งŽ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด ์ด ์‚ฌ์‹ค์„ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
Spanner ๊ตฌ์„ฑ์š”์†Œ๋Š” TT.now()๊ฐ€ ๊ฐ„๊ฒฉ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” TrueTime์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ Spanner๋Š” ํ˜„์žฌ ์‹œ๊ฐ„์ด ํŠน์ • ์ง€์ ์„ ์ง€๋‚ฌ๋‹ค๊ณ  ํ™•์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ์ง€์ ๊นŒ์ง€ ๋‹จ์ˆœํžˆ ์ ˆ์ „ ๋ชจ๋“œ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

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

์ง€์—ฐ์—๋Š” ๋งŽ์€ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

๋•Œ๋กœ๋Š” DBMS์˜ ์„ฑ๋Šฅ ํŠน์„ฑ๊ณผ ์ œํ•œ ์‚ฌํ•ญ์ด ์“ฐ๊ธฐ/์ฝ๊ธฐ ์ฒ˜๋ฆฌ๋Ÿ‰ ๋ฐ ๋Œ€๊ธฐ ์‹œ๊ฐ„ ์ธก๋ฉด์—์„œ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ฃผ์š” ์‹œ์Šคํ…œ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ๊ฐœ์š”๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ, ์ƒˆ๋กœ์šด DBMS์˜ ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•  ๋•Œ ํ›จ์”ฌ ๋” ํฌ๊ด„์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์€ ์ค‘์š”ํ•œ ์ž‘์—…(๊ฐ ์ฟผ๋ฆฌ ๋ฐ/๋˜๋Š” ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•ด)์„ ๋ณ„๋„๋กœ ํ‰๊ฐ€ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์˜ˆ:

  • ๊ด€๋ จ ํ…Œ์ด๋ธ”์— ์ง€์ •๋œ ์ œ์•ฝ ์กฐ๊ฑด๊ณผ ํ–‰ ํŒจ๋”ฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ” X(50์ฒœ๋งŒ ํ–‰ ํฌํ•จ)์— ์ƒˆ ํ–‰์„ ์‚ฝ์ž…ํ•  ๋•Œ์˜ ์“ฐ๊ธฐ ์ฒ˜๋ฆฌ๋Ÿ‰ ๋ฐ ๋Œ€๊ธฐ ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.
  • ํ‰๊ท  ์นœ๊ตฌ ์ˆ˜๊ฐ€ 500๋ช…์ผ ๋•Œ ํŠน์ • ์‚ฌ์šฉ์ž์˜ ์นœ๊ตฌ์˜ ์นœ๊ตฌ ํ‘œ์‹œ๊ฐ€ ์ง€์—ฐ๋ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž๊ฐ€ ์‹œ๊ฐ„๋‹น X ํ•ญ๋ชฉ์œผ๋กœ 100๋ช…์˜ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋ฅผ ํŒ”๋กœ์šฐํ•  ๋•Œ ์‚ฌ์šฉ์ž ๊ธฐ๋ก์—์„œ ์ƒ์œ„ 500๊ฐœ ํ•ญ๋ชฉ์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐ ์ง€์—ฐ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์„ฑ๋Šฅ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•œ๋‹ค๊ณ  ํ™•์‹ ํ•  ๋•Œ๊นŒ์ง€ ํ‰๊ฐ€ ๋ฐ ์‹คํ—˜์—๋Š” ์ด๋Ÿฌํ•œ ์ค‘์š”ํ•œ ์‚ฌ๋ก€๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋น„์Šทํ•œ ๊ฒฝํ—˜ ๋ฒ•์น™์— ๋”ฐ๋ผ ์ง€์—ฐ ์‹œ๊ฐ„ ์ธก์ •ํ•ญ๋ชฉ์„ ์ˆ˜์ง‘ํ•˜๊ณ  SLO๋ฅผ ๊ฒฐ์ •ํ•  ๋•Œ ์ด๋Ÿฌํ•œ ๋ถ„์„๋„ ๊ณ ๋ ค๋ฉ๋‹ˆ๋‹ค.

๊ฐ ์ž‘์—…์— ๋Œ€ํ•œ ์ง€ํ‘œ๋ฅผ ์ˆ˜์ง‘ํ•  ๋•Œ ๋†’์€ ์นด๋””๋„๋ฆฌํ‹ฐ์— ์œ ์˜ํ•˜์„ธ์š”. ๋กœ๊ทธ, ์ด๋ฒคํŠธ ์ˆ˜์ง‘ ๋˜๋Š” ๋ถ„์‚ฐ ์ถ”์ ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ ์„ฑ๋Šฅ ๋””๋ฒ„๊น… ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค. ๊ธฐ์‚ฌ์—์„œ "์ง€์—ฐ ์‹œ๊ฐ„์„ ๋””๋ฒ„๊ทธํ•˜๊ณ  ์‹ถ๋‚˜์š”?ยป ์ง€์—ฐ ๋””๋ฒ„๊น… ๋ฐฉ๋ฒ•๋ก ์— ์ต์ˆ™ํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ค‘์ฒฉ๋œ ํŠธ๋žœ์žญ์…˜์€ ์œ„ํ—˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  DBMS๊ฐ€ ์ค‘์ฒฉ ํŠธ๋žœ์žญ์…˜์„ ์ง€์›ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ํŠธ๋žœ์žญ์…˜์€ ํ•ญ์ƒ ๊ฐ์ง€ํ•˜๊ธฐ ์‰ฝ์ง€ ์•Š์€ ์˜ˆ๊ธฐ์น˜ ์•Š์€ ์˜ค๋ฅ˜๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ฆ‰, ์–ด๋–ค ์ข…๋ฅ˜์˜ ์ด์ƒ์ด ์žˆ์Œ์ด ๋ถ„๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค).

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

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

with newTransaction():
   Accounts.create("609-543-222")
   with newTransaction():
       Accounts.create("775-988-322")
       throw Rollback();

์œ„ ์ฝ”๋“œ์˜ ์ถœ๋ ฅ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋‘ ํŠธ๋žœ์žญ์…˜์„ ๋ชจ๋‘ ๋กค๋ฐฑํ•ฉ๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ๋‚ด๋ถ€ ํŠธ๋žœ์žญ์…˜๋งŒ ๋กค๋ฐฑํ•ฉ๋‹ˆ๊นŒ? ํŠธ๋žœ์žญ์…˜ ์ƒ์„ฑ์„ ์บก์Šํ™”ํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ณ„์ธต์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์˜์กดํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ์ด๋Ÿฌํ•œ ์‚ฌ๋ก€๋ฅผ ํŒŒ์•…ํ•˜๊ณ  ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

์—ฌ๋Ÿฌ ์ž‘์—…์ด ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ ๋ ˆ์ด์–ด๋ฅผ ์ƒ์ƒํ•ด ๋ณด์„ธ์š”(์˜ˆ: newAccount)์€ ์ด๋ฏธ ์ž์ฒด ํŠธ๋žœ์žญ์…˜์—์„œ ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ž์ฒด ํŠธ๋žœ์žญ์…˜ ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ์ƒ์œ„ ์ˆ˜์ค€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์˜ ์ผ๋ถ€๋กœ ์ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์–ด๋–ป๊ฒŒ ๋˜๋‚˜์š”? ์ด ๊ฒฝ์šฐ ๊ฒฉ๋ฆฌ์„ฑ๊ณผ ์ผ๊ด€์„ฑ์€ ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?

function newAccount(id string) {
  with newTransaction():
      Accounts.create(id)
}

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

function newAccount(id string) {
   Accounts.create(id)
}
// In main application:
with newTransaction():
   // Read some data from database for configuration.
   // Generate an ID from the ID service.
   Accounts.create(id)
   Uploads.create(id) // create upload queue for the user.

ํŠธ๋žœ์žญ์…˜์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ์™€ ์—ฐ๊ฒฐ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

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

var seq int64
with newTransaction():
    newSeq := atomic.Increment(&seq)
    Entries.query(newSeq)
    // Other operations...

์œ„์˜ ํŠธ๋žœ์žญ์…˜์€ ์ตœ์ข… ๊ฒฐ๊ณผ์— ๊ด€๊ณ„์—†์ด ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค ์‹œํ€€์Šค ๋ฒˆํ˜ธ๋ฅผ ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ๋ฌธ์ œ๋กœ ์ธํ•ด ์ปค๋ฐ‹์ด ์‹คํŒจํ•  ๊ฒฝ์šฐ ๋‹ค์‹œ ์‹œ๋„ํ•˜๋ฉด ๋‹ค๋ฅธ ์‹œํ€€์Šค ๋ฒˆํ˜ธ๋กœ ์š”์ฒญ์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ํ”Œ๋ž˜๋„ˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•ด ๋งŽ์€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ํ”Œ๋ž˜๋„ˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์š”์ฒญ์„ ๋ณด๋‚ด๊ธฐ ์ „์— ๋ถ„์„ํ•˜๊ณ  ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค. ๊ณ„ํš์ž๋Š” ์ž์‹ ์ด ์ฒ˜๋ถ„ํ•  ์ˆ˜ ์žˆ๋Š” ์‹ ํ˜ธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ผ๋ถ€ ๊ฐ€๋Šฅํ•œ ์ถ”์ •์น˜๋งŒ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ๊ฐ€์žฅ ์ข‹์€ ๊ฒ€์ƒ‰ ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

SELECT * FROM articles where author = "rakyll" order by title;

๊ฒฐ๊ณผ๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ „์ฒด ํ…Œ์ด๋ธ” ์Šค์บ”: ํ‘œ์˜ ๊ฐ ํ•ญ๋ชฉ์„ ๋ณด๊ณ  ์ž‘์„ฑ์ž ์ด๋ฆ„์ด ์ผ์น˜ํ•˜๋Š” ๊ธฐ์‚ฌ๋ฅผ ๋ฐ˜ํ™˜ํ•œ ํ›„ ์ฃผ๋ฌธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ธ๋ฑ์Šค ์Šค์บ”: ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ผ์น˜ํ•˜๋Š” ID๋ฅผ ์ฐพ๊ณ  ํ•ด๋‹น ํ–‰์„ ๊ฐ€์ ธ์˜จ ๋‹ค์Œ ์ˆœ์„œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ํ”Œ๋ž˜๋„ˆ์˜ ์ž„๋ฌด๋Š” ์–ด๋–ค ์ „๋žต์ด ๊ฐ€์žฅ ์ข‹์€์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ํ”Œ๋ž˜๋„ˆ์˜ ์˜ˆ์ธก ๊ธฐ๋Šฅ์€ ์ œํ•œ์ ์ด๋ผ๋Š” ์ ์„ ๊ณ ๋ คํ•ด ๋ณผ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ž˜๋ชป๋œ ๊ฒฐ์ •์œผ๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. DBA ๋˜๋Š” ๊ฐœ๋ฐœ์ž๋Š” ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋œ ์ฟผ๋ฆฌ๋ฅผ ์ง„๋‹จํ•˜๊ณ  ์„ธ๋ถ€ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ ๋ฒ„์ „์˜ DBMS๋Š” ์ฟผ๋ฆฌ ํ”Œ๋ž˜๋„ˆ๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ƒˆ ๋ฒ„์ „์œผ๋กœ ์ธํ•ด ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๋•Œ ์ž๊ฐ€ ์ง„๋‹จ์ด ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Š๋ฆฐ ์ฟผ๋ฆฌ ๋กœ๊ทธ, ๋Œ€๊ธฐ ์‹œ๊ฐ„ ๋ฌธ์ œ ๋ณด๊ณ ์„œ ๋˜๋Š” ์‹คํ–‰ ์‹œ๊ฐ„ ํ†ต๊ณ„๋Š” ์ตœ์ ํ™”๊ฐ€ ํ•„์š”ํ•œ ์ฟผ๋ฆฌ๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ ํ”Œ๋ž˜๋„ˆ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ผ๋ถ€ ์ธก์ •ํ•ญ๋ชฉ์—๋Š” ๋…ธ์ด์ฆˆ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(ํŠนํžˆ ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด๋‚˜ CPU ์‹œ๊ฐ„์„ ์ถ”์ •ํ•  ๋•Œ). ์Šค์ผ€์ค„๋Ÿฌ์— ์ถ”๊ฐ€๋˜๋Š” ์ข‹์€ ๊ธฐ๋Šฅ์€ ์‹คํ–‰ ๊ฒฝ๋กœ๋ฅผ ์ถ”์ ํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ์ง„๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์•„์‰ฝ๊ฒŒ๋„ ๋ชจ๋“  DBMS๊ฐ€ ์ด๋Ÿฌํ•œ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค).

์˜จ๋ผ์ธ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์€ ์–ด๋ ต์ง€๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์˜จ๋ผ์ธ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜, ์‹ค์‹œ๊ฐ„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋˜๋Š” ์‹ค์‹œ๊ฐ„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์€ ๊ฐ€๋™ ์ค‘์ง€ ์‹œ๊ฐ„์ด๋‚˜ ๋ฐ์ดํ„ฐ ์†์ƒ ์—†์ด ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ DBMS/์—”์ง„ ๋‚ด์—์„œ ์ „ํ™˜์ด ๋ฐœ์ƒํ•˜๋ฉด ์‹ค์‹œ๊ฐ„ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ๊ฐ€ ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค. ์„ฑ๋Šฅ๊ณผ ์Šคํ‚ค๋งˆ ์š”๊ตฌ ์‚ฌํ•ญ์ด ์„œ๋กœ ๋‹ค๋ฅธ ์ƒˆ๋กœ์šด DBMS๋กœ ์ด๋™ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ƒํ™ฉ์€ ๋”์šฑ ๋ณต์žกํ•ด์ง‘๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ์˜จ๋ผ์ธ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋ชจ๋ธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๊ทธ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

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

์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์›ํ•˜์‹œ๋ฉด ๋ฌธ์˜ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ธฐ์‚ฌ, ์ด ๋ชจ๋ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ Stripe์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ์ „๋žต์„ ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ํฌ๊ฒŒ ์ฆ๊ฐ€ํ•˜๋ฉด ์˜ˆ์ธก ๋ถˆ๊ฐ€๋Šฅ์„ฑ์ด ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

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

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

...

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

PS

๋ธ”๋กœ๊ทธ์—์„œ๋„ ์ฝ์–ด๋ณด์„ธ์š”.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€