CodeGym /Java Course /All lectures for KO purposes /NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์†Œ๊ฐœ

NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์†Œ๊ฐœ

All lectures for KO purposes
๋ ˆ๋ฒจ 1 , ๋ ˆ์Šจ 890
์‚ฌ์šฉ ๊ฐ€๋Šฅ

1.1 NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘๋™ ๋ฐฉ์‹

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

๋‹จ์ˆœํ•œ ์ฑ… ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์Šคํ‚ค๋งˆ ๋ชจ๋ธ๋ง์˜ ์˜ˆ๋ฅผ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

  • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ฑ… ํ•ญ๋ชฉ์€ ์ข…์ข… ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์œผ๋กœ ๋ถ„ํ• (๋˜๋Š” "์ •๊ทœํ™”")๋˜์–ด ๊ด€๊ณ„๊ฐ€ ๊ธฐ๋ณธ ๋ฐ ์™ธ๋ž˜ ํ‚ค ์ œ์•ฝ ์กฐ๊ฑด์œผ๋กœ ์ •์˜๋œ ๋ณ„๋„์˜ ํ…Œ์ด๋ธ”์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์—์„œ Books ํ…Œ์ด๋ธ”์—๋Š” ISBN , ์ฑ… ์ œ๋ชฉ ๋ฐ ํŒ ๋ฒˆํ˜ธ ์—ด์ด ์žˆ๊ณ  Authors "ISBN"๋ฐ"์ €์ž"Author-ISBN์žˆ์œผ๋ฉฐ์—ด์ด์ €์ž ์ด๋ฆ„๋ฐID์ €์ž์—๋Š”ํ…Œ์ด๋ธ”. ๊ด€๊ณ„ํ˜• ๋ชจ๋ธ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ” ๊ฐ„์— ์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋Š” ์ค‘๋ณต์„ฑ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ์ •๊ทœํ™”๋˜๋ฉฐ ์ผ๋ฐ˜์ ์œผ๋กœ ์Šคํ† ๋ฆฌ์ง€์— ์ตœ์ ํ™”๋ฉ๋‹ˆ๋‹ค.

  • NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ฑ… ๋ ˆ์ฝ”๋“œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ JSON ๋ฌธ์„œ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๊ฐ ์ฑ… ๋˜๋Š” ์š”์†Œ์— ๋Œ€ํ•ด ISBN , ์ฑ… ์ œ๋ชฉ , ํŒ ๋ฒˆํ˜ธ , ์ €์ž ์ด๋ฆ„ ๋ฐ ์ €์ž ID ๊ฐ’์€ ๋‹จ์ผ ๋ฌธ์„œ์— ์†์„ฑ์œผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋ธ์—์„œ ๋ฐ์ดํ„ฐ๋Š” ์ง๊ด€์ ์ธ ๊ฐœ๋ฐœ๊ณผ ์ˆ˜ํ‰์  ํ™•์žฅ์„ฑ์„ ์œ„ํ•ด ์ตœ์ ํ™”๋ฉ๋‹ˆ๋‹ค.

1.2 NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

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

  • ์œ ์—ฐ์„ฑ . ์ผ๋ฐ˜์ ์œผ๋กœ NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์œ ์—ฐํ•œ ์Šคํ‚ค๋งˆ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๊ฐœ๋ฐœ ์†๋„๋ฅผ ๋†’์ด๊ณ  ์ ์ง„์  ๊ตฌํ˜„์„ โ€‹โ€‹๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์œ ์—ฐํ•œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋ฐ˜์ •ํ˜• ๋ฐ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

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

  • ๊ณ ์„ฑ๋Šฅ . NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ณด๋‹ค ๋” ๋†’์€ ์„ฑ๋Šฅ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ • ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๋ฐ ์•ก์„ธ์Šค ํŒจํ„ด์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋„“์€ ๊ธฐ๋Šฅ . NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๊ฐ๊ฐ์˜ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์— ๋งž๊ฒŒ ํŠน๋ณ„ํžˆ ์„ค๊ณ„๋œ ํ’๋ถ€ํ•œ API์™€ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

1.3 NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์œ ํ˜•

NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ…Œ์ด๋ธ” ํ˜•์‹์œผ๋กœ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ๊ทธ๋‹ค์ง€ ํŽธ๋ฆฌํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋งค์šฐ ๋‹ค๋ฅธ ํ˜•์‹์œผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” 6๊ฐ€์ง€ ์ฃผ์š” ๋ฐ์ดํ„ฐ ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํ‚ค-๊ฐ’ ์Œ ๊ธฐ๋ฐ˜ DB

