技术对比

Apache Doris vs Trino/Presto

Apache Doris 和 Trino/Presto 均为主流数据湖仓查询引擎,但 Doris 在性能上表现更具优势。Trino/Presto 主要专注于查询加速,而 Doris 不仅能够加速查询,还具备作为独立数据仓库的能力。企业可以利用 Doris 实现数据仓库和湖仓查询引擎的统一,从而简化其数据架构。

精选案例

统一

Apache Doris 实现数据仓库与湖仓查询引擎统一,有效简化企业技术栈

10

相较于 Presto/Trino,Doris 内表查询性能最高提升达 10 倍。

2~3

作为湖仓引擎,Doris 执行效率较 Presto/Trino快 2-3 倍。

Cisco WebEx 早期使用多个系统(如 Trino、Pinot、Iceberg 和 Kyuubi)构建数据平台,导致架构复杂、数据重复存储、运维困难、资源利用率低和数据时效性差。通过引入 Apache Doris 替换多个技术栈,实现湖仓一体化,显著提高了查询性能和系统稳定性,并降低了 30%的资源成本。

webex logo

迁移到 Doris 后,整体查询性能得到大幅提升。之前使用 Presto 进行多维分析时,查询时间长达 20-40 秒,而 Doris 将这一时间缩短至 1-2 秒。此外,Doris 的一大优势在于能够自动识别并匹配最优物化视图进行查询,这进一步增强了系统复杂分析的性能。

NetEase Games

使用 Trino 和 SparkSQL 时,系统查询延迟普遍维持在分钟级别,存在明显的性能瓶颈。迁移至 Apache Doris后,整体查询性能提升 2 倍以上。通过 Doris 统一架构,有效解决了混合架构下的数据孤岛与资源冗余问题,更加速了实时分析与交互式即席查询响应。

zto

为什么选择 Apache Doris

Apache Doris

  • 系统架构

    统一架构: 融合数据仓库与数据湖查询能力

  • 执行引擎
    基于 C++ 实现的全向量化执行引擎,提供高性能数据处理
  • 查询优化
    提供基于成本的查询优化器(CBO),可优化复杂查询,包括 JOIN、聚合分析、排序等
  • 缓存机制

    元数据缓存:具备TTL、自动刷新和增量同步的内存元数据缓存能力

    数据缓存:通过本地 SSD 热数据缓存减少网络I/O

    查询缓存:支持 SQL 缓存与分区缓存

  • 物化视图

    增量刷新:支持增量刷新和多种数据刷新策略

    查询透明加速:查询优化器能够自动识别并匹配最优 物化视图进行查询

  • 应用场景
    高并发实时分析
    交互式分析

Trino/Presto

  • 系统架构

    联邦查询: 擅长跨异构数据源查询,但无内置存储层

  • 执行引擎
    向量化引擎主要基于 Java 实现,目前作为 Hummingbird 项目的一部分处于开发中
  • 查询优化
    支持基于成本优化,但统计信息收集机制不完善,需手动全量收集
  • 缓存机制

    数据缓存:依赖于 Alluxio 等外部缓存方案

  • 物化视图

    手动刷新:仅支持人工全量刷新

  • 应用场景
    仅支持交互式分析

性能对比

TPC-DS 1TB 性能测试

TPC-DS 1TB Benchmark 包含 24 张表、63.5 亿条记录的 1TB 数据集,通过 99 条复杂查询(涵盖关联查询、聚合运算及嵌套子查询)评估数据仓库的性能。该测试基于雪花模型构建,模拟真实电商销售场景,由于查询的复杂性,在处理 1TB 规模数据时是一项挑战。

测试环境配置​包括:

  • 1 个 FE/Coordinator 节点 and 5 个 BE/Worker 节点
  • 单节点 64 核 CPU、1.5TB 内存以及 SSD 存储
  • HDFS 部署在计算节点上,并创建 Hive 表

在测试过程中,使用相同的数据集和相等的计算服务,结果显示:

  • 当数据导入 Doris 内表并使用 Doris 执行查询时,整体查询耗时最短
  • 当 Doris 与 Trino 分别对外部 Hive 表查询时,Doris 在数据湖场景展现更优的查询加速性能
TPC-DS 1TB 性能测试