Sco*_*ach 14 performance amazon-dynamodb
DynamoDB local需要100多毫秒才能对我的表执行单个put操作.文档说本地dbs会忽略吞吐量,并且只受硬盘/计算机速度的限制.
与mongodb相比,我的写入吞吐量比它应该慢100倍.我有什么办法可以加快速度吗?
我会尝试批量投注,但问题仍然存在.此时,输入我的(相当大的)测试数据需要花费数年时间.
我正在使用Clojure和Faraday作为我的客户端api,但已经确认这不是瓶颈.
是否有其他人在DynamoDB本地遇到可怕的慢速写入速度?
编辑:
我已经实现了每批25个批次,这使总进度减慢了大约25倍:).因此,即使使用批次,我的每个项目的写入速度约为120毫秒.
使用Mongo,即使使用保守的WriteConcern/ACKNOWLEDGED标志,每个项目也会产生大约250微秒(快约500倍),甚至不需要发送批次.所以这不是我的硬盘或操作系统的问题.
任何见解都非常感谢.
SK
小智 12
你提出问题已经有一段时间了,但我还是想提供一些背景信息.
MongoDB速度非常快,因为它会在将更新写入磁盘之前将更新缓冲在内存中.您可以在此处的 MongoDB官方常见问题解答中了解更多相关信息
另一方面,DynamoDBLocal非常慢,因为它在幕后使用SQLite数据库(您可以通过使用SQLite浏览器打开DynamoDBLocal目录中的*.db文件来检查),而SQLite与其他数据库相比写入速度非常慢.更多信息在这里.
DynamoDBLocal只是本地开发的基本工具,它围绕简单的SQLite数据库包装DynamoDB API的子集.当然,真正的DynamoDB不依赖于SQLite,而且速度更快.
Nad*_*'El 10
这是一个老问题,但仍然非常相关 - 根据 Stackoverflow 的数据,多年来该问题的浏览次数已超过 2,000 次。正如 FLXN 在他的回答中所解释的那样,DynamoDB Local 旨在成为开发应用程序的工具 - 它并不是 DynamoDB 的真正可安装替代品。它既不够高效,也不够高可用或足够耐用,无法充当真正的数据库。
但最近,如果您想要一个真正的(高度可用且高效)可安装且兼容 DynamoDB API 的数据库,那么可以使用另一种选择:ScyllaDB最近宣布开源Scylla数据库现在具有 DynamoDB API 支持。此支持尚不完善,仍然缺少一些 DynamoDB 功能,但兼容性正在快速提高,您可以查看此文档以了解 Scylla 与 DynamoDB API 兼容性的当前状态。
全面披露:我是 ScyllaDB 员工,也是 Alternator - Scylla 对 DynamoDB API 支持的开发人员之一。