ํ‚ค-๊ฐ’ ์Œ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋†’์€ ๋ถ„๋ฆฌ์„ฑ์„ ์ง€์›ํ•˜๊ณ  ๋‹ค๋ฅธ ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ๋Š” ๋‹ฌ์„ฑํ•  ์ˆ˜ ์—†๋Š” ์ „๋ก€ ์—†๋Š” ์ˆ˜ํ‰ ํ™•์žฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ‚ค-๊ฐ’ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ข‹์€ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๊ฒŒ์ž„, ๊ด‘๊ณ  ๋ฐ IoT ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด Amazon DynamoDB๋Š” ์–ด๋–ค ๊ทœ๋ชจ์—์„œ๋“  ๋ช‡ ๋ฐ€๋ฆฌ์ดˆ ์ดํ•˜์˜ ์ง€์—ฐ์œผ๋กœ ์•ˆ์ •์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์šด์˜์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ•๋ ฅํ•œ ์„ฑ๋Šฅ์€ Snapchat Stories๋ฅผ DynamoDB๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•œ ์ฃผ๋œ ์ด์œ ์˜€์Šต๋‹ˆ๋‹ค. ์ด Snapchat ๊ธฐ๋Šฅ์€ ๊ฐ€์žฅ ํฐ ์Šคํ† ๋ฆฌ์ง€ ์“ฐ๊ธฐ ๋กœ๋“œ์™€ ์—ฐ๊ด€๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋ฌธ์„œ

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

๋ฌธ์„œ ๋ชจ๋ธ์€ ๊ฐ ๋ฌธ์„œ๊ฐ€ ๊ณ ์œ ํ•˜๊ณ  ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ๋ณ€๊ฒฝ๋˜๋Š” ์นดํƒˆ๋กœ๊ทธ, ์‚ฌ์šฉ์ž ํ”„๋กœํ•„ ๋ฐ ์ฝ˜ํ…์ธ  ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์—์„œ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. Amazon DocumentDB(MongoDB์™€ ํ˜ธํ™˜ ๊ฐ€๋Šฅ) ๋ฐ MongoDB๋Š” ์• ์ž์ผ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ๊ธฐ๋Šฅ์ ์ด๊ณ  ์ง๊ด€์ ์ธ API๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฌธ์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค.

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

๊ทธ๋ž˜ํ”„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋กœ ์ž‘์—…ํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋” ์‰ฝ๊ฒŒ ๊ฐœ๋ฐœํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ์˜ˆ๋กœ๋Š” ์†Œ์…œ ๋„คํŠธ์›Œํฌ, ์ถ”์ฒœ ์„œ๋น„์Šค, ์‚ฌ๊ธฐ ํƒ์ง€ ์‹œ์Šคํ…œ ๋ฐ ์ง€์‹ ๊ทธ๋ž˜ํ”„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Amazon Neptune์€ ์™„์ „ํžˆ ๊ด€๋ฆฌ๋˜๋Š” ๊ทธ๋ž˜ํ”„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. Neptune์€ Property Graph ๋ฐ Resource Description Framework(RDF)๋ฅผ ์ง€์›ํ•˜์—ฌ TinkerPop ๋ฐ RDF/SPARQL ์ค‘์—์„œ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๋‘ ๊ฐ€์ง€ ๊ทธ๋ž˜ํ”„ API๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ๊ทธ๋ž˜ํ”„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” Neo4j ๋ฐ Giraph๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ์˜ DB

์ข…์ข… ๊ฒŒ์ž„ ๋ฐ ๊ด‘๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ฆฌ๋”๋ณด๋“œ, ์„ธ์…˜ ์Šคํ† ๋ฆฌ์ง€ ๋ฐ ์‹ค์‹œ๊ฐ„ ๋ถ„์„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์€ ๋ช‡ ๋งˆ์ดํฌ๋กœ์ดˆ ์ด๋‚ด์— ์‘๋‹ตํ•ด์•ผ ํ•˜๋Š” ๋ฐ˜๋ฉด ํŠธ๋ž˜ํ”ฝ์˜ ๊ธ‰๊ฒฉํ•œ ์ฆ๊ฐ€๋Š” ์–ธ์ œ๋“ ์ง€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

