๐Ÿ“˜ Partitioning & Sharding ์ •๋ฆฌ

๊น€์ •๊ทœยท2025๋…„ 7์›” 29์ผ

๐Ÿ“Œ ๊ฐœ๋… ์š”์•ฝ


ํ•ญ๋ชฉPartitioningSharding
์ ์šฉ ๋ฒ”์œ„ํ•˜๋‚˜์˜ DB ์ธ์Šคํ„ด์Šค์—ฌ๋Ÿฌ ๊ฐœ์˜ DB ์ธ์Šคํ„ด์Šค
๋ชฉ์ ์„ฑ๋Šฅ ์ตœ์ ํ™”, ๊ด€๋ฆฌ ์šฉ์ดํ™•์žฅ์„ฑ ํ™•๋ณด, ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ
๊ตฌ์กฐํŒŒํ‹ฐ์…˜์€ DB ๋‚ด๋ถ€ ๊ตฌ์„ฑ์ƒค๋“œ๋Š” ๋…๋ฆฝ์ ์ธ DB
ํ™•์žฅ์„ฑ์ œํ•œ์  (Scale-up ์ค‘์‹ฌ)๋›ฐ์–ด๋‚จ (Scale-out ์ค‘์‹ฌ)
๊ตฌํ˜„ ์œ„์น˜DBMS ๋‚ด๋ถ€ (Oracle, MySQL ๋“ฑ ์ง€์›)์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋˜๋Š” ์ƒค๋”ฉ ๋ฏธ๋“ค์›จ์–ด
์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ๋‹จ์ผ ์ธ์Šคํ„ด์Šค ๋‚ด์—์„œ ๊ฐ€๋ŠฅCross-shard ์ฟผ๋ฆฌ๋Š” ๋ณต์žก
์˜ˆ์‹œ๋Œ€ํ˜• ERP ์‹œ์Šคํ…œ๋Œ€๊ทœ๋ชจ SNS, ์‡ผํ•‘๋ชฐ, SaaS ๋“ฑ

โœ… 1. Partitioning (ํŒŒํ‹ฐ์…”๋‹)

Partitioning์€ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์—์„œ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ํŒŒํ‹ฐ์…˜(partition)์œผ๋กœ ๋ถ„ํ• ํ•˜๋Š” ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.

๐Ÿ”น ์ข…๋ฅ˜

  • ์ˆ˜ํ‰ ํŒŒํ‹ฐ์…”๋‹ (Horizontal Partitioning) ํ–‰(Row) ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ ๋ถ„ํ•  โ†’ ์˜ˆ: ์‚ฌ์šฉ์ž ID 1~10000 / 10001~20000 ๋“ฑ
  • ์ˆ˜์ง ํŒŒํ‹ฐ์…”๋‹ (Vertical Partitioning) ์—ด(Column) ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ ๋ถ„ํ•  โ†’ ์˜ˆ: ์ž์ฃผ ์กฐํšŒ๋˜๋Š” ์ปฌ๋Ÿผ / ๋“œ๋ฌผ๊ฒŒ ์“ฐ์ด๋Š” ์ปฌ๋Ÿผ ๊ตฌ๋ถ„

๐Ÿ”น ์žฅ์ 

  • ์ฟผ๋ฆฌ ์„ฑ๋Šฅ ์ตœ์ ํ™” (ํ•„์š”ํ•œ ํŒŒํ‹ฐ์…˜๋งŒ ์กฐํšŒ)
  • ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ๋ฐ ์œ ์ง€๋ณด์ˆ˜ ์šฉ์ด
  • ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌ ๋‹จ์œ„ ์„ค์ • ๊ฐ€๋Šฅ

๐Ÿ”น ๋‹จ์ 

  • ์ž˜๋ชป๋œ ํŒŒํ‹ฐ์…”๋‹ ์„ค๊ณ„ ์‹œ ์„ฑ๋Šฅ ์ €ํ•˜
  • JOIN/์ง‘๊ณ„ ์—ฐ์‚ฐ ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์Œ
  • ๋‹จ์ผ DB ์„œ๋ฒ„์— ์˜์กด

โœ… 2. Sharding (์ƒค๋”ฉ)

Sharding์€ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ DB ์„œ๋ฒ„์— ๋ถ„์‚ฐ์‹œ์ผœ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

