当前位置: 首页 > news >正文

[Doris] Doris 使用指南

1 概述: Doris

产品介绍

Apache Doris 是一个开源的、高性能的、实时的分析型数据库(OLAP)。其核心目标是提供一个“开箱即用”、运维简单且性能卓越的统一分析平台。

  • 产品定位:专为在线分析处理(OLAP)场景设计,能够同时支持高并发的点查询、复杂的即席查询(Ad-hoc Query)、实时数据看板、日志检索分析以及湖仓一体(Lakehouse)查询等多种工作负载。

  • 诞生背景与原因:项目最初由百度于 2010 年左右内部研发,原名为 Palo。当时,百度面临传统 OLAP 系统(如基于 Hive + MapReduce)在实时性、查询延迟和系统复杂性方面的巨大挑战。内部迫切需要一个能同时满足低延迟、高吞吐、易用性和高可靠性的新一代分析引擎。

  • 解决的核心问题

    • 打破传统 T+1 批处理模式,实现秒级甚至亚秒级的数据可见性和查询响应
    • 简化 OLAP 架构,避免 Lambda/Kappa 架构的冗余和运维负担,提供一体化解决方案。
    • 提供标准 SQL 和 MySQL 协议兼容性,降低用户学习和集成成本。
    • 通过列式存储、向量化执行、智能索引等技术,在保证高性能的同时优化资源利用率和总体拥有成本(TCO)。
  • 官方链接

    • 官网:https://doris.apache.org/
    • GitHub 项目地址:https://github.com/apache/doris/

发展历程

Apache Doris 的发展历程清晰地反映了其从企业内部工具到全球顶级开源项目的演进。

  • 2010–2017 年(百度内部阶段):作为百度内部 OLAP 引擎 Palo 开发和演进,支撑搜索、广告等核心业务。
  • 2017年:百度宣布将 Palo 开源。
  • 2018年:项目捐赠给 Apache 软件基金会(ASF),进入孵化器,并更名为 Apache Doris
  • 2022年6月:Apache Doris 成功从孵化器毕业,成为 Apache 顶级项目(Top-Level Project, TLP),标志着其社区治理、代码质量和生态成熟度得到了 ASF 的官方认可。
  • 2023-2025年(功能爆发期):进入快速发展期,社区贡献者和企业用户数量激增。关键版本如 2.0 引入了主键模型(Unique Key Model)以支持高效的实时更新;3.0 增强了半结构化数据(JSON)处理能力。
  • 2025–2026年(AI 时代演进)4.0 版本是里程碑式的发布,正式引入了向量检索(Vector Search)和混合搜索(Hybrid Search)能力,将应用场景拓展至 AI 时代,同时完善了存算分离架构。

核心功能

Doris 的功能集使其成为一个真正意义上的“统一”分析数据库。

  • 多样化的数据模型

    • Duplicate Key (明细模型):保留所有原始数据,适用于日志、事件流等场景。
    • Aggregate Key (聚合模型):在导入时自动聚合相同维度的数据,极大提升聚合查询性能。
    • Unique Key (主键模型):保证主键唯一性,支持高效的行级更新(Upsert)和删除(Delete),是构建实时数仓的核心。
  • 极速查询引擎

    • MPP 架构:实现节点间和节点内的并行计算。
    • 全向量化执行引擎:显著提升 CPU 利用率和计算效率。
    • Cascades-style CBO (Cost-Based Optimizer):结合 RBO(Rule-Based)和 HBO(History-Based)生成最优执行计划。
    • Pipeline 执行引擎:解决线程爆炸问题,提高资源利用率。
  • 灵活的数据摄入

    • 批量导入:支持从 HDFS、S3、本地文件等加载数据。
    • 流式导入:原生支持 Kafka,通过 Routine Load 实现自动、容错的数据消费。
    • 实时写入:通过 Stream Load (HTTP)、Broker Load、MySQL INSERT 语句等方式实现秒级数据可见。
  • 联邦查询(Unified Lakehouse):可直接查询外部数据湖(Hive, Iceberg, Hudi)和数据库(MySQL, Elasticsearch, JDBC 兼容库)中的数据,无需 ETL 移动,实现真正的湖仓一体。

  • 强大的半结构化与非结构化数据处理

    • 原生 JSON 类型(VARIANT)支持动态 Schema、路径索引、稀疏列等高级特性。
    • 内置 倒排索引(Inverted Index)N-Gram BloomFilter,为日志分析和全文检索提供强大支持。
  • AI 时代新能力(4.0+):支持十亿级规模的 向量相似性搜索(ANN),可与标量过滤结合进行混合搜索,为 RAG、推荐系统等 AI 应用提供数据底座。

