推荐工具
› RoboMongo
推荐书目
› 50 Tips and Tricks for MongoDB Developers
Related Blogs
› Snail in a Turtleneck
cevincheung
V2EX  ›  MongoDB

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

  •  
  •   cevincheung · Oct 13, 2014 · 11684 views
    This topic created in 4405 days ago, the information mentioned may be changed or developed.
    现在已经知道的:

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

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

    综合考虑,选最合适的组合。
    yanze0613
    yanze0613
    Oct 13, 2014
    9
    定时刷新数据到mysql,mongo单纯做内存数据库,感觉会比直接用好
    willwen
    willwen
    Oct 13, 2014 via iPhone
    10
    爆內存,爆硬盤
    TimLang
    TimLang
    Oct 13, 2014
    11
    做索引一定要加{backgoround:1}。。
    pythoner
    pythoner
    Oct 13, 2014
    12
    10. 单机要扛不住了才想起做sharding
    lqs
    lqs
    Oct 13, 2014
    13
    11. mongodb的geoindex当数据大了会特别慢。
    menway
    menway
    Oct 13, 2014
    14
    12. 字段名称不能包含.和$
    13. 跨表查询
    est
    est
    Oct 13, 2014
    15
    mongodb的索引必须全部放在内存中。如果索引大小超过内存,等着哭吧。。。
    kankana
    kankana
    Oct 13, 2014
    16
    @yueyoum
    那个scheme不固定可以算一个使用理由不?
    你们都说得好恐怖啊... 我也是第一次用.
    TangMonk
    TangMonk
    Oct 13, 2014
    17
    mysql好像有Spatial search啊
    vus520
    vus520
    Oct 13, 2014
    18
    为什么你们都不提聚合查询真的好复杂~
    codeframe
    codeframe
    Oct 13, 2014
    19
    查询结果集有个 16M 的限制;另外就是没法做多表的 join 操作;还有就是一旦数据库写满磁盘后,直接删数据是不会腾出硬盘空间的。
    fasling
    fasling
    Oct 13, 2014
    20
    性能。
    我不是很懂,但据说数据量一大就慢。隔壁组还专门弄了个mysql来加速。
    liuchang0812
    liuchang0812
    Oct 13, 2014
    21
    mongodb本来就是内存性的NoSQL数据库。。。上面说定期dump到mysql的。。。。你们完全可以用leveldb。。。。
    Cadina
    Cadina
    Oct 14, 2014
    22
    可以试试用rethinkdb替代mongo
    cevincheung
    cevincheung
    OP
    Oct 14, 2014
    23
    @Cadina 支持geo?
    dcoder
    dcoder
    Oct 14, 2014
    24
    我看来,楼主说的 1,2,3 都不是坑呢
    cevincheung
    cevincheung
    OP
    Oct 14, 2014
    25
    @TangMonk 感觉略坑,效率远不如mongodb
    mengzhuo
    mengzhuo
    Oct 14, 2014
    26
    应该看应用场景吧

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

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

    配合 postgis 貌似也挺方便, 虽然我没弄过…………
    yueyoum
    yueyoum
    Oct 14, 2014
    30
    @kankana

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


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

    现在正在尝试Solr GeoDist
    Cadina
    Cadina
    Nov 27, 2014
    32
    @cevincheung 新版支持了
    cevincheung
    cevincheung
    OP
    Nov 28, 2014
    33
    @Cadina 支持神马
    mathgl
    mathgl
    Dec 8, 2014
    34
    一直用tokumx。 相当满意
    zlandjj
    zlandjj
    May 14, 2015
    35
    @cevincheung redis貌似有个插件还是petch支持geo
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2824 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 79ms · UTC 13:03 · PVG 21:03 · LAX 05:03 · JFK 08:03
    ♥ Do have faith in what you're doing.