ES替代MongoDB?不存在的

2020-05-28 00:00:00 数据库 节点 是一个 的是 关系

本文转自MongoDB中文社区成员张耀星的公众号,发表日期:2020年4月13日。


写这篇文章是因为今天一篇文章引起了我的注意


从MongoDB迁移到ES后,我们减少了80%的服务器

李猛,公众号:DBAplus社群从MongoDB迁移到ES后,我们减少了80%的服务器


虽然这种标题党一看就知道是来炒热度的,出于职业病忍不住还是看完了全篇,不为别的,就想看看错得有多离谱。


以下仅代表个人观点,不代表任何组织或公司。



通篇看下来槽点很多,一时间竟然不知道从哪怼起了。虽然作者上来就强调“可能会引起口水之争,仅代表个人经验之谈,非阵营之说”。真的吗?要是真的我也就不会写这篇文章了。因为置顶评论就暴露了:



既然这样那我也不客气了。



MongoDB有的Elastic全有?



这句话要想改对了你得这么说:“除了ES没有的,ES全有”,不然太长了没法接。咱不拿ACID事务这种杀手级的功能说事,CDC有没有?因果一致性怎么保证?数据模型的变更好搞不?PIT备份恢复怎么搞?多的是MongoDB能做但ES做不了或者很难做的事情。


即便如此,从我的观点来看,这些也都不妨碍ES成为一个的搜索引擎。也正因如此,ES在搜索能力上确实有它出色的地方,但同时如果试图用它替代数据库则会不可避免地出现一些已知的问题,实际上原文中在“3、核心实现逻辑设计”已经遇到了,不再赘述。这也是为什么ES的创始人Shay Bannon一直强调ES不是MongoDB或Oracle的替代品,以下是他在采访中的原话:


“People have been asking -- can I replace my MongoDB, or my Oracle database with Elasticsearch? Can it work as a system of record? My answer has always been, if you place Elasticsearch next to any of these systems... it will bring value. It has this angle of how to solve challenges under a search prism that no other system has. But our goal is not to replace these systems….That would be shifting the focus from the value Elasticsearch can bring as a very powerful search solution.” 


(摘自https://www.zdnet.com/article/elasticsearch-6-0-not-that-new-but-quite-improved/)


所以作者从方向上就搞错了,ES是一个搜索引擎,MongoDB是一个数据库,从来就不存在替代关系。而他的错误观点很多则是源自于对MongoDB的一知半解。例如ES的shard在MongoDB中类似的对等概念是chunk,而不是shard,如果仅从字面去理解就会得到这样的荒谬结论:


“MongoDB集合数据在设计时是需要绑定到具体的机器实例的,哪些分片分布在哪些节点上,哪些副本分布在哪些节点上,这些都需要在配置集群时就要绑定死,跟传统的关系型数据库做分库分表本质上没有什么两样。”



减少了80%的服务器?



另外一个明显的例子是所谓的15台MongoDB服务器,实际上把3台mongos和3台config这些不占资源的服务通通分配了跟数据节点一样的资源,自己造成无谓的浪费然后说成是改成ES后节省掉的资源,仅从这点上讲,“减少了80%的服务器”水分就很大。



至于数据节点本来应该用多少台服务器,作为局外人我没有发言权,你说9台就9台吧,你喜欢就好。



没有谁把核心业务系统数据放在MongoDB上?



“MongoDB本身定位与关系型数据库竞争,但工作中几乎没有见到哪个项目会将核心业务系统的数据放在上面,依然选择传统的关系型数据库。”


这个槽点就大了,不吐不快:


  • HSBC使用MongoDB构建微服务和DevOps:

    https://www.mongodb.com/blog/post/how-devops-microservices-and-mongodb-are-making-hsbc-simpler-better-and-faster


  • Cisco将电商系统迁移到MongoDB:

    https://www.mongodb.com/blog/post/cisco-and-mongodb-e-commerce-transformation


  • Coinbase使用MongoDB构建比特币交易系统:

    https://www.mongodb.com/customers/coinbase


要举例还多的是。好吧国外的远,咱也不说了。你日常使用的APP有多少构建在MongoDB上知道吗?比如来社区做过技术分享的就有百度云,摩拜单车,火币网等等。要不咱再开阔下眼界先?


其他槽点就不一一列举了,评论里面也有很多,大家有序观赏。


结论:对比两种技术这类话题,通常我是不敢乱讲的,你必须要对两种技术都有十足的了解,不然很容易贻笑大方。而无论哪种技术比我厉害的人多的是……总之,多努力多学习。


MongoDB中文社区征文进行中,点击进行了解,分享你的经验和观点——

进入MongoDB技术交流群/投稿/合作 请添加社区助理小芒果微信 (ID:mongoingcom),添加请备注mongo




相关文章