主要特点

维度 特点
极致性能 在 SSB、TPC-H 等基准测试中,性能远超 ClickHouse、Druid 等同类产品,尤其在多表关联和实时更新场景。
简单易用 仅需 FE 和 BE 两类进程,无 ZooKeeper、HDFS 等外部依赖。兼容 MySQL 协议,任何 MySQL 客户端或 BI 工具(如 Tableau, Power BI)均可无缝接入。
高可用与弹性 FE 和 BE 均支持横向扩展。元数据和数据均采用多副本机制,自动故障转移和数据恢复。
统一架构 单一系统即可覆盖从实时报表、即席分析到数据湖加速、日志检索的全场景,避免了多套系统的维护成本。
开放生态 提供 Flink-Doris-Connector、Spark-Doris-Connector 等官方组件,深度融入大数据生态。

局限性

尽管功能强大,Apache Doris 仍存在一些局限性,需在选型时权衡。

  • 非事务型数据库:不支持 ACID 事务,不适合需要强一致性和复杂事务逻辑的 OLTP 场景。
  • 高频率随机更新的代价:虽然 Unique Key 模型支持更新,但频繁的、大范围的随机更新会带来较高的 Compaction 开销,影响整体性能。
  • 内存敏感:向量化引擎和复杂的查询对内存有较高要求,不当的资源配置可能导致 OOM。
  • 社区版高级功能:部分前沿功能(如某些向量索引算法、企业级安全特性)可能由商业公司率先实现,社区版跟进存在时间差。

适用场景

Apache Doris 的适用场景非常广泛,几乎涵盖了现代数据分析的所有主流需求。

  • 实时数据仓库:构建统一的、支持实时更新的企业级数据仓库。
  • 交互式 BI 与仪表盘:为业务人员提供秒级响应的自助分析和可视化看板。
  • 用户行为分析:分析用户点击流、留存、转化漏斗等。
  • 日志与事件分析:利用倒排索引快速检索和分析海量日志数据。
  • 湖仓查询加速:作为高性能查询引擎,直接加速对数据湖(Iceberg/Hudi)的查询。
  • AI/ML 应用数据平台:利用其向量检索能力,为大模型 RAG、个性化推荐等场景提供底层支持。

同类竞品

竞品 对比分析
ClickHouse CH 在纯追加写入和单表聚合查询上性能极佳,但 JOIN 能力弱、不支持高效更新、运维复杂。Doris 在功能完整性、易用性和更新场景上优势明显。
StarRocks StarRocks 与 Doris 同源(早期分叉),两者在核心架构和性能上非常接近。主要区别在于社区治理:Doris 是 Apache 顶级项目,社区更加开放中立;StarRocks 由商业公司主导,开源策略相对收紧。
Trino/Presto Trino 是优秀的联邦查询引擎,但本身无存储,依赖外部系统,查询延迟通常高于 Doris。Doris 自带高性能存储,更适合低延迟分析。
Snowflake/Redshift 这些是成熟的云数仓服务,功能全面但成本高昂且闭源。Doris 可私有化部署,为企业提供成本可控、自主可控的替代方案。

发展趋势

Apache Doris 的开源社区呈现高度活跃和健康的增长态势。

  • 社区活跃度:GitHub Stars 已突破 15k+,总贡献者超过 710+,月均活跃贡献者稳定在 120+
  • 企业采纳:在中国,超过 80% 的 Top 50 互联网公司(如字节跳动、京东、美团、小米、腾讯等)已在生产环境中大规模使用 Doris。其影响力正迅速向全球扩展。
  • 技术演进:项目发展重心已从传统的 OLAP 引擎,转向 “AI 时代的实时分析与搜索数据库”。4.0 版本的向量搜索、存算分离、增强的 JSON 处理能力都是这一战略的体现。
  • 一句话总结Apache Doris 凭借其卓越的性能、极致的易用性和前瞻性的技术布局(如向量搜索),已成为构建现代统一实时数据平台的首选开源方案之一,社区和生态正处于高速上升通道。

