โœ… ๋ฐœํ‘œ ์˜์ƒ

https://www.youtube.com/watch?v=t96l6ry_qmw 

 

โœ”๏ธ ๋ฐœํ‘œ ๋‚ด์šฉ

MMM

HA ์˜คํ”ˆ์†Œ์Šค ์†”๋ฃจ์…˜ ์ด๋ฆ„

ํ† ์Šค์˜ Live MySQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค HA ์†”๋ฃจ์…˜์œผ๋กœ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Œ

Google์—์„œ ๊ฐœ๋ฐœ๋œ ์†”๋ฃจ์…˜

๋ฒ„์ „ ์—…๋ฐ์ดํŠธ๋Š” ์ค‘์ง€๋˜์–ด์„œ, ํ•„์š” ์‹œ ์ž์ฒด ์—…๋ฐ์ดํŠธ๋ฅผ ํ•˜๋ฉด์„œ ์‚ฌ์šฉ ์ค‘

 

 

๊ธฐ๋ณธ ๊ตฌ์„ฑ๋„

MASTER-MASTER 01, 02๋…ธ๋“œ๋งŒ MMM์ด ๊ด€๋ฆฌํ•˜๋„๋ก ๊ตฌ์„ฑ

03๋ฒˆ SLAVE๋„ MMM์ด ๊ด€๋ฆฌํ•˜๋„๋ก ํฌํ•จ์‹œํ‚ฌ ์ˆ˜ ์žˆ์ง€๋งŒ, ์‹ ๊ทœ MASTER๋กœ failover ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋Œ€์‘๋˜์ง€ ์•Š๋Š” ์ผ€์ด์Šค๊ฐ€ ์žˆ์–ด์„œ

์ด ๊ตฌ์„ฑ์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ

 

 

1. ๋ฐ๋ชฌ 2๊ฐœ : Monitoring, Agent 

 

 

2. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ failover๋ฅผ ์œ„ํ•ด ๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„์— ์˜ฌ๋ผ๊ฐ€๋Š” ์„œ๋น„์Šค IP

 

  • Monitoring ๋ฐ๋ชฌ
    • ๋ณ„๋„์˜ ํ˜ธ์ŠคํŠธ์—์„œ ๋ชจ๋“  ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์˜์‚ฌ ๊ฒฐ์ •๊ณผ ๋ช…๋ น ์ˆ˜ํ–‰

 

  • Agent ๋ฐ๋ชฌ
    • ๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„์—์„œ ์‹คํ–‰๋จ
    • Monitoring ๋ฐ๋ชฌ์—์„œ ๋‚ด๋ ค์˜จ ๋ช…๋ น ์ˆ˜ํ–‰ 

 

 

Service IP

MMM์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค Role ๋ณ€๊ฒฝ์— ๋”ฐ๋ผ ์ด๋™์‹œ์ผœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์˜ failover๊ฐ€ ์ด๋ฃจ์–ด์ง€๊ฒŒ ํ•จ

 

 

mond๊ฐ€ ํ•˜๋Š” ์ฃผ์š” ๋ชจ๋‹ˆํ„ฐ๋ง ํ•ญ๋ชฉ

  • ping - ํ˜ธ์ŠคํŠธ ์ž์ฒด๊ฐ€ ์‚ด์•„์žˆ๋Š”์ง€
  • mysql - MySQL ์ธ์Šคํ„ด์Šค๊ฐ€ ์‚ด์•„์žˆ๋Š”์ง€
  • rep_threads - ๋ณต์ œ ์Šค๋ ˆ๋“œ๊ฐ€ ์ •์ƒ ์ž‘๋™ ์ค‘์ธ์ง€
  • rep_backlog - ๋ณต์ œ ์Šค๋ ˆ๋“œ์˜ ์ง€์—ฐ์ด ์ •ํ•ด์ง„ threshold๋ฅผ ๋„˜์–ด์„ฐ๋Š”์ง€ ํ™•์ธ

์ด ๋ชจ๋‹ˆํ„ฐ๋ง ํ•ญ๋ชฉ์—์„œ ์ด์ƒ์ด ์žˆ์„ ์‹œ, MMM์ด standby MASTER๋กœ failover ์ง„ํ–‰

 

 

 

DR ์ฒ˜์Œ ๊ตฌ์„ฑํ–ˆ์„ ๋•Œ ๋ชจ์Šต

active : DATA-CENTER1

standby  : DATA-CENTER2

๋‹จ๋ฐฉํ–ฅ ๋ณต์ œ ๊ตฌ์„ฑ : DATA-CENTER ๊ฐ„, standby DATA-CENTER ๋‚ด์˜ local MASTER ๊ฐ„

-> IDC failover ์‹œ Role ์ „ํ™˜ ์ž‘์—… ํ•„์š”..

 

 

BEFORE

์‹ ๊ทœ active DATA-CENTER์˜ MySQL ์„œ๋ฒ„๋ฅผ MASTER-MASTER ๊ตฌ์„ฑ์œผ๋กœ ์ „ํ™˜ํ•ด์•ผ ํ•จ

DATA-CENTER ๊ฐ„ MySQL ์„œ๋ฒ„์˜ MASTER-SLAVE ๊ด€๊ณ„๋„ ์ „ํ™˜ํ•ด์ฃผ์–ด์•ผ ํ•จ

์‹ ๊ทœ standby DATA-CENTER์˜ MySQL ์„œ๋ฒ„๋Š” MASTER-SLAVE ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ ์ „ํ™˜ํ•ด์•ผ ํ•จ

-> ์–ด๋ ค์šด ์ž‘์—…์€ ์•„๋‹ˆ์ง€๋งŒ ๋ฒˆ๊ฑฐ๋กญ๊ณ  ๋ถ€๋‹ด์Šค๋Ÿฌ์šด ์ž‘์—…๋“ค -> ๊ฐœ์„  ํ•„์š”!

 

 

์ „ํ™˜ํ•˜๊ฒŒ ๋œ ๋ฐฐ๊ฒฝ

DR์„ผํ„ฐ์˜ ๋ณธ ๋ชฉ์ 

์žฌ๋‚œ ์‹œ ๋น„์ฆˆ๋‹ˆ์Šค ์—ฐ์†์„ฑ ๋ณด์žฅ์ด๋ฏ€๋กœ

๋ฐ์ดํ„ฐ ์„ผํ„ฐ failover๋ฅผ ํ•  ๊ฒฝ์šฐ๊ฐ€ ๊ฑฐ์˜ ๋ฐœ์ƒํ•˜์ง€ ์•Š์„ ๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ

ํ† ์Šค์˜ ๊ฐ„ํŽธ๊ฒฐ์ œ ํŒŒํŠธ๋„ˆ์‚ฌ ์ฆ๊ฐ€ -> ๋ฌด์ค‘๋‹จ ์šด์˜์˜ ํ•„์š”์„ฑ ์ฆ๊ฐ€

 

์ด๋Ÿฐ ์ƒํ™ฉ์—์„œ ๋Œ€๊ทœ๋ชจ ๋„คํŠธ์›Œํฌ ์ž‘์—…..

-> ๋ฌด์ค‘๋‹จ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ๋กค๋ง ์ž‘์—…์œผ๋กœ ๊ณ„ํš์ด ๋จ

-> ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„๋„ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ failover๊ฐ€ ํ•„์š”ํ•ด์ง