Amazon MemoryDB for Redis๋Š” ์ฝ๊ธฐ ์ง€์—ฐ ์‹œ๊ฐ„์„ ๋ฐ€๋ฆฌ์ดˆ๋กœ ์ค„์ด๊ณ  ์—ฌ๋Ÿฌ ๊ฐ€์šฉ ์˜์—ญ์—์„œ ๋‚ด๊ตฌ์„ฑ์„ ์ œ๊ณตํ•˜๋Š” Redis์™€ ํ˜ธํ™˜๋˜๊ณ  ์•ˆ์ •์ ์ธ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. MemoryDB๋Š” ์ดˆ๊ณ ์„ฑ๋Šฅ ๋ฐ ์•ˆ์ •์„ฑ์„ ์œ„ํ•ด ํŠน๋ณ„ํžˆ ์ œ์ž‘๋˜์—ˆ์œผ๋ฏ€๋กœ ์ตœ์‹  ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ธฐ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Amazon ElastiCache๋Š” ์™„์ „ ๊ด€๋ฆฌํ˜• Redis ๋ฐ Memcached์™€ ํ˜ธํ™˜๋˜๋Š” ์ธ ๋ฉ”๋ชจ๋ฆฌ ์บ์‹ฑ ์„œ๋น„์Šค๋กœ ์ง€์—ฐ ์‹œ๊ฐ„์ด ์งง๊ณ  ์ฒ˜๋ฆฌ๋Ÿ‰์ด ๋†’์€ ์›Œํฌ๋กœ๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์•ฑ์ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์‘๋‹ตํ•ด์•ผ ํ•˜๋Š” Tinder์™€ ๊ฐ™์€ ํด๋ผ์ด์–ธํŠธ๋Š” ๋””์Šคํฌ ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ์ด ์•„๋‹Œ ์ธ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํŠน๋ณ„ํžˆ ๊ตฌ์ถ•๋œ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค์˜ ๋˜ ๋‹ค๋ฅธ ์˜ˆ๋Š” Amazon DynamoDB Accelerator(DAX)์ž…๋‹ˆ๋‹ค. DAX๋ฅผ ํ†ตํ•ด DynamoDB๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ช‡ ๋ฐฐ ๋” ๋น ๋ฅด๊ฒŒ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฒ€์ƒ‰

๋งŽ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋กœ๊ทธ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฌธ์ œ๋ฅผ ๋ณด๋‹ค ์‰ฝ๊ฒŒ โ€‹โ€‹ํ•ด๊ฒฐํ•˜๊ณ  ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. Amazon OpenSearch๋Š” ๋ฐ˜๊ตฌ์กฐํ™”๋œ ๋กœ๊ทธ ๋ฐ ๋ฉ”ํŠธ๋ฆญ์„ ์ธ๋ฑ์‹ฑ, ์ง‘๊ณ„ ๋ฐ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์„ ๊ฑฐ์˜ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์‹œ๊ฐํ™”ํ•˜๊ณ  ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด ํŠน๋ณ„ํžˆ ์ œ์ž‘๋œ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ Amazon OpenSearch๋Š” ๊ฐ•๋ ฅํ•œ ๊ณ ์„ฑ๋Šฅ ์ „์ฒด ํ…์ŠคํŠธ ๊ฒ€์ƒ‰ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. Expedia๋Š” ์šด์˜ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๋ฌธ์ œ ํ•ด๊ฒฐ์—์„œ ๋ถ„์‚ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์Šคํƒ ์ถ”์  ๋ฐ ๋น„์šฉ ์ตœ์ ํ™”์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ๋‹ค์–‘ํ•œ ๋ฏธ์…˜ ํฌ๋ฆฌํ‹ฐ์ปฌ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•ด 150๊ฐœ ์ด์ƒ์˜ Amazon OpenSearch ์„œ๋น„์Šค ๋„๋ฉ”์ธ, 30TB์˜ ๋ฐ์ดํ„ฐ ๋ฐ 300์–ต ๊ฐœ์˜ ๋ฌธ์„œ๋ฅผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.

1.4 SQL(๊ด€๊ณ„ํ˜•) ๋ฐ NoSQL(๋น„๊ด€๊ณ„ํ˜•) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋น„๊ต

