DynamoDB에 데이터 업로드 중 효율적으로 쓰기 활동 배포
일반적으로 다른 데이터 소스에서 데이터를 로드할 때, Amazon DynamoDB는 여러 서버의 테이블 데이터를 파티션합니다. 테이블에 데이터를 업로드할 때 할당된 모든 서버에 데이터를 동시에 업로드하면 성능이 향상됩니다.
예를 들어, UserID
를 파티션 키로, MessageID
를 정렬 키로 사용하는 복합 기본 키를 사용하는 DynamoDB 테이블로 사용자 메시지를 업로드하는 경우를 가정합니다.
데이터를 업로드하는 방법 중 하나는 각 사용자 별로 한 명씩 모든 메시지 항목을 업로드하는 것입니다.
UserID | MessageID |
---|---|
U1 |
1 |
U1 | 2 |
U1 | ... |
U1 | ... 최대 100 |
U2 |
1 |
U2 | 2 |
U2 | ... |
U2 | ... 최대 200 |
이 경우 문제는 DynamoDB에 대한 쓰기 요청을 파티션 키 값에 분산하지 못한다는 것입니다. 한 번에 파티션 키 값 하나를 취하고 모든 항목을 업로드한 후 다음 파티션 값에서 동일한 작업을 반복합니다.
표시되지는 않지만 DynamoDB는 테이블의 데이터를 여러 서버에 분할합니다. 테이블에 대해 프로비저닝된 모든 처리량 용량을 완전히 활용하려면 워크로드를 파티션 키 값에 분산해야 합니다. 이 경우 불균일한 업로드 작업 양을 파티션 키 값이 모두 동일한 항목으로 전달하면 DynamoDB가 테이블에 대해 프로비저닝한 모든 리소스를 완전히 활용하지 못할 수 있습니다.
정렬 키를 사용하여 업로드 작업을 배포, 각 파티션 키 값으로부터 하나 씩 항목을 로드할 수 있습니다.
UserID | MessageID |
---|---|
U1 |
1 |
U2 | 1 |
U3 | 1 |
... | ... |
U1 |
2 |
U2 | 2 |
U3 | 2 |
... | ... |
이 시퀀스에서 모든 업로드는 서로 다른 파티션 키 값을 사용하므로, 더 많은 DynamoDB 서버를 동시에 사용하도록 하여 처리량 성능을 향상합니다.