Skip to content

Latest commit

ย 

History

History

database

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
ย 
ย 
ย 
ย 

Database (๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)

์ž‘์„ฑ์ž : ๋ฐ•์žฌ์šฉ, ์„œ๊ทธ๋ฆผ, ์œค๊ฐ€์˜, ์ด์„ธ๋ช…, ์žฅ์ฃผ์„ญ, ์ •ํฌ์žฌ

Table of Contents

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์šฉ์–ด ์ •๋ฆฌ

๊ธ์ •์  ๋‹จ์–ด ๐Ÿ˜ƒ

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

๋ถ€์ •์  ๋‹จ์–ด ๐Ÿ™

  • ์ข…์†์„ฑ (Data Dependency) : (โ‡” ๋…๋ฆฝ์„ฑ) ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ตฌ์กฐ๊ฐ€ ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐ์— ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค.
  • ์ค‘๋ณต์„ฑ (Data Redundancy) : ๊ฐ™์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ค‘๋ณต๋˜์–ด ์ €์žฅ๋˜๋Š” ๊ฒƒ์œผ๋กœ, ๋ฐ์ดํ„ฐ ์ˆ˜์ •/์‚ญ์ œ ์‹œ ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •/์‚ญ์ œํ•ด์ค˜์•ผ ํ•˜๋Š” ๋ฌธ์ œ์ ์ด ์žˆ๋‹ค.
  • ๋น„์ผ๊ด€์„ฑ (Data Inconsistency) : ๋™์ผํ•œ ๋ฐ์ดํ„ฐ์˜ ์—ฌ๋Ÿฌ ์‚ฌ๋ณธ์ด ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ’์„ ๋ณด์œ ํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ๋กœ, ๋ฐ์ดํ„ฐ ์ค‘๋ณต์„ฑ์— ์ด์–ด์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์˜ ๋ชฉ์ 

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

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

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์—ฌ๋Ÿฌ ์‚ฌ๋žŒ๋“ค์ด ๊ณต์œ ํ•˜์—ฌ ์‚ฌ์šฉํ•  ๋ชฉ์ ์œผ๋กœ ์ฒด๊ณ„ํ™”ํ•ด ํ†ตํ•ฉ, ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ์„ ๋งํ•œ๋‹ค. DBMS๋ฅผ ํ†ตํ•ด ์š”๊ตฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ , SQL์„ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋‹ค์Œ์˜ ์žฅ์ ์„ ๊ฐ€์ง„๋‹ค.

  • ๋ฐ์ดํ„ฐ์˜ ๋…ผ๋ฆฌ์ , ๋ฌผ๋ฆฌ์  ๋…๋ฆฝ์„ฑ, ์ผ๊ด€์„ฑ, ๋ฌด๊ฒฐ์„ฑ, ๋ณด์•ˆ์„ฑ ๋ณด์žฅ
  • ๋ฐ์ดํ„ฐ ์ค‘๋ณต ์ตœ์†Œํ™”
  • ์ €์žฅ๋œ ์ž๋ฃŒ๋ฅผ ๊ณต๋™์œผ๋กœ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ์˜ ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ•œํŽธ ๋‹จ์ ๋„ ์กด์žฌํ•œ๋‹ค.

  • ์ „์‚ฐํ™” ๋น„์šฉ์ด ์ฆ๊ฐ€ํ•œ๋‹ค.
  • ๋Œ€์šฉ๋Ÿ‰ ๋””์Šคํฌ๋กœ์˜ ์ง‘์ค‘์ ์ธ Access๋กœ ๊ณผ๋ถ€ํ•˜(Overhead)๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ (RDBMS)

RDBMS๋Š” ํ…Œ์ด๋ธ” ๊ธฐ๋ฐ˜(Table based) DBMS๋กœ, ํ…Œ์ด๋ธ”๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ๋ฐ์ดํ„ฐ๋“ค์˜ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค.

  • ๋ฐ์ดํ„ฐ๋ฅผ ํ…Œ์ด๋ธ” ๋‹จ์œ„๋กœ ๊ด€๋ฆฌ
  • ์ค‘๋ณต ๋ฐ์ดํ„ฐ ์ตœ์†Œํ™” (์ •๊ทœํ™”)
  • ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์— ๋ถ„์‚ฐ๋˜์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ ์‹œ ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๊ด€๊ณ„(join)๋ฅผ ์ด์šฉํ•ด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์–ธ์–ด

DDL (Data Definition Language) : ๋ฐ์ดํ„ฐ ์ •์˜์–ด

  • CREATE, ALTER, DROP, RENAME
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด(table, view, index...)์˜ ๊ตฌ์กฐ๋ฅผ ์ •์˜ (์ƒ์„ฑ, ๋ณ€๊ฒฝ, ์ œ๊ฑฐ)

DML (Data Manipulation Language) : ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด

  • INSERT, SELECT, UPDATE, DELETE
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ CRUD (Create, Read, Update, Delete)

DCL (Data Control Language) : ๋ฐ์ดํ„ฐ ์ œ์–ด์–ด

  • GRANT, REVOKE
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๊ทธ ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์ œ๊ณตํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐ

TCL (Transaction Control Language) : ํŠธ๋žœ์žญ์…˜ ์ œ์–ด์–ด

  • COMMIT, ROLLBACK, Savepoint
  • DML ๋ช…๋ น๋ฌธ์œผ๋กœ ์ˆ˜ํ–‰ํ•œ ๋ณ€๊ฒฝ์„ ๊ด€๋ฆฌ (ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ)

์ •๊ทœํ™”

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

์ •๊ทœํ™”์˜ ๋ชฉ์ 

  • ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์˜ ์•ˆ์ •์„ฑ๊ณผ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•œ๋‹ค
  • ๋ฐ์ดํ„ฐ ๋ชจํ˜•์˜ ๋‹จ์ˆœํ™”๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค
  • ํšจ๊ณผ์ ์ธ ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค
  • ๋ฐ์ดํ„ฐ ์ค‘๋ณต์„ ๋ฐฐ์ œํ•˜์—ฌ ์ด์ƒ(Anomaly) ๋ฐœ์ƒ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ์ €์žฅ ๊ณต๊ฐ„์„ ์ตœ์†Œํ™”ํ•œ๋‹ค

์ด์ƒ(Anomaly)์˜ ๊ฐœ๋… ๋ฐ ์ข…๋ฅ˜

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

  • ์‚ฝ์ž… ์ด์ƒ (Insertion Anomaly) : ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•  ๋•Œ ์›ํ•˜์ง€ ์•Š์€ ๊ฐ’๋“ค๋„ ํ•จ๊ป˜ ์‚ฝ์ž…๋˜๋Š” ํ˜„์ƒ
  • ๊ฐฑ์‹  ์ด์ƒ (Update Anomaly) : ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ ์ผ๋ถ€ ํŠœํ”Œ์˜ ์ •๋ณด๋งŒ ๊ฐฑ์‹ ๋˜์–ด ์ •๋ณด์— ๋ชจ์ˆœ์ด ์ƒ๊ธฐ๋Š” ํ˜„์ƒ
  • ์‚ญ์ œ ์ด์ƒ (Deletion Anomaly) : ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•  ๋•Œ ์˜๋„์™€๋Š” ์ƒ๊ด€ ์—†๋Š” ๊ฐ’๋“ค๋„ ํ•จ๊ป˜ ์‚ญ์ œ๋˜๋Š” ํ˜„์ƒ

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

1NF(์ œ 1 ์ •๊ทœํ˜•)

๋ฆด๋ ˆ์ด์…˜์— ์†ํ•œ ๋ชจ๋“  ๋„๋ฉ”์ธ์ด ์›์ž๊ฐ’๋งŒ์œผ๋กœ ๋˜์–ด์žˆ๋Š” ์ •๊ทœํ˜•์ด๋‹ค

2NF(์ œ 2 ์ •๊ทœํ˜•)

1NF๋ฅผ ๋งŒ์กฑํ•˜๊ณ , ๋ถ€๋ถ„ ํ•จ์ˆ˜์  ์ข…์†์„ ์ œ๊ฑฐํ•˜์—ฌ ๊ธฐ๋ณธํ‚ค๊ฐ€ ์•„๋‹Œ ๋ชจ๋“  ์†์„ฑ์ด ๊ธฐ๋ณธํ‚ค์— ๋Œ€ํ•˜์—ฌ ์™„์ „ ํ•จ์ˆ˜์  ์ข…์†์„ ๋งŒ์กฑํ•˜๋Š” ์ •๊ทœํ˜•์ด๋‹ค

์™„์ „ ํ•จ์ˆ˜์  ์ข…์† : ๋งŒ์•ฝ (์†์„ฑ A, ์†์„ฑ B) -> ์†์„ฑ C ์ผ๋•Œ, A->C, B->C ๋ชจ๋‘ ์„ฑ๋ฆฝ๋ ๋•Œ ์™„์ „ ํ•จ์ˆ˜์  ์ข…์†์ด๋ผ ํ•œ๋‹ค
๋ถ€๋ถ„ ํ•จ์ˆ˜์  ์ข…์† : ๋งŒ์•ฝ (์†์„ฑ A, ์†์„ฑ B) -> ์†์„ฑ C ์ผ๋•Œ, A->C, B->C ์ค‘ ํ•˜๋‚˜๋งŒ ์„ฑ๋ฆฝ๋ ๋•Œ(๋ชจ๋‘ ์„ฑ๋ฆฝ x) ๋ถ€๋ถ„ ํ•จ์ˆ˜์  ์ข…์†์ด๋ผ ํ•œ๋‹ค

3NF(์ œ 3 ์ •๊ทœํ˜•)

2NF๋ฅผ ๋งŒ์กฑํ•˜๊ณ , ์ดํ–‰์  ํ•จ์ˆ˜ ์ข…์†์„ ์ œ๊ฑฐํ•˜๋Š” ์ •๊ทœํ˜•์ด๋‹ค

์ดํ–‰์  ์ข…์† : A -> B, B -> C ์˜ ์ข…์†๊ด€๊ณ„์—์„œ A -> C๋ฅผ ๋งŒ์กฑํ•˜๋Š” ๊ด€๊ณ„๋ฅผ ์˜๋ฏธํ•œ๋‹ค

BCNF(Boyce-Codd ์ •๊ทœํ˜•)

๊ฒฐ์ •์ž๊ฐ€ ๋ชจ๋‘ ํ›„๋ณดํ‚ค์ธ ์ •๊ทœํ˜•์ด๋‹ค.(ํ›„๋ณดํ‚ค๊ฐ€ ์•„๋‹Œ ๊ฒฐ์ •์ž๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ์ •๊ทœํ˜•์ด๋‹ค)

[BCNF์˜ ์ œ์•ฝ ์กฐ๊ฑด]

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

4NF(์ œ 4 ์ •๊ทœํ˜•)

๋‹ค์น˜ ์ข…์†์„ ์ œ๊ฑฐํ•˜๋Š” ์ •๊ทœํ˜•์ด๋‹ค.

๋‹ค์น˜ ์ข…์† : ์†์„ฑ A -> (์†์„ฑ B, ์†์„ฑ C) ์ผ๋•Œ, A->B๋ฅผ ๋งŒ์กฑํ•˜๊ณ , **B์™€ C๊ฐ€ ๋ฌด๊ด€**ํ• ๋•Œ B๋Š” A์— ๋‹ค์น˜์ข…์† ๊ด€๊ณ„๋ผ๊ณ  ํ•˜๋ฉฐ, A->>B ๋ผ๊ณ  ํ•œ๋‹ค. 

๋‹ค์น˜์ข…์†์„ ์ œ๊ฑฐํ•˜์ง€ ์•Š์œผ๋ฉด A->>B ์ƒํ™ฉ์—์„œ C๊ฐ’์ด ์ค‘๋ณต๋ ์ˆ˜ ์žˆ๋‹ค.
์˜ˆ๋ฅผ๋“ค์–ด,

(ํšŒ์›๋ฒˆํ˜ธ)-> (์ด๋ฆ„, ์ฃผ๋ฌธ๋ฒˆํ˜ธ) ์ธ ํ…Œ์ด๋ธ”์—์„œ
(ํšŒ์›๋ฒˆํ˜ธ ->> ์ฃผ๋ฌธ๋ฒˆํ˜ธ) ์ผ๋•Œ,

ํ์Ÿˆ๋ฏธ๋ž€ ๊ณ ๊ฐ์ด ์ฑ…์„ ๋‘๋ฒˆ ์ฃผ๋ฌธํ•˜๋ฉด ํ์Ÿˆ๋ฏธ ์ด๋ฆ„์ด ๋ถˆํ•„์š”ํ•˜๊ฒŒ ๋‘๋ฒˆ ์ค‘๋ณต๋œ๋‹ค.
์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” (ํšŒ์›๋ฒˆํ˜ธ->์ด๋ฆ„), (ํšŒ์›๋ฒˆํ˜ธ->์ฃผ๋ฌธ๋ฒˆํ˜ธ)๋กœ ์ชผ๊ฐœ์ฃผ๋Š”๊ฒƒ์ด ์ œ 4์ •๊ทœํ˜•์ด๋‹ค.

5NF (์ œ 5 ์ •๊ทœํ˜•)

๋ฆด๋ ˆ์ด์…˜ R์˜ ๋ชจ๋“  ์กฐ์ธ์ข…์†์ด R์˜ ํ›„๋ณดํ‚ค๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์„ฑ๋ฆฝ๋˜๋Š” ์ •๊ทœํ˜•์ด๋‹ค.

ํ•œ ํ…Œ์ด๋ธ”์„ ๋ถ„ํ•ดํ–ˆ๋‹ค๊ฐ€ ๋ถ„ํ•ด๋œ ๊ฒฐ๊ณผ๋“ค์„ ๋‹ค์‹œ ์กฐ์ธํ•˜๋ฉด ๋‹น์—ฐํžˆ ์›๋ž˜์˜ ํ…Œ์ด๋ธ”๋กœ ๋ณต์›๋œ๋‹ค๊ณ  ๊ธฐ๋Œ€ํ•˜์ง€๋งŒ ๊ทธ๋ ‡์ง€ ๋ชปํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.
๋‹ค์‹œ ์กฐ์ธํ•˜๋ฉด ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ–ˆ๋˜ ํŠœํ”Œ๋“ค์ด ์ƒ์„ฑ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

์กฐ์ธ ์ข…์† :  ํ…Œ์ด๋ธ”์„ ๋ถ„ํ•ดํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ ์กฐ์ธํ–ˆ์„ ๋•Œ ์›๋ž˜์˜ ํ…Œ์ด๋ธ”๊ณผ ๋™์ผํ•˜๊ฒŒ ๋ณต์›๋˜๋Š” ์ œ์•ฝ์กฐ๊ฑด์ด๋‹ค.
5NF๋ฅผ ์‹ค์‹œํ•˜๋Š” ์ด์œ  ์˜ˆ์‹œ๋กœ ๋ณด๊ธฐ

"๋‹ค์‹œ ์กฐ์ธํ•˜๋ฉด ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ–ˆ๋˜ ํŠœํ”Œ๋“ค์ด ์ƒ์„ฑ๋˜๋Š” ๊ฒฝ์šฐ"

๋ฆด๋ ˆ์ด์…˜ R์ด ๋‹ค์Œ๊ณผ ๊ฐ™์„๋•Œ,

A B C
s1 p1 c2
s1 p2 c1
s2 p1 c1
s1 p1 c1

[A,B], [B,C], [A,C]๋กœ ์ชผ๊ฐœ๋ด…์‹œ๋‹ค.

