Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance DynamoDB局部性能差_Performance_Amazon Dynamodb - Fatal编程技术网

Performance DynamoDB局部性能差

Performance DynamoDB局部性能差,performance,amazon-dynamodb,Performance,Amazon Dynamodb,DynamoDB local对我的表执行一次put操作需要100毫秒以上的时间。文件中说,本地dbs的吞吐量被忽略,仅受硬盘/计算机速度的限制 与mongodb相比,我的写吞吐量要慢100倍我可以做些什么来加快对DynamoDB local的写入速度吗? 我将尝试批量puts,但问题仍然存在。在这一点上,输入我的(相当大的)测试数据将需要几年的时间 我使用Clojure和Faraday作为我的客户端api,但已经确认这不是瓶颈 我试过的 我以25%的速度实现了批处理,这使总进度降低了大约25倍:

DynamoDB local对我的表执行一次put操作需要100毫秒以上的时间。文件中说,本地dbs的吞吐量被忽略,仅受硬盘/计算机速度的限制

与mongodb相比,我的写吞吐量要慢100倍我可以做些什么来加快对DynamoDB local的写入速度吗?

我将尝试批量puts,但问题仍然存在。在这一点上,输入我的(相当大的)测试数据将需要几年的时间

我使用Clojure和Faraday作为我的客户端api,但已经确认这不是瓶颈

我试过的 我以25%的速度实现了批处理,这使总进度降低了大约25倍:)。因此,即使使用批处理,我也可以获得每项约120毫秒的写入速度


使用Mongo,即使使用保守的WriteConcern/ACKNOWLEDGED标志,也会导致每个项目大约250微秒(快约500倍),甚至不需要发送批处理。所以问题不在于我的硬盘或操作系统。

你问这个问题已经有一段时间了,但我还是想提供一些背景信息

MongoDB之所以如此之快,是因为它在将更新写入磁盘之前会在内存中缓冲这些更新。您可以在官方MongoDB常见问题解答中了解更多信息

另一方面,DynamoDBLocal相当慢,因为它在后台使用SQLite数据库(您可以通过使用SQLite浏览器打开DynamoDBLocal目录中的*.db文件来检查这一点),并且 与其他数据库相比,SQLite的写入速度非常慢。更多信息


DynamoDBLocal只是本地开发的一个基本工具,它将dynamodbapi的一个子集封装在一个简单的SQLite数据库中。当然,真正的DynamoDB不依赖SQLite,而且速度更快。

这是一个老问题,但仍然非常相关——根据Stackoverflow的说法,多年来它已经被浏览了2000多次。正如FLXN在他的回答中已经解释的那样,DynamoDB Local是用来开发应用程序的工具,而不是用来真正安装DynamoDB的替代品。它既没有足够的效率,也没有足够的高可用性或持久性,无法作为真正的数据库

但从最近开始,如果您想要一个真正的(高度可用且高效的)可安装数据库,并且与dynamodbapi兼容,那么就可以使用另一种方法:ScyllaDB,即开源数据库现在支持dynamodbapi。这种支持还不完善,仍然缺少一些DynamoDB特性,但兼容性正在迅速提高,您可以查看Scylla与DynamoDB API的兼容性的当前状态


全面披露:我是锡拉开发银行的一名员工,也是交流发电机-锡拉支持DynamoDB API的开发人员之一。

您使用的是什么版本的Dynamo DB Local?在较新的版本中,您还看到这种性能吗?为什么-inMemory选项不能让它更快?这个“仿真器”这么慢毫无意义。我也经历过这种情况,我使用dynamodb local从队列写入作业输出,然后通过跨区域复制到多个区域的表中,然而,我得到了备份队列将db设置为inmemory会很快清除队列,但随后我看到一些数据丢失,即一个计数为140000的项目下降到130000。很遗憾看到有人问到DynamoDB local有“糟糕的性能”,每个人都同意他的说法,但当我提出一个解决方案时——一个与DynamoDB兼容但性能不差的替代开源项目——我的分数很低。我认为这不公平。我认为这是对原始问题的一个很好的回答,即想要一个性能良好的本地版本的DynamoDB。问题不是为什么它的性能不好,而是它希望找到一个解决方案。这就是我的回答。