为什么索引等相同下,数据量到达一定量级时候, 会听说 mongodb 比 mysql 快.

2019-02-27 16:10:50 +08:00
 cs8814336

一直没理解为什么当数据量达到一定程度时,mysql 会很慢,mongodb 会更快.以至于我到现在还没理解什么时候用 mongodb,什么时候用 mysql,不清楚两者的优势(底层原理优势).

从开发速度来讲,mysql 现在支持 json 字段,在一定角度来看一个表有了 json 字段就跟 mongodb 文档结构开发起来差不多方便了.

从底层原理看: mysql innodb 使用 b+tree, mongdb 默认使用 wiredtiger 使用 b-tree. b-tree 和 b+tree 有各自的优点,例如 b-tree 查询不一定需要找到叶子节点才能结束所以速度会快,但是 b+tree 能通过不存储数据的节点更快区分数据.

所以我想问大家 mongdb wiredtiger 能有什么 mysql innodb 没有的功能或者优势,底层原理原因又是什么. 就是某种因为底层设计的原因,根本导致了某些功能是别的数据库是不能有的,例如说便捷的文档结构之前 mysql 没有,但是这个可能不是底层设计导致的,只是 mysql 懒了,只要等到某天有人加上了这个功能就可以了.

提前感谢大家的回答.

11341 次点击
所在节点    MySQL
73 条回复
reus
2019-02-28 11:29:17 +08:00
@troywinter 现在都 pg 11 了,最近几个版本进步很快,不要刻舟求剑。
reus
2019-02-28 11:30:39 +08:00
想结合关系数据库和文档数据库的优点,请使用 PostgreSQL。
huiyifyj
2019-02-28 11:32:40 +08:00
MySQL 这种关系数据库,适合面向对象语言,有“类”概念的语言,c++,Java 这种。MongoDB 是非关系型数据库,文档式的存储,所以适合存储 JSON,适合 js,go 这类。
mortonnex
2019-02-28 11:33:33 +08:00
no offence
楼主的"听说"让人觉得不妥,任何事只是听别人说而没有自己的实践和思考那么将毫无意义
如果是我,可能会去做 benchmark,也会去研究 mongodb 使用的索引类型,而不是上论坛发这样的水帖
xhinliang
2019-02-28 12:11:47 +08:00
@mortonnex 楼主是有自己的思考的,所以我觉得这个套路还挺有意义的。
如果每个人都自己去做 benchmark 而没有任何讨论的话,大家的进步就太慢了。
itskingname
2019-02-28 13:21:28 +08:00
@cs8814336 是因为没有必要,尺有所长,完全一样就是重复造轮子了。
cs8814336
2019-02-28 14:14:00 +08:00
@xhinliang 感谢. 说实话那个阶段我还没有达到,所以只能发出这样的水帖..发帖前有思考过,当然能力有限不是很深入,尝试 google 过最深的就只谈到 b-tree b+tree,感觉都不是什么根本原因... 其实假如大家提到一些我没见过的方面我都会仔细去 google 的,例如上面提到什么 bson,我会去想为什么 mysql 不能用到这种技术呢,假如只有好处没坏处的功能就是可以应用到别的地方了. 我也看过一些介绍说能结合关系型和非关系型数据库优势的数据库,假如真的存在这样完美结合的能力,就是说 mysql 和 mongodb 应该也会往这个方面发展,那为什么没有这样发展的原因我相信肯定是因为某种技术底层原因决定了这个东西.
Wisho
2019-02-28 15:07:49 +08:00
@cs8814336 LZ 你发的贴全都是数据库底层实现的,你是想转做数据库内核?
cs8814336
2019-02-28 15:35:59 +08:00
@Wisho 当然我是想往技术深方向发展的,不管是数据库内核还是啥,有机会当然想. 上面问题只是看书或者文章衍生的思考而已. ps:我只是一个 2016 届毕业的后端小开发而已
Wisho
2019-02-28 15:50:27 +08:00
@cs8814336 歪个楼,有思考当然很好,但是从性价比的角度来说,有的知识比大众平均水平深一点即可,要把技能点点在最适当的地方。(不针对此贴这个知识点或某个别的什么知识点)
luozic
2019-03-01 07:23:00 +08:00
trade off 的问题,很多历史悠久的软件产品是不可能更换已有技术积累的,这样更换意味着之前几十年的技术投资完全放弃之后重来。 最简单的为什么 windows 和 osx 系统都这么大个? 实际以构建系统的水平而言,不需要继承老旧遗产的 osx 和 windows 可以做得非常小,并且性能良好。osx 上的 excel 一直是 ahit 的原因就是要兼容几十年前各种各样积累下来的垃圾 shit 的格式的 excel。 现在唯一一个几乎采用割了重新来的编译器并获得好评的都只有一个,.net core。 并且微软几乎是养了两拨人搞一个语言的生态。
petelin
2019-03-01 13:01:08 +08:00
@huiyifyj 什么时候 json 和 Go 绑在一起了
cs8814336
2019-03-05 11:31:29 +08:00
@Wisho 装逼的话不多说,只要面试能过较大公司就行了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/539297

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX