架构比对
Apache Doris、Clickhouse 、Greenplum都是基于MPP架构的实现的可用于数仓分析的数据库管理系统。下边通过具体的架构设计分析三者的区别。
Apache Dodis
官网描述
Apache Doris是一个现代化的MPP分析型数据库产品。
架构图
架构描述
1. 高可靠
Apache Doris 使用了主从架构进行设计。通过Fronted Engine(前端引擎) 的主从达到高可用的目的。FE主要有有三个⾓⾊,⼀个是leader,⼀个是follower,还有⼀个observer。leader跟follower,主要是⽤来达到元数据的⾼可⽤,保证单节点宕机的情况下,元数据能够实时地在线恢复,⽽不影响整个服务。erver只是⽤来扩展查询节点,就是说如果在发现集群压⼒⾮常⼤的情况下,需要去扩展整个查询的能⼒,那么可以加observer的节点。observer不参与任何的写⼊,只参与读取。Apache Doris 元数据层⾯,Doris采⽤Paxos协议以及Memory + Checkpoint + Journal的机制来确保元数据的⾼性能及⾼可靠。
2. 高可用
Apache Doris 通过建表的时候指定多副本的机制实现高可靠的功能。
3. 高效查询
Doris整体架构整合Coogle Mesa + Apache Impala + ORC列式从存储三种技术。通过Mesa实现预聚合特性,Impala 实现MPP连接处理的特性,ORC列式存储更适合OLAP数据分析。
多副本的机制减少数据网络拷贝,也提供了查询的效率。
将数据进行分区、分桶然后分发散列到各个节点实现分布式计算。还有其他的索引、引擎等优化暂不从架构层面对比分析了。
ClickHouse
官网描述
ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。
架构图
架构描述
1. 高可靠
ClickHouse则采用Multi-Master多主架构,集群中每个角色对等,客户端访问任意一个节点都能得到相同的效果。
2. 高可用
同样也是支持数据的多副本,这样单点故障不影响数据的查询。
3. 高效查询
多副本节点计算可以基于本地数据较少IO传输。
纯列式存储适合OLAP聚合分析。
数据分区、分片、分块多进程+多线程并行计算。分块数和cpu核心数相同,充分利用CPU多线程并行计算。
表引擎丰富,尤其是MergeTree引擎做了通过各种维度的优化更适合OLAP分析。
Greenplum
官网描述
GP(GreenPlum)是业界最快最高性价比的关系型分布式数据库,它在开源的PG(PostgreSql)的基础上采用MPP架构(Massive Parallel Processing,海量并行处理),具有强大的大规模数据分析任务处理能力。Greenplum 是全球领先的大数据分析引擎,专为分析、机器学习和AI而打造。
架构图
架构描述
1:高可靠
采用master+standby的方式实现服务的高可靠。
1) 创建与客户端的会话链接和管理;
2) SQL的解析并造成分布式的执行计划;
3) 将生成好的执行计划分发到每一个Segment上执行;
4) 收集Segment的执行结果;
5) 不存储业务数据,只存储数据字典;
6) 能够一主一备(standby),分布在两台机器上,为了提升性能,最好单独占用一台机器。
2:高可用
数据冗余-Segment 镜像保护。主节点(Primary Segment)故障后会自动切换到镜像节点(Mirror Segment),集群仍然保持可用状态。当主节点恢复并启动以后,主节点会自动恢复期间的变动。
3:高效查询
多级分区、也支持列式存储。多节点并行计算。
当然Greenplum不仅仅支持OLAP,同时OLTP 是一款优秀的HTAP数据库。
小结
以上对三款数据库架构层面进行了简单介绍,由于使用场景不同,稳定性,易用性、扩展性以及生态各有千秋,不存在孰好孰坏,可以根据自己的使用场景,详细了解哪款数据库更能契合自己的场景解决自己的问题。