큰 항목과 속성 저장 모범 사례 - Amazon DynamoDB

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

큰 항목과 속성 저장 모범 사례

Amazon DynamoDB는 테이블에 저장하는 각 항목의 크기를 400KB로 제한합니다 (참조). Amazon DynamoDB의 서비스, 계정 및 테이블 할당량 애플리케이션이 DynamoDB 크기 제한보다 많은 데이터를 항목에 저장해야 하는 경우, 하나 이상의 라지 속성을 압축하거나, 항목을 여러 개(정렬 키로 효율적으로 인덱싱된)로 나눌 수 있습니다. 또한 항목을 Amazon Simple Storage Service(Amazon S3)에 객체로 저장하고 Amazon S3 객체 식별자를 DynamoDB 항목에 저장할 수도 있습니다.

가장 좋은 방법은 항목을 작성할 때 ReturnConsumedCapacity파라미터를 활용하여 최대 항목 크기가 400KB에 육박하는 항목 크기를 모니터링하고 알림을 보내는 것입니다. 최대 항목 크기를 초과하면 쓰기 시도가 실패합니다. 항목 크기를 모니터링하고 경고하면 애플리케이션에 영향을 미치기 전에 항목 크기 문제를 완화할 수 있습니다.

큰 속성 값 압축

라지 속성 값을 압축하면 DynamoDB의 항목 제한에 맞출 수 있고, 스토리지 비용을 절감할 수 있습니다. GZIP 또는 LZO와 같은 압축 알고리즘은 이진 출력을 생성한 다음 항목 내 Binary 속성 유형에 저장할 수 있는 이진 출력을 생성합니다.

포럼 사용자가 작성한 메시지를 저장하는 테이블을 예로 들어 보겠습니다. 이러한 메시지에는 압축하기에 적합한 긴 텍스트 문자열이 포함되는 경우가 많습니다. 압축하면 항목 크기를 줄일 수 있지만, 압축된 속성 값은 필터링에 유용하지 않다는 단점이 있습니다.

DynamoDB에서 긴 메시지를 압축하는 방법을 보여주는 샘플 코드는 다음을 참조하십시오.

수직 파티셔닝

큰 항목을 처리하는 또 다른 방법은 항목을 더 작은 데이터 청크로 나누고 모든 관련 항목을 파티션 키 값을 기준으로 연결하는 것입니다. 그런 다음 정렬 키 문자열을 사용하여 정렬 키 문자열과 함께 저장된 관련 정보를 식별할 수 있습니다. 이렇게 하고 여러 항목을 동일한 파티션 키 값으로 그룹화하면 항목 컬렉션이 생성됩니다.

이 접근 방식에 대한 자세한 내용은 다음을 참조하십시오.

Amazon S3에 큰 속성 값 저장

앞에서 언급한 것처럼 Amazon S3을 사용하여 DynamoDB 항목에 맞지 않는 라지 속성 값을 저장할 수도 있습니다. 이를 Amazon S3에 객체로 저장한 후, 객체 식별자를 DynamoDB 항목에 저장할 수 있습니다.

또한 Amazon S3의 객체 메타데이터 지원을 사용하여 DynamoDB의 상위 항목에 링크를 다시 제공할 수 있습니다. 항목의 기본 키 값을 Amazon S3 객체의 Amazon S3 메타데이터로 저장합니다. 이렇게 하면 Amazon S3 객체를 유지 관리할 때 도움을 받을 수 있습니다.

예를 들어 ProductCatalog 단원의 DynamoDB에서 테이블 생성 및 코드 예시에 대한 데이터 로드 테이블을 생각해 봅시다. 이 테이블의 항목은 항목 가격, 설명, 책의 저자 및 여러 제품의 규격에 대한 정보를 저장합니다. 항목에 맞지 않을 정도로 큰 제품 이미지를 저장하고 싶다면, DynamoDB 대신 Amazon S3에 이미지를 저장할 수 있습니다.

이 전략을 구현할 때는 다음을 염두에 두십시오.

  • DynamoDB는 Amazon S3 및 DynamoDB를 교차하는 트랜잭션을 지원하지 않습니다. 따라서 애플리케이션이 분리된 Amazon S3 객체를 정리하는 등 실패를 처리할 수 있어야 합니다.

  • Amazon S3는 객체 식별자의 길이를 제한합니다. 따라서 길이가 지나치게 긴 객체 식별자를 생성하지 않거나 기타 Amazon S3 제약을 위반하지 않는 방식으로 데이터를 구성해야 합니다.

Amazon S3를 사용하는 방법에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서를 참조하세요.