为什么MongoDB的任何详细和具体的原因,是不是SQL数据块快得多?(Any detailed a

2019-06-25 20:56发布

好了,现在的问题是,为什么MongoDB的这么快

我很欣赏这些问题的答案,但是,他们是相当普遍的。 是的我知道:

  • MongoDB是,那为什么被文档为基础的会导致更高的速度基于文档的?
  • MongoDB是NoSQL的,但为什么NOSQL意味着更高的性能?
  • SQL确实比MongoDB的多很多的一致性,酸等,但我相信MongoDB中也做类似的保证数据的安全,维护索引的东西,等等,对不对?

好吧,我写这个问题,只是为了找出

  1. 什么是 MongoDB的高性能详细和具体的原因是什么?
  2. 究竟 SQL做,但MongoDB的没有做,所以它获得非常高的性能?
  3. 如果面试官(一个MongoDB的和SQL专家)问你"Why MongoDB is so fast" ,你会怎么回答? 显然,只是回答: "because MongoDB is noSQL"是不够的。

谢谢

Answer 1:

首先,让我们比较与苹果苹果: 读与写的MongoDB是像单读取并通过主键的表,在一个RDBMS没有非聚集索引写道。

因此,让标杆正是: http://mysqlha.blogspot.de/2010/09/mysql-versus-mongodb-yet-another-silly.html

而事实证明,在完全相同的基本操作的公平比较的速度差异并不大。 事实上,MySQL是稍快。 我会说,他们是等价的。

为什么? 因为实际上,这两个系统都在这个特殊的标杆做类似的事情。 返回单行,按主键搜索,其实并没有那么多的工作。 这是一个非常快速的操作。 我怀疑的跨进程通信开销是它的一个重要组成部分。

我的猜测是,在MySQL胜过MongoDB中的略少的系统开销(没有逻辑锁,可能还有其它一些小东西)越调代码。

这导致了一个有趣的结论: 你可以使用MySQL像文档数据库并获得优异的性能出来。


如果面试官说:“我们不关心文档或样式,我们只需要一个更快的数据库,你认为我们应该使用MySQL或MongoDB的?”,你会怎么回答呢?

我建议忽略表现了一会儿,看看这两个系统的相对强度。 状脱屑(一路)的东西,复制浮现在脑海MongoDB的。 对于MySQL,有很多功能,如丰富的查询,并发模型,更好的工具和成熟以及更多。

基本上,你可以交易的功能性能。 愿意这样做吗? 这是一个不能被普遍做出了选择。 如果你不惜任何代价,选择性能,可以考虑加入另一种技术之前,首先调整的MySQL。


下面是当客户端获取通过主键的单排/文件时会发生什么。 我会诠释这两个系统之间的差异:

  1. 客户端建立的二进制指令(相同)
  2. 客户端发送过来TCP(同)
  3. 服务器解析命令(同)
  4. 服务器从缓存中访问查询计划(SQL只,而不是MongoDB的,不HandlerSocket的)
  5. 服务器要求B-Tree组件访问行(同)
  6. 服务器采用B树路通往该行上的物理只读锁(同)
  7. 服务器发生在该行的逻辑锁(SQL只,而不是MongoDB的,不HandlerSocket的)
  8. 服务器序列化行,通过TCP发送它(同)
  9. 客户端反序列化(同)

只有两个典型的SQL-基地RDBMS'es额外的步骤。 这就是为什么没有真正的差别。



Answer 2:

在一般情况下,MySQL和MongoDB的是在一台机器上的“耐用”写入性能颇为相似。 简单的键/值查找几乎是一样的...如果你想使用MySQL的方式。 文档的支持,很明显,大的生产力利益和重大胜利的表现。

具有自动分片... MongoDB是在难以形容的方式更快。 开箱即用,通过适当的设计,您可以扩展几乎呈线性没有构建任何逻辑到你的代码任何责任。

读/写拆分也被内置到几乎所有的驱动程序......这,大部分是赞助商或者通过10gen公司自己开发的。

我以前规模应用和写读/写分裂码,分布式哈希为分片,连续运行的再平衡的工作,并增加了gzip来mysql的“文件”专卖店。 啊。

它的速度更快,因为它的简单,重点突出。 它的设计充分考虑了这一切。 在商品硬件规模是当务之急。 一个RDBMS的优先级有很大的不同。



Answer 3:

默认情况下,蒙戈没有做任何索引; 也有没有交易。 但是,如果你配置一个MySQL表是没有索引,并启用自动提交,你不会看到一个巨大的速度差。 写位磁盘只是需要一定的时间。

然而,蒙戈的设计可轻松实现扩展。 使用碎片,您可以水平扩展您的写入和无主 - 主复制的复杂性获得更好的性能。 使用副本集,你可以扩展你的水平读取。 所以,我要说的是,有一个系统性的性能改进,但每个查询不一定快。



文章来源: Any detailed and specific reasons for Why MongoDB is much faster than SQL DBs?