본문으로 건너뛰기

PrimaryKeys

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의 키 구조는 데이터 모델과 쿼리 패턴에 큰 영향을 미칩니다.
  • 적절한 키 선택은 성능 최적화와 확장성에 중요한 역할을 합니다.
  • 단순 키와 복합 키 중 애플리케이션 요구사항에 가장 적합한 것을 선택해야 합니다.
  • 키 구조 설계 시 현재의 요구사항뿐만 아니라 미래의 확장성도 고려해야 합니다.