Computer Science ๐Ÿ“š/์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ

[์ •์ฒ˜๊ธฐ] ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค

leejaejae 2024. 7. 15. 17:05

โ–  ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค (DBMS, DataBase Management System)

- ํŠน์ • ์กฐ์ง ๋‚ด ํ•„์š”ํ•˜ ๋ฐ์ดํ„ฐ๋“ค์˜ ๋ชจ์ž„, ๊ณต์šฉ์œผ๋กœ ์†Œ์œ /์œ ์ง€/์ด๋™ํ•˜๋Š” ๊ณต์šฉ ๋ฐ์ดํ„ฐ

 

โ–  ์Šคํ‚ค๋งˆ(Schema)

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

 

โ–  ๋ฐ์ดํ„ฐ ๋…๋ฆฝ์„ฑ

- ๋…ผ๋ฆฌ์  ๋…๋ฆฝ์„ฑ: ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์˜ํ–ฅ์—†์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋…ผ๋ฆฌ ๊ตฌ์กฐ ๋ณ€๊ฒฝ
- ๋ฌผ๋ฆฌ์  ๋…๋ฆฝ์„ฑ: ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋ฐ ๋…ผ๋ฆฌ ๊ตฌ์กฐ ์˜ํ–ฅ์—†์ด ๋ฐ์ดํ„ฐ์˜ ๋ฌผ๋ฆฌ์  ๊ตฌ์กฐ ๋ณ€๊ฒฝ

 

โ–  ๋ฐ์ดํ„ฐ ์–ธ์–ด

  • DDL(Data Definition Language): ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ/์ œ์•ฝ ์กฐ๊ฑด ์ •์˜
  • DML(Data Manipulation ~): ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ/์กฐ์ž‘์— ์‚ฌ์šฉ๋˜๋Š” ์–ธ์–ด
  • DCL(Data Control ~): ๋ฐ์ดํ„ฐ์˜ ๋ณด์•ˆ, ๊ถŒํ•œ, ๋ฌด๊ฒฐ์„ฑ, ๊ถŒํ•œ ๊ฒ€์‚ฌ, ๋ณ‘ํ–‰ ์ œ์–ด๋ฅผ ์œ„ํ•œ ์–ธ์–ด

 

โ–  ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์„ค๊ณ„ ์ˆœ์„œ  ← โ˜… ์ˆœ์„œ ์™ธ์šฐ๊ธฐ(์š”๊ฐœ๋…ผ๋ฌผ๊ตฌ)

  1. ์š”๊ตฌ์กฐ๊ฑด ๋ถ„์„: ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์˜ ์‚ฌ์šฉ ์šฉ๋„ / ์š”๊ตฌ์‚ฌํ•ญ / ์š”๊ตฌ ์กฐ๊ฑด ๋ช…์„ธ์„œ ์ž‘์„ฑ
  2. ๊ฐœ๋…์  ๋ชจ๋ธ
    • ํ˜„์‹ค ์„ธ๊ณ„์˜ ์ธ์‹์„ ์ถ”์ƒ์  ๊ฐœ๋… ์„ธ๊ณ„๋กœ ํ‘œํ˜„
    • ๋…๋ฆฝ์ ์ธ ๊ฐœ๋… ์Šคํ‚ค๋งˆ ๋ชจ๋ธ๋ง / ํŠธ๋žœ์žญ์…˜ ๋ชจ๋ธ๋ง / E-R ๋ชจ๋ธ
  3. ๋…ผ๋ฆฌ์  ๋ชจ๋ธ
    • ๊ฐœ๋…์  ๋ชจ๋ธ์„ ์ปดํ“จํ„ฐ๊ฐ€ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋กœ ํ‘œํ˜„(๊ด€๊ณ„ ๋ชจ๋ธ)
    • ์ข…์†์ ์ธ ๋…ผ๋ฆฌ ์Šคํ‚ค๋งˆ ์„ค๊ณ„ / ํŠธ๋žœ์žญ์…˜ ์ธํ„ฐํŽ˜์ด์Šค ์„ค๊ณ„ / ์ •๊ทœํ™”
    • ๋…ผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ๊ตฌ์กฐ๋กœ Mapping / ์Šคํ‚ค๋งˆ์˜ ํ‰๊ฐ€ ๋ฐ ์ •์ œ
  4. ๋ฌผ๋ฆฌ์  ๋ชจ๋ธ
    • ๋ฐ์ดํ„ฐ์˜ ์‹ค์ œ ์ €์žฅ ๋ฐฉ๋ฒ• ๋ฐ ์ ‘๊ทผ ๊ฒฝ๋กœ ํ‘œํ˜„(๋ ˆ์ฝ”๋“œ ํ˜•์‹/์ˆœ์„œ)
    • ๋ชฉํ‘œ DBMS ์ข…์†์ ์ธ ๋ฌผ๋ฆฌ์  ๊ตฌ์กฐ ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜ / ๋ฐ˜์ •๊ทœํ™”
    • ์˜ค๋ธŒ์ ํŠธ, ์ ‘๊ทผ๋ฐฉ๋ฒ•, ์ธ๋ฑ์Šค, ๋ทฐ ์šฉ๋Ÿ‰ ์„ค๊ณ„ / ํŠธ๋žœ์žญ์…˜ ์ž‘์„ฑ์ €์žฅ ๋ ˆ์ฝ”๋“œ์˜ ํ˜•์‹/์ˆœ์„œ/์ ‘๊ทผ ๊ฒฝ๋กœ ์„ค๊ณ„
  5. ๊ตฌํ˜„: DBMS์—์„œ SQL๋กœ ์ž‘์„ฑํ•œ ๋ช…๋ น๋ฌธ ์‹คํ–‰ ํ›„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹ค์ œ ์ƒ์„ฑ

โ€ป ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง: ํ˜„์‹ค ๋‚ด ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๋‹จ์ˆœ/์ถ”์ƒํ™”ํ•˜์—ฌ ์ฒด๊ณ„์ ์œผ๋กœ ํ‘œํ˜„

 

โ–  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๊ตฌ์„ฑ ์š”์†Œ

- ๊ตฌ์กฐ (Structure): ๋…ผ๋ฆฌ์  ๊ฐœ์ฒด ๊ฐ„ ๊ด€๊ณ„, ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ, ์ •์  ์„ฑ์งˆ ํ‘œํ˜„
- ์—ฐ์‚ฐ(Operation): ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ž‘์—… ๋ช…์„ธ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐ์ž‘ ๋„๊ตฌ
- ์ œ์•ฝ ์กฐ๊ฑด(Constraint): DB์— ์ €์žฅ๋  ์ˆ˜ ์žˆ๋Š” ์‹ค์ œ ๋ฐ์ดํ„ฐ์˜ ๋…ผ๋ฆฌ์  ์ œ์•ฝ ์กฐ๊ฑด

 

