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

mongodb在没使用SSD时就是个坑货

  •  
  •   xoxo · Dec 12, 2013 · 11665 views
    This topic created in 4534 days ago, the information mentioned may be changed or developed.
    不服来辨
    17 replies    1970-01-01 08:00:00 +08:00
    advancedxy
        1
    advancedxy  
       Dec 12, 2013
    有ssd也抗不牢,还是将mongodb当成内存数据库来看好了..
    xzl
        2
    xzl  
       Dec 12, 2013
    还是应用场景来看,mmap方式的映射你始终要保证内存>索引+热数据size,否则长期fault不为零,内存和硬盘一直来回颠簸,你就是ssd也扛不住啊,可试着调整syncdelay。
    ericFork
        3
    ericFork  
       Dec 12, 2013
    linode
        4
    linode  
       Dec 12, 2013
    mongodb 在坑货人眼里就是个坑货
    ritksm
        5
    ritksm  
       Dec 12, 2013
    你先给出数据呗。没数据要别人和你辩?
    ritksm
        6
    ritksm  
       Dec 12, 2013
    我说MySQL在没有SSD的时候就是个坑货 不服来辩 岂不是也适用?要人心服口服的时候没有数据,没有案例给出来。辩什么。呵呵
    xoxo
        7
    xoxo  
    OP
       Dec 12, 2013   ❤️ 1
    @ritksm 写过一个广告管理平台,流量不算特别大,反正就有HIT点击、访问这些统计数据,最终都存进了MongoDB了。起先是直接使用的MongoDB,在被主业务调用频次少时还好,大过后速度明显跟不上。后来用了别的内存KV数据库,队列处理数据才解决了这个问题。
    配置啥的虽然我没去看,但如果这是MongoDB的优势的话,默认配置不体现出来热数据内存持久化真心很遗憾。
    xoxo
        8
    xoxo  
    OP
       Dec 12, 2013
    BTW,是去年写的平台,早已跳槽,最近工作中一项目可能用到MongoDB,所以再来挖挖以前被埋过的坑。
    ritksm
        9
    ritksm  
       Dec 13, 2013   ❤️ 5
    @xoxo 按我的理解是。你做了一个广告数据存储和查询的平台。

    那么是否用了Index:http://docs.mongodb.org/manual/administration/indexes/
    Index又是如何设置的,是否是设置在查询的键上了。

    再者Index大小是否超过了内存的大小:http://docs.mongodb.org/manual/faq/indexes/#what-happens-if-an-index-does-not-fit-into-ram 如果超过了,一个是可能你的Index设计的不科学,还一个是你的内存太小了。这个时候无论什么数据库都会陷入窘境吧

    再来说你的查询是如何优化的,当然这就涉及到了你的Document是如何设计的,如果嵌套过多的话性能必然也会受到影响

    总之,如果你觉得MongoDB的优势在于热数据内存持久化的话,那么我觉得方向就不对。难道MySQL没有这个功能吗?

    我个人认为MongoDB最大的优势之一就在于Document based design,那么你的数据模型可以尽可能的去模拟现实的情况,而不是表与表之间做关联。
    还有优势就在于无比简单的shard和replica设置,现对于MySQL的M/S不知道简单了多少,当然如果复杂也可以很复杂

    就说那么多吧。我觉得现在的技术发展并不是拼硬件,而是拼设计、理论,Hadoop的想法不也是把分布式系统放在“普通的机器”上么。SSD或者非SSD,完全就不应该成为衡量一个工具好与不好的标准。

    退一万步来说,为什么访问量上来了以后你不在前面加Cache(如Redis)去缓存呢,这样可以减少直接读取数据库的次数。不管是不是MongoDB都应该这么做吧。
    griffinqiu
        10
    griffinqiu  
       Dec 13, 2013
    对MongoDB没啥研究,最近一个项目用了下。中途遇到过几次麻烦,一般加Sharding都能解决些问题,自动的Balance很慢。
    MongoDB的更新是通过内存文件映射,默认5分钟或者1分钟同步到硬盘一次,如果业务对写要求高可用降低这个值,或者加Sharding。最后再考虑加SSD。
    查询方面,MongoDB是文档数据库,意味着不需要那么多的关联查询。而这里的确MySQL更需要SSD。
    还有就是要考虑冷(未加载在内存的数据)热数据的问题,随机的频繁对大数据查询对Mongo性能影响大。
    griffinqiu
        11
    griffinqiu  
       Dec 13, 2013
    @ritksm MySQL没有你说的那个功能,用MySQL那个功能一般都是靠Memcache来实现。
    griffinqiu
        12
    griffinqiu  
       Dec 13, 2013
    @xzl 我们之前就被搞过,随机冷数据读取导致Page Fault在二三十分钟都降不下去...
    griffinqiu
        13
    griffinqiu  
       Dec 13, 2013
    这个时候看起来的确很坑,io、负载啥的都很低。最后瓶颈锁在了netstat。
    zeinima
        14
    zeinima  
       Dec 13, 2013
    你知道SSD多贵么?
    cyr1l
        15
    cyr1l  
       Dec 13, 2013
    我也遇到Mongodb的性能问题, 明天调一下index,看看能优化多少.
    likexian
        16
    likexian  
       Dec 13, 2013
    看吧,你一说mongodb不行,他们就会说不是mongodb不行,是你不会用
    看吧,你一说mongodb这个方面不好,他们就会说mysql更不好,连xxx都不支持

    所有讨论mongodb的时候,mongo方都是这个思路,不信多看看,懒得辨
    xzl
        17
    xzl  
       Dec 14, 2013
    @likexian 呵呵 那你说如题主 不服来辩?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2528 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 16:08 · PVG 00:08 · LAX 09:08 · JFK 12:08
    ♥ Do have faith in what you're doing.