Mangodb 的缺点是什么?性能?

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

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

所以想问问各位有没有权威的说法啊?
20645 次点击
所在节点    MongoDB
88 条回复
Neveroldmilk
2015-07-03 10:23:45 +08:00
我觉得纠结半天,还不如实际试试。数据量不是太大的情况下,No SQL的缺陷可以通过代码流程来补足。
ly827
2015-07-03 10:33:28 +08:00
我觉得先用起来才会知道 我是没用过~~
lijianying10
2015-07-03 11:15:34 +08:00
@movieqiu 但是,得具体业务看来,如果是存储数字的话还好说。如果是字符串之类的,那就难受了。
movieqiu
2015-07-03 12:26:38 +08:00
@lijianying10 恩这倒是没错。那如果在设计的时候,就将字符串的长度做一些限制,比如固定多少长度。会不会好一些呢?感觉mongodb就是牺牲了不少老式数据库的特性达到的高性能,那么为了用这些高性能,自己就得动手做一些调整。
movieqiu
2015-07-03 12:29:32 +08:00
@lijianying10 恩这倒是没错。那如果在设计的时候,就将字符串的长度做一些限制,比如固定多少长度。会不会好一些呢?感觉mongodb就是牺牲了不少老式数据库的特性达到的高性能,那么为了用这些高性能,自己就得动手做一些调整。
kamushin
2015-07-03 13:44:16 +08:00
@lilydjwg MYSQL有个引擎BLACKHOLE,效果和MangoDB一样样的~
lijianying10
2015-07-03 23:01:20 +08:00
@movieqiu 我觉得比较好的方案是:
1. 合理使用删除与更新数据
1.1 删除只是一个状态,不真正的删除
1.2 更改数据内容只加入一个新的对象到Collection中顺便还能做版本管理或者类似时间轴这种的常见需求。
2. 合理的根据建立Collection让数据尽量分散一些
如果数据量可预测的非常长,可以针对业务分类。让Skip的数据量减少,或者说是让Skip大量数据的概率减少。
3. 单索引,ID查询为王。

我也许说的不对,或者还是不够理想,当然我自己也认为我对数据库设计还是不够深刻,同时我也是个开发新手,欢迎批评,也希望能有更多的讨论。

最后希望能够帮到LZ。
aspirin2d
2015-08-25 23:20:12 +08:00
@lijianying10 还有一个就是尽量让每个文档的长度都一致,且尽可能多预留写占位的 field

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

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

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

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

© 2021 V2EX