프로젝트

일반

사용자정보

DynamoDB 개요 » 이력 » 버전 1

SANGKYU KANG, 2019-02-21 05:39 오후

1 1 SANGKYU KANG
h1. DynamoDB 개요
2
3
---
4
5
h1. DynamoDB
6
7
{{>toc}}
8
9
h2. 장점요인
10
11
* 관리형이면서
12
* 성능을 예측하여 설계할 수 있고,
13
* 일관된 성능을 보장
14
* 고가용성과 내구성
15
16
h2. 올바른 이해
17
18
* DDB는 고유의 특징과 제약을 동시에 지님
19
* 특히 *일관된 성능*(=Latency)을 제공하는데 주력
20
* ex)성능 지연 대신 *요청 거부(Thorttling)*
21
22
h2. RCU, WCU
23
24
* 테이블의 읽기(RCU)와 쓰기(WCU)에 원하는 만큼의 처리량을 설정
25
* RCU와 WCU는 각기 독립적으로 설정
26
* 1 WCU = 1KB/sec
27
* 1 RCU = 4KB/sec
28
29
h2. Strongly vs. Eventually
30
31
* 1 RCU는 최대 4KB의 항목에 대하여, Strongly 조건으로 1/sec, Eventually 조건으로 2/sec
32
* ex) 6KB 항목에 대해서 100회 읽기를 Strongly, Eventually 각 수행할 경우 필요한 RCU
33
** Ceiling(6KB/4KB) * 100 = ceiling(1.5) * 100 = 2 * 1 * 100 = 200 (Strongly)
34
** Ceiling(6KB/4KB)/2 * 100 = ceiling(1.5)/2 * 100 = 2/2 * 100 = 100 (Eventually)
35
** ceiling 함수: 숫자를 다음 정수(whole number)로 올림하는 데 사용
36
37
h2. 파티셔닝
38
39
* DDB는 일관된 성능을 제공하기 위해 한 테이블을 여러개의 파티션으로 분산
40
* 파티션의 갯수는 Throughput과 테이블의 크기로 결정
41
* 어떤 항목이 어떤 파티션에 저장될지는 분산키(Hash Key)에 의해 결정
42
* 파티션의 갯수를 결정하는 공식
43
** MAX ((RCU/3000+WCU/1000), Table Size(GB)/10GB)
44
** MAX ((5000/3000+500/1000), 8/10) = MAX (3,1) = 3
45
!picture049-1.png!
46
* 매우 고르게 분포하는 분산키를 사용하고 (Uniform distribution Hash key) --> 적절한 처리량을 설정하면
47
** 설정한 Throughput은 모든 파티션에 균등 배분된다.
48
*** 읽기와 쓰기에서 분산키의 인기도가 다를 수 있음 (Hot Key)
49
!picture658-1.png!
50
** 한번 증가한 파티션은 줄어들지 않는다.
51
*** Throughput 확장의 고민요소
52
**** 파티션당 RCU/WCU는 갈수록 줄어들 수 있음
53
*** RCU/WCU가 여유 있는데 Thorttling 발생의 주 원인
54
*** LSI는 테이블의 WCU를 소모한다.
55
!picture203-1.png!
56
!picture572-1.png!