|
挺久前的问题了~ 随便说几句吧。
用Mongo做过几个项目,MongoDB并没有 想象中&网上传的 那么优秀,而且他的使用成本不低。题主说的大数据而且实时,我姑且可以认为数据量不少于1T,
这种情况下,
× 索引大小估计会达到几十个G(看你索引建立的方式)。这几十个G需要全部处于内存中。
× 如果你的数据访问比较随机,没有什么热数据的概念,那这块数据也全部都是在内存中的。
你可以预估下需要的内存大小。而且MongoDB没有自己的内存管理机制,全部由系统自己管理。这会导致内存的难以控制。
在预建立索引的情况,MongoDB的插入性能也比较糟糕(同样一张表,三个索引,我觉得甚至比不上Mysql)。
另外一点就是上面有人回答过得 scheme-free,这个东西带来的好处真没有想象的那么大。比如改数据结构,我也没看出来有任何pain。比方说Mysql数据库,我加个字段跟MongoDB的scheme-free多一个属性有多出很多的工作吗(5分钟的工作量)? 另外MongoDB的嵌套Document查询以及group by这种查询,一直支持的不好(最近几个版本有改善)。
另外举一个例子,去年我参与的一个项目使用MongoDB,最开始使用PyMongo作为Client,鉴于Python语言的动态性,按理说跟PyMongo配合是如鱼得水,但是经历过一番挣扎之后,还是换到了MongoEngine(一个ORM-Client)。
总之:MongoDB你可以拿来玩玩,实际要用来处理大数据,个人不推荐。
Mysql的话题,GitHub上搜一下,有支持Cache的(Memcache,Redis)实现。鉴于Mysql我只处于熟悉阶段就不多做回答误导人了。
End
|
|