NoSQL์—๋Š” ๋งŽ์€ ์žฅ์ ์ด ์žˆ์œผ๋ฏ€๋กœ ์ง์ ‘ ์ž‘์„ฑํ•˜๊ธฐ ์ „์— ์ ์–ด๋„ ์ด๋ก ์ ์œผ๋กœ๋Š” ํ•„์š”ํ•œ ๋„๊ตฌ๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์—์„œ NoSQL๊ณผ SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋น„๊ตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ ํ•ฉํ•œ ์›Œํฌ๋กœ๋“œ

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํŠธ๋žœ์žญ์…˜ ๋ฐ ๋งค์šฐ ์ผ๊ด€๋œ OLTP(์‹ค์‹œ๊ฐ„ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ) ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์šฉ์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ์œผ๋ฉฐ OLAP(์‹ค์‹œ๊ฐ„ ๋ถ„์„ ์ฒ˜๋ฆฌ)์— ๋งค์šฐ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ์งง์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํฌํ•จํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ํŒจํ„ด์—์„œ ์ž‘๋™ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. NoSQL ๊ฒ€์ƒ‰ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋ฐ˜์ •ํ˜• ๋ฐ์ดํ„ฐ ๋ถ„์„์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ๋ชจ๋ธ

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

NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๊ณ ์„ฑ๋Šฅ ๋ฐ ํ™•์žฅ์„ฑ์— ์ตœ์ ํ™”๋œ ํ‚ค-๊ฐ’ ์Œ, ๋ฌธ์„œ ๋ฐ ๊ทธ๋ž˜ํ”„์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

ACID ์†์„ฑ

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์›์ž์„ฑ, ์ผ๊ด€์„ฑ, ๊ฒฉ๋ฆฌ, ์•ˆ์ •์„ฑ๊ณผ ๊ฐ™์€ ์ผ๋ จ์˜ ACID ์†์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

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

NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ˆ˜ํ‰ ํ™•์žฅ์„ ํ—ˆ์šฉํ•˜๋Š” ๋ณด๋‹ค ์œ ์—ฐํ•œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ์œ„ํ•ด ACID ์†์„ฑ์˜ ์—„๊ฒฉํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์™„ํ™”ํ•˜๋Š” ์ ˆ์ถฉ์•ˆ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ NoSQL์€ ๋‹จ์ผ ์ธ์Šคํ„ด์Šค๋ฅผ ๋„˜์–ด ์ˆ˜ํ‰์  ํ™•์žฅ์ด ํ•„์š”ํ•œ ๊ณ ๋Œ€์—ญํญ, ์งง์€ ๋Œ€๊ธฐ ์‹œ๊ฐ„ ์‚ฌ์šฉ ์‚ฌ๋ก€์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

์„ฑ๋Šฅ

์„ฑ๋Šฅ์€ ์ฃผ๋กœ ๋””์Šคํฌ ํ•˜์œ„ ์‹œ์Šคํ…œ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ, ์ธ๋ฑ์Šค ๋ฐ ํ…Œ์ด๋ธ” ๊ตฌ์กฐ์˜ ์ตœ์ ํ™”๋Š” ์ข…์ข… ์ตœ๋Œ€ ์„ฑ๋Šฅ์„ ์œ„ํ•ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์„ฑ๋Šฅ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๊ธฐ๋ณธ ํ•˜๋“œ์›จ์–ด ํด๋Ÿฌ์Šคํ„ฐ์˜ ํฌ๊ธฐ, ๋„คํŠธ์›Œํฌ ๋Œ€๊ธฐ ์‹œ๊ฐ„ ๋ฐ ํ˜ธ์ถœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

์Šค์ผ€์ผ๋ง

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ•˜๋“œ์›จ์–ด์˜ ์ปดํ“จํŒ… ์„ฑ๋Šฅ์„ ๋†’์ด๊ฑฐ๋‚˜ ์ฝ๊ธฐ ์›Œํฌ๋กœ๋“œ๋ฅผ ์œ„ํ•œ ๋ณ„๋„์˜ ๋ณต์‚ฌ๋ณธ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค.

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

API

๋ฐ์ดํ„ฐ ์“ฐ๊ธฐ ๋ฐ ๊ฒ€์ƒ‰ ์š”์ฒญ์€ SQL๋กœ ์ž‘์„ฑ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ฟผ๋ฆฌ๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์˜ํ•ด ๊ตฌ๋ฌธ ๋ถ„์„๋˜๊ณ  ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

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

์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION