Notice
Recent Posts
Recent Comments
Link
ยซ   2024/09   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

BUILD_SSO

[Database/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์ข…๋ฅ˜์™€ ํŠน์ง• ๋ณธ๋ฌธ

Tech Interview

[Database/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์ข…๋ฅ˜์™€ ํŠน์ง•

sohyeonnn 2023. 5. 2. 17:13

๐Ÿ‘‰๐Ÿป๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

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

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ์‹œ ํšจ๊ณผ๋กœ ์•„๋ž˜ ์—ด๊ฐ€์ง€๊ฐ€์žˆ๋‹ค.
    1. ๋ฐ์ดํ„ฐ์˜ ๋…ผ๋ฆฌ์  ๋ฌผ๋ฆฌ์  ๋…๋ฆฝ์„ฑ์ด ๋ณด์žฅ๋œ๋‹ค.
    2. ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ํ”ผํ•  ์ˆ˜ ์žˆ์–ด ๊ธฐ์–ต๊ณต๊ฐ„์ด ์ ˆ์•ฝ๋œ๋‹ค.
    3. ์ €์žฅ๋œ ์ž๋ฃŒ๋ฅผ ๊ณต๋™์œผ๋กœ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
    4. ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.
    5. ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.
    6. ๋ณด์•ˆ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.
    7. ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ์ค€ํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.
    8. ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
    9. ํ•ญ์ƒ ์ตœ์‹ ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•œ๋‹ค.
    10. ๋ฐ์ดํ„ฐ์˜ ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

๐Ÿ‘‰๐ŸปDDL, DML, DCL์ฐจ์ด๋ฅผ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๊ฐ๊ฐ SQL์˜ ์šฉ๋„์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜์ž…๋‹ˆ๋‹ค.

DDL, DML, DCL, TCL๋กœ ๋‚˜๋‰œ๋‹ค.

  • DDL: ๋ฐ์ดํ„ฐ ์ •์˜์–ด/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ ๋˜๋Š” ์Šคํ‚ค๋งˆ๋ฅผ ์ •์˜ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•œ๋‹ค.
    • create, alter, drop, rename, comment, truncate
  • DML: ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด/๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์˜ ๊ด€๋ฆฌ๋‚˜ ์กฐํšŒ์‹œ ์‚ฌ์šฉ๋œ๋‹ค.
    • select, insert, update, delete, …
  • DCL: ๋ฐ์ดํ„ฐ์ œ์–ด์–ด/๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๋ฌด๊ฒฐ์„ฑ ์œ ์ง€, ๋ณ‘ํ–‰ ์ˆ˜ํ–‰ ์ œ์–ด, ๋ณดํ˜ธ์™€ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์–ธ์–ด
    • grant, revoke
  • TCL: ํŠธ๋žœ์žญ์…˜์ œ์–ด์–ด/DCL๊ณผ ๋น„์Šทํ•œ ๋งฅ๋ฝ์ด์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ์–ดํ•˜๋Š” ์–ธ์–ด๊ฐ€ ์•„๋‹Œ **ํŠธ๋žœ์žญ์…˜**์„ ์ œ์–ดํ• ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ๋…ผ๋ฆฌ์ ์ธ ์ž‘์—… ๋‹จ์œ„๋ฅผ ๋ฌถ์–ด DML์— ์˜ํ•ด ์กฐ์ž‘๋œ ๊ฒฐ๊ณผ๋ฅผ ํŠธ๋žœ์žญ์…˜ ๋ณ„๋กœ ์ œ์–ดํ•œ๋‹ค.
    • commit, rollback

*DCL๊ณผ TCL์˜ ์ฐจ์ด

๐Ÿ‘‰๐ŸปRDBMS์™€ NoSQL์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

RDBMS๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ 2์ฐจ์› ํ…Œ์ด๋ธ” ํ˜•ํƒœ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

NoSQL์€ RDBMS์™€ ๋ฐ˜๋Œ€๋กœ ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š๊ณ , ์Šคํ‚ค๋งˆ๊ฐ€ ์—†์–ด ์ข€๋” ์ž์œ ๋กญ๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปฌ๋ ‰์…˜์ด๋ผ๋Š” ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

 

RDBMSํŠน์ง•

  • ์žฅ์  : ์Šคํ‚ค๋งˆ์— ๋งž์ถฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ์˜ ์ •ํ•ฉ์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋‹จ์  : ์‹œ์Šคํ…œ์ด ์ปค์งˆ ์ˆ˜๋ก ์ฟผ๋ฆฌ๊ฐ€ ๋ณต์žกํ•ด์ง€๊ณ  ์„ฑ๋Šฅ์ด ์ €ํ•˜๋˜๋ฉฐ Scale-out์ด ์–ด๋ ต๋‹ค(Scale-up๋งŒ ๊ฐ€๋Šฅ)

NoSQLํŠน์ง•

  • ์žฅ์  : ์Šคํ‚ค๋งˆ ์—†์ด Key-Value ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•ด ์ž์œ ๋กญ๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ๋ถ„์‚ฐ์ด ์šฉ์ดํ•˜์—ฌ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•œ scale-up ๋ฟ๋งŒ์•„๋‹Œ scale-out ๋˜ํ•œ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ๋‹จ์  : ๋ฐ์ดํ„ฐ ์ค‘๋ณต์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๊ณ , ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋  ๊ฒฝ์šฐ ์ˆ˜์ •์„ ๋ชจ๋“  ์ปฌ๋ ‰์…˜์—์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค.
  • ์Šคํ‚ค๋งˆ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๊ธฐ์— ๋ช…ํ™•ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š์•„ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๊ฒฐ์ •์ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ‘‰๐Ÿป๊ทธ๋ ‡๋‹ค๋ฉด RDBMS์™€ NoSQL์€ ์–ด๋Š ๊ฒฝ์šฐ์— ์ ํ•ฉํ•œ๊ฐ€์š”?

  • RDBMS๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ€ ๋ช…ํ™•ํ•˜๊ณ , ๋ณ€๊ฒฝ ๋  ์—ฌ์ง€๊ฐ€ ์—†์œผ๋ฉฐ ์Šคํ‚ค๋งˆ๊ฐ€ ์ค‘์š”ํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์–ด(๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ) ๋ณ€๊ฒฝ์ด ์šฉ์ดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ด€๊ณ„๋ฅผ ๋งบ๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ž์ฃผ ๋ณ€๊ฒฝ์ด ์ด๋ฃจ์–ด์ง€๋Š” ์‹œ์Šคํ…œ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  • Nosql์€ ์ •ํ™•ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์•Œ ์ˆ˜ ์—†๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ / ํ™•์žฅ ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์™€ ์ฝ๊ธฐ(read)์ฒ˜๋ฆฌ๋ฅผ ์ž์ฃผํ•˜์ง€๋งŒ, ๋ฐ์ดํ„ฐ๋ฅผ ์ž์ฃผ ๋ณ€๊ฒฝ(update)ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.

๐Ÿ‘‰๐ŸปCAP ์ด๋ก ์ด๋ž€?

๋ถ„์‚ฐ ์ปดํ“จํŒ… ํ™˜๊ฒฝ์€ ์ผ๊ด€์„ฑ(Consistency), ๊ฐ€์šฉ์„ฑ(Availability), ๋ถ„ํ•  ๋‚ด์„ฑ(Partition tolerance)์˜ ์„ธ ๊ฐ€์ง€ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ, CAP์ด๋ก ์€ ์ด 3๊ฐ€์ง€์ค‘ ์ตœ๋Œ€ 2๊ฐ€์ง€๋งŒ ๋งŒ์กฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ด๋ก ์ž…๋‹ˆ๋‹ค.

  • ์ผ๊ด€์„ฑ(Consistency) - ๋ชจ๋“  ๋…ธ๋“œ๋“ค์ด ๋™์ผ ์‹œ๊ฐ„ ๋™์ผ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ค˜์•ผ ํ•˜๋Š” ๊ฒƒ
  • ๊ฐ€์šฉ์„ฑ(Availability) - ํŠน์ • ๋…ธ๋“œ์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ์„ฑ๊ณต์ ์œผ๋กœ ์„œ๋น„์Šค๋ฅผ ์ง€์†ํ•˜๋Š” ๊ฒƒ
  • ๋ถ„ํ•  ๋‚ด์„ฑ(Partition tolerance) - ์—ฐ๊ฒฐ์ด ๋Š์–ด์ ธ๋„ ์—ฐ์†ํ•ด์„œ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ
  • RDBMS๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ CA๋ฅผ ๋งŒ์กฑํ•˜๊ณ ,
    NoSQL์€ CP, APํ˜•ํƒœ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. CPํ˜•ํƒœ๋ฅผ ๊ฐ€์ง€๋Š” NoSQL์€ MongoDB, Redis ๋“ฑ์ด ์žˆ๋‹ค.

๐Ÿ‘‰๐Ÿป์ €์žฅ ๋ฐฉ์‹์— ๋”ฐ๋ฅธ NoSQL ๋ถ„๋ฅ˜

key-value

  • ๊ธฐ๋ณธ์ ์ธ ํŒจํ„ด์œผ๋กœ key-value ํ•˜๋‚˜์˜ ๋ฌถ์Œ(Unique)์œผ๋กœ ์ €์žฅ๋˜๋Š” ๊ตฌ์กฐ๋กœ ๋‹จ์ˆœํ•œ ๊ตฌ์กฐ์ด๊ธฐ์— ์†๋„๊ฐ€ ๋น ๋ฅด๋ฉฐ ๋ถ„์‚ฐ ์ €์žฅ ์‹œ ์šฉ์ดํ•˜๋‹ค.
  • Key ์•ˆ์— (COLUMN, VALUE) ํ˜•ํƒœ๋กœ ๋œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ•„๋“œ, ์ฆ‰ COLUMN FAMILIES ๊ฐ–๋Š”๋‹ค.
  • ์ฃผ๋กœ server config, session clustering๋“ฑ์— ์‚ฌ์šฉ๋˜๊ณ , ์•ก์„ธ์Šค ์†๋„๋Š” ๋น ๋ฅด์ง€๋งŒ scan์—๋Š” ์šฉ์ดํ•˜์ง€ ์•Š๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.

document

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

wide-column

  • ํ–‰๋งˆ๋‹ค ํ‚ค์™€ ํ•ด๋‹น ๊ฐ’์„ ์ €์žฅํ•  ๋•Œ๋งˆ๋‹ค ๊ฐ๊ฐ ๋‹ค๋ฅธ๊ฐ’์˜ ๋‹ค๋ฅธ ์ˆ˜์˜ ์Šคํ‚ค๋งˆ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • ์ด๋Ÿฌํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ–๋Š” wide-column database๋Š” ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ์˜ ์••์ถ•, ๋ถ„์‚ฐ์ฒ˜๋ฆฌ, ์ง‘๊ณ„ ์ฟผ๋ฆฌ (SUM, COUNT, AVG ๋“ฑ)๋ฐ ์ฟผ๋ฆฌ ๋™์ž‘ ์†๋„ ๊ทธ๋ฆฌ๊ณ  ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚œ ๊ฒƒ์ด ํŠน์ง•์ด๋‹ค.

graph

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

 

Comments