정렬 키를 사용하여 DynamoDB의 데이터를 정리하는 모범 사례 - Amazon DynamoDB

정렬 키를 사용하여 DynamoDB의 데이터를 정리하는 모범 사례

Amazon DynamoDB 테이블에서 테이블의 각 항목을 고유하게 식별하는 프라이머리 키는 파티션 키와 정렬 키로 구성할 수 있습니다.

잘 설계된 정렬 키에는 중요한 장점이 두 가지 있습니다.

  • 효율적으로 쿼리를 할 수 있는 단일 장소로 관련 정보를 수집합니다. 신중하게 정렬 키를 설계하면 begins_with, between, >, < 등 연산자를 사용하는 범위 쿼리를 사용하여 관련 항목의 필요한 그룹을 검색할 수 있습니다.

  • 복합 정렬 키는 계층 구조의 어느 수준에서 쿼리를 할 수 있도록 데이터의 계층적(일대다) 관계를 정의할 수 있도록 도와줍니다.

    예를 들어, 지리적 위치를 나열한 테이블에서 다음과 같이 정렬 키를 구성할 수 있습니다.

    [country]#[region]#[state]#[county]#[city]#[neighborhood]

    이렇게 하면 country부터 neighborhood까지, 그리고 그 사이의 집계 수준에서 위치 목록을 효율적으로 범위 쿼리할 수 있습니다.

버전 제어에 정렬 키 사용

감사나 규정 준수 목적에서 항목 수준의 수정 이력을 유지하고, 쉽게 가장 최근 버전을 검색할 수 있어야 하는 애플리케이션이 많습니다. 정렬 키 접두사를 사용하여 이를 쉽게 달성할 수 있는 효과적인 설계 패턴이 있습니다.

  • 각 새 항목에 대해 항복 복사본 두 개를 생성합니다. 첫 번째 복사본에서 정렬 키 시작 지점의 버전 번호 접두사는 0(v0_), 두 번째 복사본의 버전 번호 접두사는 1(v1_)이여야 합니다.

  • 항목을 업데이트할 때마다 업데이트 버전의 정렬 키에 다음으로 높은 버전의 접두사를 사용하고, 업데이트한 내용을 버전 접두사가 0인 항목으로 복사합니다. 그러면 0이라는 접두사를 사용해 항목의 최신 버전이 위치한 장소를 쉽게 찾을 수 있습니다.

예를 들어, 부품 제조업체가 아래 설명한 것과 같은 스키마를 사용한다고 가정하겠습니다.

기본 키와 데이터 항목 속성을 가진 테이블을 표시하는 버전 관리의 예

Equipment_1 항목은 여러 감사자의 감사 시퀀스를 거칩니다. 새로운 감사 결과가 테이블의 새 항목으로 캡처됩니다. 시작 버전 번호는 1이며, 이후 연속된 각 개정 버전에 대해 번호를 증분시킵니다.

각 새 개정 버전을 추가할 때, 애플리케이션 계층은 0 버전 항목(정렬 키가 v0_Audit)의 내용을 새 개정 버전의 내용으로 대체합니다.

애플리케이션이 가장 최근 감사 상태를 검색해야 할 때마다 접두사가 v0_인 정렬 키를 쿼리할 수 있습니다.

애플리케이션이 전체 개정 이력을 검색해야 한다면, 항목의 파티션 키 아래 모든 항목을 쿼리해 v0_ 항목을 필터링 할 수 있습니다.

이런 설계는 특정 장치나 장비의 여러 부품에 대한 감사에도 효과가 있습니다. 정렬 키에서 정렬 키 접두사 다음에 개별 부품의 ID를 포함시키는 방법을 사용합니다.