๐Ÿ“Œ 1๏ธโƒฃ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ์œ ์ง€ ๋ฐฉ๋ฒ•**

๐Ÿ“Œ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ(Data Integrity)๋ž€?

๋ฐ์ดํ„ฐ๊ฐ€ ์ •ํ™•ํ•˜๊ณ  ์ผ๊ด€๋˜๋ฉฐ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ

๐ŸŽฏ ๋ฌด๊ฒฐ์„ฑ ์œ ํ˜•

์œ ํ˜• ์„ค๋ช… ์˜ˆ์‹œ
์—”ํ„ฐํ‹ฐ ๋ฌด๊ฒฐ์„ฑ ๊ธฐ๋ณธํ‚ค๋Š” ๋ฐ˜๋“œ์‹œ ๊ณ ์œ ํ•˜๊ณ  NULL ๋ถˆ๊ฐ€ ํ•™์ƒ ํ…Œ์ด๋ธ”์—์„œ ํ•™๋ฒˆ์€ ์ค‘๋ณต X, NULL X
๋„๋ฉ”์ธ ๋ฌด๊ฒฐ์„ฑ ์ปฌ๋Ÿผ ๊ฐ’์€ ๋ฏธ๋ฆฌ ์ •ํ•œ ํ˜•์‹๊ณผ ๋ฒ”์œ„ ๋‚ด์—ฌ์•ผ ํ•จ ๋‚˜์ด๋Š” 0150, ์ „ํ™”๋ฒˆํ˜ธ๋Š” ์ˆซ์ž 1011์ž๋ฆฌ
์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ ์™ธ๋ž˜ํ‚ค ๊ฐ’์€ ๋ถ€๋ชจ ํ…Œ์ด๋ธ”์— ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•ด์•ผ ํ•จ ์ฃผ๋ฌธ ํ…Œ์ด๋ธ”์˜ ๊ณ ๊ฐID๋Š” ๊ณ ๊ฐ ํ…Œ์ด๋ธ”์— ๋ฐ˜๋“œ์‹œ ์žˆ์–ด์•ผ ํ•จ
์‚ฌ์šฉ์ž ์ •์˜ ๋ฌด๊ฒฐ์„ฑ ๋น„์ฆˆ๋‹ˆ์Šค ๋ฃฐ์— ๋งž๋Š” ์กฐ๊ฑด ์˜ˆ: ์ง์› ๊ธ‰์—ฌ๋Š” 100๋งŒ์› ์ด์ƒ

๐Ÿ›ก๏ธ ๋ฌด๊ฒฐ์„ฑ ์œ ์ง€ ๋ฐฉ๋ฒ•

1๏ธโƒฃ ์ œ์•ฝ์กฐ๊ฑด(CONSTRAINT) ์„ค์ •

2๏ธโƒฃ ํŠธ๋žœ์žญ์…˜(Transaction) ๊ด€๋ฆฌ

3๏ธโƒฃ ์ •๊ธฐ์ ์ธ ๊ฒ€์ฆ ๋ฐ ์Šคํฌ๋ฆฝํŠธ ํ™œ์šฉ


๐ŸŽฌ ๋น„์œ ๋กœ ์ดํ•ดํ•˜๊ธฐ: ๋†€์ด๊ณต์› ๊ด€๋ฆฌ

๋†€์ด๊ณต์›์—์„œ๋Š” ์ž…์žฅ๊ถŒ(๊ธฐ๋ณธํ‚ค)์„ ๋ฐ˜๋“œ์‹œ ์†Œ์ง€ํ•ด์•ผ ์ž…์žฅ ๊ฐ€๋Šฅ



๐Ÿ“‚ 2๏ธโƒฃ ์ฃผ๊ธฐ์ ์ธ ๋ฐ์ดํ„ฐ ์•„์นด์ด๋น™ ๋ฐ ์ •๋ฆฌ

๐Ÿ“Œ ์•„์นด์ด๋น™(Archiving)์ด๋ž€?

์ž์ฃผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ„๋„์˜ ์ €์žฅ์†Œ๋กœ ์ด๋™์‹œ์ผœ, ์‹œ์Šคํ…œ ์„ฑ๋Šฅ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ

๐ŸŽฏ ์™œ ํ•„์š”ํ•œ๊ฐ€?

์ด์œ  ์„ค๋ช…
์„ฑ๋Šฅ ํ–ฅ์ƒ ์šด์˜ ํ…Œ์ด๋ธ”์— ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ ์ œ๊ฑฐ โ†’ ์ฟผ๋ฆฌ ์†๋„ ํ–ฅ์ƒ
์Šคํ† ๋ฆฌ์ง€ ํšจ์œจ์„ฑ ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋Š” ์ €๋ ดํ•œ ์Šคํ† ๋ฆฌ์ง€๋กœ ์ด๋™
๊ทœ์ • ์ค€์ˆ˜ ๋ฐ์ดํ„ฐ ๋ณด๊ด€ ๊ธฐ๊ฐ„ ์ •์ฑ… ์ค€์ˆ˜ (์˜ˆ: ๊ฐœ์ธ์ •๋ณด 5๋…„ ๋ณด๊ด€ ํ›„ ์‚ญ์ œ ๋“ฑ)

๐Ÿ› ๏ธ ์ฃผ์š” ๋ฐฉ๋ฒ•

1๏ธโƒฃ ํŒŒํ‹ฐ์…”๋‹ + ํŒŒํ‹ฐ์…˜ ์ด๋™

2๏ธโƒฃ ์•„์นด์ด๋น™ ์ „์šฉ ํ…Œ์ด๋ธ”๋กœ ์ด๊ด€

3๏ธโƒฃ ์••์ถ• ๋ฐ ์™ธ๋ถ€ ํŒŒ์ผ๋กœ ๋ฐฑ์—… (CSV, JSON)

โ†’ ์žฅ๊ธฐ ๋ณด๊ด€ ํ›„ ํ•„์š” ์‹œ๋งŒ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ


๐ŸŽฌ ๋น„์œ : ์ฐฝ๊ณ  ์ •๋ฆฌ

์ฐฝ๊ณ ์— ๋งค์ผ ์Œ“์ด๋Š” ๋ฌผ๊ฑด๋“ค!

์˜ค๋ž˜๋œ ๋ฌผ๊ฑด์€ ๋ณ„๋„ ๋ณด๊ด€์†Œ๋กœ ์˜ฎ๊ธฐ๊ณ , ์ž์ฃผ ์“ฐ๋Š” ๋ฌผ๊ฑด์€ ๋ฐ”๋กœ ์•ž์—!

โ†’ ์ฐฝ๊ณ ๊ฐ€ ๊น”๋”ํ•˜๋ฉด ์ฐพ๊ธฐ ์‰ฝ๊ณ  ๊ด€๋ฆฌ๊ฐ€ ํŽธํ•จ

(DB๋„ ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ฆฌ๋˜์–ด์•ผ ๋น ๋ฆ„)



๐Ÿ”ฅ 3๏ธโƒฃ ์žฅ์•  ๋ณต๊ตฌ ๋ฐ ๋ณต์› ์ „๋žต

๐Ÿ“Œ ํ•ต์‹ฌ ์ „๋žต

์ „๋žต ์„ค๋ช… ์‚ฌ์šฉ ์˜ˆ์‹œ
์ •๊ธฐ ๋ฐฑ์—… ์ „์ฒด, ์ฆ๋ถ„, ์ฐจ๋“ฑ ๋ฐฑ์—… ์ˆ˜ํ–‰ ๋งค์ผ ์ƒˆ๋ฒฝ ์ „์ฒด ๋ฐฑ์—…, ๋งค์‹œ๊ฐ„ ์ฆ๋ถ„ ๋ฐฑ์—…
๋กœ๊ทธ ํ™œ์šฉ (PITR) ๋ฐ”์ด๋„ˆ๋ฆฌ ๋กœ๊ทธ๋กœ ํŠน์ • ์‹œ์ ๊นŒ์ง€ ๋ณต๊ตฌ ์žฅ์•  ์ง์ „ 1๋ถ„ ์ „๊นŒ์ง€ ๋˜๋Œ๋ฆฌ๊ธฐ
๊ณ ๊ฐ€์šฉ์„ฑ(HA) ๊ตฌ์„ฑ ์ด์ค‘ํ™”(Replication, Cluster)๋กœ ์žฅ์•  ์‹œ ์ž๋™ ์ „ํ™˜ Master-Slave Replication
๋ณต๊ตฌ ์‹œ๋‚˜๋ฆฌ์˜ค ๋ฌธ์„œํ™” ์žฅ์•  ๋ฐœ์ƒ ์‹œ ๋ˆ„๊ตฌ๋‚˜ ๋Œ€์‘ ๊ฐ€๋Šฅํ•˜๋„๋ก ์ ˆ์ฐจํ™” ๋ณต๊ตฌ ๋งค๋‰ด์–ผ ์ž‘์„ฑ ๋ฐ ์—ฐ์Šต

