๐ŸŽ‰ berenickt ๋ธ”๋กœ๊ทธ์— ์˜จ ๊ฑธ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ๐ŸŽ‰
DevOps
13-DynamoDB

1. NoSQL

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

1.1 RDBMS์™€ NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฐจ์ด์ 

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

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

NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” 4๊ฐ€์ง€ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์œ ํ˜•์ด ์žˆ๋‹ค.

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

์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋“ค์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๊ณ , ์•ก์„ธ์Šค๋˜๊ณ , ๊ตฌ์กฐํ™”๋˜๋Š” ๋ฐฉ์‹์ด ๋‹ค๋ฅด๋ฉฐ, ์„œ๋กœ ๋‹ค๋ฅธ ์‚ฌ์šฉ ์‚ฌ๋ก€ ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ตœ์ ํ™” ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.


2. DynamoDB

  • DynamoDB : AWS์—์„œ ์ œ๊ณตํ•˜๋Š” ๋งค์šฐ ๋น ๋ฅด๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์™„์ „๊ด€๋ฆฌํ˜• ํด๋ผ์šฐ๋“œ NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
  • ๊ทœ๋ชจ์™€ ๊ด€๊ณ„์—†์ด 10ms ๋ฏธ๋งŒ์˜ ์ง€์—ฐ ์‹œ๊ฐ„์„ ๋ณด์žฅํ•˜๋ฉฐ, ์œ ์—ฐํ•œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ์šฉ๋Ÿ‰์— ์ œํ•œ์ด ์—†๋‹ค.
  • ์•ˆ์ •์ ์ธ ์„ฑ๋Šฅ ๋ฐ ์ฒ˜๋ฆฌ ์šฉ๋Ÿ‰ ์ž๋™ ์กฐ์ • ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์•ˆ์ •์ ์ด๊ณ  ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ,
    • ์šฉ๋Ÿ‰๊ณผ ์ฝ๊ธฐ/์“ฐ๊ธฐ ์œ ๋‹›์— ๋Œ€ํ•˜์—ฌ ๊ณผ๊ธˆ๋จ
  • DAX(DynamoDB Accelerator) : ๊ฐ€์šฉ์„ฑ์ด ๋›ฐ์–ด๋‚œ ์™„์ „๊ด€๋ฆฌํ˜• ์ธ ๋ฉ”๋ชจ๋ฆฌ ์บ์‹œ
    • DAX๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ดˆ๋‹น ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ์š”์ฒญ์—๋„ DynamoDB ์‘๋‹ต ์‹œ๊ฐ„์„ ๋ฐ€๋ฆฌ์ดˆ์—์„œ ๋งˆ์ดํฌ๋กœ์ดˆ๋กœ ๋‹จ์ถ• ๊ฐ€๋Šฅ

2.1 DynamoDB Read ๋ฐฉ์‹

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

2.2 DynamoDB ๊ณผ๊ธˆ๋ฐฉ์‹

๊ณผ๊ธˆ ๋ฐฉ์‹์€ ํฌ๊ฒŒ ์Šคํ† ๋ฆฌ์ง€ ์š”๊ธˆ๊ณผ ์ฝ๊ธฐ/์“ฐ๊ธฐ ์šฉ๋Ÿ‰ ์œ ๋‹›์— ๋Œ€ํ•œ ์š”๊ธˆ์œผ๋กœ ๋‚˜๋ˆ ์ง„๋‹ค.

  • ๋ฐ์ดํ„ฐ ์Šคํ† ๋ฆฌ์ง€ :

    • ํ…Œ์ด๋ธ”์—์„œ ์‚ฌ์šฉํ•œ ๋””์Šคํฌ ๊ณต๊ฐ„(GB)๋‹น ์‹œ๊ฐ„๋‹น ์š”๊ธˆ์„ ๋ถ€๊ณผ
    • GB๋‹น ์›” 0.27 USD
  • ์ฝ๊ธฐ ์šฉ๋Ÿ‰ ์œ ๋‹›

    • 1 ์ฝ๊ธฐ ์šฉ๋Ÿ‰ ์œ ๋‹›์€ ์ดˆ๋‹น ์ตœ๋Œ€ 2๊ฑด์˜ ์ฝ๊ธฐ ์ž‘์—…์„ ์ œ๊ณต (์›”๋ณ„ 5๋ฐฑ 2์‹ญ๋งŒ ๊ฑด)
    • ์ฝ๊ธฐ ์š”์ฒญ ์œ ๋‹› 100๋งŒ ๊ฑด๋‹น 0.271 USD
  • ์“ฐ๊ธฐ ์šฉ๋Ÿ‰ ์œ ๋‹› ์š”๊ธˆ

    • 1 ์“ฐ๊ธฐ ์šฉ๋Ÿ‰ ์œ ๋‹›์€ ์ดˆ๋‹น ์ตœ๋Œ€ 1๊ฑด์˜ ์“ฐ๊ธฐ ์ž‘์—…์„ ์ œ๊ณต (์›”๋ณ„ 2๋ฐฑ 6์‹ญ๋งŒ ๊ฑด)
    • ์“ฐ๊ธฐ ์š”์ฒญ ์œ ๋‹› 100๋งŒ ๊ฑด๋‹น 1.3556 USD

cf. ์ด ์š”๊ธˆ์€ ํ˜„์žฌ ์‹œ์ ์˜ ์„œ์šธ ๋ฆฌ์ „ ๊ธฐ์ค€ ์š”๊ธˆ์ด๋ฉฐ, ํ”„๋ฆฌํ‹ฐ์–ด์—์„œ๋Š” ๋งค์›” 25GB ์Šคํ† ๋ฆฌ์ง€ ๋ฐ ์ฝ๊ธฐ/์“ฐ๊ธฐ ์šฉ๋Ÿ‰ ์œ ๋‹›์ด ๊ฐ 25๊ฐœ์”ฉ ์ œ๊ณต๋จ