A B
s1 p1
s1 p2
s2 p1
B C
p1 c2
p2 c1
p1 c1
A C
s1 c2
s1 c1
s2 c1

๋‹ค์‹œ ํ•ฉ์น˜๋ฉด

A B C
s1 p1 c2
s1 p2 c1
s2 p1 c1
s1 p1 c1
s2 p1 c2

===> ๋งˆ์ง€๋ง‰ ํŠœํ”Œ์—์„œ ์ด์ƒ๊ฐ’ ๋ฐœ๊ฒฌ!!!!

์ด๋Ÿฐ ์ƒํ™ฉ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ œ 5์ •๊ทœํ˜•์„ ์‹œํ–‰ํ•ฉ๋‹ˆ๋‹ค.


๋ฐ˜์ •๊ทœํ™”

๋ฐ˜์ •๊ทœํ™” ๊ฐœ๋…

๋ฐ˜์ •๊ทœํ™”๋ž€ ์‹œ์Šคํ…œ์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ, ๊ฐœ๋ฐœ ๋ฐ ์šด์˜์˜ ํŽธ์˜์„ฑ ๋“ฑ์„ ์œ„ํ•ด ์ •๊ทœํ™”๋œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ํ†ตํ•ฉ, ์ค‘๋ณต, ๋ถ„๋ฆฌํ•˜๋Š” ๊ณผ์ •์œผ๋กœ ์˜๋„์ ์œผ๋กœ ์ •๊ทœํ™” ์›์น™์„ ์œ„๋ฐฐํ•˜๋Š” ํ–‰์œ„์ด๋‹ค.

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

ํ…Œ์ด๋ธ” ํ†ตํ•ฉ

๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์ด ์กฐ์ธ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”๋กœ ํ•ฉ์ณ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ๋„์›€์ด ๋  ๊ฒฝ์šฐ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์—์„œ ๋ฐœ์ƒํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์ผํ•˜๊ฒŒ ์ž์ฃผ ์ฒ˜๋ฆฌ๋˜๋Š” ๊ฒฝ์šฐ, ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์„ ์ด์šฉํ•˜์—ฌ ํ•ญ์ƒ ์กฐํšŒ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ํ…Œ์ด๋ธ” ํ†ตํ•ฉ์„ ๊ณ ๋ คํ•œ๋‹ค.

ํ…Œ์ด๋ธ” ํ†ตํ•ฉ ์‹œ ๊ณ ๋ ค์‚ฌํ•ญ

  • ๊ฒ€์ƒ‰์€ ๊ฐ„ํŽธํ•˜์ง€๋งŒ, ๋ ˆ์ฝ”๋“œ ์ฆ๊ฐ€๋กœ ์ธํ•ด ์ฒ˜๋ฆฌ๋Ÿ‰์ด ์ฆ๊ฐ€ํ•œ๋‹ค.
  • ํ…Œ์ด๋ธ” ํ†ตํ•ฉ์œผ๋กœ ์ธํ•ด ์ž…๋ ฅ, ์ˆ˜์ •, ์‚ญ์ œ ๊ทœ์น™์ด ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

ํ…Œ์ด๋ธ” ๋ถ„ํ• 

ํ…Œ์ด๋ธ”์„ ์ˆ˜์ง ๋˜๋Š” ์ˆ˜ํ‰์œผ๋กœ ๋ถ„ํ• ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

  1. ์ˆ˜ํ‰ ๋ถ„ํ•  : ๋ ˆ์ฝ”๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ…Œ์ด๋ธ”์„ ๋ถ„ํ• ํ•œ๋‹ค.
  2. ์ˆ˜์ง ๋ถ„ํ•  : ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์— ์†์„ฑ์ด ๋„ˆ๋ฌด ๋งŽ์„ ๊ฒฝ์šฐ ์†์„ฑ์„ ๊ธฐ์ค€์œผ๋กœ ํ…Œ์ด๋ธ”์„ ๋ถ„ํ• ํ•œ๋‹ค.
    • ๊ฐฑ์‹ ์œ„์ฃผ์˜ ์†์„ฑ ๋ถ„ํ•  : ๋ฐ์ดํ„ฐ ๊ฐฑ์‹  ์‹œ ๋ ˆ์ฝ”๋“œ ์ž ๊ธˆ์œผ๋กœ ์ธํ•ด ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๊ฐฑ์‹ ์ด ์ž์ฃผ ์ผ์–ด๋‚˜๋Š” ์†์„ฑ๋“ค์„ ์ˆ˜์ง ๋ถ„ํ• ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.
    • ์ž์ฃผ ์กฐํšŒ๋˜๋Š” ์†์„ฑ ๋ถ„ํ•  : ํ…Œ์ด๋ธ”์—์„œ ์ž์ฃผ ์กฐํšŒ๋˜๋Š” ์†์„ฑ์ด ๊ทนํžˆ ์ผ๋ถ€์ผ ๊ฒฝ์šฐ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์†์„ฑ๋“ค์„ ์ˆ˜์ง๋ถ„ํ• ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.
    • ํฌ๊ธฐ๊ฐ€ ํฐ ์†์„ฑ ๋ถ„ํ•  : ์ด๋ฏธ์ง€, 2GB ์ด์ƒ ์ €์žฅ๋  ์ˆ˜ ์žˆ๋Š” ํ…์ŠคํŠธ ํ˜•์‹์œผ๋กœ ๋œ ์†์„ฑ๋“ค์„ ์ˆ˜์ง๋ถ„ํ• ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.
    • ๋ณด์•ˆ์„ ์ ์šฉํ•ด์•ผ ํ•˜๋Š” ์†์„ฑ ๋ถ„ํ•  : ํ…Œ์ด๋ธ” ๋‚ด์˜ ํŠน์ • ์†์„ฑ์— ๋Œ€ํ•ด ๋ณด์•ˆ์„ ์ ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋ณด์•ˆ์„ ์ ์šฉํ•ด์•ผ ํ•˜๋Š” ์†์„ฑ๋“ค์„ ์ˆ˜์ง๋ถ„ํ•  ํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.

ํ…Œ์ด๋ธ” ๋ถ„ํ•  ์‹œ ๊ณ ๋ ค์‚ฌํ•ญ

  • ๊ธฐ๋ณธํ‚ค์˜ ์œ ์ผ์„ฑ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์›Œ์ง„๋‹ค.
  • ๋ฐ์ดํ„ฐ ์–‘์ด ์ ๊ฑฐ๋‚˜ ์‚ฌ์šฉ ๋นˆ๋„๊ฐ€ ๋‚ฎ์€ ๊ฒฝ์šฐ ํ…Œ์ด๋ธ” ๋ถ„ํ• ์ด ํ•„์š”ํ•œ ์ง€๋ฅผ ๊ณ ๋ คํ•ด์•ผํ•œ๋‹ค.
  • ๋ถ„ํ• ๋œ ํ…Œ์ด๋ธ”๋กœ ์ธํ•ด ์ˆ˜ํ–‰ ์†๋„๊ฐ€ ๋Š๋ ค์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฒ€์ƒ‰์— ์ค‘์ ์„ ๋‘์–ด ํ…Œ์ด๋ธ” ๋ถ„ํ•  ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ด์•ผ ํ•œ๋‹ค.

์ค‘๋ณต ํ…Œ์ด๋ธ” ์ถ”๊ฐ€

