Apache Daris是现代MPP分析数据库。号称可提供sub-second级别的查询和高效的实时数据分析。凭借分布式架构,支持高达10PB级别的数据集。其关键特性:

Apache Daris向量化_大数据

这里我们关注其向量化执行引擎。通过学习Doris的分享PPT来了解其向量化引擎。首先是向量化。

向量化是将一次一个值的计算转换成一次对一组值的运算过程。CPU角度来说,现代CPU支持SIMD指令,具有128位寄存器的可以保持4个32数,并进行一次计算,这样就比一次执行一个指令快4倍。从数据库角度来说,将next tuple变成next batch也就是一次一个元组变成一次一组元组,并且该元组以列式存储,算子在列上执行。

Apache Daris向量化_数据库_02

Apache Daris向量化_人工智能_03

Doris怎么实现向量化呢?通过3方面:列式存储、向量化函数计算框架、向量化算子。

Apache Daris向量化_大数据_04

Apache Daris向量化_数据库_05

向量化计算框架,传统ab列都需要到内存参与abs的计算。而向量化的对b列进行abs后过滤掉b列,生成需要的a,abs(b)列。

Apache Daris向量化_分布式_06

Apache Daris向量化_大数据_07

向量化计算优点:不相关列不参与计算,使得cache更加亲和。向量化计算解决的就是下面论文提出的问题。

Apache Daris向量化_java_08

Apache Daris向量化_数据库_09

Apache Daris向量化_java_10

Apache Daris向量化_java_11

指令v开头的是向量化后的指令。

Apache Daris向量化_java_12

Doris基于SSE,X86架构最通用的向量化指令。

Apache Daris向量化_数据库_13

Doris的向量化

Apache Daris向量化_大数据_14

Apache Daris向量化_人工智能_15

Apache Daris向量化_java_16

Doris向量化的未来规划

Apache Daris向量化_大数据_17

Apache Daris向量化_人工智能_18

Apache Daris向量化_人工智能_19

Apache Daris向量化_大数据_20

Apache Daris向量化_大数据_21

Apache Daris向量化_java_22

Apache Daris向量化_大数据_23

Apache Daris向量化_数据库_24

Apache Daris向量化_数据库_25

文献

​https://doris.apache.org/​

​https://www.bilibili.com/video/BV11L4y1E7Ad?spm_id_from=444.41.0.0​