AWS 사용하기 03 - DynamoDB - Capacity
Capacity 란?
1초에 읽거나 쓸 수 있는 용량을 이야기 합니다.
테이블 마다 Capacity 를 설정함에 따라서 필요한 트랜젝션 용량을 조절할 수 있습니다.
이거에 따라서 가격이 천차만별로 갈리기 때문에 잘배워 둬야됨
RCU(Read Capacity Units) 와 WCU(Write Capacity Units)
읽을 때의 capacity를 RCU 쓸때의 Capacity 를 WCU 라고 합니다.
RCU 와 WCU 는 같은 1 capacity 라고 허용 용량이 다르기 때문에 기억해 놓을 필요가 있습니다.
- 1 capacity 별 최대 허용 데이터양
일관된 읽기(Eventually Consistent Read) | 강력한 일관된 읽기(Strongly Consistent Read) | 쓰기 |
---|---|---|
4kb * 2 = 8kb | 4kb | 1kb |
RCUs
RCU 에 대해 좀더 자세히 알아보겠습니다.
RCU 는 다시 일관된 읽기(Eventually Consistent Read) 와 강력한 일관된 읽기(Strongly Consistent Read) 로 나뉠 수 있습니다.
일관된 읽기 와 강력한 일관된 읽기 의 차이를 이해하기 위해서는 가용 영역 에 대해 먼저 알아야 합니다.
-
가용 영역과 일관된 읽기
AWS 의 각 Region 에 DB 데이터가 추가 될때, 이 데이터는 해당 region 에 한곳에만 존재하는 것이 아닙니다.
같은 리전안에서도 여러 곳으로 같은 데이터를 복사해서 보관되는데, 이렇게 하면 크게 두가지 장점이 있습니다.- 가장 네트워크 처리량이 낮은 가용영역 으로 연결 함으로써 시간 처리 비용을 낮춘다.
- 서로 물리적 오류로부터 분리되어 있기 때문에 안전성을 높일 수 있다.
이런 가용 영역의 장점은 DB에서 데이터를 읽을 때도 마찬가지로 가장 네트워크 처리량이 낮은 가용영역으로 연결합니다.
이런 가용 영역의 장점 때문에 DynamoDB 는 안정적인 성능의 퍼포먼스를 제공할 수 있게 되었고,
이것을 일관된 읽기 라고 합니다. -
강력한 일관된 읽기(Strongly Consistent Read)
강력한 일관된 읽기는 일관된 읽기를 보완한 방식의 읽기 입니다.
예를 들어 하나의 Item 을 갱신한다고 했을 때,
모든 가용 영역에 데이터가 갱신되기 까지는 최장 1초 정도의 시간이 소요될 수 있습니다.그러나 거의 같은 시점에 해당 데이터를 읽게 될 경우,
데이터를 불러오는 가용 영역에는 아직 최신의 데이터가 갱신 되어 있지 않을 가능성이 있습니다.이러한 가능성을 보완하기 위해 강력한 일관된 읽기 는 최신의 데이터를 불러오는 것을 보장합니다.
하지만 속도가 일관된 읽기 보다 느릴 수 있고,
capacity 당 데이터 제한이 줄어들기 때문에 필요한 경우가 아니라면 성능면에서는 일관된 읽기가 더 좋지 않을까 생각합니다.강력한 일관된 읽기는 따로 option을 지정해 주지 않는 이상, dafault 값으로는 일관된 읽기로 데이터를 불러오게 됩니다.
-
예시) item 당 9k 의 데이터 15개를 읽을 경우의 필요한 capacity 수(일관된 읽기)
9k / 8k(일관된 읽기 최대치) = 1.125 => 올림 => 2개 (아이템 하나당 필요한 capacity 수)
2 capacity * 15 개 = 30 capacity
WCUs
WCUs 경우 앞서 말씀드렸듯이 1 capacity 당 1kb 의 데이터를 쓸 수 있습니다.
- 예시) item 당 9k 의 데이터 15개를 등록할 경우의 필요한 capacity 수
9k/ 1k * 15 개 = 135 capacity