2.3 DynamoDB ๊ธฐ๋ณธ ๊ตฌ์„ฑ

  • Table : Item์˜ ์ง‘ํ•ฉ
  • Item : Attribute์˜ ์ง‘ํ•ฉ
  • Attribute : Key-Value๋ฐฉ์‹์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, Key๋Š” ๋ฌธ์ž์—ด

3. DynamoDB ๋ฐ์ดํ„ฐ ํƒ€์ž…

3.1 ์Šค์นผ๋ผ ๋ฐ์ดํ„ฐ ํ˜•์‹

ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์Šค์นผ๋ผ ๋ฐ์ดํ„ฐ ํ˜•์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • Number (N) : ์–‘์ˆ˜, ์Œ์ˆ˜ ๋˜๋Š” 0. ์ตœ๋Œ€ 38์ž๋ฆฌ๊นŒ์ง€ ์ง€์›.
  • String (S) : UTF-8 ์ด์ง„ ์ธ์ฝ”๋”ฉ ์„ ์‚ฌ์šฉํ•˜๋Š” ์œ ๋‹ˆ์ฝ”๋“œ.
  • Binary (B) : ์••์ถ• ํ…์ŠคํŠธ, ์•”ํ˜ธํ™” ๋ฐ์ดํ„ฐ, ๋˜๋Š” ์ด๋ฏธ์ง€ ๊ฐ™์€ ๋ชจ๋“  ์ด์ง„์ˆ˜ ๋ฐ์ดํ„ฐ ์ €์žฅ ๊ฐ€๋Šฅ.
  • Boolean (S, "0"๋˜๋Š” 1") : true ๋˜๋Š” false๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ.
  • Null (NULL) : ์•Œ๋ ค์ง€์ง€ ์•Š์•˜๊ฑฐ๋‚˜ ์ •์˜๋˜์ง€ ์•Š์€ ์ƒํƒœ์˜ ์†์„ฑ.

3.2 ๋ฌธ์„œ ํ˜•์‹

๋‚ดํฌ ์†์„ฑ์ด ์žˆ๋Š” ๋ณต์žกํ•œ ๊ตฌ์กฐ๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๋ฌธ์„œ ํ˜•์‹์ด ์žˆ๋‹ค.

  • List (L) : ์ˆœ์„œ๊ฐ€ ์ง€์ •๋œ ๊ฐ’ ๋ชจ์Œ์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ.
  • ะœะฐั€ (M) : ์ •๋ ฌ๋˜์ง€ ์•Š์€ ์ด๋ฆ„-๊ฐ’ ์Œ์˜ ๋ชจ์Œ์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Œ

3.2 ๋‹ค์ค‘ ๊ฐ’ ํ˜•์‹

์—ฌ๋Ÿฌ ์Šค์นผ๋ผ ๊ฐ’์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์ค‘ ๊ฐ’ ํ˜•์‹์ด ์žˆ๋‹ค.

  • String Set (SS) : ๋ฌธ์ž์—ด ์ง‘ํ•ฉ
  • Number Set (NS) : ์ˆซ์ž ์ง‘ํ•ฉ
  • Binary Set (BS) : ์ด์ง„ ์ง‘ํ•ฉ

4. DynamoDB ํŒŒํ‹ฐ์…˜ ๋ฐ ํ‚ค

4.1 DynamoDB ํŒŒํ‹ฐ์…˜

DynamoDB์˜ ํŒŒํ‹ฐ์…˜ : DynamoDB๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณณ

  • SSD(Solid State Drive)๋กœ ๋ฐฑ์—…๋˜๋Š” ํ…Œ์ด๋ธ”์šฉ ์Šคํ† ๋ฆฌ์ง€ ํ• ๋‹น์„ ์˜๋ฏธํ•˜๋ฉฐ,
  • ํ•˜๋‚˜์˜ AWS ๋ฆฌ์ „ ๋‚ด์˜ ์—ฌ๋Ÿฌ ๊ฐ€์šฉ ์˜์—ญ์— ์ž๋™์œผ๋กœ ๋ณต์ œ๋œ๋‹ค.
  • ์ด ํŒŒํ‹ฐ์…˜์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ๊ด€๋ฆฌํ•  ํ•„์š” ์—†์ด ์ „์ ์œผ๋กœ DynamoDB์—์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค.

DynamoDB๋Š”๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์— ํ…Œ์ด๋ธ”์— ์ถ”๊ฐ€ ํŒŒํ‹ฐ์…˜์„ ํ• ๋‹นํ•œ๋‹ค.

  • ๊ธฐ์กด ํŒŒํ‹ฐ์…˜์ด ์ง€์›ํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ๋„๋ฅผ ์ดˆ๊ณผํ•˜์—ฌ ํ…Œ์ด๋ธ”์˜ ํ• ๋‹น๋œ ์ฒ˜๋ฆฌ๋Ÿ‰ ์„ค์ •์„ ๋Š˜๋ฆฌ๋Š” ๊ฒฝ์šฐ
  • ๊ธฐ์กด ํŒŒํ‹ฐ์…˜ ์šฉ๋Ÿ‰์ด ๋‹ค ์ฐจ์„œ ์ถ”๊ฐ€ ์Šคํ† ๋ฆฌ์ง€ ๊ณต๊ฐ„์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ

4.2 DynamoDB ํ‚ค

๋ณดํ†ต DB์—์„œ key๋ผ๊ณ  ํ•˜๋ฉด Table๋‚ด์—์„œ ๊ฐ Item์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ณ ์œ  ์‹๋ณ„์ž๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

  • ๊ธฐ๋ณธํ‚ค (Primary Key)
    • Table๋‚ด์—์„œ ๊ฐ ltem์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ณ ์œ  ์‹๋ณ„์ž
    • ๋‹จ์ˆœ ๊ธฐ๋ณธ ํ‚ค : ํŒŒํ‹ฐ์…˜ ํ‚ค๋งŒ ์‚ฌ์šฉ
    • ๋ณตํ•ฉ ๊ธฐ๋ณธ ํ‚ค : ํŒŒํ‹ฐ์…˜ ํ‚ค์™€ ์ •๋ ฌ ํ‚ค๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉ
  • ํŒŒํ‹ฐ์…˜ ํ‚ค(Partition Key)
    • ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ํŒŒํ‹ฐ์…˜์„ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•œ ํ‚ค
    • ๋‚ด๋ถ€ ํ•ด์‹œ ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์ž…๋ ฅ์œผ๋กœ ํŒŒํ‹ฐ์…˜ ํ‚ค ๊ฐ’์„ ์‚ฌ์šฉ
    • ์ถœ๋ ฅ์— ๋”ฐ๋ผ ํ•ญ๋ชฉ์„ ์ €์žฅํ•  ํŒŒํ‹ฐ์…˜์ด ๊ฒฐ์ •๋จ
  • ์ •๋ ฌ ํ‚ค (Sort Key) : ํŒŒํ‹ฐ์…˜ ํ‚ค๊ฐ€ ๋™์ผํ•œ ๋ชจ๋“  ํ•ญ๋ชฉ๋“ค์„ ์ •๋ ฌํ•˜๋Š” ํ‚ค ๊ฐ’

DynamoDB์—์„œ๋Š” ํŒŒํ‹ฐ์…˜ ํ‚ค๋งŒ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ํŒŒํ‹ฐ์…˜ ํ‚ค์™€ ์ •๋ ฌ ํ‚ค๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ํ˜•ํƒœ๋กœ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธ ํ‚ค๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋จผ์ € ๊ธฐ๋ณธ ํ‚ค๋กœ ํŒŒํ‹ฐ์…˜ ํ‚ค๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ํŒŒํ‹ฐ์…˜ ํ‚ค๋ฅผ ํ†ตํ•ด์„œ Item์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.
  • ๋‹ค์Œ์€ ๊ธฐ๋ณธ ํ‚ค๋กœ ํŒŒํ‹ฐ์…˜ ํ‚ค์™€ ์ •๋ ฌ ํ‚ค๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ,
    • ํŒŒํ‹ฐ์…˜ ํ‚ค๋ฅผ ํ•ด์‹œ ํ•จ์ˆ˜์˜ ์ž…๋ ฅ์œผ๋กœ ์ „๋‹ฌํ•˜์—ฌ Item์ด ์ €์žฅ๋˜์–ด ์žˆ๋Š” ํŒŒํ‹ฐ์…˜์„ ์ฐพ๊ณ ,
    • ์ดํ›„์— ํ•ด๋‹น ํŒŒํ‹ฐ์…˜ ๋‚ด์—์„œ ์ •๋ ฌ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Item์„ ์ฐพ๋Š”๋‹ค.

5. DynamoDB ๋ณด์กฐ ์ธ๋ฑ์Šค

DynamoDB์˜ ํ…Œ์ด๋ธ”์—์„œ๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ณด์กฐ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋ณด์กฐ ์ธ๋ฑ์Šค๋Š” ํŒŒํ‹ฐ์…˜ ํ‚ค์— ๋Œ€ํ•œ ์ฟผ๋ฆฌ๋Š” ๋ฌผ๋ก ์ด๊ณ , ์ •๋ ฌ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ฟผ๋ฆฌ๊นŒ์ง€ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • DynamoDB๋Š” ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์š”๊ตฌํ•˜์ง€๋Š” ์•Š์œผ๋ฉด์„œ๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฟผ๋ฆฌํ•  ๋•Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋ณด๋‹ค ๋งŽ์€ ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•œ๋‹ค.
  • ํ…Œ์ด๋ธ”์—์„œ ๋ณด์กฐ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•œ ํ›„์—๋Š”, ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ธ๋ฑ์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค.

DynamoDB์˜ ๋ณด์กฐ ์ธ๋ฑ์Šค์—๋Š” 2๊ฐ€์ง€ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค.

  • LSI (Local Secondary Index, ๋กœ์ปฌ ๋ณด์กฐ ์ธ๋ฑ์Šค)
    • ํ…Œ์ด๋ธ”๊ณผ ํŒŒํ‹ฐ์…˜ ํ‚ค๋Š” ๋™์ผํ•˜์ง€๋งŒ ์ •๋ ฌ ํ‚ค๋Š” ๋‹ค๋ฅธ ์ธ๋ฑ์Šค
    • ํ…Œ์ด๋ธ”์— ์ •๋ ฌ ํ‚ค(Sort Key)๋ฅผ ์ถ”๊ฐ€๋กœ ๋” ๋งŒ๋“ ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.
  • GSI (Global Secondary Index, ๊ธ€๋กœ๋ฒŒ ๋ณด์กฐ ์ธ๋ฑ์Šค)
    • ํŒŒํ‹ฐ์…˜ ํ‚ค ๋ฐ ์ •๋ ฌ ํ‚ค๊ฐ€ ํ…Œ์ด๋ธ”์˜ ํŒŒํ‹ฐ์…˜ ํ‚ค ๋ฐ ์ •๋ ฌ ํ‚ค์™€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋Š” ์ธ๋ฑ์Šค

DynamoDB์—์„œ๋Š” ํ…Œ์ด๋ธ”๋‹น ์ตœ๋Œ€ 20๊ฐœ์˜ GSI ๋ฐ 5๊ฐœ์˜ LSI๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.


5.1 GSI์™€ LSI์˜ ์ฐจ์ด์ 

ํŠน์„ฑ๊ธ€๋กœ๋ฒŒ ๋ณด์กฐ ์ธ๋ฑ์Šค๋กœ์ปฌ ๋ณด์กฐ ์ธ๋ฑ์Šค
ํ‚ค ์Šคํ‚ค๋งˆ๋‹จ์ˆœ ๊ธฐ๋ณธํ‚ค(ํŒŒํ‹ฐ์…˜ ํ‚ค) ๋˜๋Š”๋ณตํ•ฉ ๊ธฐ๋ณธํ‚ค(ํŒŒํ‹ฐ์…˜ ํ‚ค ๋ฐ ์ •๋ ฌ ํ‚ค)๊ธฐ๋ณธ ํ‚ค๋Š” ๋ฐ˜๋“œ์‹œ๋ณตํ•ฉ ๊ธฐ๋ณธํ‚ค(ํŒŒํ‹ฐ์…˜ ํ‚ค ๋ฐ ์ •๋ ฌ ํ‚ค)์—ฌ์•ผ ํ•จ
ํ‚ค ์†์„ฑ๋ฌธ์ž์—ด, ์ˆซ์ž ๋˜๋Š” ์ด์ง„์ˆ˜ ํ˜•์‹์˜ ๊ธฐ๋ณธ ํ…Œ์ด๋ธ” ์†์„ฑ๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์˜ ํŒŒํ‹ฐ์…˜ ํ‚ค์™€ ๋™์ผํ•œ ์†์„ฑ
ํŒŒํ‹ฐ์…˜ ํ‚ค ๊ฐ’๋‹น ํฌ๊ธฐ ์ œํ•œํฌ๊ธฐ ์ œํ•œ์ด ์—†์ŒํŒŒํ‹ฐ์…˜ ํ‚ค๊ฐ’๋งˆ๋‹ค ์ธ๋ฑ์‹ฑ๋œ ๋ชจ๋“  ํ•ญ๋ชฉ์˜ ์ „์ฒด ํฌ๊ธฐ๊ฐ€ 10GB ์ดํ•˜์—ฌ์•ผ ํ•จ
์˜จ๋ผ์ธ ์ธ๋ฑ์Šค ์ž‘์—…ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•  ๋•Œ ๋™์‹œ์— GSI๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Œ. ๊ธฐ์กด ํ…Œ์ด๋ธ”์— ์ƒˆ GSI๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜,๊ธฐ์กด GSI๋ฅผ ์‚ญ์ œํ•  ์ˆ˜๋„ ์žˆ์Œํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•  ๋•Œ ๋™์‹œ์— LSI๊ฐ€ ์ƒ์„ฑ๋จ. ๊ธฐ์กด ํ…Œ์ด๋ธ”์— LSI๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์—†๊ณ , ๊ธฐ์กด LSI๋ฅผ ์‚ญ์ œํ•  ์ˆ˜๋„ ์—†์Œ
์ฟผ๋ฆฌ ๋ฐ ํŒŒํ‹ฐ์…˜์ „์ฒด ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํŒŒํ‹ฐ์…˜์— ๋Œ€ํ•ด ์ฟผ๋ฆฌ ๊ฐ€๋ŠฅํŒŒํ‹ฐ์…˜ํ‚ค๊ฐ€ ๊ฐ™์€ ๋‹จ์ผ ํŒŒํ‹ฐ์…˜์— ๋Œ€ํ•ด ์ฟผ๋ฆฌ ๊ฐ€๋Šฅ
์ฝ๊ธฐ ์ผ๊ด€์„ฑ์ตœ์ข… ์ผ๊ด€์„ฑ๋งŒ ์ง€์›์ตœ์ข… ์ผ๊ด€์„ฑ ๋˜๋Š” ๊ฐ•๋ ฅํ•œ ์ผ๊ด€์„ฑ ์„ ํƒ ๊ฐ€๋Šฅ
ํ• ๋‹น๋œ ์ฒ˜๋ฆฌ๋Ÿ‰ ์†Œ๋น„์ž์ฒด ํ• ๋‹น ์ฒ˜๋ฆฌ๋Ÿ‰ ์„ค์ •์ด ์žˆ์ŒGSI์˜ ์šฉ๋Ÿ‰ ๋‹จ์œ„๋ฅผ ์†Œ๋น„๊ธฐ๋ณธ ํ…Œ์ด๋ธ”์˜ ์ฝ๊ธฐ/์“ฐ๊ธฐ ์šฉ๋Ÿ‰ ๋‹จ์œ„๋ฅผ ์†Œ๋น„ ํ…Œ์ด๋ธ”์— ์“ธ ๋•Œ ํ•ด๋‹น LSI๋„ ์—…๋ฐ์ดํŠธ ๋จ
ํ”„๋กœ์ ์…˜ ์†์„ฑ์ธ๋ฑ์Šค๋กœ ํ”„๋กœ์ ์…˜๋˜๋Š” ์†์„ฑ๋งŒ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Œ์ธ๋ฑ์Šค๋กœ ํ”„๋กœ์ ์…˜๋˜์ง€ ์•Š๋Š” ์†์„ฑ๋„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Œ

๋ณด์กฐ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๊ฐ๊ฐ์˜ ํŠน์ง•์„ ๊ผญ ์ž˜ ํ™•์ธํ•˜๊ณ  ์‚ฌ์šฉํ•˜์ž.


5.2 ๋กœ์ปฌ ๋ณด์กฐ ์ธ๋ฑ์Šค(LSI) ์˜ˆ

lsi

  • ํ…Œ์ด๋ธ”์˜ ํŒŒํ‹ฐ์…˜ ํ‚ค๋Š” Name์ด๊ณ  ์ •๋ ฌ ํ‚ค๋Š” Subject
  • LSI์˜ ํŒŒํ‹ฐ์…˜ ํ‚ค๋Š” Name์œผ๋กœ ํ…Œ์ด๋ธ”๊ณผ ๋™์ผํ•˜๋ฉฐ, ์ •๋ ฌ ํ‚ค๋Š” Score๋กœ ํ…Œ์ด๋ธ”๊ณผ ๋‹ค๋ฅธ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • ์ด๋ ‡๊ฒŒ ๋กœ์ปฌ ๋ณด์กฐ ์ธ๋ฑ์Šค(LSI)๋ฅผ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด,
    • Name๊ณผ Score ๊ฐ’์„ ์ด์šฉํ•ด์„œ ํ…Œ์ด๋ธ” ๋‚ด์—์„œ ์•„์ดํ…œ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

5.3 ๊ธ€๋กœ๋ฒŒ ๋ณด์กฐ ์ธ๋ฑ์Šค(GSI) ์˜ˆ

gsi

  • ๊ธ€๋กœ๋ฒŒ ๋ณด์กฐ ์ธ๋ฑ์Šค์˜ ํŒŒํ‹ฐ์…˜ ํ‚ค๋Š” Subject๊ฐ€ ๋˜๊ณ , ์ •๋ ฌ ํ‚ค๋Š” Name์ด๋‹ค.
  • ๊ธ€๋กœ๋ฒŒ ๋ณด์กฐ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ํŒŒํ‹ฐ์…˜์„ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๊ณ ,
    • ํ•ด๋‹น ํŒŒํ‹ฐ์…˜ ๋‚ด์—์„œ ์•„์ดํ…œ๋“ค์„ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

6. DynamoDB ๋ฐ์ดํ„ฐ ์กฐํšŒ

DynamoDB์˜ ๋ฐ์ดํ„ฐ ์กฐํšŒ ๋ฐฉ์‹์—๋Š” ํฌ๊ฒŒ Query์™€ Scan์ด ์žˆ๋‹ค.

  • Query : ๊ธฐ๋ณธ ํ‚ค ๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ญ๋ชฉ์„ ์ฐพ๋Š” ๋ฐฉ์‹
    • ๋ณตํ•ฉ ๊ธฐ๋ณธ ํ‚ค๊ฐ€ ์žˆ๋Š” ํ…Œ์ด๋ธ” ๋˜๋Š” ๋ณด์กฐ ์ธ๋ฑ์Šค๋ฅผ ์ฟผ๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ
    • ํŒŒํ‹ฐ์…˜ ํ‚ค ์†์„ฑ์˜ ์ด๋ฆ„๊ณผ ํ•ด๋‹น ์†์„ฑ์˜ ๋‹จ์ผ ๊ฐ’์„ ์ œ๊ณตํ•ด์•ผ ํ•˜๋ฉฐ, ํ•ด๋‹น ํŒŒํ‹ฐ์…˜ ํ‚ค ๊ฐ’์„ ๊ฐ–๋Š” ๋ชจ๋“  ํ•ญ๋ชฉ์„ ๋ฐ˜ํ™˜ํ•จ
    • ์„ ํƒ์ ์œผ๋กœ ์ •๋ ฌ ํ‚ค ์†์„ฑ์„ ์ œ๊ณตํ•˜๊ณ , ๋น„๊ต ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์˜ ๋ฒ”์œ„๋ฅผ ์ขํž ์ˆ˜ ์žˆ์Œ
  • Scan : ํ…Œ์ด๋ธ” ๋˜๋Š” ๋ณด์กฐ ์ธ๋ฑ์Šค์˜ ๋ชจ๋“  ํ•ญ๋ชฉ์„ ์ฝ์–ด์˜ค๋Š” ๋ฐฉ์‹
    • ๊ธฐ๋ณธ์ ์œผ๋กœ ํ…Œ์ด๋ธ”์ด๋‚˜ ์ธ๋ฑ์Šค์— ์†ํ•œ ํ•ญ๋ชฉ์˜ ๋ฐ์ดํ„ฐ ์†์„ฑ์„ ๋ชจ๋‘ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    • ProjectionExpression ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ผ๋ถ€ ์†์„ฑ๋งŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
    • ํ•ญ์ƒ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์„ ๋ฐ˜ํ™˜ํ•˜๋Š”๋ฐ, ๋งŒ์•ฝ ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์ด ์—†๋‹ค๋ฉด ๋น„์–ด์žˆ๋Š” ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์ด ๋ฐ˜ํ™˜๋œ๋‹ค.
    • ๋‹จ์ผ Scan ์š”์ฒญ์€ ์ตœ๋Œ€ 1MB๊นŒ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
    • ์ด๋•Œ ์˜ต์…˜์œผ๋กœ ํ•„ํ„ฐ ํ‘œํ˜„์‹์„ ์ ์šฉํ•˜๋ฉด ๋ฐ˜ํ™˜๋˜๋Š” ๊ฒฐ๊ณผ์˜ ๋ฒ”์œ„๋ฅผ ์ขํž ์ˆ˜๋„ ์žˆ๋‹ค.

์ •๋ฆฌ : Query๋Š” ํ‚ค ๊ฐ’์œผ๋กœ ์ฐพ๋Š” ๊ฒƒ์ด๊ณ , Scan์€ ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์„œ ํ•„ํ„ฐ๋ง ํ•˜๋Š” ๊ฒƒ

e.g. ํ•™๊ต์—์„œ ํ•™์ƒ์„ ์ฐพ๋Š”๋‹ค๋ฉด,

  • Query๋Š” ํ•™๋ฒˆ์œผ๋กœ ๊ณง๋ฐ”๋กœ ๋ถ€๋ฅด๋Š” ๊ฒƒ
    • ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Query๋ฅผ ์‚ฌ์šฉ
  • Scan์€ 1๋ช…์”ฉ ๋ถˆ๋Ÿฌ์„œ ํ•™๋ฒˆ์ด ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ

๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Query๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , Scan์€ ์†๋„๋„ ๋А๋ฆฌ๊ณ  ๋น„์‹ธ๋ฏ€๋กœ ์›ฌ๋งŒํ•˜๋ฉด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.


7. (์‹ค์Šต) DynamoDB ํ…Œ์ด๋ธ” ์„ค๊ณ„

DynamoDB์˜ ํ…Œ์ด๋ธ” ์„ค๊ณ„๋Š” ์ผ๋ฐ˜์ ์ธ DB์™€๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅด๋‹ค.

  • ์ „๊ต์ƒ์˜ ์‹œํ—˜ ์ ์ˆ˜๋ฅผ DynamoDB์— ๋„ฃ์–ด์„œ ๊ด€๋ฆฌํ•˜๋ ค๊ณ  ํ•จ
  • ํ•™์ƒ๋“ค์€ ์ €๋งˆ๋‹ค ๊ณ ์œ  ํ•™๋ฒˆ์„ ๊ฐ–๊ณ  ์žˆ์Œ
  • ์‹œํ—˜ ๊ณผ๋ชฉ์€ ์˜์–ด, ๊ณผํ•™, ์ˆ˜ํ•™ ์ด 3๊ณผ๋ชฉ
  • ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ์กฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•ด์•ผ ํ•จ
    • ํ•œ ํ•™์ƒ์˜ ์˜์–ด, ๊ณผํ•™, ์ˆ˜ํ•™ ์ ์ˆ˜๋ฅผ ๋‹ค ๊ฐ€์ ธ์˜ค๊ธฐ
    • ๊ฐ ๊ณผ๋ชฉ๋ณ„ ์ ์ˆ˜๋กœ ์ •๋ ฌํ•˜์—ฌ ํ•™์ƒ ๋ชฉ๋ก ๊ฐ€์ ธ์˜ค๊ธฐ

7.1 ๊ธฐ๋ณธํ‚ค ๊ตฌ์„ฑ

  • ๋‹จ์ˆœ ๊ธฐ๋ณธ ํ‚ค๋กœ ํ•  ๊ฒฝ์šฐ
    • ํŒŒํ‹ฐ์…˜ ํ‚ค : ํ•™์ƒ์˜ ํ•™๋ฒˆ
  • ๋ณตํ•ฉ ๊ธฐ๋ณธ ํ‚ค๋กœ ํ•  ๊ฒฝ์šฐ
    • ํŒŒํ‹ฐ์…˜ ํ‚ค : ํ•™์ƒ์˜ ํ•™๋ฒˆ
    • ์ •๋ ฌ ํ‚ค : ๊ณผ๋ชฉ๋ช…

์กฐ๊ฑด์„ ๋งŒ์กฑ์‹œํ‚ค๋ ค๋ฉด, ๋ณตํ•ฉ๊ธฐ๋ณธํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋ณด์กฐ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค.


7.2 ๋ณด์กฐ ์ธ๋ฑ์Šค

๋กœ์ปฌ ๋ณด์กฐ ์ธ๋ฑ์Šค : ์—ฌ๊ธฐ์„œ๋Š” ๊ตณ์ด ํ•„์š”์—†์Œ

๊ธ€๋กœ๋ฒŒ ๋ณด์กฐ ์ธ๋ฑ์Šค :

  • ๋ณตํ•ฉ ๊ธฐ๋ณธ ํ‚ค
    • ํŒŒํ‹ฐ์…˜ ํ‚ค : ๊ณผ๋ชฉ๋ช…
    • ์ •๋ ฌํ‚ค : ์ ์ˆ˜

๊ณผ๋ชฉ๋ช…์œผ๋กœ ํŒŒํ‹ฐ์…˜์„ ๋‚˜๋ˆ„๊ณ  ํŒŒํ‹ฐ์…˜ ๋‚ด์—์„œ ์ ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋‹ค.


8. (์‹ค์Šต) DynamoDB ํ…Œ์ด๋ธ” ์ƒ์„ฑ

[DynamoDB] โ†’ ์™ผ์ชฝ ๋ฉ”๋‰ด [ํ…Œ์ด๋ธ”]ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ด์„œ [ํ…Œ์ด๋ธ” ์ƒ์„ฑ] ๋ฒ„ํŠผ์„ ํด๋ฆญ. ๊ทธ๋Ÿฌ๋ฉด (ํ…Œ์ด๋ธ” ์ƒ์„ฑ) ํŽ˜์ด์ง€๊ฐ€ ๋‚˜์˜จ๋‹ค.

  • ํ…Œ์ด๋ธ” ์ด๋ฆ„ : StudentScore
  • ํŒŒํ‹ฐ์…˜ ํ‚ค : id, ์ˆซ์ž ํƒ€์ž…
  • ์ •๋ ฌ ํ‚ค : subject, ๋ฌธ์ž์—ด ํƒ€์ž…
  • ํ…Œ์ด๋ธ” ์„ค์ • : ์„ค์ • ์‚ฌ์šฉ์ž ์ง€์ •
    • ์„ ํƒํ•˜๋ฉด, ํ…Œ์ด๋ธ” ํด๋ž˜์Šค, ์šฉ๋Ÿ‰ ๊ณ„์‚ฐ๊ธฐ ๋“ฑ์ด ๋‚˜์˜จ๋‹ค.
  • ๋ณด์กฐ ์ธ๋ฑ์Šค์—์„œ [๊ธ€๋กœ๋ฒŒ ์ธ๋ฑ์Šค] ์ƒ์„ฑ ๋ฒ„ํŠผ์„ ํด๋ฆญ
    • ํŒŒํ‹ฐ์…˜ ํ‚ค : subject, ๋ฌธ์ž์—ด ํƒ€์ž…
    • ์ •๋ ฌํ‚ค : score, ์ˆซ์ž ํƒ€์ž…
    • [์ธ๋ฑ์Šค ์ƒ์„ฑ] ๋ฒ„ํŠผ์„ ํด๋ฆญ
    • ๊ทธ๋Ÿผ ๋ณด์กฐ์ธ๋ฑ์Šค๊ฐ€ ๋ชฉ๋ก์— ์ถ”๊ฐ€๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • ํ™”๋ฉด์„ ์ œ์ผ ํ•˜๋‹จ์œผ๋กœ ๋‚ด๋ ค์„œ [ํ…Œ์ด๋ธ” ์ƒ์„ฑ] ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ๋‹ค.
  • ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ ๋Œ€๋žต 1, 2๋ถ„ ์ •๋„๊ฐ€ ์†Œ์š”๋œ๋‹ค.

์ƒ์„ฑ๋œ ํ…Œ์ด๋ธ”์„ ํด๋ฆญํ•ด์„œ ์ƒ์„ธ ์ •๋ณด๋ฅผ ๋ณด๋ฉด, ํŒŒํ‹ฐ์…˜ ํ‚ค์™€ ์ •๋ ฌ ํ‚ค๋„ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋‹ค.

  • [์ธ๋ฑ์Šค] ํƒญ์„ ํด๋ฆญํ•ด๋ณด๋ฉด, ์ƒ์„ฑํ•œ ๊ธ€๋กœ๋ฒŒ ๋ณด์กฐ ์ธ๋ฑ์Šค๊ฐ€ ๋ชฉ๋ก์— ๋‚˜์˜จ๋‹ค.

9. (์‹ค์Šต) DynamoDB ํ…Œ์ด๋ธ” ์ž…๋ ฅ

[ํ…Œ์ด๋ธ” ์ƒ์„ธ] ํŽ˜์ด์ง€์—์„œ [์ž‘์—…] ๋ฉ”๋‰ด๋ฅผ ํด๋ฆญํ•œ๋‹ค.

  • ์ดํ›„ ๋‚˜์˜ค๋Š” ๋ชฉ๋ก์—์„œ [ํ•ญ๋ชฉ ์ƒ์„ฑ]์„ ํด๋ฆญํ•œ๋‹ค.
  • ๊ทธ๋Ÿผ ํ•ญ๋ชฉ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํ™”๋ฉด์ด ๋‚˜์˜จ๋‹ค.
  • [์ƒˆ ํ•ญ๋ชฉ ์ถ”๊ฐ€] ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ ํƒ€์ž…๋ณ„๋กœ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•ด์ค€๋’ค์— [ํ•ญ๋ชฉ ์ƒ์„ฑ] ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ๋‹ค.

์†์„ฑ ์ด๋ฆ„๊ฐ’์œ ํ˜•
id1์ˆซ์ž
subjectMath๋ฌธ์ž์—ด
score95์ˆซ์ž

๋™์ผํ•œ ๊ณผ์ •์„ ์ด 9๋ฒˆ ๋ฐ˜๋ณตํ•˜์—ฌ, ๋‹ค์Œ ๋ฐ์ดํ„ฐ๋“ค์„ ๋ชจ๋‘ ์ž…๋ ฅํ•œ๋‹ค.

idsubjectscore
1English95
1Math95
1Science88
2English80
2Math100
2Science92
3English99
3Math86
3Science89

10. (์‹ค์Šต) DynamoDB ํ…Œ์ด๋ธ” ์กฐํšŒ

10.1 ์ฟผ๋ฆฌ

[ํ…Œ์ด๋ธ”] ๋ฉ”๋‰ด์—์„œ ๋ชฉ๋ก์„ ํด๋ฆญํ•ด ์ƒ์„ธํŽ˜์ด์ง€๋กœ ์ด๋™ํ•œ๋‹ค.

  • [ํ‘œ ํ•ญ๋ชฉ ํƒ์ƒ‰] ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ๋‹ค.
  • ์ฟผ๋ฆฌ๋Š” ํ…Œ์ด๋ธ”์˜ ํ‚ค๋ฅผ ์ด์šฉํ•ด์„œ ํ•ญ๋ชฉ์„ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์—,
    • [์ฟผ๋ฆฌ]๋ฅผ ์„ ํƒํ•˜๋ฉด, ์ธ๋ฑ์Šค๋ฅผ ์„ ํƒํ•˜๋Š” ์˜ต์…˜์ด ๋‚˜์˜จ๋‹ค.
  • ์—ฌ๊ธฐ์„œ ํ…Œ์ด๋ธ” ๋˜๋Š” ์ธ๋ฑ์Šค ์„ ํƒ ๋ฉ”๋‰ด๋ฅผ ํŽผ์ณ๋ณด๋ฉด,
    • ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค๋กœ ์กฐํšŒํ•  ๊ฒƒ์ธ์ง€ ๋ณด์กฐ์ธ๋ฑ์Šค๋กœ ์กฐํšŒํ•  ๊ฒƒ์ธ์ง€ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋จผ์ € ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค๋กœ ์กฐํšŒํ•  ๊ฒƒ์ด๋‹ค.

๋จผ์ € 1๋ฒˆ ํ•™์ƒ์˜ ์ „๊ณผ๋ชฉ ์ ์ˆ˜๋ฅผ ์กฐํšŒํ•˜๋ ค๋ฉด,

  • id : 1์„ ์ž…๋ ฅํ•˜๊ณ  [์‹คํ–‰] ๋ฒ„ํŠผ์„ ํด๋ฆญ

์ด๋ฒˆ์—๋Š” ๊ณผ๋ชฉ์œผ๋กœ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•ด์„œ, ์ง์ ‘ ๋งŒ๋“  ๊ธ€๋กœ๋ฒŒ ๋ณด์กฐ ์ธ๋ฑ์Šค๋ฅผ ์„ ํƒํ•œ๋‹ค.

  • ํ…Œ์ด๋ธ” ๋˜๋Š” ์ธ๋ฑ์Šค ์„ ํƒ : ๋งŒ๋“ค์–ด๋‘” subject-score-index ์„ ํƒ
  • ๊ธ€๋กœ๋ฒŒ ๋ณด์กฐ ์ธ๋ฑ์Šค๋ฅผ ์„ ํƒํ•˜๋ฉด, ํŒŒํ‹ฐ์…˜ ํ‚ค๊ฐ€ id๊ฐ€ ์•„๋‹Œ subject๋กœ ๋ฐ”๋€๋‹ค.
  • ์—ฌ๊ธฐ์— ์กฐํšŒํ•˜๋ ค๋Š” ๊ณผ๋ชฉ๋ช…์„ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค. (cf. Math)

10.2 ์Šค์บ”

์Šค์บ” ๋ฐฉ์‹์€ ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.

  • [์Šค์บ”] ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ณ  [์‹คํ–‰] ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ๋‹ค.
  • ๊ทธ๋Ÿฌ๋ฉด, ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚˜์˜จ๋‹ค.
  • ์Šค์บ”์—์„œ [ํ•„ํ„ฐ] ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด, ์Šค์บ”์—์„œ ํ•„ํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

1๋ฒˆ ํ•™์ƒ์˜ ๋ชจ๋“  ๊ณผ๋ชฉ ์ ์ˆ˜๋ฅผ ์กฐํšŒํ•˜๋ ค๋ฉด,

  • ์†์„ฑ์ด๋ฆ„ : id
  • ์œ ํ˜• : ์ˆซ์ž
  • ์กฐ๊ฑด : ๊ฐ™์Œ
  • ๊ฐ’ : 1
  • ์œ„์™€ ๊ฐ™์ด ์„ค์ •ํ•˜๊ณ  [์‹คํ–‰] ๋ฒ„ํŠผ์„ ํด๋ฆญ

์ˆ˜ํ•™ ๊ณผ๋ชฉ์˜ ํ•™์ƒ ๋ชฉ๋ก์„ ์กฐํšŒํ•˜๋ ค๋ฉด,

  • ์†์„ฑ์ด๋ฆ„ : subject
  • ์œ ํ˜• : ๋ฌธ์ž์—ด
  • ์กฐ๊ฑด : ๊ฐ™์Œ
  • ๊ฐ’ : Math
  • ์œ„์™€ ๊ฐ™์ด ์„ค์ •ํ•˜๊ณ  [์‹คํ–‰] ๋ฒ„ํŠผ์„ ํด๋ฆญ

11. (์‹ค์Šต) DynamoDB ํ…Œ์ด๋ธ” ์‚ญ์ œ

ํ…Œ์ด๋ธ” ์ƒ์„ธ ํŽ˜์ด์ง€์—์„œ [์ž‘์—…] ๋ฉ”๋‰ด๋ฅผ ํด๋ฆญํ•œ๋‹ค.

  • ์ดํ›„ [ํ…Œ์ด๋ธ” ์‚ญ์ œ]๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทธ๋Ÿฌ๋ฉด ํ…Œ์ด๋ธ”์„ ์‚ญ์ œํ•˜๊ธฐ ์ „์— ํ•œ ๋ฒˆ ๋” ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค์ด์–ผ๋กœ๊ทธ๊ฐ€ ๋‚˜์˜จ๋‹ค.
    • ์—ฌ๊ธฐ์— ํ™•์ธ์ด๋ผ๊ณ  ์ž…๋ ฅํ•œ๋‹ค.
    • ํ…Œ์ด๋ธ” ์‚ญ์ œ๊ฐ€ ์ง„ํ–‰๋˜๊ณ , ์‹œ๊ฐ„์ด ์กฐ๊ธˆ ์ง€๋‚˜๋ฉด ํ…Œ์ด๋ธ” ์‚ญ์ œ๊ฐ€ ์™„๋ฃŒ๋œ๋‹ค.