๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

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

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค / ๊ฐœ์š”

 

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

DBMS(Database Management System), ๋ฐ์ดํ„ฐ ๋ชจ์Œ์„ ๋ณด๋‹ค ํŽธ๋ฆฌํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” SW

 

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

 


 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ข…๋ฅ˜

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

๊ด€๊ณ„ํ˜• ๋ชจ๋ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

  • ๊ตฌ์กฐํ™”๋œ ํ…Œ์ด๋ธ” ํ˜•์‹ : ๋ฐ์ดํ„ฐ๋ฅผ ํ…Œ์ด๋ธ” ํ˜•ํƒœ๋กœ ์ €์žฅ
  • ๊ฐ•๋ ฅํ•œ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ : ์ •ํ˜•ํ™”๋œ ํ…Œ์ด๋ธ”๊ณผ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ด ์ •ํ™•์„ฑ, ์ผ๊ด€์„ฑ, ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•จ
  • ๋ณต์žกํ•œ ์ฟผ๋ฆฌ์— ์œ ๋ฆฌ

์ข…๋ฅ˜

์˜ค๋ผํด ์ „ ์„ธ๊ณ„์—์„œ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์ƒ์šฉ RDBMS.
๋Œ€๊ทœ๋ชจ ๊ธฐ์—… ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‚˜ ์ •๋ถ€์—์„œ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋ฉฐ ๊ณ ์„ฑ๋Šฅ, ๊ณ ๊ฐ€์šฉ์„ฑ, ๊ฐ•๋ ฅํ•œ ๋ณด์•ˆ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•จ
MSSQL Microsoft์—์„œ ๊ฐœ๋ฐœํ•œ RDBMS๋กœ Windows ํ™˜๊ฒฝ๊ณผ ๊ธด๋ฐ€ํžˆ ํ†ตํ•ฉ๋˜์–ด ์žˆ์Œ.
C#๋“ฑ ์œˆ๋„์šฐ ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€ ์ž˜ ๋งž์Œ
MySQL ์˜คํ”ˆ์†Œ์Šค RDBMS
PostgreSQL ์˜คํ”ˆ์†Œ์Šค RDBMS, ํ™•์žฅ์„ฑ๊ณผ SQL ํ‘œ์ค€ ์ค€์ˆ˜์—์„œ ๊ฐ•์ ์„ ๋ณด์ž„
SQLite ๋‹ค๋ฅธ RDBMS์™€ ๋‹ฌ๋ฆฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋‚ด์žฅ๋˜์–ด ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ DB๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋ณ๊ณ  ์„ค์น˜๊ฐ€ ํ•„์š” ์—†์–ด ๋ณต์žกํ•œ ์„ค์ • ์—†์ด ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ.
๋ชจ๋ฐ”์ผ ์•ฑ, ์ž„๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ, ์†Œํ˜• ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉ

 

 

2) ๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(NoSQL DBMS)

  • ์œ ์—ฐํ•œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ : ์ „ํ†ต์ ์ธ RDBMS์™€ ๋‹ฌ๋ฆฌ ๊ณ ์ •๋œ ์Šคํ‚ค๋งˆ๊ฐ€ ์—†์Œ. ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ ๋ฏธ๋ฆฌ ์ •์˜๋œ ๊ตฌ์กฐ์— ์–ฝ๋งค์ด์ง€ ์•Š๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ
  • ์ˆ˜ํ‰์  ํ™•์žฅ : ์—ฌ๋Ÿฌ ๋Œ€์˜ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์‚ฐ์‹œ์ผœ DB ์„ฑ๋Šฅ์„ ๋†’์ž„
  • ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ์œ ๋ฆฌ : ๋Œ€๋Ÿ‰์˜ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ €์žฅ ๋ฐ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ตœ์ ํ™” ๋˜์–ด์žˆ์Œ

์ข…๋ฅ˜

