JiwonDev

#1 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ์ดˆ

by JiwonDev

1. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(DB)์™€ DBMS

์ปดํ“จํ„ฐ์— ์ฒด๊ณ„์ ์œผ๋กœ ์ €์žฅํ•œ ๋ฐ์ดํ„ฐ์˜ ๋ชจ์Œ์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Database)๋ผ ํ•˜๋ฉฐ, ์ด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ์„ DBMS(DataBase Management System)์ด๋ผ ํ•œ๋‹ค. ๋ณดํ†ต DBMS๊ฐ€ ์žˆ์–ด์•ผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ณดํ†ต ๋‘ ์šฉ์–ด๋Š” ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๊ณ  ๊ฐ™์€ ์˜๋ฏธ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.


2. ํŒŒ์ผ ์‹œ์Šคํ…œ๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(DBMS)์˜ ๋น„๊ต

๋‹จ์ˆœํžˆ ์ปดํ“จํ„ฐ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š”๊ฒŒ DB๋ผ๋ฉด, ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ๋ฉ”๋ชจ์žฅ์ด๋‚˜ ์šด์˜์ฒด์ œ ์ž์ฒด์˜ ํŒŒ์ผ์‹œ์Šคํ…œ๋„ DB๋ผ๊ณ  ๋ถˆ๋Ÿฌ๋„ ์ƒ๊ด€์—†๋Š”๊ฒŒ ์•„๋‹๊นŒ?

 

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

์—‘์…€๋„ DB์ธ๊ฐ€์š”?

๋”๋ณด๊ธฐ
์—‘์…€๋„ DB์˜ ๊ธฐ๋Šฅ์„ ์ผ๋ถ€ ์ง€์›ํ•˜๊ธฐ๋Š” ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์ธ DB(RDBMS)์™€๋Š” ๋งŽ์ด ๋‹ค๋ฅด๋‹ค.

Spread Sheet (์—‘์…€) DataBase (๊ด€๊ณ„ํ˜• RDBMS)
GUI ์†Œํ”„ํŠธ์›จ์–ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‹ค SQL๊ณผ ๊ฐ™์€ ์งˆ์˜ ์–ธ์–ด(query language)๋ฅผ ์‚ฌ์šฉํ•ด ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐ์ดํ„ฐ ์Šคํ† ์–ด(data store)๋‹ค
ํ–‰(row)๊ณผ ์—ด(column)์˜ ํ˜•์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐํ™”ํ•œ๋‹ค ๊ทœ์น™(rule)๊ณผ ๊ด€๊ณ„(relationship)๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐํ™”ํ•œ๋‹ค
์ •๋ณด๋ฅผ ์…€(cell)์— ์กฐ์งํ™”(organize)ํ•œ๋‹ค ์ •๋ณด๋ฅผ ๋ณตํ•ฉ์ ์ธ ์ปฌ๋ ‰์…˜(Entity)์— ์กฐ์งํ™”ํ•œ๋‹ค
์ œํ•œ์ ์ธ ์–‘์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค(๋ณดํ†ต 100๋งŒ๊ฑด์ดํ•˜) ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณตํ•œ๋‹ค
์ˆ˜๋™์œผ๋กœ ์…€์— ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค CRUD๋กœ ์—„๊ฒฉํ•˜๊ณ  ์ผ๊ด€์ ์ธ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.
์ผ๋ฐ˜์ ์œผ๋กœ ํ•œ ๋ฒˆ์— ํ•œ ๋ช…์˜ ์‚ฌ์šฉ์ž ๋‹ค์ค‘ ์‚ฌ์šฉ์ž ์ ‘๊ทผ์„ ๊ธฐ๋ณธ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด์ ธ์žˆ๋‹ค.
์‚ฌ์šฉ์ž์— ์˜ํ•ด ํ†ต์ œ๋œ๋‹ค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(database management system)์— ์˜ํ•ด ์ฒด๊ณ„์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ํ†ต์ œ๋œ๋‹ค


3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์šฉ์–ด

  • ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ(Unstructured data) - ๊ฐ€๊ณต๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ (๊ธ€, ์˜์ƒ, ๋น„๋””์˜ค๋“ฑ ๋ชจ๋“  ๊ฒƒ) ์˜๋ฏธํ•œ๋‹ค.
  • ์ •ํ˜•, ๋ฐ˜์ •ํ˜• ๋ฐ์ดํ„ฐ(Structured data) - ํ…Œ์ด๋ธ”์ด๋‚˜ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•ด ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹๊ฒŒ ๋ถ„๋ฅ˜, ๊ฐ€๊ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ฐธ๊ณ ๋กœ HTML ๊ฐ™์ด ์•ฝ๊ฐ„๋งŒ ๊ฐ€๊ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜์ •ํ˜• (Semi Structured) ๋ฐ์ดํ„ฐ๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•œ๋‹ค.
  • ํŠธ๋žœ์žญ์…˜(Transaction)์€ DB์˜ ์ƒํƒœ๋ฅผ ๋ณ€ํ™˜์‹œํ‚ค๋Š” ํ•˜๋‚˜์˜ ์ž‘์—… ๋‹จ์œ„ (๋˜๋Š” ํ•œ๋ฒˆ์— ๋ชจ๋‘ ์ˆ˜ํ–‰ํ•ด์•ผํ•  ์—ฐ์‚ฐ๋“ค)์„ ์˜๋ฏธํ•œ๋‹ค. ACID ์›์น™์„ ๊ฐ€์ง„๋‹ค
๋”๋ณด๊ธฐ
ํŠธ๋žœ์žญ์…˜์€ '๊ฑฐ๋ž˜' ๋ผ๋Š” ์˜๋ฏธ๋กœ ์€ํ–‰์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ทธ ๊ฑฐ๋ž˜๊ฐ€ ๋งž์Šต๋‹ˆ๋‹ค.

์€ํ–‰ DB ์‹œ์Šคํ…œ์„ ๋งŒ๋“ ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ด…์‹œ๋‹ค.
1. A์€ํ–‰์—์„œ B์€ํ–‰์œผ๋กœ ์†ก๊ธˆํ•ฉ๋‹ˆ๋‹ค.
2. A์€ํ–‰์—์„œ ์†ก๊ธˆ์ด ์„ฑ๊ณตํ•˜์˜€๊ณ , B์€ํ–‰์—์„œ ๋ฐ›๋Š” ์™€์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์ž…๊ธˆ๋ฐ›์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค.
์ด๋ฅผ ๋ฌธ์ œ์—†์ด ๋ณต๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„  ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ์š”? A์— ์—ฐ๋ฝ์„ ๋‹ค์‹œํ•ด์„œ ํ•ด๋‹น๊ฑฐ๋ž˜๋ฅผ ์ทจ์†Œํ•˜๊ณ , ์˜ค๋ฅ˜๊ฐ€ ํ•ด๊ฒฐ ๋œ ๋‹ค์Œ ์ž…๊ธˆ๋˜๋ฉด ์•ˆ๋˜๋‹ˆ B์— ์ž…๊ธˆ๋˜๋”๋ผ๋„ ๋ฌด์‹œํ•ด๋ผ๊ณ  ๋˜ ์•Œ๋ ค์•ผํ• ๊นŒ์š”?

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

Atomicity(์›์ž์„ฑ) - ๋” ์ด์ƒ ์ž‘์€ ๋‹จ์œ„๋กœ ์ชผ๊ฐค ์ˆ˜ ์—†๋‹ค.

  • ํ•œ ํŠธ๋žœ์žญ์…˜ ๋‚ด์˜ ๋ชจ๋“  ๋ช…๋ น์€ ๋ฐ˜๋“œ์‹œ ์™„๋ฒฝํžˆ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•˜๋ฉฐ, ๋ชจ๋‘๊ฐ€ ์™„๋ฒฝํžˆ ์ˆ˜ํ–‰๋˜์ง€ ์•Š๊ณ  ์–ด๋Šํ•˜๋‚˜๋ผ๋„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํŠธ๋žœ์žญ์…˜ ์ „๋ถ€๊ฐ€ ์ทจ์†Œ๋˜์–ด์•ผ ํ•œ๋‹ค. ๋ถ€๋ถ„ ์™„๋ฃŒ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋ณดํ†ต ํŠธ๋žœ์žญ์…˜ ์„ฑ๊ณต ์—ฐ์‚ฐ์„ Commit(์ปค๋ฐ‹), ์‹คํŒจ ์—ฐ์‚ฐ์„ Rollback(๋˜๋Š” Aborted) ๋ผ ๋ถ€๋ฅธ๋‹ค.

