[WECODE] ๐Ÿ—„Database

5963 ๋‹จ์–ด WeCodeDatabaseTILDatabase

What is Database?

A database generally refers to a structured collection of structured information or data stored electronically in a computer system.
The database is usually controlled by a database management system (DBMS). Data and DBMS are referred to as 'database systems' along with related applications, and are also collectively referred to as 'databases' for short.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ผ๊ณ  ํ•˜๋ฉด ๋– ์˜ค๋ฅด๋Š” ๊ฑด? ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ์žฅ์น˜!->ํ‹€๋ฆฐ๋ง์ด ์•„๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ž€ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์— ์ €์žฅ๋œ ์ •๋ณด or ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ์„ ์˜๋ฏธํ•œ๋‹ค

Application์—์„œ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ ์กด์žฌ ํ•˜๋Š”๋ฐ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋ณด์กด์ด ๋˜์ง€ ์•Š์•„ application์ข…๋ฃŒ ํ›„ ๋‹ค์‹œ ์ฝ์–ด๋“ค์ด์ง€ ๋ชปํ•œ๋‹ค.-> ๋ฐ์ดํ„ฐ๋ฅผ ์˜ค๋žœ ๊ธฐ๊ฐ„ ์ €์žฅ,๋ณด์กด ๊ทธ๋ฆฌ๊ณ  ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉ ํ•˜๊ธฐ

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

ํฌ๊ฒŒ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(RDBMS)์™€ ๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(NoSQL)๊ฐ€์žˆ๋‹ค

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

RDBMS์ด๋ž€ Relational Database Management System์˜ ์•ฝ์ž๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒํ˜ธ๊ด€๋ จ์„ฑ ์žˆ๊ฒŒ ํ‘œํ˜„ํ•œ date๋ฅผ ์˜๋ฏธํ•˜๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์— ๊ธฐ์ดˆ๋ฅผ ๋‘” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์„ ์˜๋ฏธํ•œ๋‹ค.
๋Œ€ํ‘œ์ ์œผ๋กœ MySQL, Postgres, Oracle DB๋“ฑ..

  • ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋“ค์€ 2์ฐจ์›์˜ ํ…Œ์ด๋ธ”๋“ค๋กœ ํ‘œํ˜„ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฐ๊ฐ์˜ ํ…Œ์ด๋ธ”๋“ค์€ column(๊ฐ ํ•ญ๋ชฉ),row(ํ•ญ๋ชฉ๋“ค์˜ ์‹ค์ œ ๊ฐ’)์„ ๋งํ•œ๋‹ค.
    ->column์€ field,attribute/ row๋Š” tuple,record๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค.
  • ๊ฐ row๋Š” ์ €๋งˆ๋‹ค ๊ณ ์œ ํ‚ค(Primaty Key)๊ฐ€ ์กด์žฌํ•œ๋‹ค. ๊ณ ์œ ํ‚ค๋ฅผ ํ†ตํ•ด ํ•ด๋‹น row๋ฅผ ์ฐพ๊ฑฐ๋‚˜ ์ธ์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค

1-1.๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ•„์š”์„ฑ

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

1-2.์ •๊ทœํ™”(normalization)

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์„ค๊ณ„์—์„œ ์ค‘๋ณต์„ ์ตœ์†Œํ™”ํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐํ™”ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ •๊ทœํ™”์˜ ๋ชฉํ‘œ๋Š” ๊ด€๊ณ„๋ฅผ ์žฌ๊ตฌ์„ฑํ•˜์—ฌ ์ž‘๊ณ  ์ž˜ ์กฐ์ง๋œ ๊ด€๊ณ„๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ž„