-> ์ง„ํ–‰ํ•˜๋‹ค ๋ณด๋‹ˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค Role ์ „ํ™˜ ์ž‘์—…์— ๋Œ€ํ•œ ๋ถ€๋‹ด ์ฆ๊ฐ€ + ์‹ค์ˆ˜๋กœ ๋ณต์ œ๊ฐ€ ๊นจ์ง€๋Š” ๊ฒฝ์šฐ๋„ ๋ฐœ์ƒ + ๋‹ค์šดํƒ€์ž„ ํ•„์š” + ์œ„ํ—˜๋ถ€๋‹ด ํฐ ์ž‘์—…๋„ ๋ฐœ์ƒ

-> ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ์ „ํ™˜ ๊ณผ์ •์„ ์ตœ๋Œ€ํ•œ ๊ฐ„์†Œํ™”์‹œํ‚ฌ ํ•„์š”๊ฐ€ ์ƒ๊น€

 

 

 

WISH

1. ์–‘์ชฝ ๋ฐ์ดํ„ฐ์„ผํ„ฐ -> ๋Œ€์นญ ๊ตฌ์กฐ

2. ๋ฐ์ดํ„ฐ์„ผํ„ฐ failover ์‹œ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ ์ปค๋„ฅ์…˜๋งŒ ์ด๋™ํ•˜๊ณ 

3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ ˆ๋ฒจ์—์„œ๋Š” ๋”ฐ๋กœ ์ž‘์—…ํ•  ๊ฒƒ์ด ์—†๋Š” ๊ตฌ์กฐ

 

MASTER-MASTER ์–‘๋ฐฉํ–ฅ์œผ๋กœ ๋ฐ”๋€” ๋ถ€๋ถ„

1. ๊ธฐ์กด์— ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ ์žˆ๋˜ DR ๋ณต์ œ ์ฑ„๋„

2. DR ์„ผํ„ฐ ๋‚ด์— MASTER-SLAVE ๋ณต์žฌ ์ฑ„๋„

 

but,, ๋‘ ๊ฐ€์ง€ ์ด์Šˆ ๋ฐœ์ƒ

 

1. binlog ์ค‘๋ณต ์ „์†ก ์ด์Šˆ

01, 02๋ฒˆ -> log_slave_update ์˜ต์…˜์„ ์ผœ๊ณ  ์šด์˜

sql_thread๊ฐ€ ์ ์šฉํ•œ ํŠธ๋žœ์žญ์…˜๋„ binlog์— ๊ธฐ๋กํ•˜๋Š” ์˜ต์…˜

 

 

 

1. actvie ๋ฐ์ดํ„ฐ์„ผํ„ฐ 01๋ฒˆ์—์„œ ๋ฐœ์ƒํ•œ ํŠธ๋žœ์žญ์…˜์˜ binlog ์ƒ์„ฑ

2. DR ์ฑ„๋„์„ ๋”ฐ๋ผ standby ๋ฐ์ดํ„ฐ์„ผํ„ฐ 01๋ฒˆ์œผ๋กœ ์ „์†ก ๋ฐ ์ ์šฉ๋จ

3. ์ ์šฉ ์ดํ›„, standby ๋ฐ์ดํ„ฐ์„ผํ„ฐ 01๋ฒˆ ์„œ๋ฒ„ -> ์ด ํŠธ๋žœ์žญ์…˜์— ๋Œ€ํ•œ binlog ์ƒ์„ฑ

 

 

4. ์ด๋•Œ 01๋ฒˆ์˜ slave๋กœ ์žˆ๋Š” 02, 03๋ฒˆ -> ์ด binlog๋ฅผ ๋ณต์ œํ•˜๊ณ  ์ ์šฉํ•˜๊ฒŒ ๋จ

๋‹จ๋ฐฉํ–ฅ ๊ตฌ์„ฑ ์‹œ binlog ๋ณต์ œ ํ๋ฆ„๊ณผ ๋™์ผํ•จ

 

 

5. ๊ทธ๋Ÿฐ๋ฐ 02๋ฒˆ์—์„œ ์ตœ์ข… ์ ์šฉํ•œ binlog๊ฐ€ ์ž์ฒด binlog๋กœ ์ƒ์„ฑ์ด ๋˜๊ณ ,

6. 01๋ฒˆ์€ 02๋ฒˆ์˜ master๋ฉด์„œ slave์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ด binlog๋ฅผ ๋ณต์ œํ•ด์•ผ ํ•˜๋Š”์ง€ ํŒ๋‹จํ•จ

์ด ํŒ๋‹จ -> ํ•ด๋‹น binlog๊ฐ€ ์ฒ˜์Œ ์ƒ์„ฑ๋œ ์„œ๋ฒ„์˜ server-id์™€ ์ž์‹ ์˜ server-id๊ฐ€ ๋‹ค๋ฅธ์ง€ ๋น„๊ตํ•ด์„œ ์ด๋ฃจ์–ด์ง

๋‹ค๋ฅผ ๊ฒฝ์šฐ ๋ณต์ œ ์ง„ํ–‰

 

์ด binlog๋Š” ๋ฐ์ดํ„ฐ์„ผํ„ฐ1์—์„œ ์ฒ˜์Œ ์ƒ์„ฑ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— server-id 101์„ ๊ณ„์† ์œ ์ง€ํ•˜๊ณ  ์žˆ๋Š” ์ƒํ™ฉ

server-id 1001์ธ 01๋ฒˆ์œผ๋กœ ๋‹ค์‹œ ๋ณต์ œ๊ฐ€ ๋˜์–ด๋ฒ„๋ฆผ

 

 

 

์—ฌ๊ธฐ์„œ ์ ์šฉ์ด ๋˜๋ฉด ๋‹ค์‹œ ๋˜ 03, 02๋ฒˆ์œผ๋กœ ๋ณต์ œ ๋˜๋Š” ์ƒํ™ฉ์ด ์ƒ๊ธธ ์ˆ˜ ์žˆ์Œ..

 

์‹ค์ œ ๊ฐ’ ๋ณ€๊ฒฝ์ด ์—†์—ˆ๋‹ค๋ฉด binlog๊ฐ€ ์ƒ์„ฑ๋˜์ง€ ์•Š๋Š”๋ฐ,

๋™์ผ binlog๊ฐ€ ์ ์šฉ๋œ ์ง€ 1์ดˆ๋„ ์ง€๋‚˜์ง€ ์•Š์€ ์ƒํ™ฉ์ด๊ธฐ ๋•Œ๋ฌธ์—

4๋ฒˆ์˜ ์ƒํ™ฉ๊นŒ์ง€ ๋‚˜์˜ฌ ํ™•๋ฅ ์€ ์ ์ง€๋งŒ

์ด๋ก ์ ์œผ๋กœ๋Š” ๋ฌดํ•œ ๋ฃจํ”„๊ฐ€ ๊ฐ€๋Šฅํ•ด์ ธ๋ฒ„๋ฆผ

 

 

2. MMM์ด ๋ณต์ œ ์ฑ„๋„์„ ๊ตฌ๋ถ„ํ•˜์ง€ ๋ชปํ•˜๋Š” ์ด์Šˆ

๊ฐ ๋ฐ์ดํ„ฐ์„ผํ„ฐ์˜ 01๋ฒˆ ์„œ๋ฒ„๋Š” DR ์–‘๋ฐฉํ–ฅ ๋ณต์ œ ์ฑ„๋„์ด ์ถ”๊ฐ€๋จ์œผ๋กœ ์ธํ•ด์„œ 

