1 DynamoDB의 키 구조
- DynamoDB는 NoSQL 데이터베이스로, 테이블의 각 항목을 고유하게 식별하는 프라이머리 키가 필요합니다.
- 프라이머리 키는 단순 프라이머리 키 또는 복합 프라이머리 키 두 가지 유형이 있습니다.
2 파티션 키 (Partition Key)
- 파티션 키는 단순 프라이머리 키의 유일한 속성입니다.
- DynamoDB는 파티션 키의 값을 내부 해시 함수의 입력으로 사용합니다.
- 해시 함수의 출력은 항목이 저장될 파티션(물리적 스토리지 내부 위치)을 결정합니다.
2.1 파티션 키의 특징
- 고유성: 테이블 내에서 각 항목의 파티션 키 값은 고유해야 합니다.
- 데이터 분산: 잘 설계된 파티션 키는 데이터를 DynamoDB 파티션에 균등하게 분산시킵니다.
- 쿼리 효율성: 파티션 키를 사용한 쿼리는 매우 효율적입니다.
3 복합 프라이머리 키 (Composite Primary Key)
- 복합 프라이머리 키는 파티션 키와 정렬 키로 구성됩니다.
- 이 구조는 더 복잡한 데이터 모델과 쿼리 패턴을 지원합니다.
3.1 파티션 키 + 정렬 키 (Sort Key)
- 파티션 키: 데이터의 파티션을 결정합니다.
- 정렬 키: 파티션 내에서 항목을 정렬하는 데 사용됩니다.
- 복합 키 구조에서는 파티션 키가 같은 여러 항목이 존재할 수 있습니다.
3.2 복합 키의 특징
- 데이터 그룹화: 같은 파티션 키를 가진 항목들은 함께 저장됩니다.
- 정렬 기능: 정렬 키를 기반으로 항목을 효율적으로 검색할 수 있습니다.
- 유연한 쿼리: 다양한 접두사 일치, 범위 쿼리 등이 가능합니다.
4 키 선택 시 고려사항
- 데이터 액세스 패턴: 애플리케이션이 데이터를 어떻게 읽고 쓰는지 고려해야 합니다.
- 데이터 분산: 핫 파티션(과도하게 액세스되는 파티션)을 피하기 위해 균일한 분산이 중요합니다.
- 확장성: 미래의 데이터 증가를 고려하여 키를 설계해야 합니다.
- 쿼리 효율성: 가장 빈번한 쿼리 유형에 최적화된 키 구조를 선택해야 합니다.
5 예시
5.1 단순 프라이머리 키 예시 (사용자 ID)
- 테이블: Users
- 프라이머리 키 (파티션 키): UserID
5.2 복합 프라이머리 키 예시 (주문 시스템)
- 테이블: Orders
- 파티션 키: CustomerID
- 정렬 키: OrderDate
- 이 구조에서는 특정 고객의 주문을 날짜별로 쉽게 조회할 수 있습니다.
6 결론
- DynamoDB의 키 구조는 데이터 모델과 쿼리 패턴에 큰 영향을 미칩니다.
- 적절한 키 선택은 성능 최적화와 확장성에 중요한 역할을 합니다.
- 단순 키와 복합 키 중 애플리케이션 요구사항에 가장 적합한 것을 선택해야 합니다.
- 키 구조 설계 시 현재의 요구사항뿐만 아니라 미래의 확장성도 고려해야 합니다.