๐Ÿ“š Book/๋ฐ์ดํ„ฐ ์ค‘์‹ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค๊ณ„

๋ฐ์ดํ„ฐ ์ค‘์‹ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค๊ณ„ #6์žฅ

Hugehoo 2024. 3. 25. 23:29

ํŒŒํ‹ฐ์…”๋‹

๋ฐ์ดํ„ฐ ์…‹์ด ๋งค์šฐ ํฌ๊ฑฐ๋‚˜ ์งˆ์˜ ์ฒ˜๋ฆฌ๋Ÿ‰์ด ๋†’๋‹ค๋ฉด ๋ณต์ œ๋งŒ์œผ๋ก  ๋ถ€์กฑํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒํ‹ฐ์…˜์œผ๋กœ ์ชผ๊ฐค ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

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

ํŒŒํ‹ฐ์…”๋‹์˜ ์ฃผ๋œ ๋ชฉ์ 

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

 

ํŒŒํ‹ฐ์…”๋‹๊ณผ ๋ณต์ œ

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

 

ํ‚ค-๊ฐ’ ๋ฐ์ดํ„ฐ ํŒŒํ‹ฐ์…”๋‹

 

skewed (์ ๋ ธ๋‹ค) : Partitioning ์ด ๊ณ ๋ฅด๊ฒŒ ์ด๋ค„์ง€์ง€ ์•Š์•„ ๋‹ค๋ฅธ ํŒŒํ‹ฐ์…˜๋ณด๋‹ค ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ๊ฑฐ๋‚˜ ์งˆ์˜๋ฅผ ๋งŽ์ด ๋ฐ›๋Š” ํŒŒํ‹ฐ์…˜์ด ์žˆ๋Š” ๊ฒฝ์šฐ → ์ ๋ฆผ์ด ์žˆ์œผ๋ฉด ํŒŒํ‹ฐ์…”๋‹์˜ ํšจ๊ณผ๊ฐ€ ๋งค์šฐ ๋–จ์–ด์ง

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

ํ‚ค ๋ฒ”์œ„ ๊ธฐ์ค€ ํŒŒํ‹ฐ์…”๋‹

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

 

์žฅ์ 

  • ๊ฐ ํŒŒํ‹ฐ์…˜ ๋‚ด์—์„œ๋Š” ํ‚ค๋ฅผ ์ •๋ ฌ๋œ ์ˆœ์„œ๋กœ ์ €์žฅ ๊ฐ€๋Šฅ(SS Table, LSM Tree)
    • ๋ฒ”์œ„ ์Šค์บ”์ด ์‰ฌ์›Œ์ง„๋‹ค.

๋‹จ์ 

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

ํ‚ค์˜ ํ•ด์‹œ๊ฐ’ ๊ธฐ์ค€ ํŒŒํ‹ฐ์…”๋‹

  • ํ‚ค์˜ ํŒŒํ‹ฐ์…˜์„ ์ •ํ•˜๋Š”๋ฐ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ
    • ์ ๋ฆผ๊ณผ ํ•ซ์ŠคํŒŸ์˜ ์œ„ํ—˜ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด
  • ์ข‹์€ ํ•ด์‹œํ•จ์ˆ˜๋Š” ์ ๋ฆฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„(?) ๊ท ์ผํ•˜๊ฒŒ ๋ถ„์‚ฐ๋˜๊ฒŒ ํ•จ
  • ํ•ด์‹œํ•จ์ˆ˜๋ฅผ ์ •ํ•  ๋•, ๋™์ผํ•œ ํ‚ค์— ๋Œ€ํ•ด์„  ๋™์ผํ•œ ํ•ด์‹œ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•œ๋‹ค (203pg ๋งˆ์ง€๋ง‰์—์„œ ๋‘๋ฒˆ์งธ ๋ฌธ๋‹จ ์ฐธ์กฐ)

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

