在应用程序中,我需要更新大量记录/在数据库附近插入大量记录。
是否有任何此类插入/更新限制将成为我的应用程序的瓶颈?我能做些什么来最大化插入/更新速率。
此外,关于更新,同一记录将不会更新 - 一个表中的许多记录(可通过密钥清楚地识别)将更新 - 这是否意味着更新率可能会显着提高?
我的上述问题适用于关系数据库和NoSQL数据库。
我现在正在考虑使用像SQL Server / MySQL这样的关系数据库 - 但是在这个阶段我愿意考虑像Mongo DB / Dynamo DB这样的无数据库 - 我的最终数据库选择取决于哪个数据库提供更高的插入/更新限制。
答案 0 :(得分:2)
最大R / W容量将在很大程度上取决于硬件(HDD与SSD)和节点数量。另外,我相信,将ASQL扩展为写入操作更容易,因为ACID并不强制执行一致性。
DynamoDB是托管服务。您保留给定的R / W容量(所谓的“单位”),亚马逊会为您扩展数据库。但是,有几点需要考虑:
基本上,每个读取或写入的每秒消耗1个单位,每个不可分割的kB。 (嗯,实际上,它甚至更棘手)。
但是,为了扩展,您的表格分为分区。保留的吞吐量也是如此。因此,为了达到最大可能的吞吐量,您要求密钥需要尽可能均匀地分布。
这些是数据库方面的考虑因素。
在客户端,还有多个因素需要考虑:
您可以使用batch_get_item和/或batch_write_items进行分组,以减少延迟影响。
例如,我从未能够从办公室计算机访问配置的1000写入,因此,您最好使用多个实例/服务器来发出数据库请求。
我不是其他数据库类型的专家所以,我只能猜测客户端的注意事项会以某种方式相同,对于MySQL来说可能更少,因为它使用二进制协议。此外,您可能需要管理数据库。