Jac*_*ale 35 sql performance mongodb nosql
好的,有关于为什么MongoDB这么快的问题
我很欣赏这些答案,但是,它们非常普遍.是的我知道:
好的,我写这个问题只是为了找出答案
"Why MongoDB is so fast",你会怎么回答?显然只是回答:"because MongoDB is noSQL"还不够.谢谢
usr*_*usr 35
首先,让我们将苹果与苹果进行比较:使用MongoDB进行读取和写入就像是在RDBMS中没有非聚集索引的表上通过主键进行单次读取和写入.
所以让我们准确地指出:http://mysqlha.blogspot.de/2010/09/mysql-versus-mongodb-yet-another-silly.html
事实证明,完全相同的原始操作的公平比较中的速度差异并不大.事实上,MySQL略快一些.我会说,他们是等同的.
为什么?实际上,两个系统在这个特定的基准测试中都做了类似的事情.返回通过主键搜索的单行实际上没那么多工作.这是一个非常快速的操作.我怀疑跨进程通信开销是其中很重要的一部分.
我的猜测是,MySQL中经过调优的代码超过了MongoDB稍微不那么系统的开销(没有逻辑锁,可能还有其他一些小东西).
这导致了一个有趣的结论:您可以像使用文档数据库一样使用MySQL,并从中获得出色的性能.
如果采访者说:"我们不关心文档或样式,我们只需要更快的数据库,你认为我们应该使用MySQL或MongoDB吗?",我会回答什么?
我建议暂时忽略性能并查看两个系统的相对强度.MongoDB会想到缩放(向上)和复制等事情.对于MySQL,还有更多的功能,如丰富的查询,并发模型,更好的工具和成熟度等等.
基本上,您可以交换功能以获得性能.愿意这样做吗?这是一个不能普遍做出的选择.如果您不惜任何代价选择性能,请考虑在添加其他技术之前先调优MySQL.
以下是客户端通过主键检索单行/文档时发生的情况.我将注释两个系统之间的差异:
典型的基于SQL的RDBMS只有两个额外的步骤.这就是为什么没有真正的差异.
通常,MySQL和MongoDB在单个机器上的"持久"写入性能非常相似.简单的键/值查找几乎相同......如果你想以这种方式使用MySQL.显然,文档支持是一项巨大的生产力优势,也是业绩的重大胜利.
使用自动分片... MongoDB以难以描述的方式更快.开箱即用,通过适当的设计,您可以几乎线性地扩展,而无需在代码中构建任何逻辑.
几乎每个驱动程序都内置了读/写拆分...大多数都是由10gen自己赞助或开发的.
我之前扩展了应用程序并编写了读/写拆分代码,用于分片的分布式哈希,重新平衡连续运行的作业,并将gzip添加到mysql"文档"存储中.啊.
它更快,因为它简单而专注.它的设计考虑了所有这些因素.在商品硬件上扩展是一个优先事项.RDBMS的优先级完全不同.