2013-12-03 2 views
1

DynamoDB를 처음 사용하고 프로비저닝 된 처리량에 대해 고심하는 데 어려움이 있습니다.Amazon DynamoDB 및 프로비저닝 된 처리량

내가 읽은 바로는이 기능을 사용하여 한 번에 읽기 및 쓰기 제한을 설정할 수 있습니다. 내가 잘못 했니?

기본적으로 내가하고 싶은 것은 내 소프트웨어를 통해 전송되는 이메일을 저장하는 것입니다. 현재 MySQL 데이터베이스에 저장하고 있지만 데이터 양이 매우 커서 어떤 이유에서 DynamoDB를보고 있습니까? 이 데이터는 자주 액세스 할 필요가 없지만 필요할 때 액세스 할 수 있어야합니다.

지난 달에 142,925 개의 이메일이 전송되었으며 MySQL 테이블을 저장하는 각 "행"(또는 이메일)은 약 2.5KB입니다.

가끔씩 이메일이 1 회 전송되며, 다른 번에는 한 번에 3,000 개가 전송 될 수 있습니다. 주어진 시간에 언제 또는 얼마나 많은 정보가 전송되는지 알 수있는 방법이 없습니다.

내 처리량에 대한 제안 사항이 있습니까?

그리고 만약 내가 넘어 졌다면 아마존이 그것을 조절하고 시간이 지남에 따라 그것을 추가한다는 것을 이해할 수 있습니까? 아니면 그냥 던져 오류가 그게 끝이야?

도움을 주셔서 대단히 감사드립니다.

답변

2

DynamoDB를 Java SDK와 함께 사용하고 있습니다. 액세스 버스트가 발생하면 아마존은 우선 프로비저닝 된 처리량보다 약간 더 높게 유지하려고 시도합니다. 그런 다음 스로틀을 시작하고 예외를 throw합니다. 우리의 코드에서 우리는이 오류를 사용하여 요청을 작은 배치로 나누고 때로는 잠자기를 강요하여 약간 식혀줍니다.

상황을 처리 할 때 정말 "때때로"해야 할 상황의 유형에 따라 다릅니다. 얼마나 많은 시간을 테이블에서 모든 데이터를 가져와야합니까? 당신은 정말로 그것을 모두 얻을 필요가 있습니까? 그리고 한 달에 ~ 100k는 내 마음 속에 MySQL을 위해 너무 많이 들리지 않습니다. 그것은 모두 당신이 필요로하는 쿼리 능력에 달려 있습니다.

또한 DynamoDB 쓰기는 읽기보다 비용이 많이 들기 때문에 쓰기 집중 문제에 가장 적합하지 않다고 신호를 보냅니다.

0

DynamoDb는 매우 비쌉니다. 각 읽기 및 쓰기 비용이 좋은 양만큼 이메일을 발전기 DB에 저장하지 않을 것을 제안합니다. 기본적으로 1 읽기 단위는 초당 4KB 데이터 읽기를 의미하며 1 단위는 초당 1KB 데이터 쓰기를 의미합니다. 당신은 당신의 각 이메일이 2.5KB이기 때문에 데이터를 검색하는 동안 (이메일 검색을위한 적절한 키를 가지고 있지 않다면) 테이블이 완전히 스캔되어 매우 많은 양의 비용을 들이게 될 것입니다.

관련 문제