TL : DR - 범위 키 값을 파티션 함수에 포함하여 동일한 파티션 키 값을 가진 경우에도 항목을 분할 할 수 있습니다.
긴 버전 :
이것은 아주 좋은 질문이며, 그것은 문서 here 및 here에서 해결되었습니다. 설명서에 나와 있듯이 DynamoDB 테이블의 항목은 h ashing function을 사용하여 파티션 키 값 (해시 키)을 하나 이상의 파티션으로 분할하여 분할됩니다. 파티션 수는 원하는 최대 Q 적 처리량 W 키 공간에서 항목의 분 h를 기]으로 파생됩니다. 즉, 파티션 키가 항목을 파티션 키 공간 전체에 균일하게 분배하도록 파티션 키가 선택되면 파티션은 거의 동일한 수의 항목을 갖게됩니다. 각 파티션의이 항목 수는 테이블의 항목 수를 파티션 수로 나눈 값과 거의 같습니다.
설명서에는 각 파티션의 공간이 약 10GB로 제한되어 있다고 나와 있습니다. 또한 모든 파티션에 저장된 모든 항목의 크기가 10GB를 초과하면 DynamoDB는 자동으로 투명하게 이러한 파티션을 절반으로 분할하여 두 개의 새 파티션을 생성하는 백그라운드 프로세스를 시작합니다. 다시 한번 말하지만, 아이템이 균등하게 분배된다면, 새로운 서브 파티션이 원래 파티션의 아이템의 절반 정도를 차지할 것이기 때문에 매우 좋습니다.
분할 할 때 중요한 점은 분할 파티션의 처리량이 원래 파티션에서 사용 가능한 처리량의 절반에 불과하다는 것입니다.
지금까지는 행복한 사례를 다루었습니다.
매우 많은 수의 항목에 해당하는 파티션 키 값을 하나 또는 몇 개 가질 수 있습니다. 이는 일반적으로 테이블 스키마가 정렬 키를 사용하고 여러 항목이 동일한 파티션 키에 해시되는 경우에 발생할 수 있습니다. 이 경우 하나의 파티션 키가 함께 10GB 이상을 차지하는 항목을 담당 할 수 있습니다. 그리고 이것은 분할을 초래할 것입니다. 이 경우 DynamoDB는 여전히 두 개의 새 파티션을 만들지 만 항목을 저장할 하위 파티션을 결정할 때 파티션 키만 사용하는 대신 정렬 키도 사용합니다.
예
일반성을 잃지 않고 거기 파티션 키 문자 (A-Z)입니다 테이블이며, 숫자는 정렬 키로 사용되는 상상, 추론하는 일을 더 쉽게 만드는. A, B, C가 1 번 파티션에 저장 될 문자 있도록 테이블에 대해 9 개의 파티션이
이미징, 문자 D는, E는, F 등 파티션 2 것 아래 그림에서
, 파티션 경계는
h(A0)
,
h(D0)
등으로 표시되어 예를 들어 첫 번째 파티션에 저장된 항목은
h(A0)
과
h(D0)
사이의 값으로 파티션 키 해시 -
0
은 의도적이며 다음에 편리하게 표시됩니다.
D
및
F
너무 좋은 찾고되지 않습니다 대부분의 파티션 키 값에 대한 표 1 개 3 항목 사이가 있지만, 두 개의 파티션 키 값이 있다는 것을
는
[ h(A0) ]--------[ h(D0) ]---------[ h(G0) ]-------[ h(J0) ]-------[ h(M0) ]- ..
| A B C | E F | G I | J K L |
| 1 1 1 | 1 1 | 1 1 | 1 1 1 |
| 2 2 2 | 2 2 | 2 | 2 |
| 3 3 | 3 | 3 | |
.. .. .. .. ..
| 100 | 500 | | |
+-----------------+----------------+---------------+---------------+-- ..
알 수 있습니다. D
에는 100 개의 항목이 있고 F
에는 500 개의 항목이 있습니다.
파티션 키 값이 F
인 항목이 계속 추가되면 결국 [h(D0)-h(G0))
파티션이 분할됩니다. 가능 동일한 해시 키가 항목을 분할하려면 범위 키 값이 사용되어야 할 것이다, 그래서 우리는 다음과 같은 상황이 될 겁니다 :
..[ h(D0) ]------------/ [ h(F500) ]/----------[ h(G0) ]- ..
| E F | F |
| 1 1 | 501 |
| 2 2 | 502 |
| 3 | 503 |
.. .. ..
| 500 | 1000 |
.. ---+-----------------------+---------------------+--- ..
[h(D0)-h(G0))
가로 분할 된 원래 파티션 [h(D0)-h(F500))
및
[h(F500)-h(G0))
나는이 항목은 일반적으로 자신의 파티션 키 값에 해시 함수를 적용하여 얻은 해시 값을 기준으로 파티션에 매핑되는 것을 시각화하는 데 도움이되지만 필요하다면, 값이 파티션을 포함 할 수 해시되고 희망 key + 정렬 키 값.