首先我们一起探讨下,理想的OLAP引擎应该是什么样子的?我觉得应该符合以下要求:
低延迟:秒级/毫秒的查询响应;
复杂场景:支持复杂查询场景,如支持大宽表和多表JOIN的高效查询;
高并发:需要支持高并发场景,特别是简单查询;
大规模:支持PB级别的中高以上的数据规模,并且有较好在线扩展能力;
精确去重:要有高性能的精确去重能力;
高效导入:同时支持高效的流批导入;
易使用:支持标准SQL,使用门槛要低;
易运维:运维成本要低;
今天给大家介绍的这个开源工具doris,刚好符合以上要求,Doris是一款基于大规模并行处理技术的分布式 SQL 数据库,以较低的成本提供在大规模数据集上的高性能分析,目前在我们公司广泛应用于各业务线团队,主要面向公司内部查询分析场景,如报表系统、自助取数系统等。doris与其它常见OLAP开源引擎,在这里做了一个简单的对比,供大家参考:
引擎 | 优点 | 缺点 |
---|---|---|
druid | 查询延迟低,并发能力好 |
丢失明细,对Join支持有限,运维成本高 |
clickhouse | 向量化引擎,单表查询性能强悍 |
SQL语法不标准,多表JOIN查询性能一般,并发能力差,运维复杂 |
kylin | 查询延迟低,并发能力好。支持标准SQL |
Cube构建耗时耗资源,数据回溯困难,无明细模型 |
doris | 支持明细查询场景,支持单表和多表关联查询,支持低频点更新/点删除 |
混合负载的场景,同一个集群同时存在长查询和亚秒的查询,容易相互影响 |
我们公司在做技术选型时,之所以最终选用Doris,主要是因为以下令人无法拒绝的特性:
同时支持 明细和聚合查询
兼容Mysql协议和标准SQL
支持多表Join和灵活的表达式查询
支持Schema在线变更
有些名词,没有接触过doris的同学,可能看着比较懵,写这个文章是希望大家可以快速建立起对doris的认知,帮助大家快速判断是否要深入学习这个开源MPP工具,是否可以将doris应用到公司大数据平台中,解决当前一些技术痛点?如果有兴趣的话,推荐大家直接搜doris官网,有中文文档并且讲解的比较细致。
为方便大家快速学习doris知识,我这边也整理了一份doris脑图,点击doris实践分享-OLAP选型为什么要用doris ,回复doris脑图自动获取。