1、doris定位:
实时数仓
2、doris架构:
Frontend(FE):主要负责用户请求的接入、查询解析规划、元数据的管理、节点管理相关工作。
Backend(BE):主要负责数据存储、查询计划的执行。
FE和BE都可以横向扩展的,单集群可以支持到数百台机器,数十PB的存储容量。
3、存储引擎:
列式存储
4、索引结构:
Sorted Compound Key Index,可以最多指定三个列组成复合排序键,通过该索引,能够有效进行数据裁剪,从而能够更好支持高并发的报表场景
Min/Max Index:有效过滤数值类型的等值和范围查询
BloomFilter Index:对高基数列的等值过滤裁剪非常有效
Inverted Index:能够对任意字段实现快速检索
5、存储模型:
聚合模型(Aggregate Key Model):相同Key的Value列合并,通过提前聚合大幅提升性能
主键模型(Unique Key Model):Key唯一,相同Key的数据覆盖,实现行级别数据更新
明细模型(Duplicate Key Model):明细数据模型,满足事实表的明细存储
支持强一致的物化视图
6、查询引擎:
MPP模型,节点间和节点内都并行执行,也支持多个大表的分布式Shuffle Join。
向量化查询,所有的内存结构能够按照列式布局,能够达到大幅减少虚函数调用、提升Cache命中率,高效利用SIMD指令的效果。
Adaptive Query Execution技术,可以根据Runtime Statistics来动态调整执行计划。
CBO和RBO结合的优化策略,RBO支持常量折叠、子查询改写、谓词下推等,CBO支持Join Reorder。
注:
物化视图(Material View)是包括一个查询结果的数据库对象,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。
Shuffle Join适用于两个表的大小都比较大,需要进行数据分区操作,然后将数据分布到不同的工作节点上进行JOIN操作。
SIMD(Single Instruction Multiple Data)指令集,指单指令多数据流技术,可用一组指令对多组数据通进行并行操作。
sql查询优化器:RBO(Rule-Based Optimization)-基于规则的优化器、CBO(Cost-Based Optimization)-基于代价的优化器。
7、数据库连接:
1、采用MySQL网络连接协议,兼容 MySQL 生态的命令行工具、JDBC/ODBC 和各种可视化工具。内置了一个简单的Web UI方便使用。
2、基于Arrow Flight SQL协议实现了高速数据链路,支持多种语言使用SQL从Doris高速读取大批量数据,如Python/Java/Spark/Flink等