โ–  ๊ฐœ์ฒด - ๊ด€๊ณ„ ๋ชจ๋ธ (E-R Model / Entity-Realation Model)

  • ๊ฐœ์ฒด(Entity): ๋…๋ฆฝ์ ์ด๊ณ  ๊ตฌ๋ณ„ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฒƒ
    • ๊ฐœ์ฒด ํƒ€์ž…: ๊ฐœ์ฒด๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์†์„ฑ๋“ค์˜ ์ง‘ํ•ฉ
    • ๊ฐœ์ฒด ์ธ์Šคํ„ด๊ทธ: ์‹ค์ œ ๊ฐ’์„ ๊ฐ€์ง€๋ฉด์„œ ์‹ค์ฒดํ™”๋œ ๊ฐœ์ฒด
    • ๊ฐœ์ฒด ์„ธํŠธ: ๊ฐœ์ฒด ์ธ์Šคํ„ด์Šค๋“ค์˜ ์ง‘ํ•ฉ
  • ์†์„ฑ(Attribute): ๊ฐœ์ฒด๊ฐ€ ๊ฐ€์ง„ ๊ณ ์œ ์˜ ํŠน์„ฑ / ๊ฐ€์žฅ ์ž‘์€ ๋…ผ๋ฆฌ์  ๋‹จ์œ„(์›)
  • ๊ด€๊ณ„(Relationship): ๋‘ ๊ฐœ์ฒด ๊ฐ„์˜ ์˜๋ฏธ ์žˆ๋Š” ์—ฐ๊ด€์„ฑ ๋ฐ ์—ฐ๊ฒฐ ๊ตฌ์กฐ(๋งˆ๋ฆ„๋ชจ) → ์ผ๋Œ€์ผ(1:1) / ์ผ๋Œ€๋‹ค(1:N) / ๋‹ค๋Œ€๋‹ค (N:N)

 

โ–  E-R ๋‹ค์ด์–ด๊ทธ๋žจ ํ‘œ๊ธฐ๋ฒ•

โ€ป ์ ์„ : '๊ด€๊ณ„-์†์„ฑ ์—ฐ๊ฒฐ'

 

โ–  ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์šฉ์–ด

  • ๋ฆด๋ ˆ์ด์…˜(Relation)์ด๋ผ๋Š” ํ‘œ(Table)๋กœ ํ‘œํ˜„
  • ์†์„ฑ(Attribute) = ์—ด = ํ”ผ๋“œ / ํŠœํ”Œ(Tuple) = ํ–‰ = ๋ ˆ์ฝ”๋“œ
    ์ฐจ์ˆ˜(Degree): ์†์„ฑ์˜ ๊ฐœ์ˆ˜ / ๊ธฐ์ˆ˜(Cardinality): ํŠœํ”Œ์˜ ๊ฐœ์ˆ˜
  • ๋„๋ฉ”์ธ(Domain): ํ•˜๋‚˜์˜ ์†์„ฑ์—์„œ ์ทจํ•  ์ˆ˜ ์žˆ๋Š” ์›์ž ๊ฐ’๋“ค์˜ ์ง‘ํ•ฉ(ex. ์„ฑ๋ณ„: ๋‚จ/์—ฌ)
  • ๋ฆด๋ ˆ์ด์…˜ ์ธ์Šคํ„ด์Šค: ๋ฆด๋ ˆ์ด์…˜์— ์‹ค์ œ๋กœ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ

โ€ป ๋ฆด๋ ˆ์ด์…˜ ํŠน์ง•
- ํŠœํ”Œ๊ณผ ์†์„ฑ์€ ์œ ์ผํ•˜๋ฉฐ ์ˆœ์„œ๋Š” ๋ฌด์˜๋ฏธํ•จ
- ํŠœํ”Œ์€ ์‚ฝ์ž…/์‚ญ์ œ ๋“ฑ์— ์˜ํ•ด ๊ณ„์† ๋ณ€ํ•จ / ํŠœํ”Œ์€ ์„œ๋กœ ์ƒ์ดํ•œ ๊ฐ’์„ ใ„น๊ฐ€์ง
- ์†์„ฑ์˜ ๊ฐ’์€ ๋ถ„ํ•ด ๋ถˆ๊ฐ€ (์›์ž์„ฑ) / ๋™์ผํ•  ์ˆ˜ ์žˆ์Œ
- ํŠœํ”Œ์„ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์†์„ฑ(ํ•„๋“œ)์˜ ์ผ๋ถ€๋ฅผ Key๋กœ ์„ค์ •
- ์†์„ฑ์€ Null ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋‚˜, ๊ธฐ๋ณธํ‚ค์— ํ•ด๋‹น๋˜๋Š” ์†์„ฑ์€ Null ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์Œ

 

