DynamoDB 설계

키 설계

DynamoDB는 NoSQL이기 때문에 어떤 쿼리를 사용하게 될 지 생각해보고 해당 작업을 빠르게 할 수 있는 키를 설정하는 것이 매우 중요하다.

DynamoDB의 기본키는 ‘파티션 키’와 ‘정렬 키’로 이루어진다. 새 테이블을 만들 때 기본키는 무조건 지정해야 한다.

기본키

기본키는 테이블의 각 항목을 나타내는 고유 식별자로, DynamoDB 기본키의 종류는 두 가지가 있다.

  • 파티션키(해시키) : 하나의 속성으로 구성되는 단순 기본키. 파티션 키로만 구성되어있는 테이블에서는 어떤 두 개의 테이블 항목도 동일한 파티션 값을 가질 수 없다.
  • 파티션 키 & 정렬 키(범위(range) 속성) : 파티션 키와 정렬 키 두가지 속성으로 구성되는 복합 기본 키이다. 복합키를 사용하는 테이블의 서로 다른 두 항목은 같은 파티션 키 값을 가질 수 있다. 하지만 정렬 키 값은 달라야 한다.

그 외에도 더욱 유연한 쿼리를 위해 보조 인덱스 기능을 제공한다. 기본적으로 쿼리 작업은 기본키에만 가능하기 때문에 다른 속성에 접근하기 위해서는 인덱스를 사용해야 한다.

보조 인덱스

인덱스의 종류는 두 가지가 있다.

  • Global secondary Index : 파티션 키 및 정렬 키가 테이블의 파티션 키 및 정렬키와 다른 인덱스
  • Local secondary Index : 테이블과 파티션 키는 동일하지만 정렬 키는 다른 인덱스

각 테이블당 20개의 global, 5개의 local 보조 인덱스를 만들 수 있다. 일반적으로 로컬 보조 인덱스보다 글로벌 보조 인덱스의 사용을 우선시 해야 한다. 단 쿼리 결과에 높은 일관성이 필요한 경우는 로컬 보조 인덱스를 사용하는게 좋다.