์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์„œ๋ฒ„์— ์ €์žฅ๋œ ํ…Œ์ด๋ธ”์„ ์ด์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ค‘๋ณต ํ…Œ์ด๋ธ”์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ž‘์—…์˜ ํšจ์œจ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

  1. ์ค‘๋ณต ํ…Œ์ด๋ธ”์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ

    • ์ •๊ทœํ™”๋กœ ์ธํ•ด ์ˆ˜ํ–‰ ์†๋„๊ฐ€ ๋Š๋ ค์ง€๋Š” ๊ฒฝ์šฐ
    • ๋งŽ์€ ๋ฒ”์œ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ž์ฃผ ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ
    • ํŠน์ • ๋ฒ”์œ„์˜ ๋ฐ์ดํ„ฐ๋งŒ ์ž์ฃผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ
    • ์ฒ˜๋ฆฌ ๋ฒ”์œ„๋ฅผ ์ค„์ด์ง€ ์•Š๊ณ ๋Š” ์ˆ˜ํ–‰ ์†๋„๋ฅผ ๊ฐœ์„ ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ
  2. ์ค‘๋ณต ํ…Œ์ด๋ธ”์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•

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

์ค‘๋ณต ์†์„ฑ ์ถ”๊ฐ€

์กฐ์ธํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ๊ฒฝ๋กœ๋ฅผ ๋‹จ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์†์„ฑ์„ ํ•˜๋‚˜ ๋” ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ค‘๋ณต ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ ํ™•๋ณด๊ฐ€ ์–ด๋ ต๊ณ , ๋””์Šคํฌ ๊ณต๊ฐ„์ด ์ถ”๊ฐ€๋กœ ํ•„์š”ํ•˜๋‹ค.

  1. ์ค‘๋ณต ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ

    • ์กฐ์ธ์ด ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ์†์„ฑ์ธ ๊ฒฝ์šฐ
    • ์ ‘๊ทผ ๊ฒฝ๋กœ๊ฐ€ ๋ณต์žกํ•œ ์†์„ฑ์ธ ๊ฒฝ์šฐ
    • ์•ก์„ธ์Šค ์กฐ๊ฑด์œผ๋กœ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์†์„ฑ์ธ ๊ฒฝ์šฐ
    • ๊ธฐ๋ณธํ‚ค์˜ ํ˜•ํƒœ๊ฐ€ ์ ์ ˆํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์†์„ฑ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๊ฒฝ์šฐ
  2. ์ค‘๋ณต ์†์„ฑ ์ถ”๊ฐ€ ์‹œ ๊ณ ๋ ค ์‚ฌํ•ญ

    • ํ…Œ์ด๋ธ” ์ค‘๋ณต๊ณผ ์†์„ฑ์˜ ์ค‘๋ณต์„ ๊ณ ๋ คํ•œ๋‹ค.
    • ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ๋ฐ ๋ฌด๊ฒฐ์„ฑ์— ์œ ์˜ํ•ด์•ผ ํ•œ๋‹ค.
    • ์ €์žฅ๊ณต๊ฐ„์˜ ์ง€๋‚˜์นœ ๋‚ญ๋น„๋ฅผ ๊ณ ๋ คํ•œ๋‹ค.

์ธ๋ฑ์Šค (Index)

์•„๋ž˜์˜ ์ž๋ฃŒ์—์„œ ์ž์„ธํ•œ ์„ค๋ช…์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.


ํŠธ๋žœ์žญ์…˜(Transaction)๊ณผ ๊ต์ฐฉ์ƒํƒœ

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

ACID

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

์ฃผ์˜์‚ฌํ•ญ

Isolation(๊ณ ๋ฆฝ์„ฑ)์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋ฌด์ฐจ๋ณ„์ ์œผ๋กœ Lock์„ ๊ฑธ๋‹ค๋ณด๋ฉด ๋Œ€๊ธฐ์‹œ๊ฐ„์ด ๋งค์šฐ ๊ธธ์–ด์ง€๋ฏ€๋กœ ํŠธ๋žœ์žญ์…˜์€ ์ตœ์†Œํ•œ์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.

ํŠธ๋žœ์žญ์…˜ ์ƒํƒœ

image

  • Active : ํŠธ๋žœ์žญ์…˜์ด ์‹คํ–‰์ค‘์ธ ์ƒํƒœ(SQL ์‹คํ–‰)
  • Parital Commit : ํŠธ๋žœ์žญ์…˜์˜ ๋งˆ์ง€๋ง‰ ์—ฐ์‚ฐ๊นŒ์ง€ ์‹คํ–‰ํ–ˆ์ง€๋งŒ, commit ์—ฐ์‚ฐ์ด ์‹คํ–‰๋˜๊ธฐ ์ง์ „์˜ ์ƒํƒœ
  • Commited : ํŠธ๋žœ์žญ์…˜์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ข…๋ฃŒ๋˜๊ณ  commit ์—ฐ์‚ฐ๊นŒ์ง€ ์‹คํ–‰ ์™„๋ฃŒ๋œ ์ƒํƒœ
  • Failed : ํŠธ๋žœ์žญ์…˜ ์‹คํ–‰์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ์ƒํƒœ
  • Aborted: ํŠธ๋žœ์žญ์…˜์ด ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์–ด Rollback ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ ์ƒํƒœ
  1. Commit : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์˜ ์—ฐ์‚ฐ์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์–ด ์—ฐ์‚ฐ์— ์˜ํ•œ ์ˆ˜์ • ๋‚ด์šฉ์„ ์ง€์†์ ์œผ๋กœ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด์ด๋‹ค.
  2. Rollback : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์˜ ์—ฐ์‚ฐ์ด ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜ ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰์ด ๋˜์—ˆ๋‹ค ํ•˜๋”๋ผ๋„ ์ˆ˜ํ–‰๋˜๊ธฐ ์ด์ „์˜ ์ƒํƒœ๋กœ ๋˜๋Œ๋ฆฌ๊ธฐ ์œ„ํ•ด ์—ฐ์‚ฐ ๋‚ด์šฉ์„ ์ทจ์†Œํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด์ด๋‹ค.

ํŠธ๋žœ์žญ์…˜์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋“ค

Dirty Read Problem

ํ•œ ํŠธ๋žœ์žญ์…˜ ์ง„ํ–‰ ์ค‘์— ๋ณ€๊ฒฝํ•œ ๊ฐ’์„ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ ์ฝ์„ ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค. ์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ์ƒํƒœ์˜ ํŠธ๋žœ์žญ์…˜์„ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ ์ฝ์„ ์ˆ˜ ์žˆ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.

Non-repeatable Read Problem

ํ•œ ํŠธ๋žœ์žญ์…˜์—์„œ ๊ฐ™์€ ๊ฐ’์„ ๋‘ ๋ฒˆ ์ด์ƒ ์ฝ์—ˆ์„ ๋•Œ ๊ทธ ๊ฐ’์ด ๋‹ค๋ฅธ ๊ฒฝ์šฐ๋ฅผ ๋งํ•œ๋‹ค. ํ•œ ํŠธ๋žœ์žญ์…˜ ๋„์ค‘ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์ปค๋ฐ‹๋˜๋ฉด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ด๋‹ค.

Phantom Read Problem

ํ•œ ํŠธ๋žœ์žญ์…˜์—์„œ ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฌธ์„ ๋‘ ๋ฒˆ ์ด์ƒ ์‹คํ–‰ํ–ˆ์„ ๋•Œ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๊ฐ€ ์กฐํšŒ๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งํ•œ๋‹ค. A ํŠธ๋žœ์žญ์…˜ ๋„์ค‘ B ํŠธ๋žœ์žญ์…˜์—์„œ update ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ์ปค๋ฐ‹ํ•˜๋”๋ผ๋„ A ํŠธ๋žœ์žญ์…˜์—์„œ ๊ทธ ๊ฒฐ๊ณผ๋Š” ๋ณผ ์ˆ˜ ์—†์ง€๋งŒ, A ํŠธ๋žœ์žญ์…˜ ๋„์ค‘ B ํŠธ๋žœ์žญ์…˜์—์„œ insert ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•  ๊ฒฝ์šฐ A ํŠธ๋žœ์žญ์…˜์—์„œ ์ฒ˜์Œ์— ์•ˆ ๋ณด์˜€๋˜ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๊ฐ€ ์กฐํšŒ๋  ์ˆ˜ ์žˆ๋‹ค.


