////
Search
Duplicate
๐ŸŽช

DynamoDB Immersion Day - History & How it works

AWS end-to-end Data Strategy

โ€ข
์ง‘๊ณ„๊ฐ€ ์ฃผ๋ผ๊ณ  ํ•˜๋ฉด RDS๋ณด๋‹ค Redshift๊ฐ€ ๋น ๋ฅด๋‹คโ€ฆ
โ—ฆ
ROI๋ฅผ ๊ณ ๋ คํ•ด์„œ Redshift ์„ ํƒ
โ€ข
Zero-ETL (โ€™23 2์›” ๊ธฐ์ค€)
โ—ฆ
Aurora โ†’ Redshift ๋กœ ๋ฐ์ดํ„ฐ ์ด๋™

The Amazon NoSQL Journey

โ€ข
NoSQL
โ—ฆ
๊ด€๊ณ„ํ˜• DB์˜ ๋ถ€์กฑํ•œ ๋ถ€๋ถ„์„ ์ฑ„์›Œ์ฃผ๋Š” ์—ญํ• โ€ฆ
โ€ข
DocumentDB
โ—ฆ
MongoDB์™€ ํ˜ธํ™˜์„ฑ
โ—ฆ
Value = JSON
โ—ฆ
์Šคํ‚ค๋งˆ๋ฆฌ์Šค
โ—ฆ
DAX
โ–ช
DynamoDB์— Query๋ฅผ ์ˆ˜ํ–‰์‹œ Query์™€ ๊ฒฐ๊ณผ๋ฅผ ์บ์‹ฑ
โ€ข
ElastiCache
โ—ฆ
Redis > memcached
โ—ฆ
In-Memory DB
โ€ข
Neptune
โ—ฆ
Graph
โ—ฆ
๊ด€๊ณ„์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ณ„๋„๋กœ ์ €์žฅํ•œ๋‹ค.(RDB๋ž‘ ๋‹ค๋ฅธ์ ..)
โ€ข
Timestream
โ—ฆ
Time-Series
โ—ฆ
์ˆ˜์ง‘: ๋ฉ”๋ชจ๋ฆฌ,, ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋Š” SSD๋กœ..
โ—ฆ
Time window ๊ธฐ๋ฐ˜ ๋ถ„์„ ๊ฐ€๋Šฅ
โ€ข
QLDB
โ—ฆ
BMW ์ค‘๊ณ ์ฐจ ๋žฉ์—์„œ ์‚ฌ์šฉ
โ€ข
Scale-out
โ€ข
๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ, ์š”์ฒญ์— ๊ด€๊ณ„์—†์ด Scale-out์„ ํ†ตํ•œ ์•ˆ์ •์ ์ธ(์ผ์ •ํ•œ ์„ฑ๋Šฅ, ms์‘๋‹ต) ์„œ๋น„์Šค ์ œ๊ณต โ†’ DynamoDB ํŠน์ง•

DynamoDB

