정렬 키를 사용하여 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를 포함시키는 방법을 사용합니다.