NoSQL

์•„๋ž˜์˜ ์ž๋ฃŒ์—์„œ ์ž์„ธํ•œ ์„ค๋ช…์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

  • ์ž‘์„ฑ์ž ์ด์„ธ๋ช… | NoSQL

์งˆ์˜์‘๋‹ต

์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต์„ ๋งํ•ด๋ณด๋ฉฐ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ ๊ฒ€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํด๋ฆญํ•˜๋ฉด ๋‹ต๋ณ€ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์™œ ์‚ฌ์šฉํ•˜๋‚˜์š”?

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

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์„ฑ๋Šฅ์„ ์ข‹์•„์ง€๊ฒŒ ํ•˜๋ ค๋ฉด ์–ด๋–ค ๋ฐฉ๋ฒ•๋“ค์ด ์žˆ์„๊นŒ์š”?

DB์„ค๊ณ„ ํŠœ๋‹

  • ํ…Œ์ด๋ธ” ๋ถ„ํ•ด, ํ†ตํ•ฉ
  • ํ…Œ์ด๋ธ” ์ •๊ทœํ™”
  • ์ ์ ˆํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์„ค์ •

DBMS ํŠœ๋‹

  • I/O ์ตœ์†Œํ™”
  • Commit ์ฃผ๊ธฐ ์กฐ์ •
  • Middleware ๊ธฐ๋Šฅ๊ณผ ์—ฐ๋™

SQL ํŠœ๋‹

  • Join ๋ฐฉ์‹ ์กฐ์ •
  • Index ํ™œ์šฉ


๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„์˜ ๋ชฉํ‘œ๋Š” ๋ฌด์—‡์ผ๊นŒ์š”?

๋ชจ๋“  ๊ฐ๊ฐ์˜ ๋ฆด๋ ˆ์ด์…˜์ด 3NF์™€ BCNF๋ฅผ ์ดํ–‰ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ

์ •๊ทœํ™”๋Š” ์™œ ํ• ๊นŒ์š”?

๋ฐ์ดํ„ฐ ์ƒ์„ฑ, ์ˆ˜์ •, ์‚ญ์ œ์‹œ ๋ฐ์ดํ„ฐ ์ค‘๋ณต, ๋ถˆ์ผ์น˜ ๋“ฑ ๊ฐฑ์‹  ์ด์ƒ์„ ์—†์• ๊ธฐ ์œ„ํ•ด์„œ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์„ฑ๋Šฅ์„ ๋†’์ด๊ธฐ ์œ„ํ•œ ์ด์œ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. (ํ…Œ์ด๋ธ”์„ ๋ถ„ํ•ดํ•ด์„œ ์ค‘๋ณต๋˜๋Š” ์—ด์„ ์ œ๊ฑฐํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ˆ์•ฝํ• ์ˆ˜ ์žˆ์Œ)

์ œ1 ์ •๊ทœํ˜•์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ •๊ทœํ™”์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ตœ์†Œ ์ •๊ทœํ˜•์ž…๋‹ˆ๋‹ค. ์ œ1 ์ •๊ทœํ˜•์—์„œ ์–ด๋–ค ์ •๊ทœํ™” ๊ณผ์ •์„ ์ง„ํ–‰ํ•˜๋Š”์ง€ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

ex1) ํ•ธ๋“œํฐ ๋ฒˆํ˜ธ, ์ „ํ™” ๋ฒˆํ˜ธ๋ฅผ ๋™์ผํ•œ ์นผ๋Ÿผ์— ์ค‘๋ณต๋˜์–ด ๋ฐ›๋Š” ๊ฒฝ์šฐ(: 555-403-1659, 02-2651-4656)๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
ex2) ex1์— ๋Œ€ํ•œ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ „ํ™”๋ฒˆํ˜ธ ํ–‰์„ ๋‘๋Š” ๊ฒƒ(๋™์ผํ•œ ๋„๋ฉ”์ธ๊ณผ ์˜๋ฏธ๋ฅผ ๋‘๋Š” ๊ฒƒ์€ ์ตœ์†Œ ์ •๊ทœํ˜•์— ์œ„๋ฐฐ)์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.
์œ„์™€ ๊ฐ™์€ ์ •๊ทœํ™” ๊ณผ์ •์„ ๊ฑฐ์ณ ์ œ1 ์ •๊ทœํ˜•์ด ๋ฉ๋‹ˆ๋‹ค.

์ œ3 ์ •๊ทœํ˜•์„ '์ถ”์ด ์ข…์†' or 'ํ•จ์ˆ˜์  ์ดํ–‰ ์ข…์†' ๋‹จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋‚˜์š”?

ํ…Œ์ด๋ธ”์ด ์ œ2 ์ •๊ทœํ˜•์„ ๋งŒ์กฑํ•˜๋ฉฐ ๋ชจ๋“  ์†์„ฑ์ด ๊ธฐ๋ณธ ํ‚ค์—๋งŒ ์˜์กดํ•˜์—ฌ ๋‹ค๋ฅธ ํ‚ค์— ์˜์กดํ•˜์ง€ ์•Š๋Š” ์ •๊ทœํ˜•์„ ์ œ3 ์ •๊ทœํ˜•์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
๋งŒ์•ฝ ์˜์กดํ•œ๋‹ค๋ฉด ํ•จ์ˆ˜์  ์ดํ–‰ ์ข…์†์ด ์ผ์–ด๋‚˜์„œ A->B->C ์ˆœํ™˜์ ์œผ๋กœ ๋ชจ๋“  ํด๋ž˜์Šค๊ฐ€ ์˜์กดํ•˜๊ฒŒ ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ์ธ์ •๋ณด์— ๊ด€ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ˆ˜์ • ์ด์ƒ์ด ์ผ์–ด๋‚˜ select๋กœ ์ •ํ™•ํ•œ ์ •๋ณด ํŒŒ์•…์ด ๋˜์ง€ ์•Š์•„ ์ •๊ทœํ™”๋ฅผ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด์ „๋ณด๋‹ค ํ›จ์”ฌ ๋Š๋ ค์กŒ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค. ์ง€์›์ž๋Š” ๋ฐ˜์ •๊ทœํ™”๋ฅผ ์ง„ํ–‰ํ• ๊ฒƒ์ž…๋‹ˆ๊นŒ?

๋ฐ˜์ •๊ทœํ™”๋Š” ์ง„ํ–‰ํ•˜๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค. ๊ฐœ์ธ์ •๋ณด์— ๊ด€ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ์„œ ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ๊ณผ ๋ณด์•ˆ์ด ์ œ์ผ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
๋งŒ์•ฝ ๋ฐ˜์ •๊ทœํ™”๋กœ ์ธํ•ด '์‚ฝ์ž…, ์‚ญ์ œ, ์ˆ˜์ • ์ด์ƒ'์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์ด ๊นจ์งˆ ์ˆ˜ ์žˆ๊ณ  ๋”๊ตฐ๋‹ค๋‚˜ ๊ฐœ์ธ์ •๋ณด๋ผ์„œ ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์ด ๊นจ์ง€๋ฉด ๋ณต์›์— ํฐ ์–ด๋ ค์›€์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐ˜์ •๊ทœํ™”๊ฐ€ ์•„๋‹Œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŠœ๋‹, ์žฌ๊ตฌ์„ฑ์ด ํ•„์š”ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

์ •๊ทœํ™” ์ž‘์—… ์ดํ›„, ์•Œ๋งž๊ฒŒ ์ •๊ทœํ™”๋ฅผ ํ–ˆ๋Š”์ง€ ๊ฒ€์ฆํ•˜๊ณ  ์‹ถ์„๋• ์–ด๋–ป๊ฒŒ ํ• ๊นŒ์š”?

