关于数据库的更新/插入速率限制的一些查询(基于SQL或基于NoSQL)

时间:2012-08-30 21:28:40

标签: mysql sql sql-server mongodb amazon-dynamodb

在应用程序中,我需要更新大量记录/在数据库附近插入大量记录。

是否有任何此类插入/更新限制将成为我的应用程序的瓶颈?我能做些什么来最大化插入/更新速率。

此外,关于更新,同一记录将不会更新 - 一个表中的许多记录(可通过密钥清楚地识别)将更新 - 这是否意味着更新率可能会显着提高?

我的上述问题适用于关系数据库和NoSQL数据库。

我现在正在考虑使用像SQL Server / MySQL这样的关系数据库 - 但是在这个阶段我愿意考虑像Mongo DB / Dynamo DB这样的无数据库 - 我的最终数据库选择取决于哪个数据库提供更高的插入/更新限制。

1 个答案:

答案 0 :(得分:2)

一般注意事项

最大R / W容量将在很大程度上取决于硬件(HDD与SSD)和节点数量。另外,我相信,将ASQL扩展为写入操作更容易,因为ACID并不强制执行一致性。

对于问题的DynamoDB部分

DynamoDB是托管服务。您保留给定的R / W容量(所谓的“单位”),亚马逊会为您扩展数据库。但是,有几点需要考虑:

  • 读取的最大保留吞吐量为10,000
  • 写入
  • 的最大保留吞吐量为10,000

基本上,每个读取或写入的每秒消耗1个单位,每个不可分割的kB。 (嗯,实际上,它甚至更棘手)。

但是,为了扩展,您的表格分为分区。保留的吞吐量也是如此。因此,为了达到最大可能的吞吐量,您要求密钥需要尽可能均匀地分布。

这些是数据库方面的考虑因素。

客户端,还有多个因素需要考虑:

  • TCP / HTTP延迟
  • 一次最大打开套接字

您可以使用batch_get_item和/或batch_write_items进行分组,以减少延迟影响。

例如,我从未能够从办公室计算机访问配置的1000写入,因此,您最好使用多个实例/服务器来发出数据库请求。

TL; DR (DynamoDB)

  • 您保留吞吐量,亚马逊可以提供吞吐量
  • 还有一些与内部实施有关的问题
  • 需要优化延迟
  • 需要仔细并行化

我不是其他数据库类型的专家所以,我只能猜测客户端的注意事项会以某种方式相同,对于MySQL来说可能更少,因为它使用二进制协议。此外,您可能需要管理数据库。