Consistency(์ผ๊ด€์„ฑ) - ์–ธ์ œ๋‚˜ ๊ฐ™์€ ์ž…๋ ฅ์—๋Š” ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์™€์•ผํ•œ๋‹ค.

  • ํŠธ๋žœ์žญ์…˜์ด ๊ทธ ์‹คํ–‰์„ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒํ•˜๋ฉด ์–ธ์ œ๋‚˜ ์ผ๊ด€์„ฑ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒํƒœ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
  • ์‹œ์Šคํ…œ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ณ ์ •์š”์†Œ๋Š” ํŠธ๋žœ์žญ์…˜ ์ˆ˜ํ–‰ ์ „๊ณผ ํŠธ๋žœ์žญ์…˜ ์ˆ˜ํ–‰ ์™„๋ฃŒ ํ›„์˜ ์ƒํƒœ๊ฐ€ ๊ฐ™์•„์•ผ ํ•œ๋‹ค.

Isolation(๋…๋ฆฝ์„ฑ,๊ฒฉ๋ฆฌ์„ฑ) - ๊ฐ๊ฐ์˜ ํŠธ๋žœ์žญ์…˜์€ ๋…๋ฆฝ์ ์ด๋‹ค. ์‹คํ–‰ ์ค‘ ์„œ๋กœ ์˜ํ–ฅ๋ผ์น˜์ง€ ์•Š๋Š”๋‹ค.

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

Durablility(์˜์†์„ฑ,์ง€์†์„ฑ) - ๋ฐ์ดํ„ฐ๋Š” ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅ๋œ๋‹ค.

  • ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋œ ํŠธ๋žœ์žญ์…˜์˜ ๊ฒฐ๊ณผ๋Š” ์‹œ์Šคํ…œ์ด ๊ณ ์žฅ๋‚˜๋”๋ผ๋„ ์˜๊ตฌ์ ์œผ๋กœ ๋ฐ˜์˜๋˜์–ด์•ผ ํ•œ๋‹ค.

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(DB)๋Š” ํŠธ๋žœ์žญ์…˜์˜ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ๊ธฐ๋กํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด ๋ฐ์ดํ„ฐ๋ฅผ ์บก์ฒ˜ํ•˜๊ณ  ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•œ๋‹ค.
  • ETL์€ ์ถ”์ถœ(Extract), ๋ณ€ํ™˜(Transform), ๋กœ๋“œ(Load)๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ ์—ฌ๋Ÿฌ ์กฐ์ง์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์ผ๊ด€์„ฑ์žˆ๊ฒŒ DB, Data Lake, Data Warehouse ๋“ฑ์— ๊ฒฐํ•ฉํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ณผ์ •์ด๋‹ค.

  • ๋ฐ์ดํ„ฐ ๋ ˆ์ดํฌ(Data Lake)๋Š” ์ •ํ˜•, ๋ฐ˜์ •ํ˜• ๋ฐ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๋กฏํ•œ ๋ชจ๋“  ๊ฐ€๊ณต๋˜์ง€ ์•Š์€ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๊ณณ์— ๋ชจ์•„๋‘” ์ค‘์•™ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ. ๋น…๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๋ถ„์„ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ณ ์ž ๋‹ค์–‘ํ•œ ์˜์—ญ์˜ Raw ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๊ณณ์— ๋ชจ์•„์„œ ๊ด€๋ฆฌํ•˜๊ณ ์ž ํ•˜๋Š” ๋ชฉ์ ์ด๋‹ค.
  • ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค(DW)๋Š” ๋ฐ์ดํ„ฐ ๋ถ„์„์„ ์œ„ํ•ด ํŠน๋ณ„ํžˆ ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ, ์—ฌ๊ธฐ์—๋Š” ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด ๋ฐ์ดํ„ฐ ์ „๋ฐ˜์— ๊ฑธ์นœ ๊ด€๊ณ„์™€ ์ถ”์„ธ๋ฅผ ํŒŒ์•…ํ•˜๋Š” ์ž‘์—…์ด ํฌํ•จ๋œ๋‹ค. ๊ธฐ์กด DB์—์„œ [๋Œ€์ถœ๊ธˆ์•ก, ์˜ˆ๊ธˆ๊ธˆ์•ก, ์žฌ๊ณ ์ˆ˜๋Ÿ‰] ์ฒ˜๋Ÿผ ๊ธฐ๋Šฅ ์ค‘์‹ฌ์œผ๋กœ ์ €์žฅํ–ˆ๋‹ค๋ฉด DW๋Š” [๊ณ ๊ฐ, ๊ฑฐ๋ž˜์ฒ˜] ์ฒ˜๋Ÿผ ์ฃผ์ œ ์ค‘์‹ฌ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์„ฑ, ๊ด€๋ฆฌํ•˜์—ฌ ๋ถ„์„ํ•˜๊ธฐ ์‰ฌ์šด ํ˜•ํƒœ๋กœ ์ œ๊ณตํ•œ๋‹ค. (OLTP, ์˜จ๋ผ์ธ๋ถ„์„์ฒ˜๋ฆฌ)
  • ๋ฐ์ดํ„ฐ ๋งˆํŠธ(Data Mart)๋Š” ๊ธˆ์œต, ๋งˆ์ผ€ํŒ… ๋˜๋Š” ์˜์—…๊ณผ ๊ฐ™์€ ํŠน์ • ํŒ€ ๋˜๋Š” ์‚ฌ์—… ๋‹จ์œ„์˜ ์š”๊ตฌ๋ฅผ ์ถฉ์กฑ์‹œํ‚ค๋Š” ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค์ด๋‹ค. ๊ทœ๋ชจ๊ฐ€ ๋” ์ž‘๊ณ , ์ง‘์ค‘์ ์ด๋ฉฐ ๊ฐ๊ฐ์˜ ํŒ€๊ณผ ๋ชฉ์ ์— ๊ฐ€์žฅ ์ž˜ ๋งž๋Š” ๋ฐ์ดํ„ฐ ์š”์•ฝ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐ์ดํ„ฐ ๋งˆํŠธ๋Š” ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค์˜ ์ผ๋ถ€์ผ ์ˆ˜๋„ ์žˆ๋‹ค.