ํ…Œ์ด๋ธ” ๋ถ„ํ•ด ์ดํ›„ ๋ฌด์†์‹ค ์กฐ์ธ์„ ๊ฒ€์‚ฌํ•ด๋ด…๋‹ˆ๋‹ค.
ํ…Œ์ด๋ธ” ๋ถ„ํ•ด ์ดํ›„ ํ•จ์ˆ˜์˜ ์ข…์†์„ฑ์ด ๋ณด์กด๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.


Index๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋ฐ์ดํ„ฐ ๋ ˆ์ฝ”๋“œ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด <ํ‚ค ๊ฐ’, ํฌ์ธํ„ฐ> ์Œ์œผ๋กœ ๊ตฌ์„ฑ๋˜๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ.

Index์˜ ํŠน์ง•์— ๋Œ€ํ•ด ์•„๋Š”๋Œ€๋กœ ๋งํ•ด๋ณด์„ธ์š”.

  1. ์ธ๋ฑ์Šค๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ ๋ฌผ๋ฆฌ์  ๊ตฌ์กฐ์™€ ๋ฐ€์ ‘ํ•œ ๊ด€๊ณ„์— ์žˆ๋‹ค.
  2. ์ธ๋ฑ์Šค๋Š” ๋ ˆ์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋œ ๋ฌผ๋ฆฌ์  ๊ตฌ์กฐ์— ์ ‘๊ทผ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•œ๋‹ค.
  3. ํŒŒ์ผ์˜ ๋ ˆ์ฝ”๋“œ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ๋น ๋ฅด๊ฒŒ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  4. ๋ ˆ์ฝ”๋“œ์˜ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ์ˆ˜์‹œ๋กœ ์ผ์–ด๋‚˜๋Š” ๊ฒฝ์šฐ, ์ธ๋ฑ์Šค์˜ ๊ฐœ์ˆ˜๋ฅผ ์ตœ์†Œ๋กœ ํ•˜๋Š”๊ฒƒ์ด ํšจ์œจ์ ์ด๋‹ค.
  5. ์ธ๋ฑ์Šค๊ฐ€ ์—†์œผ๋ฉด ํŠน์ •ํ•œ ๊ฐ’์„ ์ฐพ๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€๋ฅผ ํ™•์ธํ•˜๋Š” TABLE SCAN์ด ๋ฐœ์ƒํ•œ๋‹ค.
  6. ๊ธฐ๋ณธํ‚ค๋ฅผ ์œ„ํ•œ ์ธ๋ฑ์Šค๋ฅผ ๊ธฐ๋ณธ ์ธ๋ฑ์Šค๋ผ ํ•˜๊ณ , ๊ธฐ๋ณธ ์ธ๋ฑ์Šค๊ฐ€ ์•„๋‹Œ ์ธ๋ฑ์Šค๋ฅผ ๋ณด์กฐ ์ธ๋ฑ์Šค๋ผ ํ•œ๋‹ค.
  7. ๋ ˆ์ฝ”๋“œ์˜ ๋ฌผ๋ฆฌ์  ์ˆœ์„œ๊ฐ€ ์ธ๋ฑ์Šค์˜ ์—”ํŠธ๋ฆฌ ์ˆœ์„œ์™€ ์ผ์น˜ํ•˜๊ฒŒ ์œ ์ง€๋˜๋„๋ก ๊ตฌ์„ฑ๋˜๋Š” ์ธ๋ฑ์Šค๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ๋“œ ์ธ๋ฑ์Šค๋ผ๊ณ  ํ•œ๋‹ค.

Index ํ…Œ์ด๋ธ” ์„ ์ • ๊ธฐ์ค€์— ๋Œ€ํ•ด ๋งํ•ด์ฃผ์„ธ์š”

๋žœ๋ค ์•ก์„ธ์Šค๊ฐ€ ๋นˆ๋ฒˆํ•˜๊ฑฐ๋‚˜, ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๊ณผ ์ˆœ์ฐจ์  ์กฐ์ธ์ด ๋ฐœ์ƒ๋˜๋Š” ํ…Œ์ด๋ธ” ํ˜น์€ ํŠธ๊ฒ†ใ…‡ ๋ฒ”์œ„๋‚˜ ์ˆœ์„œ๋กœ ๋ฐ์ดํ„ฐ ์กฐํšŒ๊ฐ€ ํ•„์š”ํ•œ ํ…Œ์ด๋ธ”์— ์ธ๋ฑ์Šค๋ฅผ ์ ์šฉํ•œ๋‹ค.

Index๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์— ๋Œ€ํ•ด์„œ ๋ง์”€ํ•ด์ฃผ์„ธ์š”

Index๋Š” ๋Œ€ํ‘œ์ ์œผ๋กœ ํ•ด์‹œ ํ…Œ์ด๋ธ”, B+ ํŠธ๋ฆฌ ๋“ฑ์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

  1. ํ•ด์‹œ ํ…Œ์ด๋ธ”

ํ•ด์‹œํ…Œ์ด๋ธ”๋กœ ๊ตฌํ˜„ํ•  ๊ฒฝ์šฐ ๊ฒ€์ƒ‰์— ๋Œ€ํ•˜์—ฌ ์‹œ๊ฐ„๋ณต์žก๋„ O(1)์„ ๊ฐ–๋Š”๋‹ค. ์ฆ‰, ๋น ๋ฅธ ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
ํ•˜์ง€๋งŒ ํ•ด์‹œ๋Š” ๋“ฑํ˜ธ(=) ์—ฐ์‚ฐ์ž์— ์ ํ•ฉํ•˜๊ณ  ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ž์ฃผ ์ผ์–ด๋‚˜๋Š” ๋ถ€๋“ฑํ˜ธ(<, >) ์—ฐ์‚ฐ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.

ํ•ด์‹œ๊ฐ€ ๋ˆˆ์‚ฌํƒœ ํšจ๊ณผ(avalanche effect) ๋ฅผ ๊ฐ–๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

  1. B+ ํŠธ๋ฆฌ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-05-16 แ„‹แ…ฉแ„’แ…ฎ 5 32 45
์ถœ์ฒ˜: https://blog.jcole.us/2013/01/10/btree-index-structures-in-innodb/

๋ฆฌํ”„ ๋…ธ๋“œ์—๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์•„๋‘ ์œผ๋กœ ๋” ๋งŽ์€ key ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ์ด๋‹ค.
๋‚˜๋จธ์ง€ ๋…ธ๋“œ๋“ค์€ ์›ํ•˜๋Š” ๋ฆฌํ”„๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ์•ˆ๋‚ดํ•˜๋Š” ์ธ๋ฑ์Šค๋งŒ ์ œ๊ณตํ•œ๋‹ค.

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

๊ฒ€์ƒ‰์— ์žˆ์–ด ์‹œ๊ฐ„๋ณต์žก๋„ O(log2โ€Šn) ์„ ๊ฐ–๋Š”๋‹ค.

MULTI BLOCK READ๊ฐ€ ๋ฌด์—‡์ด๋ฉฐ, ์ธ๋ฑ์Šค ํ…Œ์ด๋ธ” ์„ ์ •๊ธฐ์ค€๊ณผ ์—ฐ๊ด€์ง€์–ด ์„ค๋ช…ํ•ด๋ณด์„ธ์š”.

ํ…Œ์ด๋ธ” ์•ก์„ธ์Šค์‹œ ๋ฉ”๋ชจ๋ฆฌ์— ํ•œ๋ฒˆ์— ์ฝ์–ด ๋“ค์ผ ์ˆ˜ ์žˆ๋Š” ๋ธ”๋ก์˜ ์ˆ˜๋ฅผ MULTI BLOCK READ๋ผ๊ณ  ํ•˜๋ฉฐ, MULTI BLOCK READ์ˆ˜์— ๋”ฐ๋ผ ํŒ๋‹จํ•˜์—ฌ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ• ์ง€ ์ •ํ•œ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด MULTI BLOCK READ๊ฐ€ 16์ด๋ฉด, ํ…Œ์ด๋ธ”์˜ ํฌ๊ธฐ๊ฐ€ 16๋ธ”๋ก ์ด์ƒ์ผ ๊ฒฝ์šฐ ์ธ๋ฑ์Šค๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