โ€ข
Region Resource
โ€ข
์ง‘๊ณ„์— ๋งž์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.
โ€ข
DynamoDB๋Š” OLTP ์ด๋‹ค.
โ—ฆ
OLTP vs OLAP
โ—ฆ
OLTP - ์‹ฌํ”Œ๋ฐ์ดํ„ฐ ๋„ฃ๊ณ  ๋นผ๊ณ 
โ—ฆ
OLAP - ๋ถ„์„, ์ง‘๊ณ„๋“ฑ์„ ํ†ตํ•ด ์ธ์‚ฌ์ดํŠธ ๋„์ถœ
โ–ช
OLAP ์—…๋ฌด์™€ ๋งž์ง€ ์•Š๋‹ค.
โ€ข
Access Pattern(ํ‚ค) ๋””์ž์ธ ์ž˜ํ•ด์•ผ ํ•œ๋‹ค.
โ€ข
PartiQL(a SQL-compatible query language)
โ—ฆ
SQL ์ฒ˜๋Ÿผ ๋ณด์ด๋Š” ์ฟผ๋ฆฌ
โ€ข
๋ฐฑ์—… ์ง€์›
โ—ฆ
Point-in-time recovery(PITR)
โ–ช
์ตœ๋Œ€ 35์ผ์ „๊นŒ์ง€ ๋ณต์›๋จ.
โ–ช
๋งค 5๋ถ„๋งˆ๋‹ค Snapshot
โ—ฆ
๋ณต์›์‹œ ํŠน์ • ์‹œ์ ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค(ํ…Œ์ด๋ธ”)๋ฅผ ์ƒ์„ฑํ•ด์„œ ๋ณต์›ํ•œ๋‹ค.
โ–ช
Snapshot ์ •๋ณด๋Š” ์•„๋งˆ๋„ S3์— ์ €์žฅํ•˜์ง€ ์•Š์„๊นŒโ€ฆ.
โ–ช
๋ณต์›๋œ๋‹ค๊ณ  ๊ธฐ์กด ํ…Œ์ด๋ธ”์— Overwriteํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค.
โ€ข
DynamoDB Stream
โ—ฆ
Lambda ๋“ฑ๊ณผ ์—ฐ๊ณ„ ์ง€์›
โ€ข
CloudTrail์„ ํ†ตํ•œ Audit ์ง€์›(API Call)
โ€ข
NoSQL Workbench for Amazon DynamoDB
โ€ข
Table - Item(row) - Attribute(column)
โ—ฆ
Table ์ด ๊ฐ ๋…๋ฆฝ๋œ ๊ฐ์ฒด์ด๋‹ค = RDB์—์„œ Database ์ •๋„ ๋ ˆ
โ—ฆ
Single Table๋‚ด์—์„œ ๋…๋ฆฝ์ ์œผ๋กœ ์ฒ˜๋ฆฌ!!
โ—ฆ
๋ฐ์ดํ„ฐ๋Š” DynamoDB ์—์„œ ์‚ฌ์šฉํ•˜๋Š” JSONํ˜•์‹์œผ๋กœ ์ €์žฅ. JSON๊ณผ ์œ ์‚ฌํ•˜๋‚˜ Data Type์ด ์žˆ๋‹ค.
โ€ข
ํ…Œ์ด๋ธ” ์ƒ์„ฑ์‹œ
โ—ฆ
RCU, WCU์˜ limit ๊ฐ’๋ณด๋‹ค ์ž‘๋‹ค๋ฉด ํŒŒํ‹ฐ์…˜์€ 1๊ฐœ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค!!
โ€ข
Table์€ 3๊ฐœ์˜ ๋ณต์‚ฌ๋ณธ์œผ๋กœ ๋ณ„๋„ ์ €์žฅ!
โ—ฆ
ํ•˜๋‚˜์˜ Region๋‚ด 3 AZ ๋กœ ๋ณต์‚ฌ~
โ—ฆ
๋ฐ์ดํ„ฐ๋Š” 10GB ์‚ฌ์ด์ฆˆ์˜ ํŒŒํ‹ฐ์…˜์— ์ €์žฅ๋จ.
โ–ช
AZ๊ฐ€ 10Gbps ๋กœ ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ๋˜์–ด์žˆ์–ด..
โ–ช
์žฅ์•  ๋ฐœ์ƒ์‹œ 1์ดˆ ์ด๋‚ด ๋ณต๊ตฌ๋ฅผ ์œ„ํ•ด 10G๋‹จ์œ„๋กœ ์„ธ๊ทธ๋จผํŠธ
โ€ข
๋ฐ์ดํ„ฐ๊ฐ€ ๋Š˜์–ด๋‚˜๋ฉดโ€ฆ
โ—ฆ
ํŒŒํ‹ฐ์…˜์ด ๋Š˜์–ด๋‚œ๋‹ค.
โ€ข
์‚ฌ์šฉ์ž๊ฐ€ ๋Š˜์–ด๋‚˜๋ฉดโ€ฆ
โ—ฆ
ํŒŒํ‹ฐ์…˜๋งˆ๋‹ค ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์šฉ๋Ÿ‰์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. RCU, WCU
โ—ฆ
RCU: max limit 3000
โ—ฆ
WCU: max limit 1000
โ—ฆ
์˜ˆ> RCU: 500, WCU: 100
โ–ช
ํŒŒํ‹ฐ์…˜์ด 5๊ฐœ๋ผ๊ณ  ํ•˜๋ฉด ๋™์ผํ•˜๊ฒŒ ๋‚˜๋ˆ”. ๊ฐ๊ฐ 100 RCU, 20 WCU
โ—ฆ
ํ•˜๋‚˜์˜ ํŒŒํ‹ฐ์…˜์ด Max Limit์„ ๋„˜๊ฒŒ ๋˜๊ฑฐ๋‚˜ 10GB ๊ฐ€ ๋„˜๋Š”๊ฒฝ์šฐ
โ–ช
ํŒŒํ‹ฐ์…˜ Split, RCU, WCU์šฉ๋Ÿ‰ even์œผ๋กœ ๋‚˜๋ˆ ์ง.
โ–ช
์ชผ๊ฐœ์ง„๋‹ค๊ณ  ๋ฌด์กฐ๊ฑด ์ข‹๋ƒ??
โ–ช
ํ•˜๋‚˜์˜ ํŒŒํ‹ฐ์…˜์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š”๊ฒƒ์ด ๋ฒ ์ŠคํŠธ๋‹คโ€ฆ. (Max Limit)
โ–ช
ํŒŒํ‹ฐ์…˜์ด ๋Š˜์–ด๋‚˜๋ฉด ์ค„์ง€๋Š” ์•Š๋Š”๋‹ค.
โ€ข
Bulk๋กœ๋“œ๊ฐ€ ์žˆ์–ด RCU,WCU๋ฅผ Max Limit์„ ๋„˜๊ฒŒ ์„ค์ •ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋ฉด
โ—ฆ
Max Limit ๋„˜๋Š” ๋งŒํผ Partion Split์ด ๋ฐœ์ƒํ•œ๋‹ค.
โ—ฆ
์ž‘์—… ์ดํ›„ RCU, WCU๋ฅผ ์ค„์ด๊ฒŒ ๋˜๋ฉด ์ค„์—ฌ์ง„ ์šฉ๋Ÿ‰์ด Partion์— ๋™์ผํ•˜๊ฒŒ ๋ถ„์‚ฐ๋œ๋‹ค.
โ€ข
Bursting
โ—ฆ
์„ค์ •ํ•œ ์šฉ๋Ÿ‰๋ณด๋‹ค ๋œ ์‚ฌ์šฉํ•œ ๊ฒƒ์„ ์‚ฌ์šฉ๋Ÿ‰์ด ๋งŽ์€ ๋ถ€๋ถ„์— ์‚ฌ์šฉ.
โ—ฆ
Bursting์œผ๋กœ ์ปค๋ฒ„ ์•ˆ๋˜๋ฉด Auto Scaling ์‚ฌ์šฉ
โ–ช
Auto Scaling
โ€ข
Table์— min, max, target utilization

