DynamoDB 는 데이터를 파티션에 저장한다. 파티션은 SSD(Solid State Drive) 에 저장되는 테이블용 스토리지이다.
DynamoDB 는 기존 파티션이 한도를 초과하거나, Table 의 프로비저닝된 처리량 설정이 늘어나는 경우 자동으로 추가 파티션을 할당한다.
파티션 관리는 백그라운드에서 자동으로 이루어지므로 어플리케이션에는 표시되지 않는다.
DynamoDB 의 GSI(Global secondary index) 도 파티션으로 구성되며, 기본 테이블의 데이터와 별도로 저장된다.
Data Distribution
- Partition key
Table 이 Primary Key 로 Partition key 만 가질 경우, Partition key 값을 기준으로 각 Item 을 저장하고 검색한다.
DynamoDB 는 해시 함수로 이 Partiiton key 값을 처리하여 저장할 파티션을 결정한다.
DynamoDB 는 파티션 수와 상관없이 Item 을 Table 의 파티션에 균일하게 분배하는 데 최적화되어 있다.
Table 의 Items 수에 비해 많은 수의 고유 값을 가질 수 있는 Attribute 를 Partition key 로 선택할 것을 권장한다. - Partition key & sort key
Table 이 Partition key & sort key 를 가질 경우, Partition key 방식과 동일하게 파티션 키의 해시 값을 계산하지만,
Partition key 값이 동일한 모든 Items 를 sort key 값을 기준으로 정렬하여 물리적으로 인접하게 저장한다.
Query 작업으로 Partition key 만 지정하면 해당하는 모든 Partition key 값을 가진 item 목록을 sort key 기준 오름차순으로 반환한다. (내림차순 요청 가능)
sort key 에 조건을 적용하면 결과의 일부만 읽을 수도 있다.
Partition key 의 설정
다시 한번 얘기하는데, 설정한 처리량을 완전히 활용하려면 Item 이 파티션마다 골고루 분포되어야 하며, 그러려면 Partition key 는 무조건 유일해야 한다.
Partition key & sort key 로 Partition key 가 중복을 허용하는 경우라면, 이 Attributes 들을 Index 로 놓고 Table Partition key 를 유일한 Attributes 로 새로 생성해야 한다.
가장 흔히 사용하는 것이 Partition key 와 sort key 를 조합하는 것이다.
각각 userNo 와 regDate 를 Index 로 생각했다면, userNo_regDate 를 유일한 Table Partition key 로 만들 수 있다.
WRITTEN BY
- 손가락귀신
정신 못차리면, 벌 받는다.
,