NoSQL

HKTUOHAยท2022๋…„ 12์›” 17์ผ
0

IT 5๋ถ„ ์žกํ•™ ์‚ฌ์ „

๋ชฉ๋ก ๋ณด๊ธฐ
9/12
post-thumbnail

๐Ÿ“ŒNoSQL์ด๋ž€?

  • ์‚ฌํˆฌ๋ฆฌ์ฒ˜๋Ÿผ ํ”„๋กœ๊ทธ๋žจ๋งˆ๋‹ค ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅธ SQL๊ณผ ๋‹ฌ๋ฆฌ

  • NoSQL(๋…ธ์—์Šคํ์—˜)์€ ์–ธ์–ด์˜ ํŠน์ง•๋งŒ ์žˆ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ๊ทธ๋“ค์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž์ฒด์˜ ์„ฑ์งˆ๋„ ๋‹ค๋ฅด๋‹ค.

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

    ๋„ํ๋จผํŠธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(document DB), ํ‚ค๊ฐ’ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(key-value DB), ๊ทธ๋ž˜ํ”„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(graph DB) ...



๐Ÿ”Ž๋„ํ๋จผํŠธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

  • ๋ฐ์ดํ„ฐ ํ˜•์‹์ด ๋งค์šฐ ์ž์œ ๋กญ๋‹ค.

  • ๋ชฝ๊ณ ๋””๋น„(MongoDB)๊ฐ€ ๋Œ€ํ‘œ์ 

โœ๏ธ๋ชฝ๊ณ ๋””๋น„

  • ๋ฐ์ดํ„ฐ๋ฅผ "์ œ์ด์Šจ(JSON) ๋„ํ๋จผํŠธ" ํ˜•ํƒœ๋กœ ์ €์žฅ
    - JSON : JavaScript Object Notation
    - ์ œ์ด์Šจ ๋„ํ๋จผํŠธ(JSON document) : ์ œ์ด์Šจ ํ˜•์‹์œผ๋กœ ์ €์žฅ๋œ ํŒŒ์ผ
    - ์ œ์ด์Šจ ํ˜•์‹ : {ํ‚ค1: ๊ฐ’1, ํ‚ค2: ๊ฐ’2, ...} ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ๋œ ๋ฐ์ดํ„ฐ์˜ ๋ชจ์–‘

  • SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชจ์Šต

    IDNamePrice
    1์Šฌ๋ฆฌํผ30000
    2๋ฐ”์ง€50000

โ‡’ SQL๋กœ ๋‹ค๋ฃจ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํ‘œ์˜ ํ˜•ํƒœ๋กœ ๋งค์šฐ ์ •์ ์ด๋‹ค.

โ‡’ ์—ด์„ ๋Š˜๋ฆฌ๊ณ  ์‹ถ์œผ๋ฉด ๋‹ค๋ฅธ ํ–‰์—๋Š” ๋ฐ˜๋“œ์‹œ ๊ทธ ์—ด์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๋„ฃ์–ด ์ฃผ์–ด์•ผ ํ•˜๊ณ , ๋งŒ์•ฝ ๊ทธ ๊ฐ’์ด ์—†์œผ๋ฉด ์ฒ˜๋ฆฌํ•  ๋ฐฉ๋ฒ•์ด ์—†๋‹ค.

์˜ˆ) ๋ฐ˜ํŒ”์ด๋ผ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด id, name์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ "๋‹ค" ๋งˆ๋ จํ•ด์•ผ ํ•œ๋‹ค.


  • ๋ชฝ๊ณ ๋””๋น„ ๋ชจ์Šต
    [
    	{"id": 1, "name": "์Šฌ๋ฆฌํผ", "price": 30000},
    	{"id": 2, "name": "๋ฐ”์ง€", "price": 50000}
    ]

