내부 아키텍처 이해
dynamo db에서 partition key는 hash function 에 의해 2의 64승에 해당하는 파티션 유닛중 하나로 할당된다. 실제 파티션은 파티션 unit의 range 를 갖고 있는데, 어느 파티션의 range로 들어가는지에 따라 소속 파티션이 결정된다. 이때, 특정 파티션에 데이터가 몰릴 경우, 해당 파티션의 range를 반으로 쪼개어 새로운 파티션이 만들어지며 1개의 파티션에 몰려있던 데이터가 2개의 파티션으로 분산되는 과정이 반복된다.
만약 PK가 위의 2번 방식(composite)일 경우, 동일 파티션에 할당된 Partition key가 같은 여러데이터들은 sort key로 정렬되어 b-tree 구조에 저장된다. link
즉, 정리하자면 동일한 파티션키는 내부적인 hash function 에 의해 같은 파티션에 저장되며, sort key가 존재한다면 sortkey 순서로 b-tree 인덱스 형태로 저장되어 검색속도가 O(Log N) 으로 빨라지게 된다.
참고
dynamodb의 partition key와 실제 저장구조에 관한 글:https://medium.com/swlh/architecture-of-amazons-dynamodb-and-why-its-performance-is-so-high-31d4274c3129
partition key와 sort key가 저장구조에서 사용되는 방식: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.Partitions.html
chooseing thr right dynanmodb partion key: https://medium.com/swlh/architecture-of-amazons-dynamodb-and-why-its-performance-is-so-high-31d4274c3129
'tech > database' 카테고리의 다른 글
[MySQL] InnoDB 스토리지 엔진 아키텍처 (0) | 2024.09.15 |
---|---|
AWS Elasticache vs MemoryDB 비교 (0) | 2024.05.31 |
AWS Elasticache(redis) 내부동작 정리 (0) | 2024.03.31 |
apache lucene 내부구조 (0) | 2023.10.22 |
AWS Kinesis Data Stream 내부구조 (0) | 2023.10.07 |