DR ๋ณต์ œ ์ฑ„๋„๊ณผ local master-master ๋ณต์ œ ์ฑ„๋„์ด ๋™์‹œ์— ์ƒ์„ฑ๋œ ๋ฉ€ํ‹ฐ์†Œ์Šค๋ณต์ œ ์ƒํƒœ๊ฐ€ ๋จ

 

์ด ๊ฒฝ์šฐ MMM์€ ์ž์‹ ์ด ๋ชจ๋‹ˆํ„ฐ๋ง ํ•ด์•ผ ํ•  ์ฑ„๋„์ด ์–ด๋–ค ์ฑ„๋„์ธ์ง€ ์•Œ์ง€ ๋ชปํ•˜๊ฒŒ ๋จ

 

 

 

1. binlog ๋ฌดํ•œ ๋ฃจํ”„

๋ฐฉ๋ฒ• 1) Gtid๋กœ ์ค‘๋ณต ์ ์šฉ ๋ง‰๊ธฐ

but,, ๋‹น์‹œ ๋ฐ”๋กœ Gtid ์ „ํ™˜์€ ์–ด๋ ค์šด ์ƒํ™ฉ

Gtid๋กœ ๊ฐ€๋”๋ผ๋„ binlog์˜ ์ „์†ก ๋ฃจํ”„ (No I0 Thread skip)์€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๊ณ 

๋‹ค์‹œ binlog position ๋ฐฉ์‹์œผ๋กœ ์ „ํ™˜ ์‹œ ์ด์Šˆ๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์—.. ์ค‘๋ณต ์ „์†ก ์ž์ฒด๋ฅผ ๋ง‰์„ ๋ฐฉ๋ฒ•์ด ํ•„์š”

 

๋ฐฉ๋ฒ• 2) binlog filter ๊ฑธ๊ธฐ

 

 

2. ์–ด๋–ค ์ฑ„๋„?

MMM์ด MM ์ฑ„๋„์— ๋Œ€ํ•ด์„œ๋งŒ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ํ•˜๋„๋ก ์†Œ์Šค๋ฅผ ์ˆ˜์ •

 

 

ํ˜„์žฌ DR ๊ตฌ์„ฑ ๋ชจ์Šต

 

 

1. ์ƒํ™ฉ

Ubuntu ์ธ์Šคํ„ด์Šค์— CentOS ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋„์šฐ๊ณ , ๊ทธ ์•ˆ์— PostgreSQL๋ฅผ ์„ค์น˜ํ•œ ์ƒํƒœ

 

๊ทธ๋ฆผ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ณด์ž๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

๋‚ด๊ฐ€ ํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ์€

์šฐ๋ถ„ํˆฌ์—์„œ "CentOS์— ์„ค์น˜๋œ PostgreSQL"์— ์ ‘์†ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•ด MySQL(๊ฐœ๋ฐœ DB)๋กœ ๋ณด๋‚ด๋Š” ๊ฒƒ!

 

๊ทธ๋ƒฅ ์ ‘์†ํ•˜๋ ค๊ณ  ํ–ˆ๋”๋‹ˆ ๊ณ„์† connection ์—๋Ÿฌ๊ฐ€ ๋‚˜์„œ ์ฐพ์•„๋ณด๋‹ˆ..

์ด๋Ÿฐ ๊ฒฝ์šฐ๋Š” PostgreSQL์—์„œ ์™ธ๋ถ€ ์ ‘์†์„ ํ—ˆ์šฉํ•ด์ฃผ์–ด์•ผ ํ•˜๊ณ ,

๊ทธ๋Ÿฌ๋ ค๋ฉด ๋ฐ”๊ฟ”์•ผ ํ•  ์„ค์ •๊ณผ ์„ค์น˜ํ•ด์•ผ ํ•  ํŒจํ‚ค์ง€๋“ค์ด ์žˆ์–ด์„œ ๊ณผ์ •์„ ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค :)

 

 

2. ๊ณผ์ •

 

0. ํ•„์š” ํŒจํ‚ค์ง€ ์„ค์น˜

# Ubuntu์—
sudo apt-get install -y postgresql-client
sudo apt-get install -y postgresql-client-common

# CentOS์—
yum install -y firewalld net-tools

 

 

1. PostgreSQL์ด CentOS ์ปจํ…Œ์ด๋„ˆ์˜ ๋„คํŠธ์›Œํฌ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์ˆ˜์‹  ๋Œ€๊ธฐ ์ค‘์ธ์ง€ ํ™•์ธ - CentOS ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰

netstat -nlt | grep 5432

PostgreSQL์ด 0.0.0.0:5432์—์„œ ์ˆ˜์‹  ๋Œ€๊ธฐ ์ค‘์ด๋ฉด ๋ชจ๋“  IP ์ฃผ์†Œ์—์„œ ์—ฐ๊ฒฐ์„ ์ˆ˜๋ฝํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค.

127.0.0.1:5432์—์„œ ์ˆ˜์‹ ํ•˜๋Š” ๊ฒฝ์šฐ ์™ธ๋ถ€ ์—ฐ๊ฒฐ์„ ํ—ˆ์šฉํ•˜๋„๋ก PostgreSQL ๊ตฌ์„ฑ ํŒŒ์ผ์„ ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค.

 

 

2. CentOS ์ปจํ…Œ์ด๋„ˆ์˜ ๋ฐฉํ™”๋ฒฝ์—์„œ PostgreSQL ํฌํŠธ(5432) ์—ด๊ธฐ - CentOS ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰

firewall-cmd --zone=public --add-port=5432/tcp --permanent
firewall-cmd --reload

 

3. /var/lib/pgsql/{version}/data/pg_hba.conf ์ˆ˜์ • - CentOS ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰

host    all             all             {์ธ์Šคํ„ด์Šค ํผ๋ธ”๋ฆญ IP}/22     md5

 

์šฐ๋ถ„ํˆฌ์—์„œ CentOS์— ์žˆ๋Š” PostgreSQL๋กœ ์ ‘์†ํ•˜๋ ค๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ถ„ํˆฌ IP๋ฅผ ํ—ˆ์šฉํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

pg_hba.conf ๊ฐ€์žฅ ํ•˜๋‹จ์— ์žˆ๋Š” ํ—ˆ์šฉ ๋ชฉ๋ก์— ์šฐ๋ถ„ํˆฌ IP๋ฅผ host๋กœ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค.

 

4. /var/lib/pgsql/{version}/data/postgresql.conf ์ˆ˜์ • - CentOS ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰

#listen_addresses = 'localhost' ๋ฅผ ์•„๋ž˜๋กœ ๋ณ€๊ฒฝ
listen_addresses = '*'

 

5. PostgreSQL ์žฌ์‹œ์ž‘ - CentOS ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰

sudo systemctl restart postgresql-{version}

 

6. ์ ‘์† - Ubuntu ์ธ์Šคํ„ด์Šค์—์„œ ์‹คํ–‰

psql -h {์ธ์Šคํ„ด์Šค ํผ๋ธ”๋ฆญ IP} -U postgres

์ ‘์†์— ์„ฑ๊ณตํ•œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค~!!

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

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

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

 

๋ฐ์ดํ„ฐ ํ‘œ์ค€ํ™”์˜ ๊ธฐ๋ณธ

