有谁在用 MongoDB 体验怎么样

2012-09-11 10:44:12 +08:00
 vicalloy
MongoDB已经火了有些时间了,相信已经有不少人将MongoDB用到了自己产品中。不知道大家使用MongoDB的体验怎么样。

MongoDB 的优势应当是速度以及海量数据的支持,另外一个有点就是schemeless。

关于schemeless
真正需要用到schemeless的地方似乎并不是太多。目前很多 MongoDB 封装,也都增加了scheme的定义功能,这基本上等于放弃了schemeless。另外如果过度的schemeless,日子久了后可能自己都搞不清楚自己到底在数据库里放了什么东西。

MongoDB的特性决定了某些关系数据库很容易做的操作在MongoDB中会很不容易实现(比如多表关联查询等,而且据说分页性能也不怎么样?)。为配合MongoDB,在构架设计乃至产品功能需求方面都需要做些调整。

海量,可能大多人都不太会有机会遇到真正需要MongoDB的海量数据。

对于大多应用场景,采用关系数据库为主,以MongoDB为辅的方式是否会更加合理?或者说MongoDB的应用场景还是比较有限的。
12237 次点击
所在节点    MongoDB
35 条回复
fire9
2012-09-11 10:58:52 +08:00
如果你是关系型的数据,我劝你还是考虑MySQL,PostGreSQL等关系型数据库吧。MongoDB由于处理日志等简单关系的类型还是不错的。
superisaac
2012-09-11 11:18:52 +08:00
我们在用mongodb, 自己写了个mapping. 类似django那种方法。mongodb可以代替关系数据库。schema migration也比关系数据库简单。findAndModify之类的方法很方便。
mongodb的问题是没有事务支持,这点对于严肃应用来说比较难办。
holystrike
2012-09-11 11:26:15 +08:00
据个人的实际使用中,schemeless确实没多大的优势体现,某些时候反而有弄巧成拙的感觉
holystrike
2012-09-11 11:27:17 +08:00
当然了,也不排除本RDB禁锢较深,没有找到 schemeless 的最佳实践
lqs
2012-09-11 12:25:49 +08:00
schemeless适合在一个表里存储有细微差别的数据,省掉了在关系型数据库里要用多个表建立一对一关系。

另外以前版本mongodb性能是软肋,2.2里也许有提升。
W2EX
2012-09-11 13:16:11 +08:00
大内存机器的话性能很好,关键是要至少2台以上服务器才能用于生产环境
avatasia
2012-09-11 13:31:33 +08:00
直接上2.2 看新版的documents.

http://docs.mongodb.org/manual/contents/

数据没上1亿条,还是乖乖用RDB吧。
forest520
2012-09-11 13:50:53 +08:00
mongodb不用在开发前定好schema,可以后续迭代的时候进行修改,这是它最大的优势,客观上提升了开发效率。
如果要schema,那还用mongodb干嘛?
ivyshark
2012-09-11 14:01:12 +08:00
mongodb简直是一坨屎

mongodb的写全局锁2.2才换到db级别的锁
mongodb没有事务支持 怕丢数据的不要用
用了mongo之后你会发现执行语句出错了是不返回错误的 当然这也是它快的原因之一
号称支持gis 却连polygon的and或者or查询都做不了 至少到2.2都没有解决.
group只能用mapreduce,用不上索引,大数据量group效率的还不如mysql。2.2之后倒是可以用新框架,我试了下还是很慢。
ivyshark
2012-09-11 14:04:00 +08:00
忘记了 mongo数据超过一定数量排序会直接出错 这个bug目前也为解决 很奇葩
ivyshark
2012-09-11 14:06:03 +08:00
还有用sharding做生产环境的简直是自寻死路 一旦挂掉了 就得整个停下来重新做sharding
反正是一坨屎
avatasia
2012-09-11 14:22:27 +08:00
@ivyshark 你是专门注册来吐糟的么?呵呵
ivyshark
2012-09-11 14:50:06 +08:00
@avatasia 这都被你发现了 因为我们这边美国的架构师开始强烈要求用mongo 用完自己都后悔了
ivyshark
2012-09-11 14:53:34 +08:00
@avatasia 吐槽归吐槽 不过有些场景用mongo还是不错的
企业应用就不建议用了
W2EX
2012-09-11 14:59:39 +08:00
总要看用的人怎么用,用不用得好
ivyshark
2012-09-11 15:25:48 +08:00
@W2EX 你可以试试
ivyshark
2012-09-11 15:26:27 +08:00
@W2EX 如果你遇到问题 不要查你的代码 直接查他的jira 都在里面
avatasia
2012-09-11 15:57:21 +08:00
@ivyshark 我也是被人骗采用mongodb,SMG也在用mongodb,他们的据说用了一年多了
ivyshark
2012-09-11 16:19:14 +08:00
@avatasia 微博什么的对数据一致性要求不高的可以用用 数据量不大或者巨大的也可以考虑 需求太复杂的就放弃吧
W2EX
2012-09-11 21:06:44 +08:00
@ivyshark 关于性能问题: 只要你有大内存,热数据全部放在内存里,真的可以很快,数据多了可以分片... 扩展方向是 先纵向 再横向
关于可靠性: 只能说mongo是给有钱人用的,要没几台大内存机器组replica set 没有快照备份机制式 是不能用于生产环境 另外空间占用大也是真的...
但是咱不能就说它性能不好、不可靠啊,出得起钱性能就好就可靠了

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

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

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

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

© 2021 V2EX