Doris记录

Doris是一个开源的分布式分析型数据库,最初由百度大数据部研发,目前隶属于Apache基金会。

Doris基于大规模并行处理(MPP)架构,提供高性能和实时的数据分析能力。它以极速易用的特点被广泛使用,能够应对高并发的点查询场景,同时也支持高吞吐的复杂分析场景,如用户行为分析、日志检索、用户画像分析和订单分析等。Doris具有亚秒级的响应时间,能够处理大规模数据存储和分析的需求。

一、架构原理

Doris整体架构

BE / FE

  • Doris主要分为FE、BE两个组件,FE主要负责查询的编译,分发和元数据管理(基于内存,类似HDFS NN);BE主要负责查询的执行和存储系统。

索引结构

  • Sorted Compound Key Index,可以最多指定三个列组成复合排序键,通过该索引,能够有效进行数据裁剪,从而能够更好支持高并发的报表场景
  • Z-order Index :使用 Z-order 索引,可以高效对数据模型中的任意字段组合进行范围查询
  • Min/Max :有效过滤数值类型的等值和范围查询
  • Bloom Filter :对高基数列的等值过滤裁剪非常有效
  • Invert Index :能够对任意字段实现快速检索

存储模型

  • Aggregate Key 模型:相同 Key 的 Value 列合并(求和、替换、最大值、最小值)。通过提前聚合大幅提升性能
  • Unique Key 模型:Key 唯一,相同 Key 的数据覆盖,实现行级别数据更新。(Unique 模型等同于聚合模型Aggregate Key 中的 REPLACE 方式替代)
  • Duplicate Key 模型:明细数据模型,满足事实表的明细存储。(相同的两行数据会被保留)

存储引擎

  • 列式存储,按列进行数据的编码压缩和读取,能够实现极高的压缩比,同时减少大量非相关数据的扫描,从而更加有效利用 IO 和 CPU 资源。

查询引擎

  • 采用 MPP 的模型,节点间和节点内都并行执行,也支持多个大表的分布式 Shuffle Join,从而能够更好应对复杂查询。

二、数据划分

 一张“表”的数据会被拆分到多个分区Partition。Partition 可以视为是逻辑上最小的管理单元。数据的导入与删除,都可以或仅能针对一个 Partition 进行。而一个 Partition 包含若干个 Tablet,每个 Tablet 包含若干数据行。各个 Tablet 之间的数据没有交集,并且在物理上是独立存储的。

我们以一个建表操作来说明 Doris 的数据划分。

-- Range Partition 
CREATE TABLE IF NOT EXISTS example_db.example_range_tbl
(
 `user_id` LARGEINT NOT NULL COMMENT "用户id",
 `date` DATE NOT NULL COMMENT "数据灌入日期时间",
 `timestamp` DATETIME NOT NULL COMMENT "数据灌入的时间戳",
 `city` VARCHAR(20) COMMENT "用户所在城
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值