โ–  ํ‚ค(Key)

  • ํ›„๋ณดํ‚ค(Candidate Key)
    • ๊ธฐ๋ณธํ‚ค๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์†์„ฑ / ๋ชจ๋“  ๋ฆด๋ ˆ์ด์…˜์—๋Š” ํ›„๋ณดํ‚ค ์กด์žฌ
    • ๋ชจ๋“  ํŠœํ”Œ์— ๋Œ€ํ•ด ์œ ์ผ์„ฑ O, ์ตœ์†Œ์„ฑ O
      โ€ป ์œ ์ผ์„ฑ: ํ•˜๋‚˜์˜ ํ‚ค ๊ฐ’์œผ๋กœ ํ•˜๋‚˜์˜ ํŠœํ”Œ ์œ ์ผํ•˜๊ฒŒ ์‹๋ณ„
      โ€ป ์ตœ์†Œ์„ฑ: ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ ์‹๋ณ„ํ•˜๋Š”๋ฐ ์ตœ์†Œํ•œ์˜ ์†์„ฑ์œผ๋กœ๋งŒ ๊ตฌ์„ฑ
  • ๊ธฐ๋ณธํ‚ค(Primary Key)
    • ํ›„๋ณดํ‚ค ์ค‘์—์„œ ์„ ํƒ๋˜์–ด, ์ค‘๋ณต๋œ ๊ฐ’•NULL ๊ฐ’ X
    • ์œ ์ผ์„ฑ/์ตœ์†Œ์„ฑ ๋งŒ์ขƒ, ํŠœํ”Œ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•œ ํ‚ค
  • ๋Œ€์ฒดํ‚ค(Alternate Key)
    • ํ›„๋ณดํ‚ค๊ฐ€ ๋‘˜ ์ด์ƒ์ผ ๋•Œ ๊ธฐ๋ณธํ‚ค๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ํ›„๋ณดํ‚ค
  • ์Šˆํผํ‚ค(Super Key)
    • ํ•œ ๋ฆด๋ ˆ์ด์…˜ ๋‚ด ์†์„ฑ๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ๊ตฌ์„ฑ๋œ ํ‚ค
    • ๋ชจ๋“  ํŠœํ”Œ์— ๋Œ€ํ•ด ์œ ์ผ์„ฑ O, ์ตœ์†Œ์„ฑ X
  • ์™ธ๋ž˜ํ‚ค(Foreign Key)
    • ๋‹ค๋ฅธ ๋ฆด๋ ˆ์ด์…˜์˜ ๊ธฐ๋ณธํ‚ค๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์†์„ฑ or ์†์„ฑ๋“ค์˜ ์ง‘ํ•ฉ
    • ์ฐธ์กฐ๋˜๋Š” ๋ฆด๋ ˆ์ด์…˜ ๊ธฐ๋ณธํ‚ค์™€ ๋Œ€์‘๋˜์–ด ๋ฆด๋ ˆ์ด์…˜ ๊ฐ„ ์ฐธ์กฐ ๊ด€๊ณ„

 

โ–  ๋ฌด๊ฒฐ์„ฑ(Integrity)

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

 

โ–  ์ ‘๊ทผ ํ†ต์ œ ๊ธฐ์ˆ  (AC, Access Control)

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

 

โ–  ๋ทฐ (View)

- ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์— ๊ธฐ๋ฐ˜์„ ๋‘” ์ด๋ฆ„์„ ๊ฐ€์ง€๋Š” ๊ฐ€์ƒ ํ…Œ์ด๋ธ” (๊ธฐ๋ณธ ํ…Œ์ด๋ธ”๊ณผ ๋™์ผ ํ˜•ํƒœ)
- ์ €์žฅ์žฅ์น˜ ๋‚ด ๊ฐ€์ƒ์œผ๋กœ, ๋…ผ๋ฆฌ์ €์œผ๋กœ ์กด์žฌ (์‹ค์กดํ•˜๋Š” ๋ฌผ๋ฆฌ์  ์กด์žฌX)
- ๊ธฐ๋ณธ ํ…Œ์ด๋ธ” ๋ฐ ๋ทฐ ์‚ญ์ œ ์‹œ ํ•ด๋‹น ํ…Œ์ด๋ธ”/๋ทฐ๋ฅผ ๊ธฐ์ดˆ๋กœ ์ •์˜๋œ ๋‹ค๋ฅธ ๋ทฐ๋„ ์ž๋™ ์‚ญ์ œ
โ–ท ์žฅ์ : ๋…ผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋…๋ฆฝ์„ฑ ์ œ๊ณต / ๋ฐ์ดํ„ฐ ์ž๋™ ๋ณด์•ˆ ์ œ๊ณต / ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ์šฉ์ด
โ–ท ๋‹จ์ : ๋…์ง‘์  ์ธ๋ฑ์Šค ๋ณด์œ  ๋ถˆ๊ฐ€ / ALTER ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€ / ์‚ฝ์ž…, ์‚ญ์ œ, ๊ฐฑ์‹ , ์—ฐ์‚ฐ ์ œ์•ฝ

 

โ–  ์ •๊ทœํ™”

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

โ€ป ์ด์ƒํ˜„์ƒ ์ข…๋ฅ˜
1. ์‚ฝ์ž… ์ด์ƒ: ๋ฐ์ดํ„ฐ ์‚ฝ์ž… ์‹œ ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•จ๊ป˜ ์‚ฝ์ž…
2. ์‚ญ์ œ ์ด์ƒ: ํŠœํ”Œ ์‚ญ์ œ ์‹œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋„ ํ•จ๊ป˜ ์‚ญ์ œ
3. ๊ฐฑ์‹  ์ด์ƒ: ์ผ๋ถ€๋งŒ ์ˆ˜์ •๋˜์–ด ๋ฐ์ดํ„ฐ ๋ถˆ์ผ์น˜ → ์ •๋ณด ๋ชจ์ˆœ ๋ฐœ์ƒ

1) ์ •๊ทœํ™” ๊ณผ์ •

์ œ 1 ์ •๊ทœํ˜• ๋ชจ๋“  ๋„๋ฉ”์ธ(Domain)์ด ์›์ž ๊ฐ’๋งŒ์œผ๋กœ ๋˜์–ด ์žˆ์Œ
์ œ 2 ์ •๊ทœํ˜• ๊ธฐ๋ณธํ‚ค๊ฐ€ ์•„๋‹Œ ์†์„ฑ์ด ๊ธฐ๋ณธํ‚ค์— ๋Œ€ํ•œ ์™„์ „ ํ•จ์ˆ˜์  ์ข…์† ๋งŒ์กฑ
๋ถ€๋ถ„์  ํ•จ์ˆ˜ ์ข…์†์„ ์ œ๊ฑฐํ•œ ์ •๊ทœํ˜•
์ œ 3 ์ •๊ทœํ˜• ๊ธฐ๋ณธํ‚ค๊ฐ€ ์•„๋‹Œ ๋ชจ๋“  ์†์„ฑ์ด ๊ธฐ๋ณธํ‚ค์— ๋Œ€ํ•ด ์ดํ–‰์  ํ•จ์ˆ˜ ์ข…์† ๊ด€๊ณ„(X→Y, Y→Z์ด๋ฉด X→Z)๋ฅผ ๋งŒ์กฑ
BCNF ๋ฆด๋ ˆ์ด์…˜ R์—์„œ ๋ชจ๋“  ๊ฒฐ์ •์ž๊ฐ€ ํ›„๋ณดํ‚ค
์ œ 4 ์ •๊ทœํ˜• ๋ฆด๋ ˆ์ด์…˜ R์— ๋‹ค์น˜ ์ข…์†์ด ์„ฑ๋ฆฝํ•˜๋Š” ๊ฒฝ์šฐ R์˜ ๋ชจ๋“  ์†์„ฑ์ด A์— ํ•จ์ˆ˜์  ์ข…์† ๊ด€๊ณ„๋ฅผ ๋งŒ์กฑํ•˜๋Š” ์ •๊ทœํ˜•
์ œ 5 ์ •๊ทœํ˜• ๋ฆด๋ ˆ์ด์…˜ R์˜ ๋ชจ๋“  ์กฐ์ธ ์ข…์†์ด R์˜ ํ›„๋ณดํ‚ค๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์„ฑ๋ฆฝ