๐ŸŽฌ ๋น„์œ : ์†Œ๋ฐฉ ์‹œ์Šคํ…œ

๊ฑด๋ฌผ ํ™”์žฌ ๋ฐœ์ƒ ์‹œ:

  1. ์Šคํ”„๋งํด๋Ÿฌ(Replication) ์ž๋™ ์ž‘๋™
  2. ๋น„์ƒ๊ตฌ(Backup) ํ†ตํ•ด ์•ˆ์ „ํ•˜๊ฒŒ ๋Œ€ํ”ผ
  3. *์†Œ๋ฐฉํ›ˆ๋ จ(๋ณต๊ตฌ ์‹œ๋‚˜๋ฆฌ์˜ค ์—ฐ์Šต)**์œผ๋กœ ๋น ๋ฅธ ๋Œ€์‘


๐Ÿš€ 4๏ธโƒฃ ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ์—์„œ์˜ ์„ฑ๋Šฅ ๊ด€๋ฆฌ

๐Ÿ“Œ ์„ฑ๋Šฅ ๊ด€๋ฆฌ ํ•ต์‹ฌ ์š”์†Œ

๋ฐฉ๋ฒ• ์„ค๋ช… ์˜ˆ์‹œ
์ธ๋ฑ์Šค ์ตœ์ ํ™” ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์ฟผ๋ฆฌ์— ์ ์ ˆํ•œ ์ธ๋ฑ์Šค ์ถ”๊ฐ€ B-Tree, Fulltext
์ฟผ๋ฆฌ ํŠœ๋‹ ๋А๋ฆฐ ์ฟผ๋ฆฌ ๋ถ„์„ โ†’ JOIN, WHERE, LIMIT ์ตœ์ ํ™” EXPLAIN ์‚ฌ์šฉ
ํŒŒํ‹ฐ์…”๋‹ ํ…Œ์ด๋ธ”์„ ํŒŒํ‹ฐ์…˜์œผ๋กœ ๋‚˜๋ˆ  ์ฟผ๋ฆฌ ๋ฒ”์œ„ ์ถ•์†Œ ์›”๋ณ„ ๋กœ๊ทธ ํ…Œ์ด๋ธ”
Connection Pool ๊ด€๋ฆฌ DB ์—ฐ๊ฒฐ ์ˆ˜ ์ œํ•œ, ๊ณผ๋ถ€ํ•˜ ๋ฐฉ์ง€ max_connections ์กฐ์ •
์บ์‹ฑ Redis, Memcached ํ™œ์šฉํ•ด ์ž์ฃผ ์กฐํšŒํ•˜๋Š” ๋ฐ์ดํ„ฐ ์บ์‹ฑ ์„ธ์…˜, ์กฐํšŒ์ˆ˜ ๋“ฑ

๐ŸŽฌ ๋น„์œ : ๊ณ ์†๋„๋กœ ๊ตํ†ต ๊ด€๋ฆฌ



๐Ÿ“ ๐Ÿ”– ์š”์•ฝ


๐Ÿ“Š ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ & ์œ ์ง€๋ณด์ˆ˜

๐Ÿ›ก๏ธ 1. ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ์œ ์ง€


๐Ÿ“‚ 2. ์ฃผ๊ธฐ์  ๋ฐ์ดํ„ฐ ์•„์นด์ด๋น™


๐Ÿ”ฅ 3. ์žฅ์•  ๋ณต๊ตฌ & ๋ณต์› ์ „๋žต


๐Ÿš€ 4. ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ฑ๋Šฅ ๊ด€๋ฆฌ