NoSQL์ด๋ž€?

์ผ๋ช… "SQL๋งŒ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค"
ํ‘œ ํ˜•์‹์ด ์•„๋‹ˆ๋ฉฐ, ๊ด€๊ณ„ํ˜• ํ…Œ์ด๋ธ”๊ณผ๋Š” ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ

 

NoSQL์€ Not Only SQL์˜ ์•ฝ์ž๋กœ ๊ธฐ์กด RDBMs ํ˜•ํƒœ์˜ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ ์ €์žฅ ๊ธฐ์ˆ ์„ ์˜๋ฏธํ•˜๋ฉฐ, ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์˜ ์ƒˆ๋กœ์šด ํ˜•ํƒœ๋กœ, ์ˆ˜ํ‰์  ํ™•์žฅ์„ฑ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค. ๋ฌธ์„œ, ๊ทธ๋ž˜ํ”„, ํ‚ค ๊ฐ’, ์ธ ๋ฉ”๋ชจ๋ฆฌ, ๊ฒ€์ƒ‰์„ ํฌํ•จํ•ด ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•œ๋‹ค. RDBMS๊ฐ€ ํด๋ผ์ด์–ธํŠธ/์„œ๋ฒ„ ํ™˜๊ฒฝ์— ๋งž๋Š” ๋ฐ์ดํ„ฐ ์ €์žฅ๊ธฐ์ˆ ์ด๋ผ๋ฉด, NoSQL์€ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์— ๋งž๋Š” ์ €์žฅ ๊ธฐ์ˆ ์ด๋‹ค.

 

 

 

 

 

 

NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ์ด์œ 


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

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


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

 

 

 

NoSQL์˜ ํŠน์ง•


  1. NoSQL์€ RDBMS์™€๋Š” ๋‹ฌ๋ฆฌ ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š๋Š”๋‹ค.
    • ๊ฐ€์žฅ ํฐ ํŠน์ง• ์ค‘ ํ•˜๋‚˜๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์ธ RDBMS๊ฐ€ ๋ฐ์ดํ„ฐ์˜ ๊ด€๊ณ„๋ฅผ Foreign Key ๋“ฑ์œผ๋กœ ์ •์˜ํ•˜๊ณ  ์ด๋ฅผ ์ด์šฉํ•ด Join ๋“ฑ์˜ ๊ด€๊ณ„ํ˜• ์—ฐ์‚ฐ์„ ํ•œ๋‹ค๊ณ  ํ•˜๋ฉด, NoSQL์€ ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋ฐ์ดํ„ฐ ํ…Œ์ด๋ธ”์€ ๊ทธ๋ƒฅ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์ด๋ฉฐ ๊ฐ ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š๊ณ  ์ผ๋ฐ˜์ ์œผ๋กœ ํ…Œ์ด๋ธ” ๊ฐ„์˜ Join๋„ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
  2. RDBMS์— ๋น„ํ•ด ํ›จ์”ฌ ๋” ๋Œ€์šฉ๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
    • RDBMS์˜ ๋ณต์žก๋„์™€ ์šฉ๋Ÿ‰์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ๋“ฑ์žฅํ•œ ๋งŒํผ ํŽ˜ํƒ€๋ฐ”์ดํŠธ๊ธ‰์˜ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. ๋ถ„์‚ฐํ˜• ๊ตฌ์กฐ์ด๋‹ค.
    • NoSQL์€ ๊ธฐ์กด RDBMS์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ํ•˜๋‚˜์˜ ๊ณ ์„ฑ๋Šฅ ๋จธ์‹ ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ผ๋ฐ˜์ ์ธ ์„œ๋ฒ„ ์ˆ˜์‹ญ ๋Œ€๋ฅผ ์—ฐ๊ฒฐํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ ๋ฐ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ๊ฐ–๋Š”๋‹ค. ์ฆ‰ ๋ถ„์‚ฐํ˜• ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ ๋Œ€์˜ ์„œ๋ฒ„์— ๋ถ„์‚ฐํ•ด ์ €์žฅํ•˜๊ณ  ๋ถ„์‚ฐ ์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ƒํ˜ธ ๋ณต์ œํ•ด ํŠน์ • ์„œ๋ฒ„์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ์—๋„ ๋ฐ์ดํ„ฐ ์œ ์‹ค์ด๋‚˜ ์„œ๋น„์Šค ์ค‘์ง€๊ฐ€ ์—†๋Š” ๊ตฌ์กฐ์˜ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง„๋‹ค.
  4. ๊ณ ์ •๋˜์ง€ ์•Š์€ ํ…Œ์ด๋ธ” ์Šคํ‚ค๋งˆ๋ฅผ ๊ฐ–๋Š”๋‹ค.
    • RDBMS์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ํ…Œ์ด๋ธ”์˜ ์Šคํ‚ค๋งˆ๊ฐ€ ์œ ๋™์ ์ด๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ปฌ๋Ÿผ์€ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์ด๋ฆ„๊ณผ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๊ฐ–๋Š” ๊ฒƒ์ด ํ—ˆ์šฉ๋œ๋‹ค.
    • ์Šคํ‚ค๋งˆ๋ž€? ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ์™€ ์ œ์•ฝ ์กฐ๊ฑด์— ๊ด€ํ•œ ์ „๋ฐ˜์ ์ธ ๋ช…์„ธ๋ฅผ ๊ธฐ์ˆ ํ•œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ์ด๋‹ค.

 

 

