哪个数据存储系统提供最佳更新/更新插入性能?

Posted

技术标签:

【中文标题】哪个数据存储系统提供最佳更新/更新插入性能?【英文标题】:Which data storage system offers the best update / upsert performance? 【发布时间】:2011-10-21 13:50:58 【问题描述】:

我正在寻找能够提供最佳更新/更新插入性能的数据存储系统(首选 NoSql)。这是迄今为止最重要的方面。此外,重要的是更新记录的大小将快速增长。我一直在使用 MongoDB,但无法将更新性能提升到所需的水平。

有人可以推荐吗?

【问题讨论】:

【参考方案1】:

在具体跳到其他数据库解决方案之前,MongoDB 的瓶颈是什么?您是否已将磁盘 IO 最大化?您是否使用大量输入线程来锤击服务器?你达到了什么类型的数字?我已经看到服务器级硬件每秒推送数万次插入,那么您需要什么。

显然,还有许多其他数据库解决方案可用作键值数据库。 Riak、Redis、Membase、CouchDB、HBase,仅举几例。但是和 MongoDB 一样,这些数据库都不是魔法,它们仍然遵循计算机物理的基本定律。

因此,要对您的问题有一个非常好的答案,我们需要:

服务器配置 您运行的基本测试 您取得的成绩 测试期间的基本服务器监控数据

我提到的其他数据库的性能可能比 MongoDB 略好,但它们的性能不会好 100 倍,因此我们确实需要确定您正在寻找的数据库。

【讨论】:

如果您希望人们帮助您解决问题,请不要偷懒。盖茨副总裁问了几个非常相关的问题。适当地回答他们。如果性能是您最关心的问题,那么您的硬件规格充其量也不会令人印象深刻。高连续写入吞吐量严重依赖于快速 IO。 5400 rpm 的磁盘不会给你这个。【参考方案2】:

Cassandra 提供了一个最终一致性模型(不过,这有点用词不当,因为它可以调整为非常一致),它允许非常好的插入/更新性能。我没有任何可靠的基准可以给你,但是根据我自己的经验和在线阅读的大部分内容,Cassandra 的插入/更新性能似乎比 HBase 更好。

我会看看两者,并使用一些示例数据进行尝试,看看哪一个适合你。我是 Cassandra 的忠实粉丝,但希望他们的超级专栏更有用。

【讨论】:

【参考方案3】:

由于我还不能对其他帖子发表评论,因此我将其发布为答案: 建议购买更快的 HDD,正如 Remon 所说,7200rpm 的 HDD 并不昂贵,当然,如果您想要获得最佳性能,SSD 会很棒。

根据您的问题,我只在 NoSQL 场景中使用过 mongoDB,并且考虑到我使用的是低端硬件这一事实,我看到它的更新/更新插件性能非常好。

但是,我在这里每秒只处理几百次更新,我不知道现在在更高级别的音量下的性能。

此外,您也没有指定在数据库上更新插入的数据量,也没有指定操作完成的频率,也没有指定“预测”数量。

【讨论】:

【参考方案4】:

正如其他人所说,找到哪里什么瓶颈(1)不仅仅是一个笼统的陈述。

但是,根据我的经验,根据一个极小且不科学的实验,Cassandra 的加载速度似乎确实更快(我在尝试时从未将空闲时间降至零)。

这只是一个观察结果 -- 我将此作为任何建议

要做出明智的选择,您需要权衡

周边软件生态系统, 功能性和非 功能要求,例如 面向文档的好处 基于键值存储的数据库, 需要网格文件系统.... .

(1) 记住——你永远不会消除瓶颈——你只是将它们移到别处:-(——一旦你解决了一个问题,你就会发现系统中另一个最慢的部分——幸运的是,它位于不会对您产生不利影响的地方。

【讨论】:

以上是关于哪个数据存储系统提供最佳更新/更新插入性能?的主要内容,如果未能解决你的问题,请参考以下文章

更新还是插入和删除?哪个更适合大文本列的存储/性能?

《TableStore最佳实践:GEO索引打造店铺搜索系统》

《TableStore最佳实践:GEO索引打造店铺搜索系统》

.NET 百万级 大数据插入更新 ,支持多种数据库

数据库插入或者更新大批量数据的性能优化

Laravel - 使用大数据优化更新/插入查询的最佳方法是啥?