โ€ป ๋ฐ˜์ •๊ทœํ™”: ์ •๊ทœํ™” ๊ณผ์ • ์ง„ํ–‰ ํ›„, ์‹œ์Šคํ…œ ์„ฑ๋Šฅ ํ–ฅ์ƒ ๋ฐ ์šด์˜ ํŽธ์˜์„ฑ์„ ์œ„ํ•ด ์˜๋„์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ์ค‘๋ณต/ํ†ตํ•ฉ/๋ถ„๋ฆฌ๋ฅผ ํ—ˆ์šฉํ•ด ์ •๊ทœํ™” ์›์น™์„ ์œ„๋ฐ˜

โ€ป ํ•จ์ˆ˜์  ์ข…์†
- ์™„์ „ ํ•จ์ˆ˜์  ์ข…์†(Full Functional Dependency): ์ข…์†์ž๊ฐ€ ๊ธฐ๋ณธํ‚ค์—๋งŒ ์ข…์†
- ๋ถ€๋ถ„ ํ•จ์ˆ˜์  ์ข…์†(Partial ~): ๊ธฐ๋ณธํ‚ค๊ฐ€ ์—ฌ๋Ÿฌ ์†์„ฑ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์„ ๋•Œ ๊ธฐ๋ณธํ‚ค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์†์„ฑ ์ค‘ ์ผ๋ถ€๋งŒ ์ข…์†
- ์ดํ–‰์  ํ•จ์ˆ˜ ์ข…์†(Transitive ~): X→Y, Y→Z์ด๋ฉด X→Z

์ œ 1 ์ •๊ทœํ˜•: ์›์ž๊ฐ’ ์•„๋‹Œ ๋„๋ฉ”์ธ ๋ถ„ํ•ด

 

์ œ 2 ์ •๊ทœํ˜•: ๋ถ€๋ถ„ ํ•จ์ˆ˜ ์ข…์† ์ œ๊ฑฐ

 

์ œ 3 ์ •๊ทœํ˜•: ์ดํ–‰ ํ•จ์ˆ˜ ์ข…์† ์ œ๊ฑฐ

 

BCNF: ๋ชจ๋“  ๊ฒฐ์ •์ž๊ฐ€ ํ›„๋ณดํ‚ค

 

โ–  ๊ด€๊ณ„ ๋Œ€์ˆ˜ - ์›ํ•˜๋Š” ์ •๋ณด์˜ ๊ฒ€์ƒ‰ ๊ณผ์ •์„ ์ •์˜ํ•˜๋Š” ์ ˆ์ฐจ์  ์–ธ์–ด

โ‘  ์ˆœ์ˆ˜ ๊ด€๊ณ„ ์—ฐ์‚ฐ์ž

σ Select(์„ ํƒ) ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ํŠœํ”Œ๋“ค์˜ ๋ถ€๋ถ„ ์ง‘ํ•ฉ(์ˆ˜ํ‰ ์—ฐ์‚ฐ)
ใ…  Project(์ถ”์ถœ) ์†์„ฑ๋“ค์˜ ๋ถ€๋ถ„ ์ง‘ํ•ฉ, ์ค‘๋ณต ์ œ๊ฑฐ(์ˆ˜์ง ์—ฐ์‚ฐ)
โ‹ˆ Join(์กฐ์ธ) ๋‘ ๊ฐœ์˜ ๋ฆด๋ ˆ์ด์…”๋Šฅใ„น ํ•˜๋‚˜๋กœ ํ•ฉ์ณ ์ƒˆ๋กœ์šด ๋ฆด๋ ˆ์ด์…˜ ํ˜•์„ฑ
÷ Division(๋‚˜๋ˆ„๊ธฐ) A์˜ ์†์„ฑ์ด B์˜ ์†์„ฑ ๊ฐ’์„ ๋ชจ๋‘ ๊ฐ€์ง„ ํŠœํ”Œ์—์„œ (A⊃B) B๊ฐ€ ๊ฐ€์ง„ ์†์„ฑ์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ์†์„ฑ๋“ค๋งŒ ์ถ”์ถœ

- ์„ธํƒ€ ์กฐ์ธ: ๋‘ ๋ฆด๋ ˆ์ด์…˜ ์†์„ฑ ๊ฐ’์„ ๋น„๊ต ํ›„ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ํŠœํ”Œ๋งŒ ๋ฐ˜ํ™˜
- ๋™๋“ฑ ์กฐ์ธ: ์กฐ๊ฑด์ด ์ •ํ™•ํ•˜๊ฒŒ '=' ๋“ฑํ˜ธ๋กœ ์ผ์น˜ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜
- ์ž์—ฐ ์กฐ์ธ: ๋™๋“ฑ ์กฐ์ธ์˜ ๊ฒฐ๊ณผ์—์„œ ์ค‘๋ณต๋œ ์†์„ฑ์„ ์ œ๊ฑฐํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜

โ‘ก ์ผ๋ฐ˜ ์ง‘ํ•ฉ ์—ฐ์‚ฐ์ž

Union
(ํ•ฉ์ง‘ํ•ฉ)
๋‘ ๋ฆด๋ ˆ์ด์…˜์˜ ํ•ฉ ์ถ”์ถœ / ์ค‘๋ณต์€ ์ œ๊ฑฐ
Intersection
(๊ต์ง‘ํ•ฉ)
๋‘ ๋ฆด๋ ˆ์ด์…˜์˜ ์ข…๋ณต๋˜๋Š” ๊ฐ’๋งŒ ์ถ”์ถœ
Difference
(์ฐจ์ง‘ํ•ฉ)
A ๋ฆด๋ ˆ์ด์…˜์—์„œ B ๋ฆด๋ ˆ์ด์…˜ ๊ฐ„ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ๊ฐ’์„ ์ถ”์ถœ
× Cartesian Product
(๊ต์ฐจ๊ณฑ)
๋‘ ๋ฆด๋ ˆ์ด์…˜์˜ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ํŠœํ”Œ์˜ ์ง‘ํ•ฉ
→ ์†์„ฑ/์นผ๋Ÿผ๋ผ๋ฆฌ ๋”ํ•˜๊ธฐ / ํŠœํ”Œ๋ผ๋ฆฌ๋Š” ๊ณฑํ•˜๊ธฐ

 