์ผ๋‹จ ๊ฐ„๋‹จํžˆ ์ •๋ฆฌ๋งŒ ํ•ด๋ณด๋ฉด

  • 1์ฐจ์ •๊ทœํ˜• : ๊ฐ row๋งˆ๋‹ค column์˜ ๊ฐ’์ด 1๊ฐœ์”ฉ๋งŒ(์›์ž๊ฐ’,Atomic Value๋ผ๊ณ  ํ‘œํ˜„)
    ex)์ฝ”๋ฆฐ์ด/์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ,ํŒŒ์ด์ฌ ->row์•ˆ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ,ํŒŒ์ด์ฌ์ด ๋™์‹œ์— ๋“ค์–ด๊ฐ€๋ฉด ์•ˆ๋œ๋‹ค๋Š” ์˜๋ฏธ. ์ฝ”๋ฆฐ์ด/์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ|์ฝ”๋ฆฐ์ด/ํŒŒ์ด์ฌ ์œผ๋กœ ๋‚˜ํƒ€๋‚ด์•ผํ•˜๋Š”๊ฒƒ

  • 2์ฐจ์ •๊ทœํ˜• : ๋ชจ๋“  ์†์„ฑ์€ ๊ธฐ๋ณธํ‚ค์— ์ข…์†๋œ๋‹ค. ๊ธฐ๋ณธํ‚ค๊ฐ€ ๋ณตํ•ฉํ‚ค๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ์„๋•Œ, ๋ณตํ•ฉํ‚ค ์ „์ฒด์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ์ผ๋ถ€์— ์˜์กดํ•˜๋Š” row๊ฐ€ ์žˆ์œผ๋ฉด ์ด๋ฅผ ์ œ๊ฑฐํ•ด์•ผํ•œ๋‹ค.
    ex)์‚ฌ๋Š”๊ณณ->๊ธฐ์ˆ˜,์ด๋ฆ„,์ˆ˜๊ฐ•๊ณผ๋ชฉ์ด ์žˆ์–ด์•ผ ์•ˆ๊ฒน์น˜๊ฒŒ ์•Œ์ˆ˜์žˆ์Œ(์ง€๊ธˆ์€ ์ค‘๋ณต๋˜๋Š” '์‚ฌ๋Š”๊ณณ'์ด ์—†์ง€๋งŒ ์žˆ๋‹ค๋ฉด!!)
    ๋ถ„์•ผ->๊ธฐ์ˆ˜,์ด๋ฆ„์€ ๊ด€๋ จ์„ฑ์ด ๋–จ์–ด์ง„๋‹ค๊ณ  ํŒ๋‹จ->๊ธฐ๋ณธํ‚ค์ค‘ '์ˆ˜๊ฐ•๊ณผ๋ชฉ'์—๋งŒ ์—ฐ๊ด€๋˜๋‹ˆ๊นŒ 2์ฐจ์ •๊ทœํ˜•์‹์— ๋”ฐ๋ผ ๋–ผ์ฃผ๊ธฐ!

  • 3์ฐจ์ •๊ทœํ˜• : ๊ธฐ๋ณธํ‚ค๋ฅผ ์ œ์™ธํ•˜๊ณ  ์„œ๋กœ ์ข…์†๋ถˆ๊ฐ€(์†”์งํžˆ ์•„์ง ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค..ใ… ใ… )

๋งํฌํ…์ŠคํŠธ(์ด๋ถ„์˜ ๋ธ”๋กœ๊ทธ๊ฐ€ ๋„ˆ๋ฌด ์ž˜ ์„ค๋ช…๋˜์žˆ์Œ..๐Ÿ‘)์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ข€๋” ๋ ˆ๋ฒจ์—…! ํ•˜๊ณ ๋‚˜์„œ ๋ณด์ž.....

1-3.๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ด€๊ณ„(1:1,1:N,N:N)

https://aquerytool.com/๋ผ๋Š” ์‚ฌ์ดํŠธ๋กœ ์ง์ ‘ ๊ด€๊ณ„๋ฅผ ๊ตฌ์ถ•ํ•ด ๋ณผ์ˆ˜ ์žˆ๋‹ค.
์ง์ ‘ ์š”๋ฆฌ์กฐ๋ฆฌ ๋งŒ์ ธ๊ฐ€๋ฉด์„œ ๊ฐœ๋…์„ ์ตํ˜€๋ณด๋Š”๊ฑธ ์ถ”์ฒœ!