2 工作原理与架构

Apache Doris 采用经典的 Shared-Nothing MPP 架构,主要由两个核心组件构成:

doris-architecture

  • Frontend (FE)

    • 角色:集群的“大脑”。
    • 职责
      • 元数据管理:存储和管理所有数据库、表、分区、副本等元数据。元数据在多个 FE 节点间通过 BDB JE (Berkeley DB Java Edition) 进行强同步,保证一致性。
      • SQL 解析与规划:接收客户端的 SQL 请求,进行词法/语法分析、逻辑计划生成,并通过 CBO/RBO 优化器生成最优的分布式物理执行计划。
      • 查询调度:将物理计划分发给 Backend 节点执行。
    • 高可用:FE 节点分为 Master、Follower 和 Observer。Master 负责元数据写入,Follower 参与选举,Observer 仅提供读服务以扩展查询并发。任意一个 Follower 可在 Master 故障时被选举为新的 Master。
  • Backend (BE)

    • 角色:集群的“肌肉”。
    • 职责
      • 数据存储:负责实际数据的存储、读写。数据按表被水平切分为多个 Tablet,每个 Tablet 有多个副本,分散在不同的 BE 节点上。
      • 查询执行:接收 FE 下发的执行计划片段(Fragment),利用 向量化引擎Pipeline 执行模型 进行本地计算,并与其他 BE 节点交换中间数据(如 Shuffle Join)。
      • 数据导入:处理来自各种渠道(Stream Load, Broker Load, Routine Load)的数据导入请求,并完成数据的排序、聚合和持久化。

关键技术亮点

  • 列式存储:按列组织数据,极大提升压缩比和 I/O 效率,特别适合分析查询。
  • 智能索引:组合使用前缀索引、MinMax 索引、BloomFilter 索引和倒排索引,有效减少数据扫描量。
  • 物化视图:支持单表强一致的同步物化视图和多表异步刷新的物化视图,预计算加速查询。
  • 存算分离(4.x+):通过对接 S3/MinIO 等对象存储,将冷数据下沉,实现计算和存储资源的独立伸缩,降低成本。

3 使用指南

重要提示:Apache Doris 官方不支持在 Windows 上进行生产部署。开发和测试可以使用 Docker,生产环境强烈推荐在 Linux(如 CentOS 7+/Ubuntu 20.04+)上部署。

安装部署

方式一:Docker Compose(快速体验)

# 克隆官方仓库
git clone https://github.com/apache/doris.git
cd doris/docker-compose# 启动集群(包含1个FE和1个BE)
docker-compose up -d# 通过 MySQL 客户端连接
mysql -h 127.0.0.1 -P 9030 -u root

方式二:手动部署(生产推荐)

  1. 准备环境

    • 操作系统:Linux (CentOS/Ubuntu)
    • 软件依赖:Java 8/11 (仅 FE 需要), Python 2/3
    • 硬件:至少 3 台机器(1 FE + 2 BE 以保证高可用)
  2. 下载与解压

    # 从官网下载最新二进制包
    wget https://.../apache-doris-x.x.x-bin-x86.tar.gz
    tar -xzf apache-doris-x.x.x-bin-x86.tar.gz
    
  3. 配置与启动

    • 配置 FE:编辑 fe/conf/fe.conf,设置 priority_networks 为本机 IP。
    • 启动 FE
      ./fe/bin/start_fe.sh --daemon
      
    • 添加 BE:使用 MySQL 客户端连接 FE (默认端口 9030),执行:
      ALTER SYSTEM ADD BACKEND "be_host_1:9050";
      ALTER SYSTEM ADD BACKEND "be_host_2:9050";
      
    • 配置与启动 BE:在每台 BE 机器上,编辑 be/conf/be.conf,同样设置 priority_networks,然后启动:
      ./be/bin/start_be.sh --daemon
      

