V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
openroc
V2EX  ›  程序员

关于 mongodb 的坑,欢迎举例~

  •  
  •   openroc · 2014-03-14 00:28:24 +08:00 · 9132 次点击
    这是一个创建于 3887 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最新搜索很对关于mongodb实战的坑,大家都遇到过哪些?

    提前参考一下,为了接下来服务上线提前做点准备。:)
    28 条回复    1970-01-01 08:00:00 +08:00
    ipoly
        1
    ipoly  
       2014-03-14 00:32:11 +08:00
    著名的`带条件的count()`慢到爆浆?
    cfddream
        2
    cfddream  
       2014-03-14 00:52:46 +08:00
    由于JS引擎的原因,精度很疼
    panlilu
        3
    panlilu  
       2014-03-14 01:43:37 +08:00 via iPhone
    全局锁?
    PotatoBrother
        4
    PotatoBrother  
       2014-03-14 07:14:34 +08:00 via iPhone
    异步QwQ
    wy315700
        5
    wy315700  
       2014-03-14 08:45:57 +08:00
    config server 数量必须是1台或者3台,是写死在代码里的

    分布式的时候,如果多台机器负载严重不均衡,mongoDB会进行强行负载均衡,这个时候,整个数据库会被锁死。
    chenlong451
        6
    chenlong451  
       2014-03-14 08:48:14 +08:00
    看你头像以为是水木的奥路菲
    janwen
        7
    janwen  
       2014-03-14 08:57:19 +08:00
    dingyaguang117
        8
    dingyaguang117  
       2014-03-14 08:58:15 +08:00
    replset 方式的时候
    1.有概率update 失败;
    2.如果希望等待更新应用到所有的机器,如使用w=N (N为所有机器数)的时候,整个操作就阻塞住不动了
    AlloVince
        9
    AlloVince  
       2014-03-14 09:11:48 +08:00
    不支持多主一丛的数据同步,这点让我无法接受
    vietor
        10
    vietor  
       2014-03-14 09:17:32 +08:00
    分片的时候限制太多:不能有唯一索引、不能group。
    zythum
        11
    zythum  
       2014-03-14 09:29:16 +08:00
    我就是觉得做大型多人项目的时候。库管理是个问题。因为键的值是可以随意添加的。感觉就是DBA的噩梦。
    evefree2
        12
    evefree2  
       2014-03-14 09:30:01 +08:00
    slave同步时间间隔太低的从库查询,游标的异常
    simapple
        13
    simapple  
       2014-03-14 09:47:54 +08:00
    这是要大规模迁徙的前兆啊
    humiaozuzu
        14
    humiaozuzu  
       2014-03-14 10:07:27 +08:00
    - DBA 疼
    - 重启系统时如果不结束mongodb进程,数据库90%会损坏
    sheaven
        15
    sheaven  
       2014-03-14 10:29:06 +08:00
    2dsphere索引慢到你想撞墙(千万级数据)
    数据库文件磁盘占用夸张
    索引文件比数据库文件还大
    尼玛一个慢查询,其它连登陆都没法登陆
    reorx
        16
    reorx  
       2014-03-14 11:22:03 +08:00
    稍大一点的 skip 都会很慢,用 last objectid 做 lt 查询可以规避这类大量翻页的问题。
    bengtuo
        17
    bengtuo  
       2014-03-14 12:14:27 +08:00
    没人说e这货狂吃内存 还不能控制 小vps上没法跑啊
    l6751902
        18
    l6751902  
       2014-03-14 13:15:49 +08:00
    @bengtuo 我一直认为这货就是用内存换查询速度的。。
    lj0014
        19
    lj0014  
       2014-03-14 14:17:03 +08:00
    最近发现mongodb的运行日志的nscanned的值远大于在shell里explain的结果,目前还搞不清楚是怎么回事
    liushuaikobe
        20
    liushuaikobe  
       2014-03-14 14:54:52 +08:00
    @AlloVince
    “不支持多主一丛的数据同步”指的是什么?MongoDB好像是支持传统主从复制的吧。
    stxh
        21
    stxh  
       2014-03-14 15:05:04 +08:00
    无法跨集合查询
    AlloVince
        22
    AlloVince  
       2014-03-14 15:07:50 +08:00
    @liushuaikobe 比如写入压力较大时,想把写入分散在多台Master,然后再同步到一台Slave,MongoDB不支持多台Master到1台Slave的同步。
    liushuaikobe
        23
    liushuaikobe  
       2014-03-14 15:09:45 +08:00
    @dingyaguang117
    MongoDB比较注重最终一致性。。
    liushuaikobe
        24
    liushuaikobe  
       2014-03-14 15:23:41 +08:00
    @AlloVince
    我想了想,MongoDB还是使用Replication Set的方式更好吧。写密度大,分给多个Master,听你的做法是有点负载均衡的意思。
    很多个Master共用一个Slave好像真不行。如果做冗余备份,多个Master共用一个Slave没啥用啊,Slave跪了不是所有的Master的备份都没了。

    推荐的做法是Sharding到多个以Replication方式运行的机器上。
    l9S1ZHbn4KO3vq4i
        25
    l9S1ZHbn4KO3vq4i  
       2014-03-14 21:40:16 +08:00   ❤️ 1
    对Mongodb加索引的,都是没理解NoSQL用法的。
    dcoder
        26
    dcoder  
       2014-03-14 22:06:28 +08:00
    @leadworld 求具体解惑
    liushuaikobe
        27
    liushuaikobe  
       2014-03-14 23:06:57 +08:00
    @leadworld
    铜球
    jackey35
        28
    jackey35  
       2014-03-15 22:49:23 +08:00
    以上的坑都很现实,推荐一个tokumx,客户端驱动完全和mongodb相同
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1077 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:36 · PVG 03:36 · LAX 12:36 · JFK 15:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.