Top - ํ†ต๊ณ„, ๋ถ„์„ ํ”„๋กœ๊ทธ๋žจ(ํ”„๋ŸฐํŠธ) / Middle - ๋ฐ์ดํ„ฐ ๋ถ„์„์—”์ง„(๋ฐฑ์—”๋“œ) / Bottom - ์‹ค์ œ DB์„œ๋ฒ„
์ฐธ๊ณ ๋กœ ์ด๋Ÿฌํ•œ DW ์‹œ์Šคํ…œ์€ IBM์—์„œ 1980๋…„๋„์— ์ฒ˜์Œ์œผ๋กœ ๋งŒ๋“ค์–ด์„œ ์„œ๋น„์Šค๋กœ ์ œ๊ณตํ–ˆ๋‹ค.


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

๋Œ€๋ถ€๋ถ„ ํ…Œ์ด๋ธ” ํ˜•ํƒœ์˜ RDBMS(๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์‚ฌ์šฉ๋ชฉ์ ์— ๋”ฐ๋ผ ๊ณ„์ธต(tree)ํ˜•, ๊ทธ๋ž˜ํ”„(graph)ํ˜•๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์กด์žฌํ•œ๋‹ค. ๊ทผ๋ž˜์— ๋“ค์–ด RDBMS์˜ ๋ชจ๋ธ์„ ๋ฒ—์–ด๋‚˜ SQL๋ฌธ ์—†์ด ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๋Š” DB๋ฅผ ํ†ตํ‹€์–ด NoSQL์ด๋ผ ๋ถ€๋ฅด๊ธฐ๋„ ํ•œ๋‹ค. (๋ชฝ๊ณ DB, ์นด์‚ฐ๋“œ๋ผ, Neo4J๋“ฑ)

 

์ด ๊ธ€์—์„œ๋Š” ๊ฐ€์žฅ ์˜ค๋ž˜๋˜์—ˆ๊ณ  ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ด€๊ณ„ํ˜• DB(RDBMS)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ค๋ช…ํ•œ๋‹ค.

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

๋‹จ์ˆœํ•œ Kev-Value DB(Riak, Vodemort)์™€ ๋”๋ถˆ์–ด ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ NoSQL DB๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

Wide Columnar Store(HBase, Cassandra) - ๋ฐœ์ „๋œ Key-Value ํ˜•ํƒœ

Document DB(MongoDB, CoughDB)- JSON, XML ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์‚ฌ์šฉ

Graph DB(Neo4J, OreientDB) - ๊ทธ๋ž˜ํ”„ ๋ชจ๋ธ ์‚ฌ์šฉ


• ๊ด€๊ณ„ํ˜• ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ ํ…Œ์ด๋ธ”๊ฐ„์˜ ์กฐ์ธ ๊ธฐ๋Šฅ ์—†์Œ
• ์ง์ ‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋Š” ๋“ฑ์˜ ๋น„SQL ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค
• ๋Œ€๋ถ€๋ถ„ ์—ฌ๋Ÿฌ ๋Œ€์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„๋ฅผ ๋ฌถ์–ด์„œ(ํด๋Ÿฌ์Šคํ„ฐ๋ง) ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ตฌ์„ฑ
• ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” ์ง€์›ํ•˜๋Š” Data์ฒ˜๋ฆฌ ์™„๊ฒฐ์„ฑ(Transaction ACID ์ง€์›) ๋ฏธ๋ณด์žฅ
• ๋ฐ์ดํ„ฐ์˜ ์Šคํ‚ค๋งˆ์™€ ์†์„ฑ๋“ค์„ ๋‹ค์–‘ํ•˜๊ฒŒ ์ˆ˜์šฉ ๋ฐ ๋™์  ์ •์˜ (Schema-less)
• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ค‘๋‹จ ์—†๋Š” ์„œ๋น„์Šค์™€ ์ž๋™ ๋ณต๊ตฌ ๊ธฐ๋Šฅ์ง€์›
• ๋‹ค์ˆ˜๊ฐ€ Open Source๋กœ ์ œ๊ณต
 
์„ค๋ช…๋“œ๋ฆฐ ์šฉ์–ด๋“ค์ด ๋‹ค์†Œ ์–ด๋ ต์Šต๋‹ˆ๋‹ค๋งŒ, ์ •๋ฆฌํ•ด๋ณด๋ฉด, NoSQL์€ ์ดˆ๊ณ ์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋“ฑ ์„ฑ๋Šฅ์— ํŠนํ™”๋œ ๋ชฉ์ ์„ ์œ„ํ•ด, ๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์—, ๋น„๊ตฌ์กฐ์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ถ„์‚ฐ ์ €์žฅ ์‹œ์Šคํ…œ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 



5. SQL

Structured Query Language, ์ •ํ˜• ์งˆ์˜ ์–ธ์–ด

๋ง ๊ทธ๋Œ€๋กœ ์ •ํ˜•ํ™”๋œ ๋ฐ์ดํ„ฐ(DB)๋ฅผ ๋‹ค๋ฃจ๊ธฐ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์–ธ์–ด์ด๋‹ค. ์–ด๋– ํ•œ DB๋“  CRUD์กฐ์ž‘(Create, Read, Update, Delete)๊ฐ€ ์กด์žฌํ•˜๋ฉฐ ํ”„๋กœ๊ทธ๋žจ๋งˆ๋‹ค ๋ช…๋ น์–ด๋Š” ๋‹ค๋ฅด์ง€๋งŒ ๋ณดํ†ต ์•„๋ž˜์™€ ๊ฐ™์ด 3๊ฐ€์ง€๋กœ ๋‚˜๋ˆ„์–ด์ง„๋‹ค.

 

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

- INSERT, DELETE, UPDATE, SELECT ๋ฌธ์ด ์—ฌ๊ธฐ์— ํ•ด๋‹น๋œ๋‹ค. ์ถ”๊ฐ€, ์‚ญ์ œ, ๊ฐฑ์‹ , ์กฐํšŒ ๋“ฑ

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

- CREATE, ALTER, DROP, TRUNCATE ๋ฌธ์ด ์—ฌ๊ธฐ์— ํ•ด๋‹น๋œ๋‹ค. ์ƒ์„ฑ, ๋ณ€๊ฒฝ, ์ œ๊ฑฐ ๋“ฑ

DCL (Data Control Language, ๋ฐ์ดํ„ฐ ์ œ์–ด)- GRANT, REVOKE ๋ฌธ์ด ์—ฌ๊ธฐ์— ํ•ด๋‹น๋œ๋‹ค. ๊ฐ์ฒด์—๊ฒŒ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์ฃผ๊ณ  ํšŒ์ˆ˜ํ•˜๋Š” ๋ช…๋ น์–ด.(๋ณด์•ˆ, ๋ฌด๊ฒฐ์„ฑ)

 

๊ทธ ์™ธ, ํŠธ๋žœ์žญ์…˜์„ ์ œ์–ดํ•˜๋Š” ์–ธ์–ด(TCL)์ธ COMMIT, ROLLBACK, SAVEPOINT ๋“ฑ์ด ์žˆ๋‹ค.

 

 

 

 

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

JiwonDev

JiwonDev

ํ™œ๋™ํ•˜๊ธฐ