应用全线替换到 MongoDb 可能会踩到什么坑?

2014-10-13 14:19:32 +08:00
 cevincheung
现在已经知道的:

1.查询区分大小写
譬如用户注册,填写的用户名。email可以强制转成小写。正则查询忽略大小写又有效率问题。
2.sharedkey设置
一旦设置不够合理,直接导致查询速度骤降
3.查询索引前后顺序影响查询结果
find({'key1':'value', 'field.key2': {'$in':[1,2,3]}}) key1,field.key2查询顺序调换后查询结果排序不一样。
10373 次点击
所在节点    MongoDB
35 条回复
tonghuashuai
2014-10-13 14:51:03 +08:00
4.查询不存在的 collection 时不报异常
ovear
2014-10-13 14:54:38 +08:00
内存爆炸。。数据损坏。。
advancedxy
2014-10-13 14:56:03 +08:00
5. value 是 array 的时候不要插入太多的值.. 不然就等着插入速度直线下降.
个人不太推荐全部用 MongoDB, 还是考虑用 PostgreSQL 吧..
yueyoum
2014-10-13 14:57:39 +08:00
5.如果事务对你很重要,就别考虑mongodb
6.如果你的应用没有NB到mysql+好的表设计+正确的index+合理的sql查询语句+缓存都抗不住的话,还是没必要上mongodb
7.嵌套的document,最好是增长不迅速的。如果嵌套的document体积增长迅速,mongodb会频繁的去开辟新的,更大的空间去把包含这个嵌套document的整个document都拷贝到新开辟的空间。
8.实在是想不到有什么必须要上mongodb的理由,mysql+redis足以
cevincheung
2014-10-13 15:10:50 +08:00
@yueyoum
@advancedxy

主要是需要mongodb的geoindex功能。又不想mysql/mongodb都存一份。。。postgis尝试了N次没成功,感觉好复杂。
wzxjohn
2014-10-13 15:13:03 +08:00
9. 配置不当导致外网可以非授权访问,数据库被Dump。
wangfengmadking
2014-10-13 15:52:08 +08:00
新手使用mongo说多了都是泪,(可能由于使用不当)查询效率巨慢。所以说,如果不是业务必须的,还是绕开mongo,使用其他的吧,坑太多了
sharebox
2014-10-13 16:31:05 +08:00
最好不要只用一种数据库....

综合考虑,选最合适的组合。
yanze0613
2014-10-13 17:22:41 +08:00
定时刷新数据到mysql,mongo单纯做内存数据库,感觉会比直接用好
willwen
2014-10-13 17:26:12 +08:00
爆內存,爆硬盤
TimLang
2014-10-13 17:30:41 +08:00
做索引一定要加{backgoround:1}。。
pythoner
2014-10-13 18:15:50 +08:00
10. 单机要扛不住了才想起做sharding
lqs
2014-10-13 18:20:39 +08:00
11. mongodb的geoindex当数据大了会特别慢。
menway
2014-10-13 19:21:25 +08:00
12. 字段名称不能包含.和$
13. 跨表查询
est
2014-10-13 19:37:12 +08:00
mongodb的索引必须全部放在内存中。如果索引大小超过内存,等着哭吧。。。
kankana
2014-10-13 19:42:51 +08:00
@yueyoum
那个scheme不固定可以算一个使用理由不?
你们都说得好恐怖啊... 我也是第一次用.
TangMonk
2014-10-13 20:55:01 +08:00
mysql好像有Spatial search啊
vus520
2014-10-13 22:48:30 +08:00
为什么你们都不提聚合查询真的好复杂~
codeframe
2014-10-13 23:08:18 +08:00
查询结果集有个 16M 的限制;另外就是没法做多表的 join 操作;还有就是一旦数据库写满磁盘后,直接删数据是不会腾出硬盘空间的。
fasling
2014-10-13 23:22:58 +08:00
性能。
我不是很懂,但据说数据量一大就慢。隔壁组还专门弄了个mysql来加速。

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

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

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

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

© 2021 V2EX