Mangodb 的缺点是什么?性能?

2015-07-01 17:39:52 +08:00
 shyrock
最近一个项目打算采用mangodb替换mysql。吹了一堆好处后,销售问我,这些好处的代价是什么?他不懂技术,但是坚持一个朴素的理念“有得必有失”。

我翻了一下网络,发现根据CAP原则,mangodb的归类是CP,是牺牲了可用性来保证一致性和分片容忍性,换句话说mangodb的性能比归类为CA的mysql在性能上应该有所降低。
但是很遗憾,网上做两者性能对比的文章观点互相矛盾,且都不具权威性。

所以想问问各位有没有权威的说法啊?
20644 次点击
所在节点    MongoDB
88 条回复
shyrock
2015-07-01 22:27:33 +08:00
@aisk 生而google之的人注册技术论坛账号是专门为了吐槽用的吧?已block,不谢。
anubiskong
2015-07-01 22:32:09 +08:00
@lijianying10 不是吧, 这点问题都解决不好?
df4VW
2015-07-01 23:23:45 +08:00
缺点是,一般从sql来的人,都还是用sql的思维方式在用mongo,然后发现不好用,就在网上疯狂吐槽。

我也不喜欢mongo,但是我自认为我还没有100%的用对mongo,就不吐槽了。
zhangsoledad
2015-07-01 23:33:14 +08:00
据说坑多 已被吓退
typcn
2015-07-01 23:38:36 +08:00
再慢,也比 MySQL 快几倍
9hills
2015-07-02 01:10:42 +08:00
@shyrock 我的意思是你不懂性能也不懂CAP 。言尽于此
9hills
2015-07-02 01:15:39 +08:00
@aisk 苦口婆心被人block ,也是悲剧。

把mongo 仅仅是当作没有事务的mysql 来用,是现在mongo 的最大误用。


Nosql 和sql的思想完全不同。
nine
2015-07-02 01:43:32 +08:00
那MongoDB 优点是什么?为什么不用PostgreSQL?
Septembers
2015-07-02 04:06:40 +08:00
@9hills
NoSQL的重点是围绕文档
DBMS的重点是围绕关系
不知是否有理解错误?
vietor
2015-07-02 06:32:26 +08:00
最大不同,不支持关联查询,性能的确提升,索引难建对
mengzhuo
2015-07-02 07:49:37 +08:00
没法join比较蛋疼,只能用embeddocument,配合ORM+预先载入内存才能感受到爽快
木有事务,只能自己用程序保证

对于我司手游这样的应用,用mongodb就很好,结构灵活,反正性能不是啥问题,都是赚了1年钱就跑的(逃
imlonghao
2015-07-02 07:57:28 +08:00
我滚到 Github 上看了看 mangodb,
感觉就是一个用来搞笑的....

License
If you use this, you must donate $1 to someone more intelligent than you.

楼主我来拿你的$1了.....
virusdefender
2015-07-02 08:33:49 +08:00
反正我用的时候就是MySQL之类的存储小数据,有关系的数据

mongo存储大字段,而且不会再修改的,防止把MySQL撑的太大。
safilar
2015-07-02 08:46:55 +08:00
mongoDB 其实学习成本很低,类别 hadoop 等其他大数据库框架来说。它的性能不是很杰出,如果按穿传统意义上的关系数据库来设计的话,也不支持所谓的跨表查询。
realpg
2015-07-02 08:51:24 +08:00
不同功能的东西,实现的功能都不同。损失的就是功能。
RDMBS跟noSQL实现的基本功能都不一致,比较个卵啊。
举个极端的例子,我以前用MYSQL,现在自己写了个内存存数据的引擎叫rCache替换MYSQL,实现的功能就是一个只有get和set和remove的KV内存存储器,总代码100行,因为我的业务需求就是一个单一存储器,只需要这一个功能,以前的mysql表两列key,value查询也就是三个查询 按主键select,按主键删除,插入记录
对于这个项目,性能提升1000%以上,我的代价是啥?没有。
dingyaguang117
2015-07-02 08:52:38 +08:00
@vietor mongodb转mysql,觉得 应该是mysql索引难建吧

毕竟还有查询条件复杂多了
josephok
2015-07-02 09:11:50 +08:00
能把标题改一下吗?
Sight4
2015-07-02 09:25:03 +08:00
首先,这里面有一点误导的是,CAP不是说,只要有A,就一定没P,而是究竟是A的优先级高一点,还是P的优先级高一点。好了,回到正题

一般而言,MySQL是传统的RMDBS,是以ACID为第一守则,实现分布式,CA成为首要优先级,这里的表述不是很到位,可以看看下面这篇参考

http://www.infoq.com/cn/articles/cap-twelve-years-later-how-the-rules-have-changed/

所以,并不是牺牲什么为代价,只是处理事情的优先级的先后顺序,这个的使用还是需要结合实际生产应用。


再者,mongoDB跟RMDBS是完全不一样的东西,没事务,没关联,没约束,这些在实际的生产应用中可能会产生很多的问题,所以,mongoDB是那种看起来很爽,用起来就各种问题的存在。如果没有实际将模型拿去验证,又或者把SQL那一套塞进去的话,很多时候会得不偿失。
shyrock
2015-07-02 09:27:36 +08:00
@9hills 你第一个回复就纯吐个槽而已,第二句就来个言尽于此,真谢谢你的技术讨论精神了。
shyrock
2015-07-02 09:31:29 +08:00
@Sight4 我看到CAP的解释是,在一个实用的分布式系统中,CAP三者只能取其二。这里当然没说完全没有第三个选项,而是说在设计上第三个选项的优先级最低。
说道NoSQL比起RDBMS少了事务、约束等功能(或者说限制),我觉得首先可以思考一下这些限制是否本身就是CAP模型中的一个维度呢,比如说是否事务本身就是C的一个具体表现。

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

https://www.v2ex.com/t/202547

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

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

© 2021 V2EX