๋‹จ์ 

  • ๋ฌธ์ œ๋Š” ํ‚ค์˜ ํ•ด์‹œ๊ฐ’์„ ์‚ฌ์šฉํ•ด์„œ ํŒŒํ‹ฐ์…”๋‹ํ•˜๋ฉด ํ‚ค ๋ฒ”์œ„ ํŒŒํ‹ฐ์…”๋‹์˜ ์ข‹์€ ์†์„ฑ์„ ์žƒ์–ด๋ฒ„๋ฆฐ๋‹ค (range ํƒ์ƒ‰ ๋ถˆ๊ฐ€)
  • ์ด์ „์—๋Š” ์ธ์ ‘ํ–ˆ๋˜ ํ‚ค๋“ค์ด ๋ชจ๋“  ํŒŒํ‹ฐ์…˜์— ํฉ์–ด์ ธ ์ •๋ ฌ ์ˆœ์„œ๊ฐ€ ์œ ์ง€๋˜์ง€ ์•Š์Œ.
    • MongoDB ์—์„œ๋Š” ํ•ด์‹œ ๊ธฐ๋ฐ˜ ์ƒค๋”ฉ ๋ชจ๋“œ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ฉด ๋ฒ”์œ„ ์งˆ์˜๊ฐ€ ๋ชจ๋“  ํŒŒํ‹ฐ์…˜์— ์ „์†ก๋ผ์•ผ ํ•œ๋‹ค.

์ ๋ฆผ ์ž‘์—… ๋ถ€ํ•˜์™€ ํ•ซ์ŠคํŒŸ ์™„ํ™”

  • ํ‚ค๋ฅผ ํ•ด์‹ฑํ•˜์—ฌ ํŒŒํ‹ฐ์…˜์„ ์ •ํ•˜๋ฉด ํ•ซ์ŠคํŒŸ์„ ์ค„์ด๋Š”๋ฐ ๋„์›€์ด ๋˜์ง€๋งŒ ์™„๋ฒฝํžˆ ์ œ๊ฑฐํ•  ์ˆœ ์—†๋‹ค.
  • ํ•ญ์ƒ ๋™์ผํ•œ ํ‚ค๋ฅผ ์ฝ๊ณ  ์“ฐ๋Š” ๊ทน๋‹จ์ ์ธ ์ƒํ™ฉ์—์„œ๋Š” ๋ชจ๋“  ์š”์ฒญ์ด ๋™์ผํ•œ ํŒŒํ‹ฐ์…˜์œผ๋กœ ์ ๋ฆฌ๊ฒŒ ๋œ๋‹ค.
    • ex) ์ˆ˜๋ฐฑ๋งŒ๋ช…์˜ ํŒ”๋กœ์›Œ๋ฅผ ์ง€๋‹Œ ์ธํ”Œ๋ฃจ์–ธ์„œ์˜ ์ƒˆ๋กœ์šด ๊ฒŒ์‹œ๊ธ€์— ๋Œ“๊ธ€์ด ์ฆํญํ•  ๋•Œ
    • ์ด ๊ฒฝ์šฐ ๋™์ผํ•œ ํ‚ค(ํ•˜๋‚˜์˜ ํŒŒํ‹ฐ์…˜์ด ๊ฐ๋‹นํ•˜๋Š”)์— ๋ง‰๋Œ€ํ•œ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋กํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์š”์ฒญ์ด ๋งค์šฐ ์ ๋ฆฌ๋Š” ํ‚ค๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์„ ๋•Œ ๊ฐ„๋‹จํ•œ ํ•ด๊ฒฐ์ฑ…์€ ๊ฐ ํ‚ค์˜ ์‹œ์ž‘์ด๋‚˜ ๋์— ์ž„์˜์˜ ์ˆซ์ž๋ฅผ ๋ถ™์ด๋Š” ๊ฒƒ
    • (์ดํ•ด ์•ˆ๋จ 205pg ๋ฐ‘์—์„œ ์„ธ๋ฒˆ์งธ ๋ฌธ๋‹จ)
  • ์ž„์˜์˜ 10์ง„์ˆ˜ ๋‘ ๊ฐœ๋งŒ ๋ถ™์ด๋”๋ผ๋„ ํ•œ ํ‚ค์— ๋Œ€ํ•œ ์“ฐ๊ธฐ ์ž‘์—…์ด 100๊ฐœ(์™œ 100๊ฐœ?)์˜ ๋‹ค๋ฅธ ํ‚ค๋กœ ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„์‚ฐ → ๊ทธ ํ‚ค๋“ค์€ ๋‹ค๋ฅธ ํŒŒํ‹ฐ์…˜์œผ๋กœ ๋ถ„์‚ฐ๋  ์ˆ˜ ์žˆ๋‹ค.

 

ํŒŒํ‹ฐ์…”๋‹๊ณผ ๋ณด์กฐ ์ƒ‰์ธ

๋ฌธ์„œ ๊ธฐ์ค€ ๋ณด์กฐ ์ƒ‰์ธ ํŒŒํ‹ฐ์…”๋‹

  • ์˜ˆ๋ฅผ ๋“ค์–ด ์ค‘๊ณ ์ฐจ ํŒ๋งค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ€์ •
  • ๊ฐ ํ•ญ๋ชฉ์—๋Š” ๋ฌธ์„œ ID ๊ฐ€ ์žˆ๊ณ  DB๋ฅผ ๋ฌธ์„œ ID ๊ธฐ์ค€์œผ๋กœ ํŒŒํ‹ฐ์…”๋‹

  • ์ฐจ๋ฅผ ๊ฒ€์ƒ‰ํ•  ๋•Œ ์ƒ‰์ƒ๊ณผ ์ œ์กฐ์‚ฌ๋กœ ํ•„ํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋ ค๋ฉด color ์™€ make ์— ๋ณด์กฐ์ƒ‰์ธ์„ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.
  • ์ƒ‰์ธ์„ ์„ ์–ธํ•˜๋ฉด DB ๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ‰์ธ ์ƒ์„ฑ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋นจ๊ฐ„์ƒ‰ ์ž๋™์ฐจ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ถ”๊ฐ€๋˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŒŒํ‹ฐ์…˜์€ ์ž๋™์œผ๋กœ ๊ทธ๊ฒƒ์„ color: red ์ƒ‰์ธ ํ•ญ๋ชฉ์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์„œ ID ๋ชฉ๋ก์— ์ถ”๊ฐ€
  • ์ด๋Ÿฐ ์ƒ‰์ธ ๋ฐฉ๋ฒ•์˜ ์žฅ์  : ๊ฐ ํŒŒํ‹ฐ์…˜์ด ์™„์ „ํžˆ ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•จ
    • ๊ฐ ํŒŒํ‹ฐ์…˜์€ ์ž์‹ ์˜ ๋ณด์กฐ ์ƒ‰์ธ์„ ์œ ์ง€ํ•˜๋ฉฐ ๊ทธ ํŒŒํ‹ฐ์…˜์— ์†ํ•˜๋Š” ๋ฌธ์„œ๋งŒ ๋‹ด๋‹น
    • ๋‹ค๋ฅธ ํŒŒํ‹ฐ์…˜์— ์–ด๋–ค ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š”์ง€ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š์•„๋„ ๋œ๋‹ค.
    • DB ์— ๋ฌธ์„œ ์ถ”๊ฐ€, ์‚ญ์ œ , ๊ฐฑ์‹  ๋“ฑ ์“ฐ๊ธฐ ์ž‘์—…์„ ์‹คํ–‰ํ•  ๋•Œ๋Š” ์“ฐ๋ ค๊ณ  ํ•˜๋Š” ๋ฌธ์„œ ID ๋ฅผ ํฌํ•จํ•˜๋Š” ํŒŒํ‹ฐ์…˜๋งŒ ๋‹ค๋ฃจ๋ฉด ๋œ๋‹ค.
    • ์ด๋ฅผ ์ง€์—ญ ์ƒ‰์ธ(local index) ๋ผ ๋ถ€๋ฅธ๋‹ค.
  • Scatter/Gather
    • ํŒŒํ‹ฐ์…”๋‹๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ชจ๋“  ํŒŒํ‹ฐ์…˜์œผ๋กœ ์งˆ์˜๋ฅผ ๋ณด๋‚ด ๊ฒฐ๊ณผ๋ฅผ ํ•ฉ์‚ฐํ•˜๋Š” ๊ฒƒ
    • ์—ฌ๋Ÿฌ ํŒŒํ‹ฐ์…˜์—์„œ ์งˆ์˜๋ฅผ ๋ณ‘๋ ฌ ์‹คํ–‰ํ•˜๋”๋ผ๋„ ์Šค์บํ„ฐ/๊ฐœ๋”๋Š” ๊ผฌ๋ฆฌ ์ง€์—ฐ์‹œ๊ฐ„ ์ฆํญ์ด ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฝ๋‹ค.
    • ๊ทธ๋Ÿผ์—๋„ ๋ณด์กฐ ์ƒ‰์ธ์„ ๋ฌธ์„œ ๊ธฐ์ค€์œผ๋กœ ํŒŒํ‹ฐ์…”๋‹ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

์šฉ์–ด(์ „์—ญ) ๊ธฐ์ค€ ๋ณด์กฐ ์ƒ‰์ธ ํŒŒํ‹ฐ์…”๋‹

  • ๋ชจ๋“  ํŒŒํ‹ฐ์…˜์— ์กด์žฌํ•˜๋Š” ๋นจ๊ฐ„์ƒ‰ ์ž๋™์ฐจ ์ •๋ณด๋Š” ๋ณด์กฐ ์ƒ‰์ธ์—์„œ color:red ํ•ญ๋ชฉ์— ์ €์žฅ๋จ
    • color:red ๋ฅผ ๋น„๋กฏํ•œ ์ƒ‰๊น” ์ƒ‰์ธ ์ž์ฒด๋Š” a๋ถ€ํ„ฐ r๊นŒ์ง€๋Š” ํŒŒํ‹ฐ์…˜ 0์—, s๋ถ€ํ„ฐ z๊นŒ์ง€์˜ ๊ธ€์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ƒ‰๊น”์€ ํŒŒํ‹ฐ์…˜ 1์— ์ €์žฅ๋˜๋„๋ก ํŒŒํ‹ฐ์…”๋‹.
  • term-partitioned : ์ฐพ๊ณ ์ž ํ•˜๋Š” ์šฉ์–ด์— ๋”ฐ๋ผ ์ƒ‰์ธ์˜ ํŒŒํ‹ฐ์…˜์ด ๊ฒฐ์ •๋œ๋‹ค.
    • ์šฉ์–ด ์ž์ฒด๋กœ ํŒŒํ‹ฐ์…”๋‹ํ•˜๋ฉด ๋ฒ”์œ„ ์Šค์บ”์— ์œ ์šฉํ•œ ๋ฐ˜๋ฉด,
    • ์šฉ์–ด์˜ ํ•ด์‹œ๊ฐ’์„ ์‚ฌ์šฉํ•ด ํŒŒํ‹ฐ์…”๋‹ํ•˜๋ฉด ๋ถ€ํ•˜๊ฐ€ ์ข€ ๋” ๊ณ ๋ฅด๊ฒŒ ๋ถ„์‚ฐ๋œ๋‹ค.
  • ๋ฌธ์„œ ํŒŒํ‹ฐ์…”๋‹ ์ƒ‰์ธ์— ๋น„ํ•ด ์ „์—ญ(์šฉ์–ด) ์ƒ‰์ธ์ด ๊ฐ–๋Š” ์ด์  : ์ฝ๊ธฐ ํšจ์œจ์„ฑ UP
    • client ๋Š” ๋ชจ๋“  ํŒŒํ‹ฐ์…˜์— ์Šค์ผ€ํ„ฐ/๊ฐœ๋” ์‹คํ–‰ํ•  ํ•„์š” ์—†์ด ์›ํ•˜๋Š” ์šฉ์–ด๋ฅผ ํฌํ•จํ•˜๋Š” ํŒŒํ‹ฐ์…˜์œผ๋กœ๋งŒ ์ฝ๊ธฐ ์š”์ฒญ ๋ณด๋‚ด๋ฉด ๋œ๋‹ค.
  • ๋Œ€์‹  ์ „์—ญ ์ƒ‰์ธ์€ ์“ฐ๊ธฐ๊ฐ€ ๋Š๋ฆฌ๊ณ  ๋ณต์žกํ•˜๋‹ค๋Š” ๋‹จ์  ์กด์žฌ
    • ์ „์—ญ ๋ณด์กฐ ์ƒ‰์ธ์€ ๋Œ€๊ฒŒ ๋น„๋™๊ธฐ๋กœ ๊ฐฑ์‹ ๋จ
      • AWS DynamoDB ๋Š” ์ •์ƒ์ ์ธ ์ƒํ™ฉ์—์„œ ์ „์—ญ ๋ณด์กฐ ์ƒ‰์ธ ๊ฐฑ์‹ ์— 1์ดˆ๋„ ์•ˆ๊ฑธ๋ฆฌ์ง€๋งŒ, ์ธํ”„๋ผ ๊ฒฐํ•จ ์ƒ๊ธฐ๋ฉด ๋ฐ˜์˜ ์ง€์—ฐ ์‹œ๊ฐ„์ด ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

 

ํŒŒํ‹ฐ์…˜ ์žฌ๊ท ํ˜•ํ™”

 

์žฌ๊ท ํ˜•ํ™” : ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ํ•œ ๋…ธ๋“œ๊ฐ€ ๋‹ด๋‹นํ•˜๋˜ ๋ถ€ํ•˜๋ฅผ ๋‹ค๋ฅธ ๋…ธ๋“œ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ณผ์ •์„ ์žฌ๊ท ํ˜•ํ™”(rebalancing) ์ด๋ผ๊ณ  ํ•œ๋‹ค.

  • ์žฌ๊ท ํ˜•ํ™” ํ›„ ๋ถ€ํ•˜๊ฐ€ ํด๋Ÿฌ์Šคํ„ฐ์— ์žˆ๋Š” ๋…ธ๋“œ๋“ค ์‚ฌ์ด์— ๊ท ๋“ฑํ•˜๊ฒŒ ๋ถ„๋ฐฐ๋ผ์•ผ ํ•จ
  • ์žฌ๊ท ํ˜•ํ™” ๋„์ค‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ฝ๊ธฐ ์“ฐ๊ธฐ ์š”์ฒญ์„ ๋ฐ›์•„๋“ค์—ฌ์•ผ ํ•œ๋‹ค.

Mod N ๋ฐฉ๋ฒ•

  • hash(key) mod 10(N) -> 0 ~ 9 (output)
  • ์ „์ฒด ๋…ธ๋“œ ์ˆ˜(N)๊ฐ€ ๋ฐ”๋€”๋•Œ output ๊ฒฐ๊ณผ๋„ ๋ณ€๊ฒฝ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์—„์ฒญ๋‚œ ๋ฐ์ดํ„ฐ ์ด๋™์ด ๋ฐœ์ƒํ•œ๋‹ค.
    • ex) (123456 mod 10 = 6), (123456 mod 11 = 3), (123456 mod 12 = 0)

์ •์  ํŒŒํ‹ฐ์…”๋‹ (ํŒŒํ‹ฐ์…˜ ๊ฐœ์ˆ˜ ๊ณ ์ •)

ํŒŒํ‹ฐ์…˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ณ ์ •๋˜์–ด ๋ฐ์ดํ„ฐ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋…ธ๋“œ x ๋…ธ๋“œ๋‹น ํŒŒํ‹ฐ์…˜ ๊ฐœ์ˆ˜ = ์ „์ฒด ํŒŒํ‹ฐ์…˜ ๊ฐœ์ˆ˜๊ฐ€ ๋œ๋‹ค.

  • ex) ๋…ธ๋“œ(4) x ํŒŒํ‹ฐ์…˜(5) = 20 → ๋…ธ๋“œ(5) x ํŒŒํ‹ฐ์…˜(4) = 20
  • ์ „์ฒด ๋ฐ์ดํ„ฐ์…‹์˜ ํฌ๊ธฐ ๋ณ€๋™์ด ์‹ฌํ•˜๋ฉด ์ ์ ˆํ•œ ํŒŒํ‹ฐ์…˜ ๊ฐœ์ˆ˜๋ฅผ ์ •ํ•˜๊ธฐ ์–ด๋ ค์›€
  • ํŒŒํ‹ฐ์…˜์ด ๋„ˆ๋ฌด ์ปค์ง€๋ฉด ์žฌ๊ท ํ˜•ํ™” ๋ฐ ์žฅ์•  ๋ณต๊ตฌ ๋น„์šฉ์ด ํผ
  • ์ ์ ˆํ•œ ํฌ๊ธฐ๋ฅผ ์ •ํ•˜๋Š” ๊ฒƒ์ด ์ œ์ผ Best, ํ•˜์ง€๋งŒ ์–ด๋ ค์›€
  • ๋ฆฌ์•…, ์—˜๋ผ์Šคํ‹ฑ์„œ์น˜, ์นด์šฐ์น˜๋ฒ ์ด์Šค, ๋ณผ๋“œ๋ชจํŠธ ์—์„œ ์‚ฌ์šฉ

๋™์  ํŒŒํ‹ฐ์…”๋‹

  • ํŒŒํ‹ฐ์…˜ ๊ฐœ์ˆ˜๊ฐ€ ์ „์ฒด ๋ฐ์ดํ„ฐ ์šฉ๋Ÿ‰์— ๋งž์ถฐ ์กฐ์ •๋จ (ํฌ๊ธฐ๋ฅผ ์ œํ•œํ•˜๊ณ  ๊ฐœ์ˆ˜๋ฅผ ๋Š˜๋ฆผ)
  • ๋นˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฒฝ์šฐ ํŒŒํ‹ฐ์…˜ ๊ฒฝ๊ณ„ ์„ค์ • ๊ฐ’์— ๋„๋‹ฌํ•˜๊ธฐ ์ „์—๋Š” ํŒŒํ‹ฐ์…˜์ด 1๊ฐœ์ž„
    • HBase ์™€ MongoDB ๋Š” ๋นˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ดˆ๊ธฐ ํŒŒํ‹ฐ์…˜ ์ง‘ํ•ฉ์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Œ → ์‚ฌ์ „ ๋ถ„ํ•  (pre-splitting)

์ •์  ํŒŒํ‹ฐ์…”๋‹ & ๋™์  ํŒŒํ‹ฐ์…”๋‹ ํŠน์ง• ์ •๋ฆฌ

  • ์ •์  ํŒŒํ‹ฐ์…”๋‹ : ํŒŒํ‹ฐ์…˜ ํฌ๊ธฐ๊ฐ€ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ์— ๋น„๋ก€
  • ๋™์  ํŒŒํ‹ฐ์…”๋‹ : ํŒŒํ‹ฐ์…˜ ๊ฐœ์ˆ˜๊ฐ€ ๋ฐ์ดํ„ฐ ํฌ๊ธฐ์— ๋น„๋ก€

๋…ธ๋“œ ๋น„๋ก€ ํŒŒํ‹ฐ์…”๋‹

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

์šด์˜ : ์ž๋™ ์žฌ๊ท ํ˜•ํ™”์™€ ์ˆ˜๋™ ์žฌ๊ท ํ˜•ํ™”

์™„์ „ ์ž๋™ ์žฌ๊ท ํ˜•ํ™”์™€ ์™„์ „ ์ˆ˜๋™ ์žฌ๊ท ํ˜•ํ™” ์‚ฌ์ด์—๋Š” ์ค‘๊ฐ„ ์ง€์ ์ด ์žˆ๋‹ค.

  • Couchbase ๋Š” ์ž๋™์œผ๋กœ ํŒŒํ‹ฐ์…˜ ํ• ๋‹น์„ ์ œ์•ˆํ•˜์ง€๋งŒ ๋ฐ˜์˜ ๋˜๋ ค๋ฉด ๊ด€๋ฆฌ์ž๊ฐ€ ํ™•์ •ํ•ด์•ผ ํ•œ๋‹ค.