1.One To One(1:1)
1 : 1 ๊ด€๊ณ„๋ž€ ์–ด๋Š ํ…Œ์ด๋ธ”์—์„œ ๋ณด๋”๋ผ๋„ ์ •ํ™•ํžˆ ์ผ๋Œ€์ผ์˜ ๋งค์นญ์ด ๋˜๋Š” ๊ด€๊ณ„๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
๋กœ๊ทธ์ธ๋ฐ์ดํ„ฐ&์œ ์ €์˜ ํ”„๋กœํŒŒ์ผ์˜ ๊ฒฝ์šฐ ์œ ์ €๋Š” ํ•˜๋‚˜์˜ ํ”„๋กœํŒŒ์ผ ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ–๋Š”๋‹ค.

2.One To Many(1:N)
ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์ด ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ…Œ์ด๋ธ”์„ ์ฐธ์กฐํ•˜๋Š” ํ˜•ํƒœ.
์•„์ด๋””ํ•˜๋‚˜์— ์—ฌ๋Ÿฌ๊ฐ€์ง€์ฃผ๋ฌธ, ํ•œ ์นดํ…Œ๊ณ ๋ฆฌ์— ์—ฌ๋Ÿฌ ์ œํ’ˆ์ด ๋“ค์–ด์žˆ๋Š”๊ฒƒ
๋ญ”๊ฐ€ ์•„~์•Œ๊ฒƒ๊ฐ™๊ธฐ๋„ ํ•œ๋ฐ ์•„์ง ๋‘๋ฃจ๋ญ‰์‹คํ•ด์„œ
์œ„์˜ column์„ ์—‘์…€๋กœ ํ’€์–ด๋ณด์•˜๋‹ค
(์˜ค๋ฅธ์ชฝ ๋นจ๊ฐ„ ์ˆซ์ž๊ฐ€ ์™ผ์ชฝ์˜ id๋ฅผ ๊ฐ€์ ธ์˜จ๊ฒƒ!)

3.Many To Many(N:N)
ํ…Œ์ด๋ธ” 1์˜ ์—ฌ๋Ÿฌ row๊ฐ€ ํ…Œ์ด๋ธ” 2์˜ ์—ฌ๋Ÿฌ row์™€ ์—ฐ๊ฒฐ ๋˜๋Š” ๊ด€๊ณ„, ํ…Œ์ด๋ธ” ๋‘ ๊ฐœ์˜ ๊ด€๊ณ„๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋˜ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์ด ์ƒ๊ธด ์ƒํ™ฉ
์ด๊ฒƒ๋„ ํ•œ๋ฒˆ ์ง์ ‘ ํ’€์–ด๋ดค๋‹ค
์ด์ •๋„ ์ดํ•ดํ•œ๊ฒŒ ์–ด๋””์—ฌ

1-4.ํ…Œ์ด๋ธ”์„ ์—ฐ๊ฒฐ๋ฐฉ๋ฒ•

  • Foreign key(์™ธ๋ถ€ํ‚ค)๋ผ๋Š” ๊ฐœ๋…์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐ

users ํ…Œ์ด๋ธ”์˜ user_profile_id ์ปฌ๋Ÿผ์€ user_profile ํ…Œ์ด๋ธ”์— ๊ฑธ๋ ค์žˆ๋Š” ์™ธ๋ถ€ ํ‚ค๋ผ๊ณ  ์ง€์ •.์ฆ‰ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๊ฒŒ user_profile_id์˜ ๊ฐ’์€ users_profile ํ…Œ์ด๋ธ”์˜ id ๊ฐ’์ด๋ฉฐ ๊ทธ๋Ÿฌ๋ฏ€๋กœ users_profile ํ…Œ์ด๋ธ”์˜ id ์ปฌ๋Ÿผ์— ์กด์žฌํ•˜๋Š” ๊ฐ’๋งŒ ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ๋‹ค.

๋งŒ์ผ users ํ…Œ์ด๋ธ”์— ์—†๋Š” id ๊ฐ’์ด user_id ์— ์ง€์ •๋˜๋ฉด ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ

1-5.ํŠธ๋žœ์žญ์…˜(Transaction)&ACID

1.ACID

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

2.ํŠธ๋žœ์žญ์…˜(Transaction)
์ผ๋ จ์˜ ์ž‘์—…๋“ค์„ ํ•œ๋ฒˆ์— ํ•˜๋‚˜์˜ ์ž‘์—…์ฒ˜๋Ÿผ ์ทจ๊ธ‰ํ•ด์„œ ์‹คํ–‰ํ•˜๋Š”๊ฒƒ์œผ๋กœ ์‚ฌ์šฉ์ž์˜ ์˜๋„์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฌธ์žฅ์œผ๋กœ ๊ตฌ์„ฑ๋œ ํŠธ๋žœ์žญ์…˜์€ ๋ฐ˜๋“œ์‹œ ๋™์‹œ์— ์‹คํ–‰(COMMIT) ๋˜๊ฑฐ๋‚˜ ์ทจ์†Œ(ROLLBACK)๋œ๋‹ค. ํŠธ๋žœ์žญ์…˜์„ ํ†ตํ•ด ์ž‘์—…์˜ ๋‹จ์œ„๋ฅผ ๊ฒฐ์ •ํ•จ์œผ๋กœ์จ ์ž‘์—… ๊ฒฐ๊ณผ์˜ ์‹ ๋ขฐ์„ฑ์ด ํ™•๋ณด๋œ๋‹ค. ACID๋ฅผ ์ œ๊ณตํ•จ์œผ๋กœ์จ ํŠธ๋žœ์žญ์…˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค

๋‚ด๊ฐ€ A์—๊ฒŒ 1000๋งŒ์›์„ ์ด์ฒดํ–ˆ๋‹ค ๊ฐ€์ •ํ•˜์ž. ๋‚ด๊ณ„์ขŒ์—์„œ 1000๋งŒ์› ์ธ์ถœ, A์˜๊ณ„์ขŒ์— 1000๋งŒ์› ์ž…๊ธˆ์ด๋ผ๋Š” ์ž‘์—…์„ ํ•œ๋ฒˆ์— ๋ฌถ์ง€์•Š์œผ๋ฉด ๋‚ด๋ˆ์€ ๋น ์ง€๊ณ  a๋Š” ๋ชป๋ฐ›๋Š” ๋ถˆ์ƒ์‚ฌ๊ฐ€ ๋ฐœ์ƒ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ๋ฌถ์œผ๋ฉด ๋‘๊ฐœ์˜ ์ž‘์—…์ด ๋ชจ๋‘ ์‹คํ–‰๋˜๊ฑฐ๋‚˜ ์ทจ์†Œ๋˜๋„๋ก ํ•˜์—ฌ ๊ฑฐ๋ž˜์˜ ์‹ ๋ขฐ๋„๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ๋Š”๊ฒƒ

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

๋น„๊ด€๊ณ„ํ˜• ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ• ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์œผ๋กœ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋‹ค๋ฅด๊ฒŒ ๋น„๊ด€๊ณ„ํ˜• ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋“ค์„ ์ €์žฅํ•˜๊ธฐ ์ „์— ์ •์˜ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.
๋Œ€ํ‘œ์ ์œผ๋กœ MongoDB, Redis, Cassandra ๋“ฑ์ด ์žˆ๋‹ค.

3.RDBMS(SQL) vs NoSQL

*RDBMS(SQL)

์žฅ์ 

