- 灵活多变: 相比数据量和性能,灵活性更重要
- 轻量: 架构要简单,最好能一个引擎搞定所有场景
- 高效: 使用门槛要低,各种业务都能快速接入使用
- 包容: 能良好地兼容大数据生态
具体的诉求是:
- 支持ROLAP、MOLAP分析场景
- 数据模型支持宽表、星型模型、雪花模型等
- 同时兼顾数据量(PB)、查询性能(秒级)、灵活性(导数与查询灵活多变)
- 数据时效性上支持离线批处理、实时流处理秒级可见
- 数据写入支持Append、Overwrite、Upsert、Delete
- 高可用、灵活扩缩容、低运维成本
- 较高的QPS(高并发)
- 支持分析Hadoop上的数据
在这种“既要又要还要”的诉求下,选型很困难。OLAP 常用的技术架构有预计算、MPP、索引。我们调研了这三类架构的典型 OLAP 引擎:
- **预计算架构:**代表引擎 Apache Kylin/Apache Druid ,查询性能优越,但缺少灵活性。
- MPP 架构:Presto/Apache Impala/SparkSQL,灵活性很好,但性能较差,一般在分钟级。
- 索引架构:ES/ClickHouse,单表查询性能优越,但是 Join 几乎不可用,只能用宽表模型。
单一技术架构的引擎很难满足需求,因此我们把目标瞄向混合架构引擎:同时具有预计算、MPP 计算、支持索引的引擎。目前市面上这类引擎不多,比较成熟的有 Apache Doris 和 Sta