๋ฐ์ดํ„ฐ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค!

  • ๋น„์ฆˆ๋‹ˆ์Šค์˜ ๋ชฉ์ ์ด ๋ฐ”๋€Œ์ง€ ์•Š๋Š” ํ•œ, ์ค‘์š” ๋ฐ์ดํ„ฐ๋Š” ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“œ๋Š”๊ฒŒ ๊ฐœ๋ฐœ์˜ ๋„๊ตฌ์ผ๊นŒ?
  • ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชฉ์ ์ผ ์ˆ˜ ์žˆ๋‹ค. ๋น„์ฆˆ๋‹ˆ์Šค ๋ฐ์ดํ„ฐ๊ฐ€ ๊ทธ๋งŒํผ ์ค‘์š”ํ•˜๋‹ค.
  • ๋ชจ๋ธ๋ง์„ ํ•  ๋•Œ ์–ด๋–ค ์ ์„ ์ฃผ์•ˆ์ ์œผ๋กœ ๋‘˜๊นŒ?
    • ์ „๋žต๊ณผ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ ๋ฐ์ดํ„ฐ๋Š” ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค
    • ๋ฐ์ดํ„ฐ๋งŒ ๋ด๋„ ์—…๋ฌด ๊ทœ์น™์„ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ
      ์˜ˆ) ๊ณ ๊ฐ ์ƒํ’ˆ ์ฃผ๋ฌธ ๊ฒฐ์ œ ๊ณ„์•ฝ -> ํ”„๋กœ์„ธ์Šค๋‚˜ ํˆด์ด ๋ฐ”๋€Œ์–ด๋„ ๋ชจ๋ธ ๊ตฌ์กฐ๊ฐ€ ๋ฐ”๋€Œ์ง€ ์•Š๊ฒŒ -> ๋…๋ฆฝ์ ์ด๊ณ  ์•ˆ์ •์ ์ด๊ฒŒ

 

๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง์˜ ๋ชฉ์ 

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

 

๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง์˜ ์ ˆ์ฐจ

๊ฐœ๋…

  • ๋…ผ๋ฆฌ ๋ชจ๋ธ๋ง(๋น„์ฆˆ๋‹ˆ์Šค ์ค‘์‹ฌ)
  • ๋ฌผ๋ฆฌ ๋ชจ๋ธ๋ง(์„ฑ๋Šฅ ์ค‘์‹ฌ) : DBMS ํŠน์„ฑ์„ ๊ณ ๋ คํ•ด์„œ ์„ฑ๋Šฅ, ์ฃผ์š” ์ธ๋ฑ์Šค ๋ฐ ํŒŒํ‹ฐ์…˜ ์„ค๊ณ„
  • DB๊ตฌ์ถ• : DDL ์ž‘์„ฑ, ๋ฌผ๋ฆฌ DB ๊ตฌ์ถ•, ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

๋ฐ์ดํ„ฐ ํ‘œ์ค€ (์šฉ์–ด, ๋„๋ฉ”์ธ, ์ฝ”๋“œ)

 

๋ฐ์ดํ„ฐ์šด์˜ํŒ€์—์„œ ๊ฒ€์ˆ˜ ์ค‘์ธ ๊ฒƒ

  • ๋…ผ๋ฆฌ์™€ ๋ฌผ๋ฆฌ ๋ชจ๋ธ๋ง์˜ ๊ฒฐ๊ณผ์— ํ‘œ์ค€ํ™”๋ฅผ ์ ์šฉ -> DA (์‚ฌ๋žŒ๊ณผ ๊ฐ€๊น๊ณ  ์ข€ ๋” ๋…ผ๋ฆฌ์ ์ธ ๋ถ€๋ถ„)
  • ์ธ๋ฑ์Šค ์„ค๊ณ„, ํŒŒํ‹ฐ์…˜ ์„ค๊ณ„ ~ DB ๊ตฌ์ถ• -> DBA (DBMS์™€ ๊ฐ€๊นŒ์šด ์‚ฌ๋žŒ๋“ค, ์ข€ ๋” ๋ฌผ๋ฆฌ์ ์ธ ๋ถ€๋ถ„)

 

๋…ผ๋ฆฌ ๋ชจ๋ธ๋ง์˜ ๊ธฐ๋ณธ

๊ฒ€์ˆ˜ ์‹œ ๊ฐ€์žฅ ๋ง์”€ ๋“œ๋ฆฌ๋Š” 3๊ฐ€์ง€

  • ์‹œ๊ฐ„์ ์œผ๋กœ ๋‹ฌ๋ผ์ง€๋Š” ์ ˆ์ฐจ์  ์‚ฌ๊ณ ๋ณด๋‹ค๋Š” ์ง‘ํ•ฉ์  ์‚ฌ๊ณ 
  • ์ค‘๋ณต๊ณผ ๋ถˆ์ผ์น˜๋Š” NO
  • ์• ๋งคํ•จ < ๋ช…ํ™•ํ•จ

 

๋…ผ๋ฆฌ ๋ชจ๋ธ์˜ ๊ตฌ์„ฑ ์š”์†Œ - 1

  • ์—”ํ„ฐํ‹ฐ : ์—…๋ฌด๊ฐ€ ๋‹ค๋ฃจ๋Š” ์–ด๋–ค ๊ฒƒ
  • ๊ด€๊ณ„ : ์—…๋ฌด๊ฐ€ ๋‹ค๋ฃจ๋Š” ๊ฒƒ๋“ค ์‚ฌ์ด์— ์กด์žฌํ•˜๋Š” ์—ฐ๊ด€
  • ์†์„ฑ : ๊ฐ ์‚ฌ๋ฌผ(์—”ํ„ฐํ‹ฐ)์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ƒ์„ธํ•œ ํŠน์„ฑ

 

๋…ผ๋ฆฌ ๋ชจ๋ธ์˜ ๊ตฌ์„ฑ ์š”์†Œ - 2

  • ์˜ˆ) ์€ํ–‰
    • ์—”ํ„ฐํ‹ฐ : ๊ณ ๊ฐ ๊ณ„์•ฝ ์ƒํ’ˆ ์ง์›
    • ๊ด€๊ณ„ : ๊ณ„์•ฝ์˜ ์ฃผ์ฒด, ๊ณ„์•ฝ์˜ ๋Œ€์ƒ, ์ƒํ’ˆ๋‹ด๋‹น์ž, ...
    • ์†์„ฑ : ์„ธ๋ถ€ ์†์„ฑ๋“ค์ด ํ•„์š”ํ•˜๊ณ 

 

๋…ผ๋ฆฌ ๋ชจ๋ธ์˜ ๊ตฌ์„ฑ ์š”์†Œ - 3

  • ERD๋ฅผ ๊ทธ๋ฆฐ๋‹ค๋ฉด
    • ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋ฅผ ํ™•์ธํ•ด์•ผ ํ•จ
      ์˜ˆ) ์—”ํ„ฐํ‹ฐ : ์„œ๋น„์Šค์—์„œ ๊ด€๋ฆฌํ•  ํ•„์š”๊ฐ€ ์žˆ๋‚˜? ๊ด€๋ฆฌํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ฒ”์œ„๋Š” ์–ด๋””๊นŒ์ง€? ์—”ํ„ฐํ‹ฐ์ธ์ง€ ์†์„ฑ์ธ์ง€ ๊ด€๊ณ„์ธ์ง€

 

