1.与OLAP相关的概念
OLAP有多种实现方法,根据存储数据的方式不同可以分为ROLAP、MOLAP、HOLAP。
| 名称 | 描述 | 细节数据存储位置 | 聚合后的数据存储位置 |
|---|---|---|---|
| ROLAP(Relational OLAP) | 基于关系数据库的OLAP实现 | 关系型数据库 | 关系型数据库 |
| MOLAP(Multidimensional OLAP) | 基于多维数据组织的OLAP实现 | 数据立方体 | 数据立方体 |
| HOLAP(Hybrid OLAP) | 基于混合数据组织的OLAP实现 | 关系型数据库 | 数据立方体 |
比方说:MOLAP是一种通过预计算cube方式加速查询的OLAP引擎,它的核心思想是“空间换时间”,典型代表包括Druid和Kylin。
2.OLAP的对比
大家比较熟悉的:Impala、SparkSQL 、Hive
Druid:是一个分布式的、支持实时多维OLAP分析的数据处理系统。
Kylin:是一个开源的分布式分析引擎,提供Hadoop/Spark之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据。
Presto:是一个分布式的查询引擎,本身并不存储数据,但是可以接入多种数据源,并且支持跨数据源的级联查询。Presto是一个OLAP的工具,擅长对海量数据进行复杂的分析。
ClickHouse: 由号称 “俄罗斯 Google ” 的 Yandex 公司开源的面向 OLAP 的分布式列式数据库,能够使用 SQL 查询生成实时数据报告。
Doris: PB 级联机分析处理引擎,为客户提供稳定、高效、低成本的在线报表和多维分析服务。
具体对比:
| OLAP产品 | 数据摄入 | 存储方式 | 查询性能 | 用户友好程度 | 场景 |
|---|---|---|---|---|---|
| Druid | 支持离线 Hdfs数据摄入和实时Kafka 数据摄入 | LSM 变种,采用一层全维度的roll up 进行预计算,不存储明细 | 查询时在broker层面进行更加深层的聚合计算,毫秒级到秒级 | 组件繁多,有多种组件和进程,依赖 ZK和 MySQL,运维相对复杂,维度度量修改支持在线修改,对用户友好,需要时间字段 。 | iot、实时监控指标产出、实时渠道聚合分析等 |
| Kylin | 支持 Hive 和Kafka 摄入,由于使用基于 mr和 spark 的计算引擎进行cube 构建,难以达到分钟级延迟,延迟至少在十分钟至半小时级别 | 全维度预计算构建cube,支持一些策略的剪枝,减少无用计算量,开源版本依赖HBase作为Storage | 基于全量预计算产出、亚秒级 | 依赖Hadoop生态,适合维度、度量相对稳定的要修改维度、度量需要重新配置,重新构建,不一定需要时间字段 | 维度、度量明确的场景、分析聚合维度多样化,维度尽量不要超过20维,否则将产生维度爆炸 |
| ClickHouse | 支持离线在线数据录入,但是由于存储设计实时数据摄入千万不能单条频繁摄入,一定要做batch汇总 | 与kylin、druid不同,不做预计算,完全是通过索引、列式存储、压缩、向量化、codegen等充分压榨cpu等计算资源达到快速计算的目的 | 毫秒级至秒级不等 | 单一组件、sql支持良好、分析函数丰富,易上手,需要时间字段 | 渠道漏斗分析、app点击路径事件分析 |
899





