DynamoDB Basics
미국 서부(오레곤) 기준입니다.
Price
- 데이터 저장: 25 GB 무료,
$ 0.25 / GB / 월
- 쓰기:
$ 1.25 / 1,000,000 WCU
- 복제된 쓰기:
$ 1.875 / 1,000,000 rWCU
(GSI) - 읽기:
$ 0.25 / 1,000,000 RCU
- 데이터 수신: 무료
- 데이터 송신:
1 GB / 월
무료, 다음40 TB / 월
$ 0.085 / GB
Capacity
Capacity Unit
계산 시 발생하는 소수점 이하 부분은 올림합니다.
- Read Capacity Units:
RCU
Strongly Consistent Read
: 4 KB 당 1 RCUEventually Consistent Read
: 8 KB 당 1 RCUTransaction Read
: 2 KB 당 1 RCU
- Write Capacity Units:
WCU
Write
: 1 KB 당 1 WCUTransaction Write
: 0.5 KB 당 2 WCU
Provisioned Capacity
초당 Provisioned read capacity
또는 Provisioned write capacity
를 넘는 작업이 요청되면 해당 작업은 ProvisionedThroughputExceededException
과 함께 throttle
상태가 됩니다.
Key-Value
Key
Partition key
- 내부 해시 함수에 대한 입력으로 partition key 값을 사용합니다. 해시 함수 출력에 따라 item을 저장할 파티션 (DynamoDB 내부의 물리적 스토리지) 이 결정됩니다.
- 하나의 테이블에서 partition key는 고유합니다.
Partition key
+Sort key
- 내부 해시 함수에 대한 입력으로 partition key 값을 사용합니다. 같은 partition key를 같는 item들의 경우 partition key에 의해 결정된 파티션에 sort key 값을 기준으로 정렬되어 함께 저장됩니다.
- 하나의 테이블에서 partition key, sort key 조합은 고유합니다.
Index
LSI(Local Secondary Index)
- 기본 테이블의
Partition Key
와 새로운Sort Key
를 사용하여 새로운 테이블을 생성합니다. - LSI의 sort key 값은 고유할 필요가 없습니다.
- 기본 테이블의 sort key 가 기본으로
Projection
됩니다. - 기본 테이블의
Attirbute
중 원하는 것을 인덱스 테이블에 포함 시킬 수 있습니다. - 테이블당 최대 5개의 LSI를 생성할 수 있고, 테이블을 만들 때 미리 설정해두어야 합니다.
- LSI가 있는 테이블의 경우 파티션 키 값당 10GB의
item collection
한도가 적용됩니다.
- 기본 테이블의
GSI(Global Secondary Index)
- 새로운
Partition Key
와Sort Key
를 사용하여 새로운 테이블을 생성합니다. - GSI의 키 값은 고유할 필요가 없습니다.
- 기본 테이블의 partition key와 sort key가 기본으로
Projection
됩니다. - 기본 테이블의
Attirbute
중 원하는 것을 인덱스 테이블에 포함 시킬 수 있습니다. - 테이블당 최대 20개의 GSI를 생성할 수 있습니다.
- 기본 테이블과 GSI 테이블은 자동으로 동기화됩니다.
- 새로운
Item
- Key-Value(Attirbute)로 구성되어 있는 하나의 항목입니다.
- 최대 400 KB의 크기를 가질 수 있습니다.
- 크기
- 문자열: (Attribute 이름 길이) + (UTF-8 인코딩된 문자열 바이트 수)
- 숫자: (Attribute 이름 길이) + (유효 숫자 2 자리당 1) + 1, 양 끝의 0은 제외
- 바이너리: (Attribute 이름 길이) + (바이너리 바이트 수)
- null or 불리언: (Attribute 이름 길이) + 1
- List or Map: (Attribute 이름 길이) + (중첩된 요소 크기) + (오버헤드 3)