关键操作

  • 创建表(Unique Key 模型示例)

    CREATE DATABASE test_db;
    USE test_db;CREATE TABLE orders (order_id BIGINT,user_id INT,product_name VARCHAR(128),price DECIMAL(12, 2),order_time DATETIME
    ) ENGINE=OLAP
    UNIQUE KEY(order_id)
    DISTRIBUTED BY HASH(order_id) BUCKETS 10
    PROPERTIES("replication_num" = "3","enable_unique_key_merge_on_write" = "true" -- 推荐开启,性能更好
    );
    
  • 数据导入(Stream Load)

    # 准备 CSV 文件 data.csv
    echo "1001,101,'Laptop',5999.00,2026-02-08 10:00:00" > data.csv# 通过 curl 导入
    curl --location-trusted -u root: \-H "label:load_order_001" \-H "column_separator:," \-T data.csv \http://fe_host:8030/api/test_db/orders/_stream_load
    
  • 查询(含 JSON 和向量)

    -- 查询订单
    SELECT * FROM orders WHERE user_id = 101;-- (4.0+)假设有一个 product_embeddings 表,包含向量列
    SELECT product_id, cosine_similarity(embedding, [0.1, 0.2, ..., 0.5]) AS score
    FROM product_embeddings
    ORDER BY score DESC
    LIMIT 10;
    

Z FAQ for Doris

Q: 修改字段的值(update table set xxx=xxx)失败,报: [HY000]: errCode = 2, detailMessage = Only unique table could be updated.

  • 问题描述

修改字段的值(update table set xxx=xxx)失败,报

[HY000]: errCode = 2, detailMessage = Only unique table could be updated.
  • 原因分析

该错误通常出现在使用 Apache Doris 数据库时,尝试更新非唯一键表或不符合更新规则的列。Doris 的 UNIQUE KEY 模型仅允许更新值列,而主键列或非值列无法直接更新。

在 UNIQUE KEY 表中,仅允许更新非主键的值列。若需更新主键,需通过删除旧数据并插入新数据实现。

Q: Doris通过阿里云OSS导出导入?

https://blog.csdn.net/m0_73193173/article/details/130827159

Q: Doris 支持 UPDATE / DELETE 吗?

A: 支持,但仅限 Unique Key 模型(主键模型)。它通过指定主键进行行级覆盖(Upsert)或删除,不支持带有 WHERE 条件的通用批量更新或删除。

Q: 能否用 Doris 替代 MySQL?

A: 不能。Doris 是分析型数据库(OLAP),不适合高频点写、事务处理、复杂关联更新等在线事务处理(OLTP)场景。MySQL 是优秀的 OLTP 数据库,两者定位完全不同。

Q: 如何监控 Doris 集群健康状态?

A: 可通过多种方式监控:

  • FE Web UI:访问 http://<fe_host>:8030,可查看节点状态、Tablet 健康度、慢查询等。
  • Prometheus + Grafana:Doris 提供了 Prometheus Exporter,可集成 Grafana 监控 Query QPS、延迟、CPU/Mem/Disk 使用率等核心指标。
  • 日志:分析 FE/BE 的日志文件,排查错误和性能瓶颈。

Q: 是否支持向量搜索?

A: 是的,从 4.0 版本开始支持。Doris 内置了 IVF_PQ、HNSW 等向量索引算法,可处理十亿级向量,并支持与标量条件(如关键词、数值范围)结合进行混合搜索,非常适合 RAG、推荐系统等 AI 应用。

Q: 社区版和商业托管版(如 SelectDB Cloud)有何区别?

A: 核心引擎一致,社区版功能完整。商业托管版通常在社区版基础上,提供全托管服务(免运维)、SLA 保障、企业级安全(如 RBAC、审计日志)、更高级的监控告警、专业的技术支持以及一些尚未完全开源的前沿特性(如特定的向量索引优化)。

Y 推荐文献

  • [数据库] MySQL之数据库管理篇 - 博客园/千千寰宇

  • 数据库表设计 - bookstack.cn/Apache Doris v3.0 中文文档

  • Apache Doris Documentation — 最权威、最全面的学习资料,特别是“Concepts”和“Best Practice”章节。

  • VeloDB Blog — 包含大量深度技术解析和性能对比,如与 ClickHouse 的基准测试、JSON 性能分析、向量搜索实践等。

  • Designing Data-Intensive Applications - O'Reilly — 虽然不是专门讲 Doris,但对理解分布式系统、数据流、一致性等核心概念至关重要。

  • ByteDance: Solved Billion-Scale Vector Search with Doris 4.0 - VeloDB Blog — 详细介绍了十亿级向量检索的工程实现,是 AI 场景落地的典范。

