OLAP选型调研

599 阅读11分钟

OLAP选型调研:Greenplum/Clickhouse/StarRocks/OceanBase/TiDB

写文章的初衷来源于一段和老板的对话:
前提:“选型一定要基于我们指标管理/分析需求来定,要支持面向业务的高并发查询;最好有商业版和社区版,便于我们自己部署和在企业客户方部署。”
诉求:“你们对Greenplum、ClickHouse、StarRocks/Doris、OceanBase、TiDB这五个产品在功能架构性能开源社区支持等方面比较下,看哪个比较契合指标管理/分析的需求。”
关键词:指标管理、OLAP数据库

技术选型要点

  • 兼容MYSQL协议
  • 在保证响应速度的前提下,能够支持多个指标同时查询
  • 与现有系统良好兼容,易于数据迁移

选型调研

我们从优缺点、使用成本、是否兼容MYSQL协议、性能等方面,对Greenplum、ClickHouse、StarRocks/Doris、OceanBase、TiDB进行选型调研,结合指标管理系统需求,TiDB和Doris优于其他引擎。

Greenplum

Greenplum 是一个开源的大规模并行数据分析引擎。借助 MPP(Massively Parallel Processing)架构,在大型数据集上执行复杂 SQL 分析的速度比很多解决方案都要快。自2015年开源至今,以敏捷的方式快速升级PostgreSQL 内核,持续吸收上游的新功能、优化和增强,大大提升了 Greenplum 的总体能力;并通过升级内核、检测全局死锁、优化事务、复制表等逐步向 HTAP(Hybrid Transactional/Analytical Processing)数据库进化。

官方选型建议:在HTAP数据库的选择时,考虑到具体业务,如果数据量不大,有高并发查询,也有分析型处理的话,可以使用PostgreSQL。但数据量上规模后,PostgreSQL其本身的分析性能,单机的处理能力并不能满足大数据量的并行分析需求,此时Greenplum就成为了一个更好的选择。

架构

从拓扑结构上看,它是单机Postgres组成的数据库集群。从物理拓扑结构来说,Greenplum数据库是典型的Master-Segment结构,一个Greenplum集群通常是由一个Master节点、一个Standby节点和多个Segment节点组成,节点之间通过高速网络互连。

Clickhouse

ClickHouse 是一个用于 OLAP 的列式数据库管理系统,最早由 Yandex 在 2016 年开源,最近2年在业界使用越来越广泛。对于一般的分析业务,结构性较强且数据变更不频繁,可以考虑将需要进行关联的表打平成宽表,放入 ClickHouse 中。

官方性能说明:建议针对大量短查询的分析型场景每秒最多查询100次。

架构

结合官网描述,Clickhouse 单机架构设计还原如下图所示:1)Parser 分析器将SQL语句已递归的方式形成 AST 语法树的形式,并且不同类型的 SQL 都会调用不同的 parse 实现类;Interpreter 解释器则负责解释 AST ,并进一步创建查询的执行管道;2)表引擎利用 IStorage 接口,负责数据的定义、查询与写入;3)利用 DataTypeColumnField 以及Block 实现。

产品特性:

  • 灵活,支持明细数据SQL查询,并用物化视图加速。
  • 多核(垂直扩展) ,可以在一台机器上使用多线程去进行查询;分布式处理,它有不同的分片,这样的话可以进行水平扩展,MPP架构。
  • 适合在线查询,支持实时批量数据摄入。
  • 列式存储、向量化引擎、代码编译生成。向量化引擎和代码编译生成基本是为了解决算子瓶颈,如果不通过这些技术的话一般是个火山模型,火山模型会有一些虚函数以及分支判断之间的一些开销。通过这两种方法,向量化可以去平摊开销,代码编译可以把它转成以数据为中心进而消除开销。但是这两种方法也不是万能的,比如说当Aggregation或者Join数据量比较大时候需要物化到内存,物化到内存的时候瓶颈也就产生了,因此也不会有非常大的性能争议。
  • 主键索引,ClickHouse会按照用户设置的主键进行排序,ClickHouse 中 MergeTree 的文件就是按照这个逐渐进行排序的,Bloom Filter、minmax等做了二级索引。

性能测试

benchmark.clickhouse.com/​benchmark.…

StarRocks/Doris

StarRocks 是一款极速全场景 MPP 企业级数据库产品,具备水平在线扩缩容,金融级高可用,兼容 MySQL 协议和 MySQL 生态,提供全面向量化引擎与多种数据源联邦查询等重要特性。StarRocks 致力于在全场景 OLAP 业务上为用户提供统一的解决方案,适用于对性能,实时性,并发能力和灵活性有较高要求的各类应用场景。

而 Apache Doris(原百度 Palo)是一个基于 MPP 架构的高性能、实时的分析型数据库,由百度在 2017 年开源,2018 年 8月 进入 Apache 孵化器。

StackRocks架构

Doris架构

StarRocks/Doris 的架构非常简单整个系统的核心只有 FE(Frontend)、BE(Backend)两种角色、两个进程,不依赖于外部组件,方便部署与维护。同时,FE和BE模块都可以在线水平扩展,元数据和数据都有副本机制,确保整个系统无单点。

  • 数据存储方面,FE 负责存储、维护集群元数据;BE 负责存储物理数据。
  • 查询处理方面,FE 节点负责接收、解析查询请求,规划查询计划,调度查询执行,返回查询结果;BE 节点依据 FE 生成的物理计划,分布式地执行查询。

