OLAP数据库(引擎)常见分类和研究

497 阅读4分钟

OLAP引擎常见分类

存储类型

ROLAP(RelationalOLAP)

基于关系模型存放数据,一般要求事实表(fact table)和维度表(dimensition table)按一定关系设计,它不需要预计算,使用标准SQL就可以根据需要即时查询不同维度数据。

MOLAP(MultidimensionalOLAP)

以多维数组(Multi-dimensional Array)存储模型的OLAP,是OLAP发源最初的形态,某些方面也等同于OLAP。它的特点是数据需要预计算(pre-computaion),然后把预计算之后的结果(cube)存在多维数组里。

HOLAP(HybridOLAP)

业界还没有一致的定义,它是MOLAP和ROLAP类型的混合运用,细节的数据以ROLAP的形式存放,更加方便灵活,而高度聚合的数据以MOLAP的形式展现,更适合于高效的分析处理。

处理类型

MPP架构

主要还是从查询引擎入手,使用分布式查询引擎,而不是使用hive+mapreduce架构,提高查询效率。

搜索引擎架构

在入库时将数据转换为倒排索引,采用Scatter-Gather计算模型,牺牲了灵活性换取很好的性能,在搜索类查询上能做到亚秒级响应。但是对于扫描聚合为主的查询,随着处理数据量的增加,响应时间也会退化到分钟级。

预处理架构

在入库时对数据进行预聚合,进一步牺牲灵活性换取性能,以实现对超大数据集的秒级响应。

开源解决方案

Doris、ClickHouse等MPP架构和ROLAP的引擎

Druid和Kylin等预处理架构和MOLAP的引擎

ES这种搜索引擎架构的

对比

 kylinDruiddorisClickHouse
核心思想预计算,利用空间换时间来加速查询模式固定的OLAP查询预计算,主要满足实时多维分析的需求。使用MPP引擎驱动的ROLAP模式,通过强大的实时计算能力,支撑良好的实时交互体验大数据实时分析的列式数据库管理系统
关键特性Cube理论,hbase存储数据预先聚合 列式存储 位图索引 字典编码的压缩算法整合了Google Mesa(数据模型),Apache Impala(MPP Query Engine)和Apache ORCFile (存储格式,编码和压缩) 的技术 支持rollup table 高并发和高吞吐的adhoc查询1.列式存储与数据压缩 2.向量化执行引擎  3.MPP+ SMP 充分地利用集群的资源4.  多主架构规避单点故障
更新能力不支持点更新/删除不支持点更新/删除支持点更新/删除不支持事物。不支持Update/Delete操作。
存储能力hbaseShared nothingMPP引擎,Shared-Nothing架构sharding机制
精确去重基于全局字典和RoaringBitmap实现的基于预计算的精确去重不支持支持,现场精确去重近似计算
JOIN不需要不支持支持支持,实现方式与众不同
元数据hbase存储,横向扩展能力好存储在mysql基于内存,性能好,但是单机内存有限DBMS(延时引擎,mysql,数据库引擎)
查询性能O(1)。主要就是Scan + Filter,查询效率可能产生巨大差异 最多15个维度支持聚合场景下亚秒级别响应高并发和高吞吐的adhoc查询 维度15-20查询效率可能产生巨大差异
可用性平台支持,适用于离线数据平台支持(但平台未开放接入离线,明细数据)FE:BDB-JE实现了类Paxos一致性协议算法。BE: Doris会保证每个Tablet的多个副本分配到不同的BE上平台支持
可维护性平台支持平台支持部署FE和BE组件;理解和掌握系统本身;熟悉聚合模型,明细模型,前缀索引,RollUp表这些概念平台支持
易用性支持Htpp,JDBC,ODBCREST API支持Mysql协议mysql
学习成本Cuboid,聚集组,强制维度,联合维度,层次维度,衍生维度,Extend Column,HBase RowKey 顺序理解架构理解聚合模型,明细模型,前缀索引,RollUp表理解merge tree的各种引擎
Schema Change重刷所有数据,整个过程周期很长,资源浪费比较严重重新提交工单即可支持Online Schema Change,Scheme的变更不会影响数据的正常导入和查询提交工单
社区Kylin的社区和生态已经比较成熟社区支持力度大Doris社区刚刚起步社区活跃度较高

场景+技术选型

kylin:指南针项目,支持离线预聚合计算。

druid:息壤,支持实时预聚合计算。

ck:数据更新少,支持灵活查询的多维分析场景。

doris: B端数据存在拉链场景。dmp人群服务支持实时场景。支持实时,灵活多维分析场景,支持点更新。

Kylin

官方文档

Druid

官方文档

Doris

官方文档

github

ClickHouse

官方文档

github