๋…ผ๋ฆฌ ๋ชจ๋ธ๋ง์˜ ๊ธฐ๋ณธ

  • ERD ํ‘œ๊ธฐ๋ฒ•
    • ์‚ฌ๋‚ด์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํˆด : PowerDesigner (IE๋ฒ• ์‚ฌ์šฉ, ER-Win๋„ ์žˆ์Œ)
    • Barker๋ฒ• ํˆด : DA# (์ง‘ํ•ฉ ๊ฐœ๋…์„ ์กฐ๊ธˆ ๋” ๋‚˜ํƒ€๋‚ธ๋‹ค๋Š” ์ )

 

๊ด€๊ณ„์˜ ํ‘œํ˜„ - 1

  • ์นด๋””๋„๋ฆฌํ‹ฐ(1:1, 1:๋‹ค, ...), ์‹๋ณ„์„ฑ(์‹๋ณ„์ž ์ƒ์†, ์ผ๋ฐ˜์†์„ฑ ์ƒ์†), ์„ ํƒ์„ฑ(0๊ฐœ nullable ์„ค์ •)
  • ๊ณ„์ธต, ์ˆœํ™˜, BOM / Barker๋ฒ• : ๋ฐฐํƒ€๊ด€๊ณ„

 

๊ด€๊ณ„์˜ ํ‘œํ˜„ - 2

  • ๋ถ€์„œ์™€ ์‚ฌ์› ๊ด€๊ณ„์˜ ์˜ˆ์‹œ
    • ์‹๋ณ„ ์ƒ์† : ํ•œ ๋ช…์˜ ์‚ฌ์›์€ ์—ฌ๋Ÿฌ ๋ถ€์„œ์— ์†Œ์†๋  ์ˆ˜ ์žˆ์Œ (์‚ฌ์› ์—”ํ„ฐํ‹ฐ์˜ ๋„์ถœ ํ•„์š”)
    • ๋น„์‹๋ณ„ ์ƒ์† : ํ•œ ๋ช…์˜ ์‚ฌ์›์€ ํ•˜๋‚˜์˜ ๋ถ€์„œ์— ์†Œ์†๋  ์ˆ˜ ์žˆ์Œ

๊ฒธ์ง ๋ถ€์„œ - ์‚ฌ์›์†Œ์†๋ถ€์„œ - ์‚ฌ์›

 

๊ด€๊ณ„์˜ ํ‘œํ˜„ - 3

  • ์ง์ ‘ ์ข…์† ๊ด€๊ณ„ ๋งŒ์„ ํ‘œํ˜„, ๊ฐ„์ ‘ ์ข…์† ๊ด€๊ณ„๋Š” ํ‘œํ˜„ํ•˜์ง€ ์•Š์Œ (๋ถ€๋ชจ-์ž์‹ ๊ฐ„๋งŒ ํ‘œํ˜„ํ•˜๋ฉด ๋จ)
  • ๋‘ ์—”ํ„ฐํ‹ฐ ๊ฐ„์— ๋‘˜ ์ด์ƒ์˜ ๊ด€๊ณ„๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Œ -> ๊ด€๊ณ„๋ช… ํ‘œํ˜„, ์ปฌ๋Ÿผ๋ช… ์ˆ˜์‹์–ด(์—ญํ•  ๋ช… role name) ์‚ฌ์šฉ
  • ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„
  • ๋„ˆ๋ฌด ๋งŽ์€ ๊ด€๊ณ„์„ ์€ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๋บ„ ์ˆ˜๋„ ์žˆ์Œ (๊ณตํ†ต์ฝ”๋“œ ํ…Œ์ด๋ธ” ๋“ฑ)

๋ฐ์ดํ„ฐ ํ‘œ์ค€ํ™”์˜ ๊ธฐ๋ณธ

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

 

๋‹จ์–ด

ํ‘œ์ค€ ๋‹จ์–ด

  • DB ์˜ค๋ธŒ์ ํŠธ์˜ ์ด๋ฆ„ ๋ถ€์—ฌ ์‹œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์›์ž ๋‹จ์œ„(์ตœ์†Œ ์˜๋ฏธ ๋‹จ์œ„)์˜ ํ‘œํ˜„์„ ๋ฏธ๋ฆฌ ์ •ํ•ด ๋†“์€ ๊ฒƒ
  • ์šฐ๋ฆฌ ํšŒ์‚ฌ๋Š” ์ „์‚ฌ ํ‘œ์ค€์ด ๋”ฐ๋กœ ์žˆ์ง€๋Š” ์•Š์Œ, ์šฐ๋ฆฌ ํšŒ์‚ฌ์˜ ๊ฒฝ์šฐ ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ „์‚ฌ ํ‘œ์ค€ ๊ด€๋ฆฌ๋Š” ์–ด๋ ค์›€, ์šฐ๋ฆฌ ํšŒ์‚ฌ ํŠน์„ฑ์ƒ ์„œ๋น„์Šค ๋ณ„ ํ‘œ์ค€, ์กฐ์ง๋ณ„ ํ‘œ์ค€์ด ์žˆ์Œ
  • ํ‘œ์ค€ ๋‹จ์–ด(์˜๋ฌธ, ํ•œ๊ธ€)์—๋Š” ๋„์–ด์“ฐ๊ธฐ, /, _ ๋“ฑ ํŠน์ˆ˜ ๋ฌธ์ž ์‚ฌ์šฉ ๊ธˆ์ง€
  • ์˜๋ฌธ ๋‹จ์–ด๋Š” ์•ฝ์–ด ํ˜น์€ full ๋‹จ์–ด๋กœ ์ •ํ•˜์—ฌ ์‚ฌ์šฉ
    • ์˜ค๋ผํด ์“ธ ๋•Œ๋Š” ์ปฌ๋Ÿผ๋ช… ๊ธธ์ด ์ œํ•œ์ด ์žˆ์–ด์„œ ์•ฝ์–ด๋ฅผ ๋งŽ์ด ์ผ๋Š”๋ฐ, ์š”์ฆ˜์—” mysql ์“ฐ๋‹ˆ๊นŒ full ๋‹จ์–ด๋กœ ์”€
  • ๋ณตํ•ฉ ๋‹จ์–ด๋Š” ๋‘ ๊ฐœ ์ด์ƒ์˜ ๋‹จ์–ด๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ๋‹จ์–ด๋กœ ์‚ฌ์šฉ(blacklist, zipcode)

 

ํ‘œ์ค€ ์šฉ์–ด

  • ํ‘œ์ค€ ๋‹จ์–ด๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ์—”ํ„ฐํ‹ฐ๋ช…(ํ…Œ์ด๋ธ”๋ช…)๊ณผ ์†์„ฑ๋ช…(์ปฌ๋Ÿผ๋ช…)์— ์‚ฌ์šฉ๋˜๋Š” ์šฉ์–ด๋ฅผ ๊ตฌ์„ฑํ•จ
  • ๋™์ผํ•œ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์€ ๋™์ผํ•œ ์šฉ์–ด๋ฅผ ์‚ฌ์šฉ
  • ์šฉ์–ด์˜ ๋งˆ์ง€๋ง‰์—๋Š” ๋ถ„๋ฅ˜์–ด์— ์†ํ•˜๋Š” ๋‹จ์–ด๋ฅผ ์‚ฌ์šฉ (์ˆ˜ count, ์ผ์ž date ymd, datetime ymdt ๋“ฑ)

 

๋„๋ฉ”์ธ

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

๋ถ„๋ฅ˜์–ด -> ๋„๋ฉ”์ธ -> ๋ฐ์ดํ„ฐ ํƒ€์ž…(๊ธธ์ด)

 

