Dynamo db write operations



Dynamo db每批只允许25个请求。有没有办法在Java中增加这个速度,因为我必须每秒处理1000条记录?有比分批处理更好的解决方案吗?

每个BatchWriteItem的25是一个硬dynamodb限制,如下所示:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html

没有什么可以阻止你并行执行多个batchwrite。决定您可以写多少的是表上的write- provisiedthroughput。

在DynamoDB中引入BatchWrites是为了减少执行多个写操作所需的往返次数,而这些语言不能为并行线程提供执行工作的机会,例如PHP。

虽然通过使用批处理API减少了往返,您仍然可以获得更好的性能,但仍然存在个别写操作失败的可能性,您的代码需要查找这些错误。使用Java执行大规模并行写操作的一个健壮的方法是使用ExecutorService类。这提供了一种使用多个线程执行插入的简单机制。然而,正如批处理中的单个项可能失败一样,您需要跟踪Future对象以确保写入操作成功执行。

提高吞吐量的另一种方法是在EC2上运行代码。如果您从笔记本电脑或AWS以外的数据中心调用DynamoDB,往返时间将更长,请求将稍微慢一些。

底线是使用标准的Java多线程技术来获得想要的性能。但是,超过某一点后,您可能需要分散并使用额外的硬件来驱动更高的写OPS。

当你有大量的实时数据流需要在AWS上结束时,Kinesis Streams可能是你的选择。特别是使用AWS Kinesis Firehose,您可以将数据大规模地传输到S3,而无需管理开销。然后,您可以使用datappipeline将其移动到Dynamo。

最新更新