Doris 和 Starrocks的复习

  1. Doris的应用场景

Doris是一个MPP架构的数据库产品,支持对PB级别的数据进行亚秒级别查询响应。本身支持SQL语法,应用场景包含 固定历史报表分析,实时数据分析,交互式的数据分析

一般来说其数据来源都是来自其他类型的数据仓库的导入,所以支持的导入方式很多,包括读取远端文件,Flink,Kafka或者Spark方式导入。

而Starrocks则是脱胎于Doris的一个开源的项目,其架构和使用方式和Doris一致。

  1. Doris的架构

两者在架构上的选型一致,都是设有了FE和BE两个角色,两个进程。

FE 负责存储维护集群元数据,BE存储物理数据

FE负责接收查询请求,生成查询计划,并进行返回结果。

BE节点根据FE生成的执行计划,进行分布式的查询

FE 中包含三个角色,分别是Leader,Follow以及Observer

Leader和Follow负责保证元数据的高可用性,Observer则是扩展查询节点

  1. 两者中的表模型

在Doris中,主要存在了Aggregate 模型,Unique模型,Duplicate 模型,

在Starrocks中,主要存在了Duplicate 模型,Aggregate 模型,Unique模型,主键模型

在Doris中 Aggregate模型可以支持创建表的时候设置预聚合的方式,非常适合有固定报表模式的查询场景

Unique模型则是保证主键唯一性的约束,新数据到来的时候会替换旧的数据,只需要在创建表的时候设置UNIQUE KEY即可,这种方式类似Aggregate模型中的replace

Duplicate模型,在其中没有主键,也没有聚合,直接是有多少数据就进多少数据,这时候的Duplicate键就是用于排序的。只能完全发挥Doris的列存模型的优势。

而在Starrocks中,除了上面三种的模型之外,还包括一个主键模型,Primary Key

主要用于对接事务性数据库,所以提供了常见事务性数据库的主键模型

比起上面三种模型采用的Merge on read的策略,其采用了Delete-Insert的策略。

  1. ROLLUP in Doris

对于ROLLUP,则是一种预聚合的方式,可以基于一个Base表,创建出多个ROLL UP 表

这些ROLLUP的表数据都是基于Base表产生的,并且是独立存储的

但是对于明细模型来说,并没有什么意义。

  1. 前缀索引

对于Starrocks还是Doris中来说,创建表的时候都需要指定一个相关的索引主键

比如Aggreate,Uniq,Duplicate三种数据模型中

都需要指定诸如 AGGREGATE KEY,UNIQKEY,DUPLICATE KEY 进行排序存储

而且往往都需要设置的列在建表语句中的声明列时候靠前

利用这种方式,在存储的时候进行靠前存储,也进行加快查询效率。

  1. 物化视图

首先说Doris和Starrocks中都存在物化视图和虚拟视图

物化视图则是一个具有实际物理存储的数据集,可以视为一个表

其主要需要满足用户不同视角去查看并分析同一份数据

无论对原始表进行同步还是删除操作,都会同步到物化视图中

  1. 物化视图和Rollup的区别

最大的区别在于Rollup无法对明细模型进行聚合,但是物化视图可以

发表评论

邮箱地址不会被公开。 必填项已用*标注