์ฝ”๋“œ

  • ํŠน์ˆ˜๋„๋ฉ”์ธ
  • ํŠน์ • ๋„๋ฉ”์ธ ๊ฐ’(์ฝ”๋“œ ๊ฐ’)์ด ๋ฏธ๋ฆฌ ์ •์˜๋˜์–ด ์žˆ๋Š” ๋„๋ฉ”์ธ
  • ๊ณตํ†ต์ฝ”๋“œ์™€ ๋ชฉ๋ก์„ฑ์ฝ”๋“œ(์กฐ์ง์ฝ”๋“œ,...)
    • 3๊ฐœ ์ด์ƒ์˜ ๊ตฌ๋ถ„ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ '์ฝ”๋“œ' ๋„๋ฉ”์ธ ์‚ฌ์šฉ
    • Yes/No ํ˜น์€ True/False์˜ 2๊ฐ€์ง€ ๊ฐ’ ๋งŒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ '์—ฌ๋ถ€' ๋„๋ฉ”์ธ ์‚ฌ์šฉ
    • ๊ธฐ๋ณธ : Not Null, default ๊ฐ’ ์ •์˜๋ฅผ ๊ถŒ์žฅํ•จ

 

๋ช…๋ช… ๊ทœ์น™

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

 

๋ฌผ๋ฆฌ ๋ชจ๋ธ๋ง์„ ํ•˜๋‹ค๊ฐ€ ๋งˆ์ฃผ์น˜๋Š” ๊ณ ๋ฏผ๋“ค

์ •๊ทœํ™” vs. ๋ฐ˜์ •๊ทœํ™”

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

๋ฐฉ๋ฒ•

ํ…Œ์ด๋ธ” ๋ฐ˜์ •๊ทœํ™”

  1. ํ…Œ์ด๋ธ” ํ†ตํ•ฉ
  2. 1:1, 1:N, ์ˆ˜ํผํƒ€์ž…/์„œ๋ธŒํƒ€์ž…
  3. ํ…Œ์ด๋ธ” ๋ถ„ํ• 
    ์ˆ˜์ง, ์ˆ˜ํ‰
  4. ํ…Œ์ด๋ธ” ์ถ”๊ฐ€
    ํ†ต๊ณ„, ์ด๋ ฅ, ๋ถ€๋ถ„-์—…๋ฐ์ดํŠธ๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋ฉด ๋”ฐ๋กœ ๋–ผ์–ด๋‚ด๊ธฐ, ๋ณต์ œ-์ €์žฅ์†Œ๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ ์›๊ฒฉ์ง€์— ์žˆ๋Š”๊ฑธ ๊ฐ€์ ธ๋‹ค ๋†“๊ธฐ

์ปฌ๋Ÿผ ๋ฐ˜์ •๊ทœํ™”

  1. ์ค‘๋ณต์ปฌ๋Ÿผ ์ถ”๊ฐ€
    ํ…Œ์ด๋ธ” ๊ฐ„์˜ ์กฐ์ธ์„ ๊ฐ์†Œ์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ, ๊ทธ ์ปฌ๋Ÿผ์ด ์ž˜ ๋ฐ”๋€Œ์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฐ€์ • ํ•˜์—
  2. ์ถ”์ถœ(derived)์ปฌ๋Ÿผ ์ถ”๊ฐ€
    ๋งค๋ฒˆ ๊ณ„์‚ฐ๋˜์ง€ ์•Š๋„๋ก ๋ฏธ๋ฆฌ ๊ณ„์‚ฐํ•ด์„œ ๊ฐ–๋‹ค๋†“๊ธฐ(์ฃผ๋ฌธ์ด๊ธˆ์•ก)
  3. ์ด๋ ฅํ…Œ์ด๋ธ” ์ปฌ๋Ÿผ ์ถ”๊ฐ€
    ์ตœ๊ทผ ๊ฐ’์— ๋Œ€ํ•œ ์ปฌ๋Ÿผ์„ ๋ฏธ๋ฆฌ ์ถ”๊ฐ€ํ•ด๋†“๊ธฐ

๊ด€๊ณ„ ๋ฐ˜์ •๊ทœํ™”

  • ๊ด€๊ณ„์˜ ์ค‘๋ณต
  • ํ•˜๊ธฐ ์ „์—
    • ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์žˆ๋Š”์ง€ ๊ณ ๋ คํ•ด๋ณด๊ณ  ๋„์ €ํžˆ ์•ˆ ๋˜๋ฉด ๋ฐ˜์ •๊ทœํ™”ํ•˜๊ธฐ
  • ํ•˜๊ณ  ๋‚˜์„œ
    • ERD ๋“ฑ์— ํ•ด๋‹น ๋‚ด์šฉ์„ ๊ณต์œ ํ•˜๊ธฐ

ํ†ตํ•ฉ vs. ๋ถ„๋ฆฌ

๋…ผ๋ฆฌ๋ชจ๋ธ์—์„œ ์„ค๊ณ„ํ•œ ์ˆ˜ํผํƒ€์ž…๊ณผ ์„œ๋ธŒํƒ€์ž…์„ ๋ฌผ๋ฆฌ๋ชจ๋ธ๋กœ ์ „ํ™˜ํ•  ๊ฒฝ์šฐ ํŠธ๋žœ์žญ์…˜ ํŒจํ„ด ๋ฐ ์ƒ์„ฑ๋˜๋Š” ๋ฐ์ดํ„ฐ ๊ฑด์ˆ˜ ๋“ฑ์— ๋”ฐ๋ผ ํ…Œ์ด๋ธ”์˜ ํ†ตํ•ฉ ํ˜น์€ ๋ถ„๋ฆฌ๋ฅผ ๊ฒ€ํ† ํ•˜์—ฌ ๊ฒฐ์ •

 

ํŠธ๋žœ์žญ์…˜ ์œ ํ˜•์— ์˜ํ•œ ๊ฒฐ์ •

  1. ๊ฐœ๋ณ„ ํŠธ๋žœ์žญ์…˜ ๋ฐœ์ƒ ์œ ํ˜•
    ๊ณต์šฉ ์ปฌ๋Ÿผ์„ ์ตœ๋Œ€ํ•œ ๋„์ถœํ•ด์„œ ์ˆ˜์ง๋ถ„ํ•  (๊ฒฐ์ œ์ˆ˜๋‹จ์ฝ”๋“œ- ...) or ํ†ตํ•ฉ (๋ชจ๋“  ๊ฐ’์„ ํ•œ ํ…Œ์ด๋ธ”์—, join์ด๋‚˜ union all์ด ๋„ˆ๋ฌด ๋งŽ์ด ๋ฐœ์ƒํ•  ๊ฒƒ ๊ฐ™์„ ๋•Œ)
  2. ์ˆ˜ํผํƒ€์ž…+์„œ๋ธŒํƒ€์ž… ํŠธ๋žœ์žญ์…˜ ๋ฐœ์ƒ ์œ ํ˜•
    ์ˆ˜ํ‰๋ถ„ํ•  (์ฃผ๋ฌธ๋ฒˆํ˜ธ - ์นด๋“œ๊ฒฐ์ œ๋‚ด์—ญ / ํœด๋Œ€ํฐ๊ฒฐ์ œ๋‚ด์—ญ / ๊ณ„์ขŒ์ด์ฒด๊ฒฐ์ œ๋‚ด์—ญ) ๊ฒฐ์ œ๋ฒˆํ˜ธ๊ฐ€ ๊ฒน์น˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Œ