产品特性

  • MPP分布式执行框架:在 MPP 执行框架中,一条查询请求会被拆分成多个物理计算单元,在多机并行执行。
  • 全面向量化执行引擎:全面向量化引擎按照列式的方式组织和处理数据,充分发挥了CPU的处理能力。
  • CBO 优化器:基于代价的优化器CBO(Cost Based Optimizer),StarRocks能比同类产品更好地支持多表关联查询,特别是复杂的多表关联查询,让全面向量化引擎能够发挥极致的性能。
  • 可实时更新的列式存储引擎:在列式存储引擎中,数据以按列的方式进行存储;支持秒级的导入延迟,提供准实时的服务能力。
  • 智能的物化视图:支持用户使用物化视图实现查询加速。不同于一些同类产品的物化视图需要异步和原表做数据同步,StarRocks的物化视图可以自动根据原始表更新数据。

性能测试

StarRocks 2.3

Doris 1.1

OceanBase

OceanBase 社区版是一款开源分布式 HTAP 数据库管理系统,具有原生分布式架构,支持金融级高可用、透明水平扩展、分布式事务、多租户和语法兼容等企业级特性。OceanBase 内核通过大规模商用场景的考验,已服务众多行业客户,现面向未来持续构建内核技术竞争力。

架构

OceanBase 数据库采用 Shared-Nothing 架构,各个节点之间完全对等,每个节点都有自己的 SQL 引擎、存储引擎,运行在普通PC服务器组成的集群之上,具备可扩展、高可用、高性能、低成本、云原生等核心特性。

性能测试

OceanBase 3.1.0

TiDB

TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 5.7 协议和 MySQL 生态等重要特性。目标是为用户提供一站式 OLTP、OLAP 、HTAP 解决方案。TiDB 适合高可用、强一致要求较高、数据规模较大等各种应用场景。

架构

TiDB的OLAP部分主要通过TiDB、PD、TiKV、TiFlash等模块实现,TiDB生成最终的分布式执行计划,PD提供集群的元数据信息,TiFlash为存储节点,以列式结构对数据进行存储,TiKV的数据会自动同步到TiFlash。

产品特性

  • 一键水平扩容或者缩容,得益于 TiDB 存储计算分离的架构的设计,可按需对计算、存储分别进行在线扩容或者缩容,扩容或者缩容过程中对应用运维人员透明。
  • 金融级高可用, 数据采用多副本存储,数据副本通过 Multi-Raft 协议同步事务日志,多数派写入成功事务才能提交,确保数据强一致性且少数副本发生故障时不影响数据的可用性。可按需配置副本地理位置、副本数量等策略满足不同容灾级别的要求。
  • 实时 HTAP, 提供行存储引擎 TiKV、列存储引擎 TiFlash 两款存储引擎,TiFlash 通过 Multi-Raft Learner 协议实时从 TiKV 复制数据,确保行存储引擎 TiKV 和列存储引擎 TiFlash 之间的数据强一致。TiKV、TiFlash 可按需部署在不同的机器,解决 HTAP 资源隔离的问题。
  • 云原生的分布式数据库,专为云而设计的分布式数据库,通过 TiDB Operator 可在公有云、私有云、混合云中实现部署工具化、自动化。

性能测试


性能测评

测试场景主要为OLAP测试基准TPC-H和TPC-DS,但其查询语句与指标管理的查询场景存在较大差异,所以具体的性能测试还是得之后自己做一套比较合适。在此整理了部分网上的性能测评,供选型参考。

差异和选择建议

Doris更优的方面1. 使用更简单,如建表更简单,SQL标准支持更好, Join性能更好,导数功能更强大2. 运维更简单,如灵活的扩缩容能力,故障节点自动恢复,社区提供的支持更好3. 分布式更强,支持事务和幂等性导数,物化视图自动聚合,查询自动路由,全面元数据管理

ClickHouse更优的方面1. 性能更佳,导入性能和单表查询性能更好,同时可靠性更好2. 功能丰富,非常多的表引擎,更多类型和函数支持,更好的聚合函数以及庞大的优化参数选项3. 集群管理工具更多,更好多租户和配额管理,灵活的集群管理,方便的集群间迁移工具

那么两者之间如何选择呢? 1. 业务场景复杂数据规模巨大,希望投入研发力量做定制开发,选ClickHouse2. 希望一站式的分析解决方案,少量投入研发资源,选择Doris

另外, Doris源自在线广告系统,偏交易系统数据分析;ClickHouse起源于网站流量分析服务,偏互联网数据分析,但是这两类场景这两个引擎都可以覆盖。如果说两者不那么强的地方,ClickHouse的问题是使用门槛高、运维成本高和分布式能力太弱,需要较多的定制化和较深的技术实力,Doris的问题是性能差一些可靠性差一些,下面就深入分析两者的差异。


参考资料

1、OceanBase开源版与TiDB对比测试报告

2、开源OLAP引擎测评报告

3、ClickHouse vs StarRocks 选型对比

4、Greenplum架构最详解读

5、Greenplum介绍、安装与部署

6、Greenplum在运营商领域的HTAP实践

7、Greenplum内核、产品与社区 - Greenplum 杨瑜

8、Clickhouse架构及应用

9、Clickhouse架构概述

10、Apache Doris (Incubating) 原理与实践

11、Doris在运营平台上的实践-唐怀东

12、OceanBase 数据库整体架构

13、向量化引擎对 HTAP 的价值与技术思考

14、TiDB 整体架构

15、TiDB TPC-H 性能对比测试报告 - v5.4 MPP 模式对比 Greenplum 6.15.0 以及 Apache Spark 3.1.1

16、tpc-h_v3.0.1

17、tpc-ds_v3.2.0

18、CH-benCHmark

19、ClickBench — a Benchmark For Analytical DBMS