DynamoDB 항목 크기 및 형식
DynamoDB 테이블에는 기본 키를 제외하면 스키마가 없기 때문에 모든 테이블 항목의 속성, 크기, 데이터 형식이 저마다 다를 수 있습니다.
항목의 총 크기는 해당 속성 이름 및 값의 길이와 아래 설명된 대로 적용 가능한 오버헤드의 합계입니다. 다음 지침에 따라 속성 크기를 예측할 수 있습니다.
-
문자열은 UTF-8 이진수 인코딩을 사용하는 유니코드입니다. 문자열의 크기는 (속성 이름의 UTF-8로 인코딩된 바이트 수) + (UTF-8로 인코딩된 바이트 수)입니다.
-
숫자는 유효 숫자 자릿수 38자까지 길이가 다양합니다. 앞과 끝의 0은 잘립니다. 숫자의 크기는 대략 (속성 이름의 UTF-8로 인코딩된 바이트 수) + (유효 숫자 2자리당 1바이트) + (1바이트)입니다.
-
이진 값을 DynamoDB로 보내려면 base64 형식으로 인코딩해야 하지만, 크기 계산에는 이 값의 원래 바이트 길이를 사용합니다. 바이너리 속성의 크기는 (속성 이름의 UTF-8로 인코딩된 바이트 수) + (원래 바이트 수)입니다.
-
null 속성 또는 부울 속성의 크기는 (속성 이름의 UTF-8로 인코딩된 바이트 수) + (1바이트)입니다.
-
List
또는Map
형식의 속성은 내용에 상관없이 오버헤드로 3바이트가 필요합니다.List
또는Map
의 크기는 (속성 이름의 UTF-8로 인코딩된 바이트 수) + 합계(중첩된 요소의 크기) + (3바이트)입니다. 빈List
또는Map
의 크기는 (속성 이름의 UTF-8로 인코딩된 바이트 수) + (3바이트)입니다. -
또한 각
List
또는Map
요소에는 1바이트의 오버헤드가 필요합니다.
참고
속성 이름은 긴 것보다 짧은 것이 좋습니다. 이렇게 하면 필요한 스토리지 양을 줄일 수 있을 뿐 아니라 사용하는 RCU/WCU의 양도 줄일 수 있습니다.
스토리지 결제의 경우 각 아이템에 활성화한 기능에 따라 아이템당 스토리지 오버헤드가 포함됩니다.
-
DynamoDB에 있는 모든 항목에는 인덱싱에 100바이트의 스토리지 오버헤드가 필요합니다.
-
일부 DynamoDB 기능(글로벌 테이블, 트랜잭션, DynamoDB를 사용한 Kinesis Data Streams 스트림에 대한 변경 데이터 캡처)은 이러한 기능을 활성화함으로써 발생하는 시스템 생성 속성을 설명하기 위해 추가 스토리지 오버헤드가 필요합니다. 예를 들어 글로벌 테이블에는 48바이트의 스토리지 오버헤드가 추가로 필요합니다.