CAP ์ด๋ก 


1. ์ผ๊ด€์„ฑ(Consistency)

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

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

 

2. ๊ฐ€์šฉ์„ฑ(Availability)

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

๋ช‡๋ช‡ NoSQL ์€ ๊ฐ€์šฉ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ๋ณต์ œ(Replication)์„ ์‚ฌ์šฉํ•œ๋‹ค. ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค์ค‘ ๋…ธ๋“œ์— ์ค‘๋ณต ์ €์žฅํ•˜์—ฌ ๊ทธ ์ค‘ ๋ช‡ ๋Œ€์˜ ๋…ธ๋“œ๊ฐ€ ๊ณ ์žฅ๋‚˜๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ์œ ์‹ค๋˜์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๋ฐ์ดํ„ฐ ์ค‘๋ณต ์ €์žฅ ๋ฐฉ๋ฒ•์—๋Š” ๋™์ผํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง„ ์ €์žฅ์†Œ๋ฅผ ํ•˜๋‚˜ ๋” ์ƒ์„ฑํ•˜๋Š” Master-Slave ๋ณต์ œ ๋ฐฉ๋ฒ•๊ณผ ๋ฐ์ดํ„ฐ ๋‹จ์œ„๋กœ ์ค‘๋ณต ์ €์žฅํ•˜๋Š” Peer-to-Peer ๋ณต์ œ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

 

3. ๋„คํŠธ์›Œํฌ ๋ถ„ํ•  ํ—ˆ์šฉ์„ฑ(Partition tolerance)

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

 

 

 

 

 

 

 

NoSQL์˜ ์ข…๋ฅ˜


  • Key-Value DB
    • Key์™€ Value์˜ ์Œ์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋Š” ์œ ํ˜•์œผ๋กœ์จ Amazon์˜ Dynamo Paper์—์„œ ์œ ๋ž˜๋˜์—ˆ๋‹ค. Riak, Vodemort, Tokyo ๋“ฑ์˜ ์ œํ’ˆ์ด ์•Œ๋ ค์ ธ ์žˆ๋‹ค.
๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ํ˜•ํƒœ์˜ NoSQL ์ด๋ฉฐ ํ‚ค ํ•˜๋‚˜๋กœ ๋ฐ์ดํ„ฐ ํ•˜๋‚˜๋ฅผ ์ €์žฅํ•˜๊ณ  ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋Š” ๋‹จ์ผ ํ‚ค-๊ฐ’ ๊ตฌ์กฐ๋ฅผ ๊ฐ–๋Š”๋‹ค. ๋‹จ์ˆœํ•œ ์ €์žฅ๊ตฌ์กฐ๋กœ ์ธํ•˜์—ฌ ๋ณต์žกํ•œ ์กฐํšŒ ์—ฐ์‚ฐ์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋˜ํ•œ ๊ณ ์† ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ์— ์ตœ์ ํ™”๋œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ์‚ฌ์šฉ์ž์˜ ํ”„๋กœํ•„ ์ •๋ณด, ์›น ์„œ๋ฒ„ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์œ„ํ•œ ์„ธ์…˜ ์ •๋ณด, ์žฅ๋ฐ”๊ตฌ๋‹ˆ ์ •๋ณด, URL ๋‹จ์ถ• ์ •๋ณด ์ €์žฅ ๋“ฑ์— ์‚ฌ์šฉํ•œ๋‹ค. ํ•˜๋‚˜์˜ ์„œ๋น„์Šค ์š”์ฒญ์— ๋‹ค์ˆ˜์˜ ๋ฐ์ดํ„ฐ ์กฐํšŒ ๋ฐ ์ˆ˜์ • ์—ฐ์‚ฐ์ด ๋ฐœ์ƒํ•˜๋ฉด ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†๋‹ค. 
ex) Redis

 

 

  • Wide Column DB
    • Big Table DB๋ผ๊ณ ๋„ ํ•˜๋ฉฐ, Google์˜ BigTable Paper์—์„œ ์œ ๋ž˜๋˜์—ˆ๋‹ค. Column Family ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ , HBase, Cassandra, Hypertable์ด ์ด์— ํ•ด๋‹น๋œ๋‹ค.
ํ•˜๋‚˜์˜ ํ‚ค์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปฌ๋Ÿผ ์ด๋ฆ„๊ณผ ์ปฌ๋Ÿผ ๊ฐ’์˜ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์กฐํšŒํ•œ๋‹ค. ๋ชจ๋“  ์ปฌ๋Ÿผ์€ ํ•ญ์ƒ ํƒ€์ž„ ์Šคํƒฌํ”„ ๊ฐ’๊ณผ ํ•จ๊ป˜ ์ €์žฅ๋œ๋‹ค.
๊ตฌ๊ธ€์˜ ๋น…ํ…Œ์ด๋ธ”์ด ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ ์ฐจํ›„ ์ปฌ๋Ÿผํ˜• NoSQL ์€ ๋น…ํ…Œ์ด๋ธ”์˜ ์˜ํ–ฅ์„ ๋ฐ›์•˜๋‹ค. ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ Row key, Column Key, Column Family ๊ฐ™์€ ๋น…ํ…Œ์ด๋ธ” ๊ฐœ๋…์ด ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ์ €์žฅ์˜ ๊ธฐ๋ณธ ๋‹จ์œ„๋Š” ์ปฌ๋Ÿผ์œผ๋กœ ์ปฌ๋Ÿผ์€ ์ปฌ๋Ÿผ ์ด๋ฆ„๊ณผ ์ปฌ๋Ÿผ ๊ฐ’, ํƒ€์ž„์Šคํƒฌํ”„๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ์ด๋Ÿฌํ•œ ์ปฌ๋Ÿผ๋“ค์˜ ์ง‘ํ•ฉ์ด ๋กœ์šฐ(Row)์ด๋ฉฐ, ๋กœ์šฐํ‚ค(Row key)๋Š” ๊ฐ ๋กœ์šฐ๋ฅผ ์œ ์ผํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๋Š” ๊ฐ’์ด๋‹ค. ์ด๋Ÿฌํ•œ ๋กœ์šฐ๋“ค์˜ ์ง‘ํ•ฉ์€ ํ‚ค ์ŠคํŽ˜์ด์Šค(Key Space)๊ฐ€ ๋œ๋‹ค.
๋Œ€๋ถ€๋ถ„์˜ ์ปฌ๋Ÿผ ๋ชจ๋ธ NoSQL ์€ ์“ฐ๊ธฐ์™€ ์ฝ๊ธฐ ์ค‘์— ์“ฐ๊ธฐ์— ๋” ํŠนํ™”๋˜์–ด ์žˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๋จผ์ € ์ปค๋ฐ‹๋กœ๊ทธ์™€ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•œ ํ›„ ์‘๋‹ตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅธ ์‘๋‹ต์†๋„๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ฝ๊ธฐ ์—ฐ์‚ฐ ๋Œ€๋น„ ์“ฐ๊ธฐ ์—ฐ์‚ฐ์ด ๋งŽ์€ ์„œ๋น„์Šค๋‚˜ ๋น ๋ฅธ ์‹œ๊ฐ„ ์•ˆ์— ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์กฐํšŒํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ ๊ฐ€์žฅ ์ข‹์€ ์„ฑ๋Šฅ์„ ๋ณด์ธ๋‹ค. ์ฑ„ํŒ… ๋‚ด์šฉ ์ €์žฅ, ์‹ค์‹œ๊ฐ„ ๋ถ„์„์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ ๋“ฑ์˜ ์„œ๋น„์Šค ๊ตฌํ˜„์— ์ ํ•ฉํ•˜๋‹ค.

 

 

  • KDoument DB
    • Lotus Notes์—์„œ ์œ ๋ž˜๋˜์—ˆ์œผ๋ฉฐ, JSON, XML๊ณผ ๊ฐ™์€ Collection ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๊ตฌ์กฐ๋ฅผ ์ฑ„ํƒํ•˜๊ณ  ์žˆ๋‹ค. Mongo DB, Cough DB๊ฐ€ ์ด ์ข…๋ฅ˜์— ํ•ด๋‹น๋œ๋‹ค.
