Doris数据仓库
文章平均质量分 91
xxx
肥叔菌
本博客主要用于记录学习过程中的笔记,每隔一段时间,博主将会将精华内容整合发到知乎、简书上。欢迎关注博主肥叔菌在其他平台上的账号,谢谢。
B站:https://space.bilibili.com/456254145
segmentfault:https://segmentfault.com/u/feishujun/articles
简书:https://www.jianshu.com/u/67bab078551a
展开
-
Doris数据库FE——全局事务状态机
从上述报错可以看出begin、commit、rollback等操作只有和insert操作结合使用。从上述可以猜测Doris数据库的事务性仅限于此。如下为全局事务支持的相关插入数据的操作。原创 2023-10-31 00:00:00 · 623 阅读 · 0 评论 -
Doris数据库FE——FeServer
如下即为初始化中关于FeServer类的构造函数和start函数的具体代码。其start函数流程和构建thrift server行为一致,这里不介绍,仅说明其提供的接口。来承载,而查看代码仅用于 snapshot 的管理过程,其他的并非通过该接口实现。注 这里存在疑问 gRpc 和 thrift 接口混着用的目的,不太明确。在 FE 端与 BE 端均存在一个任务 Queue,如上图所示,从当前版本来看 thrift 实现的与 BE 之间的交互主要是用。原创 2023-10-31 00:00:00 · 320 阅读 · 0 评论 -
Doris数据库BE——冷热数据方案
其中 ROWSET 代表着数据导入批次,同一个ROWSET 一般代表着一个批次的导入任务,比如一次 stream load,一个 begin/commit 事务等,都对应一个 ROWSET,ROWSET 的这种特性,意味着其具有着事务的特点,即是说,同一个rowset可以作为一个独立的数据单元存在,其中的数据要么全部有效,要么全部无效。当数据需要转冷的时候,为该热数据分片创建一个冷数据的副本分片,然后将数据转储到冷数据指定的外部集群上,当冷数据副本生成完毕后,将热数据分片删除。原创 2023-10-05 00:00:00 · 378 阅读 · 0 评论 -
Doris数据库FE——启动流程源码详细解析
Doris中FE主要负责接收和返回客户端请求、元数据以及集群管理、查询计划生成等工作。代码路径:doris/fe/fe-core/src/main/java/org/apache/doris/DorisFE.java。原创 2023-09-28 00:00:00 · 577 阅读 · 0 评论 -
Doris数据库FE——SQL handleQuery
SQL解析在下文中指的是将一条sql语句经过一系列的解析最后生成一个完整的物理执行计划的过程。这个过程包括以下四个步骤:词法分析、语法分析、生成逻辑计划、生成物理计划。Doris SQL解析具体包括了六个步骤:词法分析,语法分析、语义分析,生成单机逻辑计划,生成分布式逻辑计划,生成物理计划。具体代码实现上包含以下五个步骤:Parse、Analyze、SinglePlan、DistributedPlan、Schedule。原创 2023-09-24 00:00:00 · 311 阅读 · 0 评论 -
Doris数据库FE——SQL 接收
不同类型的查询select, insert, show, set, alter table, create table等经过Parse阶段后生成不同的数据结构(SelectStmt, InsertStmt, ShowStmt, SetStmt, AlterStmt, AlterTableStmt, CreateTableStmt等),但他们都继承自Statement,并根据自己的语法规则进行一些特定的处理。然后提供start成员函数,其主要是调用mysqlServer.start()函数。原创 2023-09-18 00:00:00 · 274 阅读 · 0 评论 -
StarRocks数据库FE——Catalog层
为了更简单地直接分析开放数据湖上的数据,StarRocks 提供了统一 Catalog 管理的能力,用户可以通过一键创建 Apache Hive/Apache Hudi/Apache Iceberg(以下简称 Hive/Hudi/Iceberg) 的 Catalog,轻松地分析湖上的所有数据,而无需逐个表进行 schema 建模。其中有一个字典对象catalogs,存放的是CatalogName到Catalog对象的映射,通过该catalog的名字查找catalogs就是获取对应的Catalog对象。原创 2023-09-08 00:00:00 · 523 阅读 · 0 评论 -
Doris数据库BE——rowset版本追踪
Doris构建一个版图来为维护上述版本的变更过程,实现过程:[0-0],[1-1],[2-2],[3-3],[4-4],[5-5],[6-6],[7-7],[8-8],[9-9],[10,10]。那么会生成10个rowset,rowset从1到10编号分别[0-0],[1-1],[2-2],[3-3],[4-4],[5-5],[6-6],[7-7],[8-8],[9-9],[10,10]。给定[0-10],从节点0开始,从下标最大的边开始,发现[0-10] 就是我们要找的最小的连续一致的rowset。原创 2023-08-30 00:00:00 · 238 阅读 · 0 评论 -
Doris数据库BE——Stream load流程中事务状态
当数据在所有Executor BE节点完成写入之后,Coordinator BE节点会向FE发送Commit Transaction请求,FE会判断每一个Tablet成功写入数据的副本数量是否超过了Tablet副本总数的一半,如果每一个Tablet成功写入数据的副本数量都超过Tablet副本总数的一半(多数成功),则Commit Transaction成功,并将事务状态设置为COMMITTED;但是因为TCC是业务上的实现,所以他的适用范围更广,可以跨数据库、跨不同的业务系统来实现事务。原创 2023-08-31 00:00:00 · 682 阅读 · 0 评论 -
Doris数据库BE——Stream load
Doris是一款快速、可靠的分布式大数据仓库,是由阿里巴巴集团在2016年底开源发起的。它采用了分布式存储和计算技术,可以处理海量的数据,并且可以实现实时查询和快速分析。总体来说,Doris数据仓库是一套强大的分布式大数据处理系统,适用于需要处理海量数据的企业和组织。原创 2023-08-31 00:00:00 · 304 阅读 · 0 评论 -
Doris数据库BE——LoadChannelMgr原理解析
数据在经过清洗过滤后,会通过Open/AddBatch请求分批量将数据发送给存储层的BE节点上。在一个BE上支持多个LoadJob任务同时并发写入执行。LoadChannelMgr负责管理这些任务,并对数据进行分发。原创 2023-05-25 00:00:00 · 641 阅读 · 0 评论