mongoDB json ๊ตฌ์กฐ์™€ ์œ ์‚ฌํ•œ BSON ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฌธ์„œ ์ง€ํ–ฅ DB.
์Šคํ‚ค๋งˆ๊ฐ€ ๋™์ ์œผ๋กœ ๋ณ€ํ•˜๋ฉฐ ๋กœ์šฐ์— ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด๋„ ๋„ฃ์„ ์ˆ˜ ์žˆ์–ด์„œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ€ ์œ ์—ฐํ•จ
์นด์‚ฐ๋“œ๋ผ ๋ถ„์‚ฐํ˜• ์ปฌ๋Ÿผ ์ง€ํ–ฅ DB๋กœ ๋†’์€ ๊ฐ€์šฉ์„ฑ, ํ™•์žฅ์„ฑ์„ ๊ฐ€์ง.
๋Œ€๊ทœ๋ชจ ์†Œ์…œ ๋ฏธ๋””์–ด ํ”Œ๋žซํผ, ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ, IoT ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ ๊ฐ™์€ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ํ™˜๊ฒฝ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ
ex) ๋„ทํ”Œ๋ฆญ์Šค, ์ธ์Šคํƒ€๊ทธ๋žจ, ๋””์Šค์ฝ”๋“œ
Redis in memory key value ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ๋กœ, ์ดˆ๊ณ ์† ๋ฐ์ดํ„ฐ ์ ‘๊ทผ์ด ํ•„์š”ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ตœ์ ํ™” ๋˜์–ด์žˆ์Œ.
๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•ด ์‘๋‹ต ์†๋„๊ฐ€ ๋งค์šฐ ๋นจ๋ผ ์‹ค์‹œ๊ฐ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋†’์€ ์„ฑ๋Šฅ์„ ๋ฐœํœ˜ํ•จ.
์บ์‹œ/์„ธ์…˜ ๊ด€๋ฆฌ, ์‹ค์‹œ๊ฐ„ ๋ถ„์„, ๋ฉ”์‹œ์ง€ ํ์— ์‚ฌ์šฉ
neo4j ๊ทธ๋ž˜ํ”„ํ˜• DB๋กœ ๋…ธ๋“œ์™€ ์—ฃ์ง€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ•ด ๋ฐ์ดํ„ฐ ๊ฐ„ ๋ณต์žกํ•œ ๊ด€๊ณ„ ๊ด€๋ฆฌ์— ์ตœ์ ํ™”๋˜์–ด์žˆ์Œ.
๋ฐ์ดํ„ฐ ๊ฐ„ ๊ด€๊ณ„๋ฅผ ์ง์ ‘์ ์œผ๋กœ ๋ชจ๋ธ๋งํ•  ์ˆ˜ ์žˆ์–ด ์†Œ์…œ ๋„คํŠธ์›Œํฌ ๋ถ„์„, ์ถ”์ฒœ ์‹œ์Šคํ…œ, ๊ฒฝ๋กœ ํƒ์ƒ‰ ๋“ฑ ๊ด€๊ณ„ ์ค‘์‹ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉ

 

 


 

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

์ฃผ์–ด์ง„ ๊ฐœ๋…์œผ๋กœ๋ถ€ํ„ฐ ๋…ผ๋ฆฌ์ ์ธ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ๊ตฌ์„ฑํ•˜๋Š” ์ž‘์—…์œผ๋กœ, ์ผ๋ฐ˜์ ์œผ๋กœ ์ด๋ฅผ ๋ฌผ๋ฆฌ์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชจ๋ธ๋กœ ํ™˜์›ํ•˜์—ฌ ๊ณ ๊ฐ์˜ ์š”๊ตฌ์— ๋”ฐ๋ผ ํŠน์ • ์ •๋ณด ์‹œ์Šคํ…œ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ˜์˜ํ•˜๋Š” ์ž‘์—…์„ ํฌํ•จํ•จ

 

๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง์˜ ๊ณผ์ •

์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„ → ๊ฐœ๋…์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง → ๋…ผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง → ๋ฌผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง

์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„ ์š”๊ตฌ์‚ฌํ•ญ ์ •์˜์„œ / ๋ช…์„ธ์„œ ๋“ฑ์œผ๋กœ ์š”๊ตฌ์‚ฌํ•ญ ์ •๋ฆฌ
๊ฐœ๋…์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์ถ”์ƒ์ ์œผ๋กœ ์„ค๊ณ„, E-R ๋‹ค์ด์–ด๊ทธ๋žจ ์ž‘์„ฑ
๋…ผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ERD๋กœ ๊ทธ๋ฆฐ ์„ค๊ณ„๋ฅผ DBMS์— ๋งž๊ฒŒ ๋ณ€ํ™˜
๋ฌผ๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ์‹ค์ œ HW์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์ €์žฅํ• ์ง€ ์„ค๊ณ„

 

 

์—”ํ„ฐํ‹ฐ

ํ˜„์‹ค ์„ธ๊ณ„์˜ ๋Œ€์ƒ ๋˜๋Š” ๊ฐœ์ฒด๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์œ ์šฉํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ง‘ํ•ฉ์ฒด๋กœ ์‚ฌ์šฉ

  • ์œ ํ˜• ์—”ํ„ฐํ‹ฐ : ํ˜•ํƒœ๋ฅผ ๋ช…ํ™•ํžˆ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์—”ํ„ฐํ‹ฐ
  • ๋ฌดํ˜• ์—”ํ„ฐํ‹ฐ : ํ˜•ํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์—†๋Š” ์—”ํ„ฐํ‹ฐ
  • ์‚ฌ๊ฑด ์—”ํ„ฐํ‹ฐ : ํ˜„์‹ค์„ธ๊ณ„์—์„œ ์—…๋ฌด๋ฅผ ์ˆ˜ํ–‰ํ•จ์— ๋”ฐ๋ผ ๋ฐœ์ƒ๋˜๋Š” ์—”ํ„ฐํ‹ฐ

 

'๋„์„œ๊ด€ ํšŒ์›' = ์—”ํ„ฐํ‹ฐ, ์‹ค์ œ ๋„์„œ๊ด€ ํšŒ์› ์ด๋ฆ„๋“ค(๊น€๊ฐœ๋ฐœ, ๋ฐ•๋””๋น„, ํ™์ž๋ฐ”..) = ์ธ์Šคํ„ด์Šค

์ธ์Šคํ„ด์Šค(Instance) : ์—”ํ„ฐํ‹ฐ์˜ ๊ตฌ์ฒด์ ์ธ ์‚ฌ๋ก€๋กœ, ์‹ค์งˆ์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง

 

 

์†์„ฑ

์—”ํ„ฐํ‹ฐ์˜ ํŠน์ง•, ์„ฑ์งˆ

 

 



ER ๋ชจ๋ธ์—์„œ์˜ ์—”ํ„ฐํ‹ฐ๋Š” RDBMS์˜ ํ…Œ์ด๋ธ” ๊ฐ™์€ ๊ฐœ๋…์ด๋‹ค. ์†์„ฑ์€ ์ปฌ๋Ÿผ(column)์ด๊ณ , ๊ฐ ์ธ์Šคํ„ด์Šค๋Š” ๋กœ์šฐ(row)์— ํ•ด๋‹นํ•œ๋‹ค.

ํ…Œ์ด๋ธ”์—์„œ ๋Œ€์ถœ ID ์ปฌ๋Ÿผ์€ ๋ณดํ†ต ๊ธฐ๋ณธ ํ‚ค(PK, Primary Key)๋กœ ์“ฐ์ธ๋‹ค.

ISBN ์ปฌ๋Ÿผ์€ ์™ธ๋ž˜ ํ‚ค(FK, Foreign Key)๋กœ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ํ–‰(row)์„ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ํ‚ค๋ฅผ ์˜๋ฏธํ•œ๋‹ค.