[개발일지] 230623 AWS DynamoDB Partition Key와 Sort key

DynamoDB


 

DynamoDB는 AWS에서 제공하는 완전관리형 NoSQL 데이터베이스 서비스로서 원활한 확장성과 함께 빠르고 예측 가능한 성능을 제공한다.

 

DynamoDB의 특징으로 완전관리형 NoSQL DB라는 점과 뛰어난 확장성이 있다.

 

  • 완전 관리형: 인프라 관리, 백업과 복원 등등 이러한 여러 가지 작업들을 모두 AWS가 자동으로 처리해 주는 것을 말한다.
  • 확장성: DynamoDB는 수 백만 개의 요청을 초당 처리하고 테라바이트 이상의 데이터를 저장할 수 있다고 한다. 

 

DynamoDB는 두 가지 종류의 기본 키(primary key)를 지원하는데 오늘은 이 두 가지 키에 대해 공부했다.

 

Partition key


partiotion key는 한가지 속성으로 구성된 기본키(primary key)를 의미한다.

DynamoDB는 partition key의 값을 내부 해시 함수에 대한 입력으로 사용한다. 해시 함수의 출력에 따라 항목이 저장될 partition(DynamoDB 내부의 물리적 저장소)이 결정이 된다. 즉, 같은 partition key를 갖고 있는 item은 모두 같은 collection에 저장이 된다.

만일 테이블에서 파티션 키만 사용하면 두 item이 동일한 partition key 값을 가질 수 없다. 즉 partition key값은 고유해야 한다.

partition은 아래 사진처럼 각 테이블 당 하나 이상의 partition이 존재하고, 10gb storage 단위로 분산되어 있다고 한다. 만일 partition의 크기가 10gb보다 커지면 DynamoDB는 sort key별로 partition을 분할한다고 한다.

 

https://aws.amazon.com/ko/blogs/database/choosing-the-right-dynamodb-partition-key/

 

Collection은 partition key는 같지만 sort key가 다른 item의 그룹으로 정의되는데 이 말의 의미는 아래 partition key and sort key에서 설명하겠다.

 

Partition key and sort key


composite primary key라고도 하는 이 키는 partition keysort key 두가지 속성으로 구성이 된다.

아까 partition key를 설명할 때 두 개의 item이 동일한 partition key를 가질 수 없다고 했는데 이 키를 사용하면 동일한 partition key 값을 이용할 수 있다.

동일한 partition key를 가진 item들을 같은 collection에 저장하고 sort key를 이용해 정렬된 순서대로 collection에 저장한다. 이때 sort key는 다른 값을 가져야 한다.

이 말이 위에서 말한 Collection은 partition key는 같지만 sort key가 다른 item의 그룹으로 정의한다는 말이다.

partition key and sort key에 대해 이해하기 쉬운 사진이 있어 가져왔다.

 

https://aws.amazon.com/ko/blogs/database/choosing-the-right-dynamodb-partition-key/

 

위 사진을 보면 Product ID가 partition key이고 type이 sort key로 사용하고 있다.

Product ID가 2인 Item이 2개 이지만 sort key가 달라서 다른 collection에 저장되는 것을 확인할 수 있다.

 

partition key를 이용해서 데이터를 저장했을때 장점


  1. 데이터 분산: DynamoDB는 partition key를 기반으로 데이터를 여러 노드에 분산(분산 데이터베이스)시킨다. 이렇게 하면 모든 데이터를 하나의 위치에 저장하는 것보다 더 높은 확장성과 성능을 기대할 수 있다.
  2. 빠른 읽기와 쓰기 작업: 같은 파티션 키를 가진 item들은 같은 파티션에 저장되므로, 단일 파티션 키로 읽거나 쓸 때 더 빠른 성능을 얻을 수 있다.
  3. sort key와의 결합: partition key와 함께 sort key를 사용하면, 각 파티션 내에서 데이터를 효과적으로 정렬하고 필터링할 수 있다. 이를 통해 특정 범위의 item을 빠르게 검색하거나, 특정 partition key 값에 대해 특정 순서로 item을 가져오는 등의 쿼리를 용이하게 만든다.

 

References

https://docs.aws.amazon.com/ko_kr/amazondynamodb/latest/developerguide/HowItWorks.Partitions.html

 

파티션 및 데이터 배포 - Amazon DynamoDB

파티션 및 데이터 배포 Amazon DynamoDB는 데이터를 파티션에 저장합니다. 파티션은 SSD(Solid State Drive)로 백업되는 테이블용 스토리지 할당으로, AWS 리전 내의 여러 가용 영역에 자동으로 복제됩니다.

docs.aws.amazon.com

https://aws.amazon.com/ko/blogs/database/choosing-the-right-dynamodb-partition-key/

 

Choosing the Right DynamoDB Partition Key | Amazon Web Services

This blog post covers important considerations and strategies for choosing the right partition key for designing a schema that uses Amazon DynamoDB. Choosing the right partition key is an important step in the design and building of scalable and reliable a

aws.amazon.com

https://dynobase.dev/dynamodb-partition-key/

 

DynamoDB Partition Key - The Ultimate Guide [w/ Examples]

Learn what DynamoDB Partition Key is, how it differs from other keys, best practices & code examples to help you query, update & delete data using partition key.

dynobase.dev