โ–  ๊ด€๊ณ„ ํ•ด์„ - ์›ํ•˜๋Š” ์ •๋ณด๊ฐ€ ๋ฌด์—‡์ด๋ผ๋Š” ๊ฒƒ๋งŒ ์ •์˜ํ•˜๋Š” ๋น„์ ˆ์ฐจ์  ์–ธ์–ด

๋…ผ๋ฆฌ
์—ฐ์‚ฐ์ž
โ‹ OR ์›์ž์‹ ๊ฐ„ "๋˜๋Š”" ๊ด€๊ณ„๋กœ ์—ฐ๊ฒฐ
โ‹€ AND ์›์ž์‹ ๊ฐ„ "๊ทธ๋ฆฌ๊ณ " ๊ด€๊ณ„๋กœ ์—ฐ๊ฒฐ
¬ NOT ์›์ž์‹์— ๋Œ€ํ•œ ๋ถ€์ •
์ •๋Ÿ‰์ž ์ „์นญ ์ •๋Ÿ‰์ž ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ํŠœํ”Œ "For All"
์กด์žฌ ์ •๋Ÿ‰์ž ์–ด๋–ค ํŠœํ”Œ ํ•˜๋‚˜๋ผ๋„ ์กด์žฌ 'There Exists"

 

โ–  ํŠธ๋žœ์žญ์…˜ (Transaction)

- ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒํƒœ๋ฅผ ๋ณ€ํ™˜์‹œํ‚ค๋Š” ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์  ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์—… ๋‹จ์œ„

์›์ž์„ฑ(Atomicity) ํŠธ๋žœ์žญ์…˜ ์—ฐ์‚ฐ์ด ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๊ฑฐ๋‚˜ (Commit),
์•„๋‹ˆ๋ฉด ์–ด๋– ํ•œ ์—ฐ์‚ฐ๋„ ์ˆ˜ํ–‰๋˜์ง€ ์•Š์•„์•ผ ํ•จ (Rollback)
์ผ๊ด€์„ฑ(Consistency) ์‹œ์Šคํ…œ์˜ ๊ณ ์ • ์š”์†Œ๋Š” ํŠธ๋žœ์žญ์…˜ ์ˆ˜ํ–‰ ์ „/ํ›„๋กœ ๋™์ผํ•ด์•ผ ํ•จ
๋…๋ฆฝ์„ฑ(Isolation) ๊ฐœ๋ณ„ ํŠธ๋žœ์žญ์…˜์€ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์˜ ๊ฐ„์„ญ ๋ฐ ์˜ํ–ฅ ๋ฐ›์ง€ ์•Š์•„์•ผ ํ•จ
์˜์†์„ฑ(Durability) ์™„๋ฃŒ๋œ ํŠธ๋žœ์žญ์…˜ ๊ฒฐ๊ณผ๋Š” ์˜๊ตฌ์ ์œผ๋กœ ๊ธฐ๋ก๋˜์–ด์•ผ ํ•จ

- COMMIT: ํŠธ๋žœ์žญ์…˜ ์ •์ƒ ์ข…๋ฃŒ ํ›„ ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์„ DB์— ๋ฐ˜์˜ํ•˜๋Š” ๋ช…๋ น์–ด
- ROLLBACK: ํŠธ๋žœ์žญ์…˜ ๋น„์ •์ƒ ์ข…๋ฃŒ ํ›„ ๋ชจ๋“  ๋ณ€๊ฒฝ ์ž‘์—…์„ ์ทจ์†Œํ•˜๊ณ  ์ด์ „ ์ƒํƒœ๋กœ ์›๋ณต
- REDO: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋น„์ •์ƒ ์ข…๋ฃŒ ์‹œ ํŠธ๋žœ์žญ์…˜ ์‹œ์ž‘(Start)์™€ ์™„๋ฃŒ(Commit)์— ๋Œ€ํ•œ ๊ธฐ๋ก์ด ์žˆ๋Š” ํŠธ๋žœ์žญ์…˜๋“ค์˜ ์ž‘์—…์„ ์žฌ์ž‘์—…(์ด์ „ ๊ฐ’์„ ์ดํ›„ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ)
- UNDO: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋น„์ •์ƒ ์ข…๋ฃŒ ์‹œ ์‹œ์ž‘์€ ์žˆ์ง€๋งŒ ์™„๋ฃŒ ๊ธฐ๋ก์ด ์—†๋Š” ํŠธ๋žœ์žญ์…˜๋“ค์ด ์ž‘์—…ํ•œ ๋‚ด์šฉ์„ ๋ชจ๋‘ ์ทจ์†Œ (์ดํ›„ ๊ฐ’์„ ์ด์ „ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ)

 

