笔者做过的一个项目中,同时用到了Elasticsearch和Tidb两种存储相关的产品。这两者适用的场景有些差异,但其实又有交集。前者偏向搜索,后者则主打分布式存储。下面根据自己的理解从不同维度分析下二者的相同点和不同点。

对比维度

Elasticsearch

TiDB

产地

公司现在的名称是Elastic,
其实它的员工遍布世界各地,一般认为公司的总部是阿姆斯特丹

公司是PinCap,在北京,是国内的公司。

版本历史

最初其实不叫ES,源于作者做的菜谱的应用。作者Shay Banon在2010年2月发布了Elasticsearch的第一个版本 。目前最新的版本是7.6

2017年10月发布第一个版本,目前的稳定版本是3.0.0。正在开发4.x的版本。

基本介绍

Elasticsearch是一个基于Lucene库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎。

TiDB是一个开源的NewSQL数据库,支持混合事务和分析处理(HTAP)工作负载[3]。它与MySQL兼容,并且可以提供水平可扩展性、强一致性和高可用性。

用户规模

没有查到具体的数据,但是DB-Engines Ranking排名前十,公司估值30亿美元左右,用户规模可想而知。

虽然成立时间不长,但是已有300多家公司在使用 TiDB,国内用户偏多,像知乎,小米,美团等知名互联网公司都在使用。

作者

熟悉ES的人都知道他源于菜谱。许多年前,一个叫Shay Banon的待业工程师跟随他的新婚妻子来到伦敦,他的妻子想在伦敦学习做一名厨师。而他在伦敦寻找工作的期间,接触到了Lucene的早期版本,他想为自己的妻子开发一个方便搜索菜谱的应用。这就是ES的前身。

作者是Pincap公司,不是由某个人开发的。

对编程语言的支持

ES的客户端现在也比较多了,.Net,Groovy,Java,JavaScript,Perl,PHP,Python,Ruby

tidb本身是类mysql一样的数据库,基本主流的开发语言它都支持。

对SQL的支持

ES官方推荐的语言是QUERY DSL,但是考虑到SQL的影响力,Elasticsearch-SQL应运而生,它不是官方的,属于第三方开源的插件。

这个是tidb的优势,它本来就是几乎完全兼容mysql。

跟国内云厂商的合作

阿里云,腾讯云

官方似乎还没有上云。这个其实比较复杂,涉及到大鱼吃小鱼的问题,不展开了。

大数据mapreduce支持

ES-Hadoop

TiSpark

事务支持

不支持

支持

分区和副本

分片机制,副本机制

TiKV 使用 Raft 协议做复制,保持数据的一致性和容灾。副本以 Region 为单位进行管理,不同节点上的多个 Region 构成一个 Raft Group,互为副本。数据在多个 TiKV 之间的负载均衡由 PD 调度,这里也是以 Region 为单位进行调度。