์ˆ˜ํ‰ ํŒŒํ‹ฐ์…”๋‹์„ ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ์ˆ˜์ค€์œผ๋กœ ํ™•์žฅํ•œ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.

๐Ÿ”น ์ƒค๋”ฉ ๋ฐฉ์‹

  • Range-based Sharding: ๊ฐ’์˜ ๋ฒ”์œ„๋กœ ์ƒค๋“œ ๋ถ„ํ• 
  • Hash-based Sharding: ํ‚ค ๊ฐ’์„ ํ•ด์‹œ๋กœ ๊ณ„์‚ฐํ•˜์—ฌ ์ƒค๋“œ ๊ฒฐ์ •
  • Directory-based Sharding: ๋ผ์šฐํŒ… ํ…Œ์ด๋ธ”๋กœ ์ƒค๋“œ ์œ„์น˜ ์ถ”์ 

๐Ÿ”น ์žฅ์ 

  • ์ˆ˜ํ‰ ํ™•์žฅ์„ฑ (์„œ๋ฒ„ ์ถ”๊ฐ€๋กœ ํ™•์žฅ ๊ฐ€๋Šฅ)
  • ๋ถ€ํ•˜ ๋ถ„์‚ฐ
  • ์žฅ์•  ๊ฒฉ๋ฆฌ ๊ฐ€๋Šฅ

๐Ÿ”น ๋‹จ์ 

  • ์ƒค๋”ฉ ๋กœ์ง ๋ณต์žก (๊ฐœ๋ฐœ/์šด์˜ ๋ถ€๋‹ด)
  • Cross-shard JOIN, ํŠธ๋žœ์žญ์…˜ ์–ด๋ ต๋‹ค
  • ์ƒค๋“œ ์žฌ๋ฐฐ์น˜(Migration) ๊นŒ๋‹ค๋กœ์›€

๐Ÿ’ผ ์‹ค๋ฌด ํ™œ์šฉ ์‚ฌ๋ก€

๐Ÿ”น Partitioning

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

๐Ÿ“ฆ ์•„์นด์ด๋น™์ด๋ž€โ€ฆ

๐Ÿ“ "์˜ค๋ž˜๋œ ํŒŒ์ผ์„ ๋ฐฑ์—… ํด๋”๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ"

โ›”๏ธ "์‚ญ์ œํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, ๋œ ์ค‘์š”ํ•œ ์œ„์น˜๋กœ ๋ณด๋‚ด๋Š” ๊ฒƒ"

๐Ÿ”น Sharding

ํ™œ์šฉ ๋ถ„์•ผ์„ค๋ช…
SNS ์„œ๋น„์Šค์‚ฌ์šฉ์ž ID ํ•ด์‹œ๋กœ ์ƒค๋”ฉ โ†’ ์„œ๋ฒ„ ๊ฐ„ ๋ถ€ํ•˜ ๋ถ„์‚ฐ
์ „์ž์ƒ๊ฑฐ๋ž˜์ง€์—ญ/๊ตญ๊ฐ€ ๊ธฐ๋ฐ˜ ์ƒค๋”ฉ โ†’ ์ง€์—ฐ ๊ฐ์†Œ, ๋ฒ•๋ฅ  ๋Œ€์‘
SaaS ํ”Œ๋žซํผ๊ณ ๊ฐ์‚ฌ ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ ๋ถ„๋ฆฌ โ†’ ๋ณด์•ˆ์„ฑ ๊ฐ•ํ™”
๊ฒŒ์ž„ ์„œ๋ฒ„์„œ๋ฒ„(์›”๋“œ)๋ณ„ ์ƒค๋”ฉ โ†’ ์œ ์ € ์ ‘์†๋Ÿ‰ ๋ถ„์‚ฐ ๊ฐ€๋Šฅ

๐Ÿง  ๋ณด์™„ ํŒ

  • Partitioning์€ MySQL, PostgreSQL, Oracle ๋“ฑ์—์„œ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ์œผ๋กœ ์ œ๊ณต
  • Sharding์€ MongoDB, Cassandra, Vitess, Citus ๋“ฑ ๋ถ„์‚ฐ DB์—์„œ ์ž์ฃผ ์‚ฌ์šฉ
  • ๋‘˜์€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ์Œ (ex. ์ƒค๋”ฉ๋œ DB ์•ˆ์— ํŒŒํ‹ฐ์…”๋‹๋œ ํ…Œ์ด๋ธ”)