์ธ๋ฑ์Šค ์ปฌ๋Ÿผ ์„ ์ • ๊ธฐ์ค€์— ๋Œ€ํ•ด ์•„๋Š”๋Œ€๋กœ ๋งํ•ด๋ณด์„ธ์š”.

๊ฐ€๋Šฅํ•œ ํ•œ ์ˆ˜์ •์ด ๋นˆ๋ฒˆํ•˜์ง€ ์•Š๊ณ , ORDER BY/ GROUP BY/ UNION์ด ๋นˆ๋ฒˆํ•œ ์ปฌ๋Ÿผ์„ ์„ ์ •ํ•œ๋‹ค. ํ˜น์€ ๋ถ„ํฌ๋„๊ฐ€ 10% ~ 15% ์ด๋‚ด์ธ ์ปฌ๋Ÿผ์„ ์„ ์ •ํ•œ๋‹ค.

์ธ๋ฑ์Šค ์„ค๊ณ„์‹œ, ์ธ๋ฑ์Šค์™€ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ๊ณต๊ฐ„์ด ๋ถ„๋ฆฌ๋˜๋„๋ก ์„ค๊ณ„ํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค.

๋ฐ์ดํ„ฐ ์ €์žฅ์‹œ ์ธ๋ฑ์Šค์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์•„ ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์ €์žฅ๊ณต๊ฐ„์„ ๋ถ„๋ฆฌํ•˜์—ฌ ์„ค๊ณ„ํ•œ๋‹ค.

๋น„ํŠธ๋งต ์ธ๋ฑ์Šค์˜ ์žฅ์ ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

๋ฐ์ดํ„ฐ๊ฐ€ Bit๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด ํšจ์œจ์ ์ธ ๋…ผ๋ฆฌ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅํ•˜๊ณ  ์ €์žฅ๊ณต๊ฐ„์ด ์ž‘๋‹ค.


NoSQL์˜ ์žฅ์ ์€ ๋ฌด์—‡์ธ๊ฐ€?

JOIN ์ฒ˜๋ฆฌ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์Šค์ผ€์ผ ์•„์›ƒ์„ ํ†ตํ•œ ๋…ธ๋“œํ™•์žฅ์ด ์šฉ์ดํ•˜๋‹ค. ๋˜ํ•œ ๊ฐ€๋ณ€์ ์ธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์–ด ์œ ์—ฐ์„ฑ์ด ๋†’๋‹ค.

์–ด๋–ค ์ƒํ™ฉ์—์„œ NoSQL์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์ด ์ ํ•ฉํ•œ๊ฐ€?

๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ ํ˜น์€ ๋งŽ์€ ์–‘์˜ ๋กœ๊ทธ๋ฅผ ์ˆ˜์ง‘ํ•ด์•ผํ•  ๋•Œ ์ ํ•ฉํ•˜๋‹ค.

NoSQL์—์„œ ์ •๊ทœํ™”๊ฐ€ ํ•„์š”ํ• ๊นŒ?

NoSQL์—์„œ๋Š” ์ •๊ทœํ™” ๊ณผ์ •์ด ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค.
RDB์™€ ๋‹ฌ๋ฆฌ NoSQL์—์„œ๋Š” ์ฟผ๋ฆฌ์˜ ํšจ์œจ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์˜คํžˆ๋ ค ๋น„์ •๊ทœํ™”ํ•œ๋‹ค.

์ •๊ทœํ™”๋Š” ์ค‘๋ณต์„ ์ค„์ด์ง€๋งŒ ๊ทธ๋งŒํผ ๋‹ค์ˆ˜์˜ JOIN ์„ ์š”๊ตฌํ•˜๋Š” ๋“ฑ ์„ฑ๋Šฅ์— ์•…์˜ํ–ฅ์„ ๋ฏธ์น ์ˆ˜๋„ ์žˆ๋‹ค.
NoSQL์—์„œ๋Š” ์˜๋„์ ์œผ๋กœ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ์ ์ธ ์ด์ ์„ ์–ป๋Š”๋‹ค.


ํŠธ๋žœ์žญ์…˜์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ ์™œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ๋ง์”€ํ•ด์ฃผ์„ธ์š”.

  • ํ‚ค์›Œ๋“œ 1: ์™„์ „์„ฑ์„ ๋ณด์žฅํ•ด ์ฃผ๋Š” ๊ฒƒ
  • ํ‚ค์›Œ๋“œ 2: ์ž‘์—…์˜ ๋…ผ๋ฆฌ์  ๋‹จ์œ„

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

ํŠธ๋žœ์žญ์…˜์€ ACID๋ผ๋Š” 4๊ฐ€์ง€ ํŠน์„ฑ์„ ๋งŒ์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด 4๊ฐ€์ง€ ํŠน์„ฑ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ๋ง์”€ํ•ด์ฃผ์„ธ์š”.

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

A ๊ณ„์ขŒ์—์„œ B๊ณ„์ขŒ๋กœ ์ผ์ • ๊ธˆ์•ก์„ ์ด์ฒดํ•˜๋Š” ์ž‘์—…์— ๋Œ€ํ•ด ์ƒ๊ฐํ•ด๋ด…์‹œ๋‹ค. ์ด ๋•Œ ํŠธ๋žœ์žญ์…˜์€ ์–ด๋–ป๊ฒŒ ์ •์˜ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

(์˜ˆ์‹œ) A ๊ณ„์ขŒ์˜ ์ž”์•ก ํ™•์ธ SELECT๋ฌธ + A ๊ณ„์ขŒ์˜ ๊ธˆ์•ก ์ฐจ๊ฐ UPDATE๋ฌธ + B ๊ณ„์ขŒ์˜ ๊ธˆ์•ก ์ถ”๊ฐ€ UPDATE๋ฌธ์œผ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

(์œ„ ์งˆ๋ฌธ๊ณผ ์—ฐ๊ฒฐ) ๋ฐฉ๊ธˆ ๋ง์”€ํ•ด์ฃผ์‹  ์ฟผ๋ฆฌ๋ฌธ์— ๋Œ€ํ•ด์„œ Commit ์—ฐ์‚ฐ๊ณผ Rollback ์—ฐ์‚ฐ์ด ์ผ์–ด๋‚˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ฐ๊ฐ ์–ด๋–ค ์ƒํ™ฉ์ผ๊นŒ์š”?

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

ํŠธ๋žœ์žญ์…˜์˜ Commit ์—ฐ์‚ฐ์— ๋Œ€ํ•ด์„œ ํŠธ๋žœ์žญ์…˜์˜ ์ƒํƒœ๋ฅผ ํ†ตํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

ํŠธ๋žœ์žญ์…˜์ด ์‹œ์ž‘๋˜๋ฉด ํ™œ๋™(Active) ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŠธ๋žœ์žญ์…˜์— ํฌํ•จ๋œ ๋ชจ๋“  ์—ฐ์‚ฐ์ด ์‹คํ–‰๋˜๋ฉด ๋ถ€๋ถ„ ์™„๋ฃŒ(Partially Commited) ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Commit ์—ฐ์‚ฐ์„ ์‹คํ–‰ํ•œ ํ›„, ์™„๋ฃŒ(Commited) ์ƒํƒœ๊ฐ€ ๋˜์–ด ํŠธ๋žœ์žญ์…˜์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ข…๋ฃŒ๋˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

ํŠธ๋žœ์žญ์…˜์˜ Rollback ์—ฐ์‚ฐ์— ๋Œ€ํ•ด์„œ ํŠธ๋žœ์žญ์…˜์˜ ์ƒํƒœ๋ฅผ ํ†ตํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