โ–  ๋ฐ์ดํ„ฐ ํšŒ๋ณต ๊ธฐ๋ฒ•

  • ์ฆ‰์‹œ ๊ฐฑ์‹  ๊ธฐ๋ฒ•(Immediate Update)
    • ํŠธ๋žœ์žญ์…˜ ์‹คํ–‰ ์ƒํƒœ์—์„œ ๋ณ€๊ฒฝ๋˜๋Š” ๋‚ด์šฉ์„ ๋ฐ”๋กœ ๋ฐ๋ฒ ์— ์ ์šฉ
      → ๋ณ€๊ฒฝ๋˜๋Š” ๋ชจ๋“  ๋‚ด์šฉ์„ ๋กœ๊ทธ(Log)์— ๊ธฐ๋กํ•˜์—ฌ ์žฅ์•  ์‹œ ํ•ด๋‹น ๋กœ๊ทธ ํ† ๋Œ€๋กœ ๋ณต์›
      Redo / Undo ๋ชจ๋‘ ์ˆ˜ํ–‰
  • ์ง€์—ฐ ๊ฐฑ์‹  ๊ธฐ๋ฒ•(Deferred Update)
    • ํŠธ๋žœ์žญ์…˜ ์ˆ˜ํ–‰ ํ›„ ๋ถ€๋ถ„ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€๋Š” ๋ฐ๋ฒ ์— ๋ฐ”๋กœ ์ ์šฉํ•˜์ง€ ์•Š๊ณ , ์ง€์—ฐ์‹œํ‚จ ํ›„ ๋ถ€๋ถ„ ์™„๋ฃŒ ์‹œ ๋กœ๊ทธ(Log)์˜ ๋‚ด์šฉ์„ ํ† ๋Œ€๋กœ ์ €์žฅ
      → ํŠธ๋žœ์žญ์…˜์ด ์‹คํŒจํ•  ๊ฒฝ์šฐ Undo ์—†์ด Redo๋งŒ ์ˆ˜ํ–‰
  • ๊ฒ€์‚ฌ ์‹œ์  ๊ธฐ๋ฒ•(Check point)
    • ํŠธ๋žœ์žญ์…˜ ์ˆ˜ํ–‰ ์ค‘๊ฐ„์— ๊ฒ€์‚ฌ์‹œ์ (Checkpoint) ์ง€์ •ํ•˜์—ฌ ๊ฒ€์‚ฌ ์‹œ์ ๊นŒ์ง€ ๋ถ€๋ถ„ ์ˆ˜ํ–‰ ํ›„ ์™„๋ฃŒ๋œ ๋‚ด์šฉ์„ ์ค‘๊ฐ„์ค‘๊ฐ„ ๋ฐ๋ฒ ์— ์ €์žฅ
  • ๊ทธ๋ฆผ์ž ํŽ˜์ด์ง• ๊ธฐ๋ฒ•(Shadow paging)
    • ๋กœ๊ทธ ๋ฏธ์‚ฌ์šฉ / ๋ฐ๋ฒ ๋ฅผ ๋™์ผ ํฌ๊ธฐ์˜ ํŽ˜์ด์ง€๋กœ ๋ถ„ํ•  ํ›„ ๊ฐ ํŽ˜์ด์ง€๋งˆ๋‹ค ๋ณต์‚ฌํ•˜์—ฌ ๊ทธ๋ฆผ์ž ํŽ˜์ด์ง€ ๋ณด๊ด€
      → ๋ณ€๊ฒฝ ๋‚ด์šฉ์€ ์›๋ณธ ํŽ˜์ด์ง€์—๋งŒ ์ ์šฉํ•˜์—ฌ ์žฅ์•  ๋ฐœ์ƒ ์‹œ ํ•ด๋‹น ํŽ˜์ด์ง€ ์‚ฌ์šฉ/ํšŒ๋ณต

 

โ–  ๋กœํ‚น ๋‹จ์œ„ (Locking): ๋กœํ‚น์˜ ๋Œ€์ƒ์ด ๋˜๋Š” ๊ฐ์ฒด์˜ ํฌ๊ธฐ

- ๋กœํ‚น: ๋ฐ๋ฒ  ๋ณ‘ํ–‰ ์ œ์–ด ์œ„ํ•ด ํŠธ๋žœ์žญ์…˜์ด ์ ‘๊ทผํ•˜๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ž ๊ฐ€(lock) ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•˜๋Š” ๋ณ‘ํ–‰ ์ œ์–ด ๊ธฐ๋ฒ•
- ๋Œ€์ƒ: ๋ฐ๋ฒ  / ํŒŒ์ผ / ๋ ˆ์ฝ”๋“œ
- ๋กœํ‚น ๋‹จ์œ„โ–ผ → ๋กœํฌ์˜ ์ˆ˜โ–ฒ → ๋กœํ‚น ์˜ค๋ฒ„ํ—ค๋“œโ–ฒ → ๋ณ‘ํ–‰์„ฑ(๊ณต์œ ๋„)โ–ฒ
- ๋กœํ‚น ๋‹จ์œ„โ–ฒ → ๋กœํฌ์˜ ์ˆ˜โ–ผ → ๋กœํ‚น ์˜ค๋ฒ„ํ—ค๋“œโ–ผ → ๋ณ‘ํ–‰์„ฑ(๊ณต์œ ๋„)โ–ผ

โ€ป ๋ณ‘ํ–‰์ œ์–ด ๊ธฐ๋ฒ• ์ข…๋ฅ˜
- ๋กœํ‚น ๊ธฐ๋ฒ•: ์ผ๊ด€์„ฑ๊ณผ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ํŠธ๋žœ์žญ์…˜์˜ ์ˆœ์ฐจ์  ์ง„ํ–‰์„ ๋ณด์žฅ (๋ณ‘ํ–‰ ์ˆ˜ํ–‰ ํŠธ๋žœ์žญ์…˜๋“ค ๊ฐ„ ๋™์ผ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ์ฐจ๋‹จ)
- ๋‚™๊ด€์  ๊ฒ€์ฆ: ์ผ๋‹จ ํŠธ๋žœ์žญ์…˜ ์ˆ˜ํ–‰ํ•˜๊ณ , ํŠธ๋žœ์žญ์…˜ ์ข…๋ฃŒ ์‹œ ๊ฒ€์ฆ์„ ์ˆ˜ํ–‰
- ํƒ€์ž„ ์Šคํƒฌํ”„ ๊ธฐ๋ฒ•: ํƒ€์ž„ ์Šคํƒฌํ”„๋ฅผ ๋ถ€์—ฌํ•ด ๋ถ€์—ฌ๋œ ์‹œ๊ฐ„์— ๋”ฐ๋ผ ํŠธ๋žœ์žญ์…˜ ์ˆ˜ํ–‰
- ๋‹ค์ค‘๋ฒ„์ „ ๋™์‹œ์„ฑ ์ œ์–ด(MVCC): ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ๋น„๊ตํ•ด ์ง๋ ฌ๊ฐ€๋Šฅ์„ฑ์ด ๋ณด์žฅ๋˜๋Š” ์ ์ ˆํ•œ ๋ฒ„์ „์„ ์„ ํƒํ•ด ์ ‘๊ทผํ•˜๋„๋ก ํ•จ

 

โ–  ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

- ๋…ผ๋ฆฌ์ ์œผ๋กœ๋Š” ํ•˜๋‚˜์˜ ์‹œ์Šคํ…œ์— ์กด์žฌํ•˜๋‚˜, ๋ฌผ๋ฆฌ์ ์œผ๋กœ๋Š” ์—ฐ๊ฒฐ๋œ ๋‹ค์ˆ˜์˜ ์ปดํ“จํ„ฐ์— ๋ถ„์‚ฐ๋˜์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค
- ๊ตฌ์„ฑ์š”์†Œ: ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ๊ธฐ(๋ถ„์‚ฐ๋œ ์ง€์—ญ ์ปดํ“จํ„ฐ) / ๋ถ„์‚ฐ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค / ํ†ต์‹  ๋„คํŠธ์›Œํฌ
- ๋ชฉํ‘œ: ์œ„์น˜ ํˆฌ๋ช…์„ฑ(Location) / ์ค‘๋ณต ํˆฌ๋ช…์„ฑ(Replication) / ๋ณ‘ํ–‰ ํˆฌ๋ช…์„ฑ(Concurrency) / ๋ถ„ํ•  ํˆฌ๋ช…์„ฑ(Division) / ์žฅ์•  ํˆฌ๋ช…์„ฑ(Failure)
→ ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ ๋ฐ๋ฒ ์˜ ์œ„์น˜/์ค‘๋ณต/๋ณ‘ํ–‰/๋ถ„ํ• /์žฅ์•  ์—ฌ๋ถ€ ์ธ์‹ํ•  ํ•„์š”X

 

