携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第23天,点击查看活动详情
Doris+Doris on ES完美配合
上文提到,OLAP分析场景,经常会遇到一个大难题:针对需要关联维度查询的场景,究竟是做成大宽表还是查询时Join? 总结来说,如果要支持维度数据存储,并且支持Join,目前开源的各类引擎或多或少都存在一些局限性。Druid的lookup Join实现太弱了,真实业务场景如果基本上很难适用。Doris和Clickhouse这里引擎都支持Join,并且支持明细数据存储,但是如要要高频Update,也是没办法做到。如果跳出Olap引擎,在应用层做Join实现,也是一种解法,但是实现成本高。
直到遇见了Doris on ES!
Doris on ES 查询性能如何?
Doris引擎为MPP架构,本身就具备很强的性能及横向扩展能力。Doris on ES构建在这个能力之上,并且对查询做了大量的优化,这给对ES原理理解不深的同学带来了方便。
主要的优化点如下:
-
Shard级别并发
-
行列扫描自动适配,优先列式扫描
-
顺序读取,提前终止
-
两阶段查询变为一阶段查询
-
Join场景使用Broadcast Join,对于小批量数据Join特别友好
不太完善的地方:
- 目前Doris on ES还不支持聚合下推,但是对于我们维度数据查询场景其实是用不到聚合操作。需要用到聚合操作的场景需要注意一下。不过目前社区也正在开发支持。
基于DOE的架构实现
数据链路升级
数据链路升级适配比较简单
-
Doris构建新的Olap表,配置好物化视图。
-
实时导入基于之前事实数据的kafka topic启动routine load。
-
离线校准通过broker load从hive中导入。
-
Doris创建on ES外表(社区正在开发自动同步建表)
报表引擎适配升级
-
抽象基于Doris的星型模型虚拟cube表
-
适配cube表查询解析,智能下推
-
支持灰度上线