ํ‚ค-๊ฐ’ ๋ชจ๋ธ์„ ๊ฐœ๋…์ ์œผ๋กœ ํ™•์žฅํ•œ ๊ตฌ์กฐ๋กœ ํ•˜๋‚˜์˜ ํ‚ค์— ํ•˜๋‚˜์˜ ๊ตฌ์กฐํ™”๋œ ๋ฌธ์„œ๋ฅผ ์ €์žฅํ•˜๊ณ  ์กฐํšŒํ•œ๋‹ค. ๋…ผ๋ฆฌ์ ์ธ ๋ฐ์ดํ„ฐ ์ €์žฅ๊ณผ ์กฐํšŒ ๋ฐฉ๋ฒ•์ด ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์œ ์‚ฌํ•˜๋‹ค. ํ‚ค๋Š” ๋ฌธ์„œ์— ๋Œ€ํ•œ ID ๋กœ ํ‘œํ˜„๋œ๋‹ค. ๋˜ํ•œ ์ €์žฅ๋œ ๋ฌธ์„œ๋ฅผ ์ปฌ๋ ‰์…˜์œผ๋กœ ๊ด€๋ฆฌํ•˜๋ฉฐ ๋ฌธ์„œ ์ €์žฅ๊ณผ ๋™์‹œ์— ๋ฌธ์„œ ID ์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ๋ฌธ์„œ ID ์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ O(1) ์‹œ๊ฐ„ ์•ˆ์— ๋ฌธ์„œ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.
๋Œ€๋ถ€๋ถ„์˜ ๋ฌธ์„œ ๋ชจ๋ธ NoSQL ์€ B ํŠธ๋ฆฌ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 2 ์ฐจ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. B ํŠธ๋ฆฌ๋Š” ํฌ๊ธฐ๊ฐ€ ์ปค์ง€๋ฉด ์ปค์งˆ์ˆ˜๋ก ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ๋•Œ ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ์˜ ๋น„์œจ์ด 7:3 ์ •๋„์ผ ๋•Œ ๊ฐ€์žฅ ์ข‹์€ ์„ฑ๋Šฅ์„ ๋ณด์ธ๋‹ค. ์ค‘์•™ ์ง‘์ค‘์‹ ๋กœ๊ทธ ์ €์žฅ, ํƒ€์ž„๋ผ์ธ ์ €์žฅ, ํ†ต๊ณ„ ์ •๋ณด ์ €์žฅ ๋“ฑ์— ์‚ฌ์šฉ๋œ๋‹ค. ex) MongoDB

 

 

  • Graph DB
    • Euler & Graph Theory์—์„œ ์œ ๋ž˜ํ•œ DB์ด๋ฉฐ, Nodes, Relationship, Key-Value ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ์ฑ„์šฉํ•˜๊ณ  ์žˆ๋‹ค. Neo4J ๋“ฑ์˜ ์ œํ’ˆ์ด ์žˆ๋‹ค.

 

 

 

 

 


References.

link1 link2

+ Recent posts