X 参考文献

  • Apache Doris - Official Website
  • Doris - Github
  • Apache Doris Documentation
  • ByteDance: Solved Billion-Scale Vector Search with Doris 4.0 - VeloDB Blog
  • Apache Doris Up to 34x Faster Than ClickHouse in Real-Time Updates - VeloDB Blog
  • Fast JSON Analytics in Apache Doris: 100x Faster Than PostgreSQL and MongoDB - VeloDB Blog
  • Deploying Apache Doris with MinIO: Analytics with Storage-Compute Separation - VeloDB Blog
  • Apache Doris支持的数据类型详解 - CSDN
http://www.jsqmd.com/news/357903/

相关文章:

  • yz-bijini-cosplay实战教程:Cosplay角色表情控制(傲娇/冷艳/元气)提示法
  • CogVideoX-2b企业落地:集成至现有内容管理系统的技术路径
  • Qwen3-4B-Instruct实操手册:无需显卡的高质量长文生成工作流
  • 2026年靠谱的定制化精密压铸加工/工业机器人精密压铸加工热门品牌推荐口碑排行 - 行业平台推荐
  • 文墨共鸣快速上手:5分钟用VS Code DevContainer启动本地水墨风开发环境
  • Face Analysis WebUI部署案例:边缘设备(RK3588)轻量化部署与功耗实测
  • ERNIE-4.5-0.3B-PT效果实测:Chainlit中会议纪要自动提炼与待办事项生成
  • Qwen2.5-VL-7B-Instruct应用场景:辅助视障用户理解图像内容的无障碍实践
  • 美胸-年美-造相Z-Turbo在客服场景的应用:智能问答图片生成
  • 2026年常州铝板蚀刻加工厂排名,常州威登电子设备性价比与口碑全解析 - mypinpai
  • 开源ChatTTS部署教程:利用GPU算力优化语音生成效率
  • 2026年评价高的斑马鱼系统设备/斑马鱼饲养设备供应商采购指南怎么联系 - 行业平台推荐
  • Qwen3-Reranker-4B效果展示:电商搜索中‘苹果手机壳’多义消歧重排
  • 盘点常州电镀设备,常州威登电子设备产品价格是多少 - 工业品牌热点
  • mPLUG模型剪枝:通道剪枝实战指南
  • 2026年口碑好的视觉检测振动盘/无损振动盘怎么选实力工厂参考 - 行业平台推荐
  • 造相Z-Image文生图模型v2虚拟机部署:VMware完整教程
  • 基诺浦 联系方式:官方联络方式查询与使用建议 - 品牌推荐
  • 探讨高速全自动化纸尿裤包装机生产厂哪家性价比高 - 工业推荐榜
  • LongCat-Image-Editn多场景应用:博物馆文物图注释增强、非遗工艺图解动态更新
  • Java: 简单本地调用deepseek-r1:1.5b 模型 using JDK 21
  • Qwen-Image-Edit-2511+AnythingtoRealCharacters2511深度解析:2.5D转真人效果实测与参数详解
  • OFA-large模型教学应用:人工智能课程中视觉蕴含任务的实验平台搭建
  • cv_unet_image-colorization模型在数学建模中的应用探索
  • 2026年湖南冷库建造定制公司排名,宏国制冷等靠谱品牌推荐 - myqiye
  • Qwen3-ASR-0.6B快速部署:GitHub Actions自动化构建Docker镜像并推送Registry
  • 网上管家婆联系方式:关于SaaS软件服务的几点考量 - 品牌推荐
  • VSCode插件开发:集成Qwen3-ForcedAligner音频分析功能
  • LongCat-Image-Editn镜像使用手册:图片≤1MB/短边≤768px的最优输入规范
  • 2026年广东环卫设备公司推荐,有美工贸公司介绍及交货及时性分析 - 工业品网