ํ†ตํ•ฉ์„ ๊ณ ๋ คํ•ด ๋ณด๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ

  1. ์‹๋ณ„์ž๊ฐ€ ๋™์ผ ํ•  ๋•Œ
  2. ๊ด€๋ฆฌํ•˜๋Š” ์ •๋ณด๊ฐ€ ์œ ์‚ฌํ•  ๋•Œ
  3. ์ž์ฃผ join ๋˜๊ฑฐ๋‚˜ union all ๋˜๋Š” ๊ฒฝ์šฐ
  4. ARC ๊ด€๊ณ„๋กœ ์ •์˜๋˜๋Š” ๊ฒฝ์šฐ, ์ƒ์†์ด ๊ณ„์† ๋œ๋‹ค๋ฉด ๋ถ€๋ชจ ํ…Œ์ด๋ธ”์˜ ํ†ตํ•ฉ์ด ๊ฐ€๋Šฅํ•œ์ง€ ๊ฒ€ํ† 

 

์ธ์กฐ ํ‚ค vs. ๋ณธ์งˆ ํ‚ค

์ธ์กฐ ํ‚ค vs. ๋ณธ์งˆ ํ‚ค - 1

PK ์„ ์ •

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

 

์ธ์กฐ ํ‚ค vs. ๋ณธ์งˆ ํ‚ค - 2

๋ณธ์งˆ์‹๋ณ„์ž

  • ํ•ด๋‹น ์—”ํ„ฐํ‹ฐ์˜ ์˜๋ฏธ์ƒ์˜ ์ฃผ์–ด, ์ธ์Šคํ„ด์Šค๋ฅผ ์œ ์ผํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๋Š” ์ตœ์†Œํ•œ์˜ ์†์„ฑ ์กฐํ•ฉ
  • ์ง‘ํ•ฉ์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๋‹จ์œ„

์ธ์กฐ์‹๋ณ„์ž

  • ์ฟผ๋ฆฌ ๋ณต์žก๋„ ๊ฐ์†Œ
  • ๊ฒ€์ƒ‰์— ํ™œ์šฉ ๋ถˆ๊ฐ€ -> ๋ฐ˜์ •๊ทœํ™”์˜ ์›์ธ์ด ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Œ
  • ์ค‘์š” ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต ๊ฐ€๋Šฅ์„ฑ


์ธ์กฐ ํ‚ค vs. ๋ณธ์งˆ ํ‚ค - 3

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

 

์‹œ์Šคํ…œ ์†์„ฑ์˜ ๊ด€๋ฆฌ

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

 

์ด๋ ฅ์˜ ๊ด€๋ฆฌ์˜ ํ˜•ํƒœ

์ด๋ ฅ ๊ด€๋ฆฌ์˜ ํ˜•ํƒœ - 1

  • ์ด๋ ฅ ๊ด€๋ฆฌ ๋ชจ๋ธ
    ๋ฐ์ดํ„ฐ ๋ณต๊ตฌ๋‚˜ ์ถ”์ ์ด๋‚˜ ๊ณ ๊ฐ ์‘๋Œ€๋ฅผ ์œ„ํ•ด์„œ
  • ํ˜•ํƒœ
    • ์‹œ์ ์ด๋ ฅ(๋ณ€๊ฒฝ๋œ ์‹œ์ ์— ๋Œ€ํ•œ..) ์„ ๋ถ„์ด๋ ฅ(์œ ํšจ์‹œ์ž‘์ผ์ž, ์ด๋Ÿฐ ์‹์œผ๋กœ ๊ตฌ๊ฐ„ ๊ด€๋ฆฌ)
    • ๋ถ„๋ฆฌํ˜• ํ†ตํ•ฉํ˜•
    • row column subject

 

๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๊ฒ€์ˆ˜

์•ž์„ ๋‚ด๋‹ค๋ณด๊ณ , ๋‚˜์ค‘์— ๊ด€๋ฆฌ ์ธก๋ฉด๊นŒ์ง€ ๊ณ ๋ คํ•จ

ํด๋Ÿฌ์Šคํ„ฐ ํ…Œ์ด๋ธ” vs ๋…ผํด๋Ÿฌ์Šคํ„ฐ ํ…Œ์ด๋ธ” ๋น„๊ต

ํด๋Ÿฌ์Šคํ„ฐ๋ž€?

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

 

ํด๋Ÿฌ์Šคํ„ฐ ํ…Œ์ด๋ธ”(์ธ๋ฑ์Šค)

  • ํ…Œ์ด๋ธ”๋‹น 1๊ฐœ์”ฉ๋งŒ ํ—ˆ์šฉ๋จ
  • PK ์ƒ์„ฑ ์‹œ ๊ทธ ์ปฌ๋Ÿผ์€ ์ž๋™์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค๊ฐ€ ์ƒ์„ฑ๋จ
    * ์ผ๋ฐ˜ ์ธ๋ฑ์Šค์™€์˜ ์ฐจ์ด
    • ํด๋Ÿฌ์Šคํ„ฐ๋ง ๋˜์–ด ์žˆ๋‹ค๋Š” ์š”์†Œ๊ฐ€ ์ถ”๊ฐ€๋จ
    • ์˜ตํ‹ฐ๋งˆ์ด์ €์—์„œ ์ผ๋ฐ˜ ์ธ๋ฑ์Šค๋ณด๋‹ค ๋†’์€ ๋žญํ‚น
  • PK๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ๋Š”? InnoDB๊ฐ€ ๋‹ค์Œ์˜ ์šฐ์„ ์ˆœ์œ„๋Œ€๋กœ ๋Œ€์ฒด ์ปฌ๋Ÿผ์„ ์„ ํƒ
    • UNIQUE NOT NULL ์ค‘ ์ฒซ๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ ํ‚ค๋กœ ์„ ํƒ
    • ์ž๋™์œผ๋กœ ์œ ๋‹ˆํฌํ•œ ๊ฐ’์„ ๊ฐ€์ง€๋„๋ก AUTO_INCREMENT ์ปฌ๋Ÿผ์„ ๋‚ด๋ถ€์ ์œผ๋กœ ์ถ”๊ฐ€ํ•ด ํด๋Ÿฌ์Šคํ„ฐ ํ‚ค๋กœ ์„ ํƒ
      * ํ•˜์ง€๋งŒ, ์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋˜๋Š” ์ปฌ๋Ÿผ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์ด์ง€ ์•Š์•„์„œ SQL์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜๊ฐ€ ์—†์Œ
  • PK์— ์˜ํ•ด ๋ ˆ์ฝ”๋“œ ์ €์žฅ ์œ„์น˜๊ฐ€ ๊ฒฐ์ •๋จ
    • PK๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด -> ๋ ˆ์ฝ”๋“œ์˜ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ํ–‰์„ ์žฌ๋ฐฐ์—ดํ•จ -> ๋žœ๋ค ์•ก์„ธ์Šค๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•ด์„œ I/O ์ฆ๊ฐ€
    • PK๋ฅผ ์‹ ์ค‘ํžˆ ๊ฒฐ์ •ํ•ด์•ผ ํ•จ
  • ์ธ๋ฑ์Šค ํŽ˜์ด์ง€์˜ ๋ฆฌํ”„ ํŽ˜์ด์ง€๊ฐ€ ๊ณง ๋ฐ์ดํ„ฐ. ์ฆ‰, ํ…Œ์ด๋ธ” ์ž์ฒด๊ฐ€ ์ธ๋ฑ์Šค
  • InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์—์„œ๋งŒ ์ง€์›ํ•จ
  • ์žฅ์ 
    • ๊ทธ๋ฃน๋œ ์ปฌ๋Ÿผ ๋ฐ์ดํ„ฐ ํ–‰๋“ค์ด ๊ฐ™์€ ๋ฐ์ดํ„ฐ ๋ธ”๋ก์— ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋””์Šคํฌ I/O๊ฐ€ ์ค„์–ด SELECT ์‹œ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์ด ๋งค์šฐ ๋น ๋ฆ„
    • ํด๋Ÿฌ์Šคํ„ฐ๋œ ํ…Œ์ด๋ธ” ์‚ฌ์ด์— ์กฐ์ธ์ด ๋ฐœ์ƒํ•˜๋ฉด ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ๋‹จ์ถ•๋จ
    • INSERT, UPDATE, DELETE ์‹œ ํ•ญ์ƒ ์ •๋ ฌ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•จ
    • ์ด๋ฏธ ์ •๋ ฌ๋œ ์ƒํƒœ๋กœ ์ €์žฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค ํ…Œ์ด๋ธ”์ด ํ•„์š”ํ•˜์ง€ ์•Š์•„ ๋…ผํด๋Ÿฌ์Šคํ„ฐ๋ณด๋‹ค DB ์šฉ๋Ÿ‰์„ ๋œ ์ฐจ์ง€ํ•จ
    • ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ณด์กฐ ์ธ๋ฑ์Šค๊ฐ€ PK๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค๋งŒ์œผ๋กœ ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ(์ปค๋ฒ„๋ง ์ธ๋ฑ์Šค)
  • ๋‹จ์ 
    • ๋…ผํด๋Ÿฌ์Šคํ„ฐ๋ณด๋‹ค ๊ฒ€์ƒ‰ ์†๋„๋Š” ๋” ๋น ๋ฅด์ง€๋งŒ INSERT, UPDATE, DELETE๋Š” ๋Š๋ฆผ

 