๐Ÿ–ผ๏ธ ๊ตฌ์กฐ ๋‹ค์ด์–ด๊ทธ๋žจ

โœ… Partitioning vs Sharding ๋น„์œ  ์ •๋ฆฌ


๐Ÿ“ฆ Partitioning (ํŒŒํ‹ฐ์…”๋‹)

ํ•˜๋‚˜์˜ ์ฐฝ๊ณ  ์•ˆ์„ ๊ตฌ์—ญ๋ณ„๋กœ ๋‚˜๋ˆ ์„œ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ

  • ์ฐฝ๊ณ ๋Š” ํ•˜๋‚˜์ง€๋งŒ
  • ๊ทธ ์•ˆ์—์„œ ๊ตฌ์—ญ(ํŒŒํ‹ฐ์…˜)์„ ๋‚˜๋ˆ ์„œ ์›”๋ณ„, ID๋ณ„, ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ๋“ฑ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌ

๐ŸŸก ์˜ˆ์‹œ

๋ณต์‚ฌํŽธ์ง‘
ํ•˜๋‚˜์˜ ์‚ฌ์šฉ์ž ํ…Œ์ด๋ธ”์„ ์›”๋ณ„๋กœ ๋‚˜๋ˆ”
โ””โ”€ 1์›” ํŒŒํ‹ฐ์…˜
โ””โ”€ 2์›” ํŒŒํ‹ฐ์…˜
โ””โ”€ 3์›” ํŒŒํ‹ฐ์…˜

๐Ÿ“Œ ํŠน์ง• ์š”์•ฝ

  • DB ์ธ์Šคํ„ด์Šค๋Š” ํ•˜๋‚˜
  • ์„ฑ๋Šฅ ์ตœ์ ํ™”, ๊ด€๋ฆฌ ํŽธ์˜๋ฅผ ์œ„ํ•œ ๋‚ด๋ถ€ ๋ถ„ํ• 
  • DBMS๊ฐ€ ์ง์ ‘ ํŒŒํ‹ฐ์…˜ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

๐Ÿข Sharding (์ƒค๋”ฉ)

์ฐฝ๊ณ ๋ฅผ ์•„์˜ˆ ์—ฌ๋Ÿฌ ๊ฐœ ์ง€์–ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜๋ˆ  ๋ณด๊ด€

  • ์„œ์šธ ์ง€์ ์—๋Š” ์„œ์šธ ๊ณ ๊ฐ ๋ฐ์ดํ„ฐ
  • ๋ถ€์‚ฐ ์ง€์ ์—๋Š” ๋ถ€์‚ฐ ๊ณ ๊ฐ ๋ฐ์ดํ„ฐ
  • ๋Œ€๊ตฌ ์ง€์ ์—๋Š” ๋Œ€๊ตฌ ๊ณ ๊ฐ ๋ฐ์ดํ„ฐ

๐Ÿ‘‰ ์ด๋•Œ ๊ฐ ์ง€์ ์ด ์ƒค๋“œ(Shard)์ž…๋‹ˆ๋‹ค.

๐ŸŸข ํ•ต์‹ฌ ๊ฐœ๋… ์ •๋ฆฌ

  • ์–‘์‹์€ ๋˜‘๊ฐ™๋‹ค โ†’ ๊ฐ™์€ ํ…Œ์ด๋ธ” ๊ตฌ์กฐ (์Šคํ‚ค๋งˆ)
  • ๋ณด๊ด€ ์ค‘์ธ ๋ฐ์ดํ„ฐ๋Š” ๋‹ค๋ฅด๋‹ค โ†’ ์ง€์—ญ๋ณ„, ID ๋ฒ”์œ„๋ณ„ ๋ฐ์ดํ„ฐ ๋ถ„์‚ฐ
  • ์ง€์ ๋ผ๋ฆฌ๋Š” ๋…๋ฆฝ์ ์ด๋‹ค โ†’ DB ์ธ์Šคํ„ด์Šค๋„ ๊ฐ๊ฐ ๋”ฐ๋กœ ์กด์žฌ

๐Ÿ“Œ ํŠน์ง• ์š”์•ฝ

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

0๊ฐœ์˜ ๋Œ“๊ธ€