应用全线替换到 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查询顺序调换后查询结果排序不一样。
10413 次点击
所在节点    MongoDB
35 条回复
liuchang0812
2014-10-13 23:37:55 +08:00
mongodb本来就是内存性的NoSQL数据库。。。上面说定期dump到mysql的。。。。你们完全可以用leveldb。。。。
Cadina
2014-10-14 01:50:46 +08:00
可以试试用rethinkdb替代mongo
cevincheung
2014-10-14 02:01:21 +08:00
@Cadina 支持geo?
dcoder
2014-10-14 08:35:08 +08:00
我看来,楼主说的 1,2,3 都不是坑呢
cevincheung
2014-10-14 09:32:07 +08:00
@TangMonk 感觉略坑,效率远不如mongodb
mengzhuo
2014-10-14 09:36:37 +08:00
应该看应用场景吧

游戏+mongodb/Redis天生一对
MasterYoda
2014-10-14 10:16:46 +08:00
@yueyoum 看场景吧,LBS上mongodb就很正常了。但确实这东西比 MySQL + Redis 坑多。
MasterYoda
2014-10-14 10:19:16 +08:00
@liuchang0812 leveldb直接用还是有点不爽啊。而且读多写少的话上也不合适。
yueyoum
2014-10-14 11:08:58 +08:00
@cevincheung
@MasterYoda

postgresql 支持 point 数据类型,也就是 可以直接存储 (1.23, 45.09) 这样的数据。
刚好可以用作经纬度存储。

配合 postgis 貌似也挺方便, 虽然我没弄过…………
yueyoum
2014-10-14 11:12:10 +08:00
@kankana

确实 scheme 不固定,我在项目中也是感受到这点的方便,
但感觉 postgresql 支持的json字段, 也是有这个好处啊。


所以如果是要在新项目中,mongodb 和 postgresql 都可以选择的话,
我个人倾向还是用 postgresql
cevincheung
2014-10-14 12:23:08 +08:00
@yueyoum postgis忒麻烦,尝试数次失败已经放弃了,用pgsql替代mysql,那我倒放心。

现在正在尝试Solr GeoDist
Cadina
2014-11-27 17:12:59 +08:00
@cevincheung 新版支持了
cevincheung
2014-11-28 02:52:24 +08:00
@Cadina 支持神马
mathgl
2014-12-08 22:41:40 +08:00
一直用tokumx。 相当满意
zlandjj
2015-05-14 16:20:18 +08:00
@cevincheung redis貌似有个插件还是petch支持geo

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

https://tanronggui.xyz/t/138619

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

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

© 2021 V2EX