๋…ผํด๋Ÿฌ์Šคํ„ฐ ํ…Œ์ด๋ธ”(์ธ๋ฑ์Šค)

  • ํ…Œ์ด๋ธ”๋‹น 249๊ฐœ ํ—ˆ์šฉ๋จ
  • ๋ ˆ์ฝ”๋“œ์˜ ์›๋ณธ์€ ์ •๋ ฌ๋˜์ง€ ์•Š๊ณ , ์ธ๋ฑ์Šค ํ…Œ์ด๋ธ”๋งŒ ์ •๋ ฌ๋จ
    • ์ธ๋ฑ์Šค ํŽ˜์ด์ง€๋Š” ๋กœ๊ทธํŒŒ์ผ์— ์ €์žฅ๋จ
  • ์ธ๋ฑ์Šค ์ž์ฒด์˜ ๋ฆฌํ”„ ํŽ˜์ด์ง€๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ„์น˜ํ•˜๋Š” ํฌ์ธํ„ฐ(RID)์ด๊ธฐ ๋•Œ๋ฌธ์— ํด๋Ÿฌ์Šคํ„ฐ๋ณด๋‹ค ๊ฒ€์ƒ‰ ์†๋„๋Š” ๋Š๋ฆฌ์ง€๋งŒ INSERT, UPDATE, DELETE๋Š” ๋” ๋น ๋ฆ„

 

๋น„๊ต

  • ์‰ฝ๊ฒŒ ์ฑ…์— ๋น„์œ ํ•˜์ž๋ฉด ํด๋Ÿฌ์Šคํ„ฐ ํ…Œ์ด๋ธ”์€ ํŽ˜์ด์ง€๋ฅผ ์•Œ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ”๋กœ ๊ทธ ํŽ˜์ด์ง€๋ฅผ ํŽด๋Š” ๊ฒƒ(๋ฐ”๋กœ ์ ‘๊ทผ)์ด๊ณ , ๋…ผํด๋Ÿฌ์Šคํ„ฐ ํ…Œ์ด๋ธ”์€ ๋ชฉ์ฐจ์—์„œ ์ฐพ๊ณ ์ž ํ•˜๋Š” ๋‚ด์šฉ์˜ ํŽ˜์ด์ง€๋ฅผ ์ฐพ๊ณ  ๊ทธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ(ํ•œ๋ฒˆ ๊ฑฐ์ณ์„œ ์ ‘๊ทผ)๊ณผ ๊ฐ™์Œ

 

์ฐธ๊ณ ๋งํฌ

๋ณธ์งˆ ์‹๋ณ„์ž vs ์ธ์กฐ ์‹๋ณ„์ž ๋น„๊ต

๋ณธ์งˆ ์‹๋ณ„์ž

  • ์—…๋ฌด์— ์˜ํ•ด ๋งŒ๋“ค์–ด์ง„ ์‹๋ณ„์ž
  • ์žฅ์ 
    • PK ์ธ๋ฑ์Šค ํ™œ์šฉ ๊ฐ€๋Šฅ

 

์ธ์กฐ ์‹๋ณ„์ž

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

 

๊ฒฐ๋ก 

  • PK๋Š” ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด AUTO-INCREMENT ์ปฌ๋Ÿผ(์ธ์กฐ ์‹๋ณ„์ž)๋ณด๋‹ค๋Š” ์—…๋ฌด์ ์ธ ์ปฌ๋Ÿผ(๋ณธ์งˆ ์‹๋ณ„์ž)์œผ๋กœ ์ƒ์„ฑํ•  ๊ฒƒ
    • InnoDB์˜ PK๋Š” ํด๋Ÿฌ์Šคํ„ฐ ํ‚ค๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ด ๊ฐ’์— ์˜ํ•ด ๋ ˆ์ฝ”๋“œ์˜ ์œ„์น˜๊ฐ€ ๊ฒฐ์ •๋จ
    • ์ฆ‰, PK๋กœ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒฝ์šฐ ๋…ผํด๋Ÿฌ์Šคํ„ฐ ํ…Œ์ด๋ธ”์— ๋น„ํ•ด ๋งค์šฐ ๋น ๋ฅธ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜์—ฌ InnoDB์—์„œ๋Š” ์„ฑ๋Šฅ์— ํฐ ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•จ
    • ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ปฌ๋Ÿผ์˜ ํฌ๊ธฐ๊ฐ€ ํฌ๋”๋ผ๋„ ์—…๋ฌด์ ์œผ๋กœ ํ•ด๋‹น ๋ ˆ์ฝ”๋“œ๋ฅผ ๋Œ€ํ‘œํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๊ทธ ์ปฌ๋Ÿผ์„ PK๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ
  • ์ธ์กฐ ์‹๋ณ„์ž์˜ ๋‚จ์šฉ์„ ํ”ผํ•˜๊ณ  ๊ผญ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•จ
    • ์ธ์กฐ ์‹๋ณ„์ž๋Š” ๋ถˆํ•„์š”ํ•œ ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ ์ƒ์„ฑํ•ด์•ผ ํ•˜๊ณ , ์ถ”๊ฐ€๋กœ ์ƒ์„ฑํ•œ ์ธ๋ฑ์Šค๋Š” ์šฉ๋Ÿ‰๊ณผ DML ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Œ

 

์ฐธ๊ณ ๋งํฌ

+ Recent posts