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! |