2017_10_09_nosql - denlyou/AIL GitHub Wiki

no sql ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ

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

nosql ํŠน์ง•

  • RDBMS๊ฐ€ ์•„๋‹Œ DBMS๋ฅผ ์ด์นญํ•˜๋Š” ๊ธฐ์ˆ 
    • NoSQL ์ œํ’ˆ๊ตฐ์„ ์ˆ˜ํ‰ ๋น„๊ต ๋ถˆ๊ฐ€๋Šฅ
  • ๊ด€๊ณ„ํ˜• DB๋Š” ์ฐธ์กฐํ‚ค๋ฅผ ์ •์˜ํ•˜๊ณ  join ์—ฐ์ƒ์„ ํ™œ์šฉํ•˜์ง€๋งŒ NoSQL์„ ๊ด€๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ! (์ฐธ์กฐํ‚ค ์—†์Œ, join ์—†์Œ)
  • ๊ธฐ๋ณธ์ ์œผ๋กœ ๋Œ€์šฉ๋Ÿ‰ ์ €์žฅ ๊ฐ€๋Šฅ
  • ํ•˜๋‚˜์˜ ๊ณ ์„ฑ๋Šฅ ์„œ๋ฒ„์— ์„ค์น˜ํ•˜๊ธฐ ๋ณด๋‹ค๋Š” ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๋ถ„์‚ฐ์‹œ์ผœ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์  (ํด๋Ÿฌ์Šคํ„ฐ ๋ฒ ์ด์Šค)
    • ๋ถ„์‚ฐ์ €์žฅ, ์ƒํ˜ธ๋ณต์ œ => ๋ฐ์ดํ„ฐ ์œ ์‹ค x, ์„œ๋น„์Šค ์ค‘์ง€ x
  • ๋ฐ์ดํ„ฐ์˜ ์Šคํ‚ค๋งˆ๊ฐ€ ์œ ๋™์  (RDBMS์— ๋น„ํ•ด)
  • ๋ถ„์‚ฐ ์ปดํ“จํŒ… ํ™˜๊ฒฝ์—์„œ CAP์ด๋ก ์„ ๋”ฐ๋ฆ„

NoSQL์˜ ์ข…๋ฅ˜

key/value Store

  • key๋Š” unique

Ordered key/value Store

  • key๊ฐ€ ๋‚ด๋ถ€์ ์œผ๋กœ sorting๋จ
  • key์•ˆ์˜ ๊ฐ’์ด column:value์กฐํ•ฉ
  • ์ œํ’ˆ : Hbase, Cassandra

Document key/value Store

  • ์ €์žฅ๋˜๋Š” ํƒ€์ž…์„ Document๋ผ๋Š” ๊ตฌ์กฐํ™”๋œ ํƒ€์ž…(ex> JSON,XML,YAML)์„ ์‚ฌ์šฉ
    • ๋ณต์žกํ•œ ๊ณ„์ธต ๊ตฌ์กฐ ํ‘œํ˜„ ๊ฐ€๋Šฅ
  • ์ œํ’ˆ์—๋”ฐ๋ผ ์ถ”์ž๊ธฐ๋Šฅ (Sorting,join,group) ์ง€์›
  • ์ œํ’ˆ: MongoDB

NoSQL ์žฅ๋‹จ์ 

  • ๊ด€๊ณ„ํ˜•DB๋ณด๋‹ค ๊นŠ์€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์™€ ์ ‘๊ทผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ™œ์šฉ
    • ๊ด€๊ณ„ํ˜• ๋ชจ๋ธ๋ง : ์ •๊ทœํ™” ๊ณผ์ •๊ณผ ๋ฐ˜๋Œ€
    • ์ฟผ๋ฆฌ๋ฅผ ๋จผ์ € ์ •๋ฆฌํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๊ณ  ๋งˆ์ง€๋ง‰์— ๋ฐ์ดํ„ฐ๋ฅผ ์ •์˜
  • NoSQL์˜ ๋ฌผ๋ฆฌ์ (๋„คํŠธ์›Œํฌ,๋””์Šคํฌ) ๋””์ž์ธ๊ณผ DBMS์ž์ฒด์˜ ํŠน์ง•์„ ์ž˜ ์•Œ์•„์•ผ ์ œ๋Œ€๋กœ๋œ ์ฟผ๋ฆฌ๋ฅผ ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•จ
  • ๋Œ€์ฒด๋กœ ๋ณด์•ˆ์ด ์ทจ์•ฝํ•จ : ๋‹ค๋ฅธ ์†”๋ฃจ์…˜ ํ™œ์šฉ

์žฅ์ 

  • NoSQL์€ ํŠน์ •์šฉ๋„๋กœ ํŠนํ™”๋œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ
  • ๋Œ€์ฒด๋กœ ๋Œ€์šฉ๋Ÿ‰, ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ์— ์šฉ์ด

๋‹จ์ 

  • join์—ฐ์‚ฐ์€ ๋Œ€๋ถ€๋ถ„ ๋ฏธ์ง€์›
  • ๊ฐ DBMS๋Š” ํŠน์ง•์ด ๋‹ค ํ‹€๋ฆฌ๋‹ค