Rebalancing์€ ์š”์ฒญ ๊ฒฝ๋กœ๋ฅผ ์žฌ์„ค์ •ํ•ด์•ผ ํ•˜๊ณ  ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋…ธ๋“œ ์‚ฌ์ด์— ์ด๋™ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋น„์šฉ์ด ํฐ ์—ฐ์‚ฐ์ด๋‹ค.

๋•Œ๋ฌธ์— ์ž๋™ํ™”๋Š” ์ž๋™ ์žฅ์•  ๊ฐ์ง€์™€ ์กฐํ•ฉ๋˜๋ฉด ์œ„ํ—˜ํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

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

Q. ๋ฆฌ๋ฐธ๋Ÿฐ์‹ฑ ๋ฐœ์ƒํ•  ๋•Œ ํŒŒํ‹ฐ์…”๋‹์€ ์ƒˆ๋กœ์šด ๋…ธ๋“œ์— ํŒŒํ‹ฐ์…˜์„ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค → ์ด๋Š” ์ƒค๋”ฉ ์•„๋‹Œ๊ฐ€?

 

์š”์ฒญ ๋ผ์šฐํŒ…

  • ํŒŒํ‹ฐ์…˜์ด ์žฌ๊ท ํ˜•ํ™”๋˜๋ฉด์„œ ๋…ธ๋“œ์— ํ• ๋‹น๋˜๋Š” ํŒŒํ‹ฐ์…˜์ด ๋ฐ”๋€๋‹ค.
  • ์ด๋Š” DB vendor ์— ๊ตญํ•œ๋˜์ง€ ์•Š๋Š” ๋”์šฑ ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ์ธ ์„œ๋น„์Šค ์ฐพ๊ธฐ์˜ ์ผ์ข…
  • ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ ์‹œ์Šคํ…œ์€ ํด๋Ÿฌ์Šคํ„ฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ ํ•˜๊ธฐ ์œ„ํ•ด ์ฃผํ‚คํผ(Zookeeper) ๊ฐ™์€ ์ฝ”๋””๋„ค์ด์…˜ ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉ.
    • ๊ฐ ๋…ธ๋“œ๋Š” ์ฃผํ‚คํผ์— ์ž์‹ ์„ ๋“ฑ๋กํ•˜๊ณ  ์ฃผํ‚คํผ๋Š” ํŒŒํ‹ฐ์…˜๊ณผ ๋…ธ๋“œ ์‚ฌ์ด์˜ ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ํ• ๋‹น ์ •๋ณด๋ฅผ ๊ด€๋ฆฌ

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

 

๋ณ‘๋ ฌ ์งˆ์˜ ์‹คํ–‰

  • ๋Œ€๊ทœ๋ชจ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ ๊ด€๊ณ„ํ˜• DB ์ œํ’ˆ์€ ํ›จ์”ฌ ๋ณต์žกํ•œ ์ข…๋ฅ˜์˜ ์งˆ์˜๋ฅผ ์ œ๊ณตํ•จ
  • ์ „ํ˜•์ ์ธ DW ์งˆ์˜๋Š” Join, Filtering, Grouping, Aggregation ์—ฐ์‚ฐ์„ ๋ช‡๊ฐœ ํฌํ•จํ•œ๋‹ค.
  • MPP ์งˆ์˜ ์ตœ์ ํ™”๊ธฐ๋Š” ๋ณต์žกํ•œ ์งˆ์˜๋ฅผ ์—ฌ๋Ÿฌ ์‹คํ–‰ ๋‹จ๊ณ„์™€ ํŒŒํ‹ฐ์…˜์œผ๋กœ ๋ถ„ํ•ดํ•˜๋ฉฐ ์ด๋“ค ์ค‘ ๋‹ค์ˆ˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๋…ธ๋“œ์—์„œ ๋ณ‘๋ ฌ์ ์œผ๋กœ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋‹ค.