Hologres作为HSAP服务分析一体化的落地最佳实践,其查询引擎是一个完全自研的执行引擎,它的核心设计目标是支持所有类型的分布式分析和服务查询,并做到极致查询性能。为了做到这一点,我们借鉴了各种分布式查询系统,包括分析型数据库,实时数仓等,吸取了各方面的优势从零开始打造出一个全新的执行引擎。
为什么要选择从零开始做一个新的查询引擎?开源的分布式分析查询系统主要有两大类:
一类是传统的 Massively Parallel Processing 系统,能够支持通用的 SQL 查询,但是对实时场景支持不够好,性能不够理想。
一类是 Apache Druid 和 ClickHouse这些实时数仓,是专门为实时场景设计和优化的,能够比较好地支持一些常见的单表实时查询,但是复杂查询的性能比较差。
另外大数据生态圈基于 MapReduce 的引擎比较适合批处理 ETL,一般不太适合在线服务和多维分析的场景,性能也差不少。
Hologres 执行引擎是在一个能支持复杂查询和上述高性能实时服务查询的通用架构,先首先实现了常用的实时数仓场景,深入优化并用内部 Benchmark 验证了性能和稳定性超过包括专用实时数仓的其它竞品之后,再扩展到其它复杂查询的支持。扩展的过程中,在不可避免地系统变得越来越复杂的同时,也用 Benchmark 帮助保持简单实时查询的性能没有回退。如果在已有的查询引擎上做改进,因为很多架构和设计上的选择已经定型,牵一发而动全身,就很难达到这样的效果。