实时分析型数据库选型:Doris

2021-10-28 14:34:24 浏览数 (1)

最近有一个项目,需要给一家证券公司做用户画像系统,但是因为数据量很大,传统数据库难以承担,而且传统数据库也不擅长做分析(都需要在业务代码里实现,会造成开发量很大,而且维护很困难)。

原来的想法


原来的想法是在ES和ClickHouse中选择:

  1. ES:这个我们比较熟悉,很多场景都有使用,但是ES本身比较擅长的领域为文本索引,及实现一些简单的统计。ES在统计时,在一些场景下(例如计算客户数)为了提升性能,直接采用的是估算的算法,这在金融领域上可能会存在风险;
  2. ClickHouse:这个目前我们还没有使用过,不过早有耳闻,统计分析性能很突出。

本来对ClickHouse寄予重望的,不过今天听同事的试用汇报,发现ClickHouse的运维复杂成本很高,而运维的复杂很容易会使得项目成为一个大坑。ES虽然不兼容SQL语法,学习成本比较高,但是运维简单,这就是最大的优势。

重新评估


我们不能不重新考虑ClickHouse是否适合我们了,如果要重新选择,那我们是选择ES,还是Mysql,还是其他,例如TiDB?

Mysql如果不是没有选择,显然是不会选择的,这会给开发造成很大的工作量。TiDB这个数据库也是早有耳闻,近几年崛起得很快,只是没有用过,据说是NewSQL型数据库,能兼顾传统SQL和NoSQL的需求,分析的性能也不错,相对于传统数据库有数量级的提升,网上很多测评数据也可以支持这个观点。还有个大优势,就是TiDB运维简单,不过在统计分析上的性能还是比ClickHouse差很多的。

在网上搜索相关信息过程中,还发现了一个Apache Doris的数据库,美团的技术团队有过一个对比:

来源:https://tech.meituan.com/2020/04/09/doris-in-meituan-waimai.html

这里有几个指标是我比较看重的:

  1. 运维成本:成本高则很容易给项目运维留下大坑;
  2. 易用性:如果不支持SQL的话,学习成本就会变得比较高
  3. 成熟度:成熟度不够的话,项目可能也容易留下大坑
  4. 性能是否满足:性能其实并不是最重要的考虑

前面三个指标是重点需要考虑的。Doris的成熟度确实不太够,不过估计问题不是太大。从这点看,TiDB倒是挺合适的。

Doris的优势:

来源:http://doris.apache.org/master/zh-CN/

Doris on Elasticsearch


网上也有ES和TiDB的对比:

来源:https://www.sohu.com/a/361073246_315839

据说现在Doris已经支持使用ES作为底层的存储引擎,使用ES的倒排索引功能。同时因为Elasticsearch本身在支持分布式的查询方面不是特别的友好,因为它缺少一个很良好的分布式的查询框架,所以我们就想把他们两个的功能结合起来,去用到一个Impala里面,这样可以结合两者的优势。

如果能结合这两者的优势,这会是相当不错的主意,看好Doris。

相关文档:

  • 官网:http://doris.apache.org/master/zh-CN/
  • 源码:https://github.com/apache/incubator-doris
  • Apache Doris在美团外卖数仓中的应用实践
  • 基于Doris构建的小程序私域流量增长:https://blog.csdn.net/weixin_47452131/article/details/113393764
  • Apache Doris 在 WeLab实时大数据平台的应用实践:https://zhuanlan.zhihu.com/p/257183139
  • Apache Doris:基于 MPP 的交互式SQL数据仓库,可用于 OLAP:https://www.sohu.com/a/361073246_315839

0 人点赞