โ‡’ JSON ๋„ํ๋จผํŠธ ํ˜•ํƒœ๋Š” ๋Œ€๊ด„ํ˜ธ์™€ ์ค‘๊ด„ํ˜ธ๋กœ๋งŒ ๊ตฌ์„ฑํ•˜๋ฉด ๋˜๊ณ , ๋ฐ์ดํ„ฐ๋งˆ๋‹ค ๊ตฌ์„ฑ์ด ๊ฐ™์„ ํ•„์š”๊ฐ€ ์—†๋‹ค.

โ‡’ ๊ฐœ๋ฐœ์ž๊ฐ€ ์›ํ•˜๋Š” ์–ด๋– ํ•œ ๋ชจ์–‘, ์–ด๋– ํ•œ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ผ๋„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.



๐Ÿ”Žํ‚ค๊ฐ’ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

  • ์ฝ๊ณ  ์“ฐ๋Š” ์†๋„๊ฐ€ ์—„์ฒญ ๋น ๋ฅด๋‹ค.

  • ์นด์‚ฐ๋“œ๋ผ๋””๋น„(CassandraDB), ๋‹ค์ด๋‚˜๋ชจ๋””๋น„(DynamoDB)๊ฐ€ ๋Œ€ํ‘œ์ 

โœ๏ธ์นด์‚ฐ๋“œ๋ผ๋””๋น„

  • ํ•œ ํ–‰์˜ ์—ด์ด ์—„์ฒญ ๋„“์€(column wide) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

  • ์ฝ๊ณ  ์“ฐ๋Š” ์†๋„๊ฐ€ ์ •๋ง ๋น ๋ฅด๋‹ค! ์ˆ˜๋งŒ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ 1์ดˆ ๋งŒ์— ์“ธ ์ˆ˜ ์žˆ๋‹ค.

  • ์• ํ”Œ์€ ์นด์‚ฐ๋“œ๋ผ๋””๋น„๋กœ 10ํŽ˜ํƒ€๋ฐ”์ดํŠธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋‹ค.
    - 10 ํŽ˜ํƒ€๋ฐ”์ดํŠธ(PB) = 100๋งŒ ๊ธฐ๊ฐ€๋ฐ”์ดํŠธ(GB)
    - 1 ํŽ˜ํƒ€๋ฐ”์ดํŠธ(petabyte, PB) = 1,024ํ…Œ๋ผ๋ฐ”์ดํŠธ(TB)
    - 1 ํ…Œ๋ผ๋ฐ”์ดํŠธ(TB) = 1๋ฐ”์ดํŠธ * 1012^{12}

  • ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ €์žฅํ•ด์•ผ ํ•˜๊ฑฐ๋‚˜ ์ฝ์–ด์•ผ ํ•  ๋•Œ ์ข‹์€ ์„ ํƒ์ง€

โœ๏ธ๋‹ค์ด๋‚˜๋ชจ๋””๋น„

  • ์•„๋งˆ์กด์ด ๋งŒ๋“ค์—ˆ๋‹ค.

  • ๋“€์˜ค๋ง๊ณ (Duolingo) ๋ผ๋Š” ์–ธ์–ด ํ•™์Šต ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉ



๐Ÿ”Ž๊ทธ๋ž˜ํ”„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

  • ์—ด์ด๋‚˜ ๋„ํ๋จผํŠธ ์—†์ด ๋…ธ๋“œ๋กœ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค.

  • ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๊ณ„๋ง์œผ๋กœ ์—ฐ๊ฒฐํ•œ๋‹ค.
    ์˜ˆ)
    ์‚ฌ์šฉ์ž1์ด ์‚ฌ์ง„1์— ์ข‹์•„์š”๋ฅผ ๋ˆŒ๋ €๋‹ค.
    ์‚ฌ์šฉ์ž1๊ณผ ์‚ฌ์šฉ์ž2๋Š” ์นœ๊ตฌ๋‹ค.

profile
๊ณต๋ถ€ ๊ธฐ๋ก

0๊ฐœ์˜ ๋Œ“๊ธ€