Doris 2.x与3.x版本差异与新增特性


一、核心架构与性能优化

1. 查询引擎与优化器

  • Doris 2.x:

    • MPP架构:基于分布式计算模型,支持单表和多表复杂查询。

    • CBO(Cost-Based Optimizer):基于统计信息的查询优化,但统计信息收集依赖手动触发。

    • 向量化执行引擎:提升批量数据处理效率,但对复杂表达式优化有限。

  • Doris 3.x:

    • Pipeline执行引擎(新增):

      • 支持全异步执行,消除线程阻塞,提升高并发场景下的吞吐量(如并发查询提升2-5倍)。

      • 动态调整并行度,自动适配资源负载。

    • 增强CBO:

      • 自动统计信息收集(通过后台任务定期更新),优化多表JOIN顺序和分区裁剪。

      • 支持子查询自动去关联化,减少嵌套查询复杂度。

    • JIT编译优化(实验性):对热点表达式(如正则匹配、数学计算)进行运行时编译,提升单算子性能。

2. 存储引擎

  • Doris 2.x:

    • Segment+Page存储格式:支持列式存储,但合并策略依赖Compaction调度。

    • 倒排索引:仅支持文本字段的全文检索,性能受限。

  • Doris 3.x:

    • 存储分层优化(新增):

      • 冷热数据自动分层,支持将冷数据转存至低成本存储(如对象存储S3)。

      • 支持本地磁盘+云存储混合挂载,降低存储成本。

    • 多版本倒排索引(增强):

      • 支持数值型字段倒排索引,加速高基数字段的过滤查询。

      • 索引压缩率提升30%,减少磁盘占用。


二、功能增强与新特性

1. 数据接入与生态集成

  • Doris 2.x:

    • 支持常规数据源:Kafka、MySQL Binlog、Flink Connector。

    • Spark Load:批量导入数据,但资源消耗较大。

  • Doris 3.x:

    • Flink CDC 2.0集成(新增):

      • 支持从MySQL、PostgreSQL等数据库实时同步变更数据(Change Data Capture)。

      • 提供Exactly-Once语义,保障数据一致性。

    • Lightning API(新增):

      • 基于HTTP协议的轻量级数据写入接口,适合高频小批量数据写入(如IoT场景)。
    • Iceberg/Hudi外部表支持(实验性):直接查询云上Iceberg/Hudi表,无需数据迁移。

2. 云原生与运维管理

  • Doris 2.x:

    • 基于K8s部署需依赖第三方Operator,运维复杂度高。

    • 监控依赖Prometheus+Granafa,指标粒度较粗。

  • Doris 3.x:

    • Kubernetes原生支持(新增):

      • 内置Doris Operator,支持一键部署、扩缩容和故障自愈。

      • 支持动态调整计算节点(BE)和协调节点(FE)资源配额。

    • 精细化监控(新增):

      • 新增查询级资源跟踪(CPU、内存、网络),定位慢查询根因。

      • 集成OpenTelemetry,支持链路追踪(Trace)。

    • 多租户资源隔离(增强):

      • 通过Resource Group限制用户/任务的CPU、内存配额,避免资源抢占。

3. SQL兼容性与高级功能

  • Doris 2.x:

    • 支持标准SQL-92和部分窗口函数。

    • 物化视图需手动维护,无自动刷新机制。

  • Doris 3.x:

    • 窗口函数增强:

      • 支持RANGE窗口、GROUPS模式等复杂窗口定义。

      • 优化LAG/LEAD函数的执行效率。

    • 异步物化视图(新增):

      • 自动根据基表数据变更刷新物化视图,支持增量更新。

      • 支持跨数据库物化视图(如MySQL到Doris)。

    • JSON类型增强:

      • 支持JSON Path查询语法(如SELECT data->'$.user.name'),性能提升50%。

      • 新增JSON_OBJECT/JSON_ARRAY等构造函数。


三、性能对比与适用场景

1. 性能基准测试

场景 Doris 2.x Doris 3.x
高并发点查(QPS) 5k-10k 20k-50k(Pipeline引擎)
大宽表聚合(响应时间) 10s(10亿行) 3s(索引优化+JIT)
冷数据查询延迟 高(需手动预热) 低(自动分层存储)

2. 适用场景差异

  • Doris 2.x:

    • 中小规模数据实时分析(日志分析、BI报表)。

    • 对云原生需求较低,预算有限的本地化部署。

  • Doris 3.x:

    • 大规模数据湖分析(PB级,混合云存储)。

    • 高并发在线服务(如电商实时大屏、广告实时竞价)。

    • 需要强资源隔离的多租户平台(如SaaS服务)。


四、升级注意事项

  1. 兼容性:

    • 3.x默认兼容2.x数据格式,但需注意废弃API(如部分UDF接口)。

    • 检查自定义Connector是否适配新版本(如JDBC驱动)。

  2. 性能调优:

    • 启用Pipeline引擎需调整pipeline_exec_threads参数(建议设置为CPU核数的2倍)。

    • 冷热分层存储需配置存储策略(如storage_policy = "S3")。

  3. 运维变更:

    • 使用K8s Operator需升级CRD(Custom Resource Definition)。

    • 监控系统需适配OpenTelemetry协议。


五、总结

Doris 3.x 的核心价值:

  • 性能飞跃:Pipeline引擎与JIT编译大幅提升吞吐与响应速度。

  • 云原生深度集成:混合存储、K8s原生支持降低TCO(总拥有成本)。

  • 生态扩展:CDC实时同步、多格式查询支持,构建湖仓一体能力。

升级建议:

  • 高并发、混合云场景必升3.x,充分利用Pipeline引擎和存储分层。

  • 中小规模场景可评估成本,逐步迁移至3.x以获取长期生态支持。

Doris使用详解

Hologres使用详解


Doris 2.x与3.x版本差异与新增特性_第1张图片

你可能感兴趣的:(mysql,数据结构,doris,版本差异,kafka,doris2.)