在日常的数据分析场景中,我们经常会向 Apache Doris 写入大量数据,无论是实时导入、批量导入,还是通过流式写入。但你是否想过:一条数据从客户端发出,到最终稳定落盘,中间到底经历了哪些步骤?
今天我们就来全面拆解 Doris 写入原理,带你走进它的内部世界。
一条写入数据在 Doris 的“旅程”可以分成若干层次:
入口:客户端通过 HTTP(Stream Load)、JDBC/SQL(INSERT)、Broker/Spark(批量)、Routine Load(Kafka)等方式把数据送入系统。各种 Load 方法的分类和用途说明链接。
FE 层(协调):SQL 解析、计划、事务分配、路由与元数据管理(表/分区/Tablet 信息由 FE 管理并存储)。
BE 层(执行):负责真实的数据写入、内存结构、落盘(Segment)、索引构建、Compaction、查询执行。
选择合适的写入模式是发挥 Doris 性能的前提。不同模式的事务粒度、资源占用、延迟表现差异显著,需根据业务需求精准选型。
写入模式 | 传输协议 | 典型场景 | 延迟 | 吞吐能力 | 事务特征 |
|---|---|---|---|---|---|
Stream Load | HTTP | 实时日志、订单数据导入 | 秒级 | 高(GB / 分) | 单事务,支持导入任务级重试 |
Routine Load | Kafka 协议 | Kafka 日志流持续同步 | 秒级 | 中高 | 分区级事务,支持断点续传 |
Broker Load | 内部 RPC | HDFS/S3 离线批量数据加载 | 分钟级 | 极高(TB / 时) | 单事务,支持大文件切分并行导入 |
Spark Load | Spark API | 超大规模数据集(>10TB) | 小时级 | 极高 | 分布式事务,依赖 Spark 集群 |
Insert Into | MySQL/JDBC | 手动补数、低并发小批量写入 | 秒级 | 低 | 单条 / 批量事务,支持事务回滚 |
流程细分:
核心流程:
内部细节:
Flush 过程:
事务与可见性:
元数据更新:
为什么需要 Compaction:

compaction过程示意图
常见 Compaction 策略:
一条数据写入到 Doris 的旅程包含多个环节,理解数据写入的每个环节(MemTable、Flush、Compaction、FE 事务等),能够更好的帮助我们优化写入性能与稳定性。
往期推荐
Apache Doris 湖仓一体:打破数据边界,解锁实时分析的终极答案
Doris vs ClickHouse 企业级实时分析引擎怎么选?
完
●
数据极客圈子介绍
●
圈子1
Apache Doris社区是目前国内最活跃的开源社区(之一)。Apache Doris(Apache 顶级项目) 聚集了世界全国各地的用户与开发人员,致力于打造一个内容完整、持续成长的互联网开发者学习生态圈!
如果您对Apache Doris感兴趣,可以通过以下入口访问官方网站、社区论坛、GitHub和dev邮件组:
💡官网文档:https://doris.apache.org
💡社区论坛:https://ask.selectdb.com
💡GitHub:https://github.com/apache/doris
💡dev邮件组:dev@doris.apache.org
可以加作者微信(Faith_xzc)直接进Doris官方社区群
圈子2
PowerData是由一群数据从业人员,因为热爱凝聚在一起,以开源精神为基础,组成的数据开源社区。
社区群内会定期组织模拟面试、线上分享、行业研讨、线下Meetup、城市聚会、求职内推等活动,同时在社区群内你可以进行技术讨论、问题请教,结识更多志同道合的数据朋友。
社区整理了一份每日一题汇总及社区分享PPT,内容涵盖大数据组件、编程语言、数据结构与算法、企业真实面试题等各个领域,帮助您提升自我,成功上岸。
可以加作者微信(Faith_xzc)直接进PowrData官方社区群
叮咚✨ “数据极客圈” 向你敞开大门,走对圈子跟对人,行业大咖 “唠” 数据,实用锦囊天天有,就缺你咯!快快关注数据极客圈,共同成长!
点击上方公众号关注我们