โ–  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ จ ์šฉ์–ด

  • ์ธ๋ฑ์Šค(Index)
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ” ๊ฒ€์ƒ‰ ์†๋„ ํ–ฅ์ƒ์„ ์œ„ํ•œ ์ €์žฅ ์œ„์น˜ ์ž๋ฃŒ
      → ๋ฐ์ดํ„ฐ ๋น ๋ฅธ ์กฐํšŒ๋ฅผ ์œ„ํ•œ ์œ„์น˜ ์ •๋ณด(ํฌ์ธํ„ฐ) ํฌํ•จ
  • ํด๋Ÿฌ์Šคํ„ฐ(Cluster)
    • ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ๋ฅผ ๋™์ผ ์œ„์น˜์— ์ €์žฅํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ํšจ์œจ ํ–ฅ์ƒ
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด์ค‘ํ™”
    • ์„œ๋น„์Šค ์žฅ์•  ๋Œ€๋น„ํ•˜์—ฌ ๋ฐ๋ฒ  ์ค‘๋ณต(๋ณต์ œ)ํ•˜์—ฌ ๊ด€๋ฆฌ
    • Eager ๊ธฐ๋ฒ•: ๋ชจ๋“  ์ด์ค‘ํ™” ๋ฐ์ดํ„ฐ ์ฆ‰์‹œ ์—…๋ฐ์ดํŠธ
    • Lazy ๊ธฐ๋ฒ•: ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ƒˆ๋กœ์šด ํŠธ๋žœ์žญ์…˜์œผ๋กœ ๊ฐ ๋…ธ๋“œ์— ์ „๋‹ฌ
  • ํŒŒํ‹ฐ์…”๋‹(Partitioning)
    • ๋Œ€์šฉ๋Ÿ‰ ๋ฐ๋ฒ ๋ฅผ ์—ฌ๋Ÿฌ ์„น์…˜์œผ๋กœ ๋ถ„ํ• (์กฐํšŒ ์†๋„ ํ–ฅ์ƒ)
    • ๋ฒ”์œ„ ๋ถ„ํ• : ํŒŒํ‹ฐ์…˜ ํ‚ค ๊ฐ’์„ ๋ฒ”์œ„๋กœ ๋ถ„ํ• 
    • ํ•ด์‹œ ๋ถ„ํ• : ํ•ด์‹œ ํ•จ์ˆ˜ ์ ์šฉ ํ›„ ๋ฐ˜ํ™˜๋œ ๊ฐ’์œผ๋กœ ํŒŒํ‹ฐ์…˜ ๋ถ„ํ• 
    • ํ•ฉ์„  ๋ถ„ํ• : ๋ฒ”์œ„ ๋ถ„ํ•  ํ›„ ํ•ด์‹œ ํ•จ์ˆ˜ ์ ์šฉํ•˜์—ฌ ๋‹ค์‹œ ๋ถ„ํ• 
  • ๋ณต๊ตฌ ์‹œ๊ฐ„ ๋ชฉํ‘œ(RTO, Recovery Time Objective)
    • ์„œ๋น„์Šค ์ค‘๋‹จ ํ›„ ๋ณต์›๊นŒ์ง€ ์ตœ๋Œ€ ์‹œ๊ฐ„
      → ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ตœ๋Œ€ ํ—ˆ์šฉ ์‹œ๊ฐ„
  • ๋ณต๊ตฌ ์‹œ์  ๋ชฉํ‘œ(RPO, Recovery Point Objective)
    • ๋งˆ์ง€๋ง‰ ๋ฐ์ดํ„ฐ ๋ณต๊ตฌ ํ›„ ํ—ˆ์šฉ๋˜๋Š” ์ตœ๋Œ€ ์‹œ๊ฐ„
      → ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ ๋ฐ์ดํ„ฐ ์†์‹ค๋Ÿ‰ ๊ฒฐ์ •

 

โ–  ์•Œ๊ณ ๋ฆฌ์ฆ˜

- ์„ ํ˜• ๊ฒ€์ƒ‰: ํ•˜๋‚˜์”ฉ ์ˆœ์„œ๋Œ€๋กœ ๋น„๊ตํ•˜๋ฉฐ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๊ฐ’์„ ์ฐพ์•„๋‚ด๋Š” ๊ฒ€์ƒ‰
- ์ด์ง„ ๊ฒ€์ƒ‰: ๊ฒ€์ƒ‰ ์ˆ˜ํ–‰ ์ „์— ๋ฐ์ดํ„ฐ ์ง‘ํ•ฉ์ด ์ •๋ ฌ๋˜์–ด์•ผ ํ•จ

1) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹œ๊ฐ„ ๋ณต์žก๋„

๋ณต์žก๋„ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๋ช…
O(1) ํ•ด์‹œ ํ•จ์ˆ˜ ์ž๋ฃŒ ํฌ๊ธฐ ๋ฌด๊ด€ ์ผ์ •ํ•œ ์†๋„
O(logโ‚‚N)  ์ด์ง„ ํƒ์ƒ‰ ๋กœ๊ทธํ˜• ๋ณต์žก๋„
O(n) ์ˆœ์ฐจ ํƒ์ƒ‰ ์„ ํ˜• ๋ณต์žก๋„: ์ž…๋ ฅ ์ž๋ฃŒ๋ฅผ ํ•˜๋‚˜์”ฉ ์ฒ˜๋ฆฌ (์ •๋น„๋ก€)
O(Nlogโ‚‚N) ํž™ / ํ•ฉ๋ณ‘(๋ณ‘ํ•ฉ) ์ •๋ ฌ ์„ ํ˜• ๋กœ๊ทธํ˜• ๋ณต์žก๋„
O(N²) ์„ ํƒ / ๋ฒ„๋ธ” / ์‚ฝ์ž… / ํ€ต ์ •๋ ฌ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ํž™/ํ•ฉ๋ณ‘ ๋ณด๋‹ค ๋ณต์žก๋„๊ฐ€ ํผ
N² > Nlogโ‚‚N (N > 2)


2) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๊ณ„ ๊ธฐ๋ฒ•
- Divide and Conquer: ๋ฌธ์ œ๋ฅผ ์ตœ์†Œ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด ํ’€๊ณ , ๊ฐ๊ฐ์„ ๋‹ค์‹œ ๋ณ‘ํ•ฉ
- Dynamic Programming: ๋” ์ž‘์€ ๋ฌธ์ œ์˜ ์—ฐ์žฅ์„ ์œผ๋กœ ์—ฌ๊ธฐ๊ณ  ๊ณผ๊ฑฐ์— ๊ตฌํ•œ ํ•ด๋ฅผ ํ™œ์šฉ
- Greedy: ํ˜„ ์‹œ์ ์—์„œ ๊ฐ€์žฅ ์ตœ์ ์œผ๋กœ ๋ฐฉ๋ฒ•์„ ์„ ํƒ
- Backtracking: ๋ชจ๋“  ์กฐํ•˜์„ ์‹œ๋„ํ•˜์—ฌ ๋ฌธ์ œ์˜ ๋‹ต์„ ์„ ํƒ (→ ๋ฌธ์ œ์˜ ๋ถ€๋ชจ ๋…ธ๋“œ๋กœ ๋˜๋Œ์•„๊ฐ„ ํ›„ ๋‹ค๋ฅธ ์ž์† ๋…ธ๋“œ ๊ฒ€์ƒ‰)

3) ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜
- ์‚ฝ์ž…: ์ด๋ฏธ ์ •๋ ฌ๋œ ํŒŒ์ผ์— ์ƒˆ๋กœ์šด ๋ ˆ์ฝ”๋“œ๋ฅผ ์ˆœ์„œ์— ๋งž๊ฒŒ ์‚ฝ์ž…ํ•˜์—ฌ ์ •๋ ฌ
- ์„ ํƒ: N๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ ์ค‘ ์ตœ์†Œ๊ฐ’์„ ์ฐพ์•„ ์ฒซ๋ฒˆ์งธ์— ๋ฐฐ์น˜, ๋‚˜๋จธ์ง€ N-1๊ฐœ ๋ ˆ์ฝ”๋“œ ์ค‘ ์ตœ์†Œ๊ฐ’ ์ฐพ์•„ ๋‘๋ฒˆ์งธ ๋ฐฐ์น˜, ์ด๋ฅผ ๋ฐ˜๋ณตํ•˜์—ฌ ์ •๋ ฌ
- ๋ฒ„๋ธ”: ์ธ์ ‘ํ•œ ๋‘ ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ ํ‚ค ๊ฐ’ ๋น„๊ต ํ›„ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋ ˆ์ฝ”๋“œ ์œ„์น˜ ๊ตํ™˜
- ํ€ต: ์ž๋ฃŒ ์ด๋™ ์ตœ์†Œํ™” ํ›„ ํ•˜๋‚˜์˜ ํŒŒ์ผ์„ ๋ถ€๋ถ„์ ์œผ๋กœ ๋‚˜๋ˆ ๊ฐ€๋ฉด์„œ ์ •๋ ฌ
- 2-way ํ•ฉ๋ณ‘: ์ด๋ฏธ ์ •๋ ฌ๋œ 2๊ฐœ์˜ ํŒŒ์ผ์„ ํ•œ ๊ฐœ์˜ ํŒŒ์ผ๋กœ ํ•ฉ๋ณ‘ํ•˜์—ฌ ์ •๋ ฌ
- ์‰˜: ์ž…๋ ฅ ํŒŒ์ผ์„ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’์œผ๋กœ ์„œ๋ธŒํŒŒ์ผ ๊ตฌ์„ฑ ํ›„ ๊ฐ ์„œ๋ธŒํŒŒ์ผ์„ ์‚ฝ์ž… ์ •๋ ฌ ๋ฐฉ์‹์œผ๋กœ ์ˆœ์„œ ๋ฐฐ์—ดํ•˜๋Š” ๊ณผ์ • ๋ฐ˜๋ณต
- ํž™: ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ์ด์šฉํ•œ ์ •๋ ฌ

4) ์ •๋ ฌ ๋ฐฉ๋ฒ•
โ‘  ์„ ํƒ ์ •๋ ฌ(Selection sort)
- ์ตœ์†Œ๊ฐ’์„ ์ฐพ์•„ ์ฒซ๋ฒˆ์งธ ์ˆซ์ž์™€ ์œ„์น˜ ๊ตํ™˜, ์ดํ›„ ์ •๋ ฌ๋œ ๊ฐ’์„ ์ œ์™ธํ•œ ์ตœ์†Œ ์ˆซ์ž๋ฅผ ์ •๋ ฌ๋˜์ง€ ์•Š์€ ์ˆซ์ž ์ค‘ ์ฒซ๋ฒˆ์งธ ์ˆซ์ž์™€ ๋‹ค์‹œ ์œ„์น˜ ๊ตํ™˜, ์ด๋ฅผ ๋ฐ˜๋ณต


โ‘ก ์‚ฝ์ž… ์ •๋ ฌ (Insert sort)
- ๋‘ ๋ฒˆ์งธ ์ˆซ์ž์™€ ์ฒซ๋ฒˆ์งธ ์ˆซ์ž ๋น„๊ตํ•˜์—ฌ ํฌ๊ธฐ ์ˆœ์œผ๋กœ ์ •๋ ฌ, ์ดํ›„ 3๋ฒˆ์งธ ์ˆซ์ž๋ฅผ ์•ž์„œ ์ •๋ ฌ๋œ ์ˆซ์ž๋“ค ์‚ฌ์ด์— ํฌ๊ธฐ ์ˆœ์— ๋งž๊ฒŒ ์žฌ์ •๋ ฌ, ์ด๋ฅผ ๋ฐ˜๋ณต


โ‘ข ๋ฒ„๋ธ” ์ •๋ ฌ (Bubble sort)
- ์™ผ์ชฝ๋ถ€ํ„ฐ ์ธ์ ‘ํ•œ ๋‘ ์ˆซ์ž ๊ฐ„ ํฌ๊ธฐ ๋น„๊ตํ•˜์—ฌ ์œ„์น˜ ๊ตํ™˜, → 1 Pass ๋งˆ๋‹ค ์ •๋ ฌ๋˜๊ณ  ์ˆซ์ž๋“ค ์ค‘ ๊ฐ€์žฅ ํฐ ์ˆซ์ž๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ฐ€์–ด์„œ ๋ฐฐ์น˜