1) ํšจ์œจ์ ,์ฒด๊ณ„์ ์œผ๋กœ ์ €์žฅ&๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅ
2) ๋ฏธ๋ฆฌ ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ๊ตฌ์กฐ(ํ…Œ์ด๋ธ” ์Šคํ‚ค๋งˆ)๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ์˜ ์™„์ „์„ฑ์ด ๋ณด์žฅ๋œ๋‹ค
3) ํŠธ๋žœ์žญ์…˜(transaction)    
4)์ •ํ˜•ํ™”๋œ ๋ฐ์ดํ„ฐ,์™„์ „์„ฑ์ด ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋“ค์„ ์ €์žฅํ•˜๋Š”๋ฐ ์œ ๋ฆฌํ•˜๋‹ค.  	
  ex)์ „์ž์ƒ๊ฑฐ๋ž˜ ์ •๋ณด. ์€ํ–‰ ๊ณ„์ขŒ ์ •๋ณด, ๊ฑฐ๋ž˜ ์ •๋ณด ๋“ฑ๋“ฑ.

๋‹จ์ 

1)ํ…Œ์ด๋ธ” ๊ตฌ์กฐ ๋ณ€ํ™” ๋“ฑ์— ๋œ ์œ ์—ฐ(๋ฏธ๋ฆฌ ํ…Œ์ด๋ธ”์„ ์ •ํ•ด์•ผํ•ด์„œ..)
2)ํ™•์žฅ์„ฑ์ด ์‰ฝ์ง€ ์•Š๋‹ค(ํ…Œ์ด๋ธ”์ด ๋ฏธ๋ฆฌ ์ •ํ•ด์ ธ์žˆ์œผ๋‹ˆ๊นŒ, ์„œ๋ฒ„์˜ ์ˆ˜๊ฐ€์•„๋‹Œ ์„ฑ๋Šฅ๋„ ๋†’์—ฌ์•ผํ•จ.. ๊ทผ๋ฐ ๋Š˜๋ฆฌ๋Š”๊ฒƒ๋„ ์‰ฝ์ง€ ์•Š์•„..(scale up))

*NoSQL

์žฅ์ 

1)ํ…Œ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๋ฏธ๋ฆฌ ์ •์˜ํ•˜์ง€ ์•Š์•„๋„ ๋˜๋‹ˆ ๋ฐ์ดํ„ฐ์˜ ๊ตฌ์กฐ ๋ณ€ํ™”์— ์œ ์—ฐํ•˜๋‹ค.
2)ํ™•์žฅํ•˜๊ธฐ๊ฐ€ ๋น„๊ต์  ์‰ฝ๋‹ค. ๊ทธ๋ƒฅ ์„œ๋ฒ„ ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๋ฉด ๋จ(scale out)
3)ํ™•์žฅํ•˜๊ธฐ๊ฐ€ ์‰ฝ๊ณ  ํ…Œ์ดํ„ฐ์˜ ๊ตฌ์กฐ๋„ ์œ ์—ฐํ•ด ๋ฐฉ๋Œ€ํ•œ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ ์œ ๋ฆฌํ•˜๋‹ค.
4)์ฃผ๋กœ ๋น„์ •ํ˜•ํ™” ๋ฐ์ดํ„ฐ ๊ทธ๋ฆฌ๊ณ  ์™„์ „์„ฑ์ด ์ƒ๋Œ€์ ์œผ๋กœ ๋œ ์œ ๋ฆฌํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ ์œ ๋ฆฌํ•˜๋‹ค. ex) ๋กœ๊ทธ ๋ฐ์ดํƒ€

๋‹จ์ 

1)๋ฐ์ดํ„ฐ์˜ ์™„์ „์„ฑ์ด ๋œ ๋ณด์žฅ๋œ๋‹ค.
2)ํŠธ๋žœ์žญ์…˜์ด ์•ˆ๋˜๊ฑฐ๋‚˜ ๋น„๊ต์  ๋ถˆ์•ˆ์ •ํ•˜๋‹ค.

์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