ํŠธ๋žœ์žญ์…˜์ด ์‹œ์ž‘๋˜๋ฉด ํ™œ๋™(Active) ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŠธ๋žœ์žญ์…˜ ์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์ค‘๋‹จ๋˜๋ฉด ์‹คํŒจ(Failed) ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Rollback ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ ํ›„, ์ฒ ํšŒ(Aborted) ์ƒํƒœ๊ฐ€ ๋˜์–ด ํŠธ๋žœ์žญ์…˜์ด ์ข…๋ฃŒ๋˜๊ณ  ํŠธ๋žœ์žญ์…˜ ์‹คํ–‰ ์ด์ „ ๋ฐ์ดํ„ฐ ์ƒํƒœ๋กœ ๋Œ์•„๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

Partial Commited ์ƒํƒœ์—์„œ Commited ์ƒํƒœ๊ฐ€ ๋˜๋Š” ๊ณผ์ •์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

Commit ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด Partial Commited ์ƒํƒœ๊ฐ€ ๋˜๋Š”๋ฐ, ์ด ๋•Œ Commit ์—ฐ์‚ฐ์„ ๋ฌธ์ œ ์—†์ด ์ˆ˜ํ–‰ํ•˜๋ฉด Commited ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Commit ์—ฐ์‚ฐ ์ˆ˜ํ–‰ ์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด Failed ์ƒํƒœ๋กœ ๋Œ์•„๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€(transaction isolation level)์ด๋ž€ ๋ฌด์—‡์ด๋ฉฐ, ์™œ ํ•„์š”ํ•œ๊ฐ€์š”?

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

Isolation level์˜ ์ข…๋ฅ˜ ์ค‘ ํ•œ ๊ฐ€์ง€๋ฅผ ์„ค๋ช…ํ•ด์ฃผ์‹œ๊ณ , ์ด ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ํ˜„์ƒ๋„ ํ•จ๊ป˜ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

  • Read Uncommited : Dirty Read, Non-Repeatable Read, Phantom Read
  • Read Committed : Non-Repeatable Read, Phantom Read
  • Repeatable Read : Phantom Read
  • Serializable : ์™„๋ฒฝํ•œ ์ผ๊ด€์„ฑ ๋ณด์žฅ


ํŠธ๋žœ์žญ์…˜์„ ๋ณ‘ํ–‰ ์ œ์–ด์—†์ด ๋ณ‘ํ–‰์œผ๋กœ DB์— ๋™์‹œ์— ์ ‘๊ทผ ํ•  ๊ฒฝ์šฐ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ ์ด ๋ฌด์—‡์ธ๊ฐ€์š”?

  1. ๊ฐฑ์‹  ๋ถ„์‹ค : ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜์—ฌ ๊ฐฑ์‹  ํ•  ๋•Œ ๊ฐฑ์‹  ๊ฒฐ๊ณผ์˜ ์ผ๋ถ€๊ฐ€ ์‚ฌ๋ผ์ง

  2. ๋ชจ์ˆœ์„ฑ : ๋™์‹œ์— ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐฑ์‹ ํ•  ๋•Œ, ๋ฐ์ดํ„ฐ์˜ ์ƒํ˜ธ ๋ถˆ์ผ์น˜ ๋ฐœ์ƒ

  3. ์—ฐ์‡„ ๋ณต๊ท€ : ํŠธ๋žœ์žญ์…˜ ํ•˜๋‚˜์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๋กค๋ฐฑ์‹œ ๋‚˜๋จธ์ง€ ํŠธ๋žœ์žญ์…˜๋„ ๋‹ค๊ฐ™์ด ๋กค๋ฐฑ๋จ

๊ต์ฐฉ์ƒํƒœ๊ฐ€ ์ผ์–ด๋‚˜๊ธฐ์œ„ํ•œ ๋„ค๊ฐ€์ง€ ์กฐ๊ฑด์„ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”

  1. Mutual Exclusion : ์ž์›์„ ๊ณต์œ ํ•˜์ง€ ์•Š์Œ, ์ž์›์„ ๊ณต์œ ํ•œ๋‹ค๋ฉด ์„œ๋กœ ๊ธฐ๋‹ค๋ฆด ํ•„์š”๊ฐ€ ์—†์Œ.

  2. Hold & Wait : ์ž์›์„ ์†Œ์œ ํ•˜๊ณ  ์žˆ์œผ๋ฉด์„œ ๋‹ค๋ฅธ ์ž์›๋„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ

  3. No Preemption : ์ž์›์„ ํ•œ๋ฒˆ ์–ป์œผ๋ฉด ์™„์ „ ์ข…๋ฃŒ๊นŒ์ง€ ์ž์›์„ ๋†“์ง€ ๋ชปํ•จ, (์ƒ๋Œ€๋ฐฉ์ด ๊ฐ€๋กœ์ฑ„๊ฐˆ ์ˆ˜ ์—†์Œ)

  4. Circular Wait : ์›ํ˜•์˜ ํ˜•ํƒœ๋กœ ์ž์›์„ ๊ธฐ๋‹ค๋ฆผ circularwait

Deadlock Prevention ๊ณผ Avoidance ์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

  1. Prevention : ๋„ค๊ฐ€์ง€ ์กฐ๊ฑด ์ค‘ ํ•œ๊ฐ€์ง€๋ฅผ ๋ง‰์•„ Deadlock์ด ์ผ์–ด๋‚˜์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๊ฒƒ(์‚ฌ์ „ ์ฐจ๋‹จ)

  2. Avoidance : Deadlock์˜ ๊ฐ€๋Šฅ์„ฑ์ด ์—†๋Š” ๊ฒฝ์šฐ์—๋งŒ (safe state) ์—๋งŒ ์ž์›์„ ํ• ๋‹น

+๊ทธ๋ ‡๋‹ค๋ฉด Unsafe state == Deadlock ์ธ๊ฐ€? NO, Unsafe state๋Š” Deadlock์ด ์ผ์–ด ๋‚  ์ˆ˜ ๋„ ์žˆ๋Š” ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•จ

Deadlock Prevention , Avoidance ๊ทธ๋ฆฌ๊ณ  Ignorance ์„ธ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ค‘์— ์‹ค์ œ ์ผ๋ฐ˜์ ์ธ OS์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์€ ๋ฌด์—‡์ด๋ผ ์ƒ๊ฐํ•˜์‹œ๋‚˜์š”?

  1. Ignorance

    ์ด์œ : Deadlock Prevention, Avoidance๋ฅผ ์œ„ํ•ด์„œ๋Š” ๋งŽ์€ ๋น„์šฉ์ด ํ•„์š”ํ•จ. ๋”ฐ๋ผ์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” OS์—์„œ๋Š” Deadlock์„ ์‚ฌ์ „์— ์ฐจ๋‹จํ•˜์ง€ ์•Š๊ณ  Deadlock๋ฐœ์ƒ ์‹œ ์ˆ˜๋™์œผ๋กœ ํ•ด์†Œ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉ.

  2. ๋กœ์ผ“ ๋ฐœ์‚ฌ๋‚˜ ๋น„ํ–‰๊ธฐ ์šด์ „ ์‹œ์Šคํ…œ๊ณผ ๊ฐ™์ด Deadlock ์ ˆ๋Œ€ ๊ฑธ๋ ค์„œ๋Š” ์•ˆ๋˜๋Š” ์ •๋ฐ€ํ•˜๊ณ  ์ค‘์š”ํ•œ ์‹œ์Šคํ…œ OS์—์„œ๋งŒ Prevention์ด๋‚˜ Avoidance๋ฅผ ์‚ฌ์šฉํ•จ


Reference

  • Database System Concepts - 6th edition
  • ์‹œ๋‚˜๊ณต ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ํ•„๊ธฐ