Primary Key(Partition Key + Sort Key)

โ€ข
Primary Key = Partition Key + Sort Key
โ€ข
Partition Key
โ—ฆ
Unique Key๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฐ์ดํ„ฐ๊ฐ€ Evenํ•˜๊ณ  ๋“ค์–ด๊ฐ„๋‹ค.~
โ€ข
Sort Key
โ—ฆ
Partition ๋‚ด์—์„œ์˜ ์ •๋ ฌ
โ€ข
Attribute

Global Secondary Index(GSI)

โ€ข
GSI = Materialized View(๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” View)
โ€ข
GSI = 20๊ฐœ๊นŒ์ง€ ์ƒ์„ฑ๊ฐ€๋Šฅ.
โ—ฆ
Eventually Consistence๋งŒ ๊ฐ€๋Šฅ
โ€ข
LSI(Local Secondary Index) = 5๊ฐœ๊นŒ์ง€ ์ƒ์„ฑ๊ฐ€๋Šฅ.
โ—ฆ
ํ…Œ์ด๋ธ” ์ƒ์„ฑ์‹œ์—๋งŒ ์ƒ์„ฑ๊ฐ€๋Šฅ โ†’ Partition Key๋ฅผ ํฌํ•จ(๊ณต์œ )ํ•ด์„œ Index ์ƒ์„ฑ
โ€ข
Scan vs Query
โ—ฆ
Scan
โ–ช
์ „์ฒด ๋ฐ์ดํ„ฐ๋ฅผ Full Scan ํ›„ Filtering..
โ—ฆ
Query
โ–ช
๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ€์ ธ์˜จ๋‹คโ€ฆ
โ–ช
Primary Key ๊ธฐ์ค€์œผ๋กœ ์กฐํšŒ์‹œ Query.

GetItem Consitency

โ€ข
Writeํ•  ๋•Œ
โ—ฆ
Master + 1 Replica ์‚ฌ์šฉ ํ›„ ์‘๋‹ต ์ค€๋‹ค
โ—ฆ
Transactional Consistence
โ€ข
Readํ•  ๋•Œ
โ—ฆ
Eventually Consistence
โ—ฆ
Strongly Consistence (Eventually Consistence๋ณด๋‹ค 2๋ฐฐ ๋” ๋งŽ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.)
โ€ข
RCU
โ—ฆ
1 read/sec 8K
โ—ฆ
Eventually Consistence
โ—ฆ
Strongly Consitence (๋น„์šฉ 2๋ฐฐ, 4K)
โ€ข
WCU
โ—ฆ
1 write/sec 1K
โ—ฆ
Standard Consistence
โ—ฆ
Transactional Consitence (๋น„์šฉ 2๋ฐฐ, 0.5K)
โ€ข
RCU, WCU ์ œ์•ฝ์œผ๋กœ ์ธํ•ด Item ํฌ๊ธฐ ํ™•์ธ์ด ํ•„์š”ํ•˜๋‹ค!!
โ€ข
RR: Request Router
โ—ฆ
Table ๋‹จ์œ„์˜ Capacity๋ฅผ ๋จผ์ € ํ™•์ธํ•œ๋‹ค. โ†’ ๋ถ€์กฑํ•˜๋ฉด Throttling ๋ฐœ์ƒ
โ—ฆ
Read ์š”์ฒญ์‹œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ค ํŒŒํ‹ฐ์…˜์— ์žˆ๋Š”์ง€ ์•Œ๋ ค์ค€๋‹ค!!