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

doris数据分片逻辑

        Apache Doris 的数据分片逻辑采用多级分区策略,通过分区(Partition)+分桶(Bucket)‌ 的复合机制实现数据高效管理与查询优化,具体逻辑如下:


一、分层逻辑架构

  1. 分区 (Partition)

    • 作用‌:按业务场景划分数据范围,支持时间范围分区‌(如按天/月)或 ‌枚举值分区‌(如按地区/类型)
    • 优势‌:通过分区剪枝减少查询扫描范围,例如查询某时段数据时仅需扫描对应分区
    • 语法示例‌:PARTITION BY RANGE(date) (PARTITION p202305 VALUES [('2023-05-01'), ('2023-06-01')))
  2. 分桶 (Bucket)

    • 作用‌:在分区内进一步将数据划分为逻辑分桶,支持 ‌哈希分桶‌(按指定列哈希)或 ‌随机分桶
    • 优势‌:保证数据均匀分布,并行计算时负载均衡,提升查询效率
    • 语法示例‌:DISTRIBUTED BY HASH(user_id) BUCKETS
  3. Tablet

    • 定义‌:分桶后的最小物理存储单元,每个分桶对应多个 Tablet
    • 特性‌:支持多副本存储(默认3副本),保障数据可靠性和查询高可用性

二、数据分布策略

  • 横向扩展‌:分区支持动态增删,适应时间序列数据增长需求
  • 纵向切分‌:分桶数量和字段可配置,优化不同查询模式(如高频点查选择高基数列分桶)
  • 负载均衡‌:数据自动均匀分布到集群节点,避免热点问题

三、典型应用场景
‌        时序数据存储‌
                按时间分区后哈希分桶,加速时间范围过滤与聚合查询
        ‌高并发点查‌
                选择高基数列(如用户ID)分桶,利用前缀索引快速定位数据块
        ‌宽表分析‌
                随机分桶分散存储压力,结合列式存储优化复杂查询性能

四、示例分片流程

-- 创建复合分区表
CREATE TABLE user_behavior (date DATE,user_id INT,action VARCHAR(20)
) 
PARTITION BY RANGE(date) (PARTITION p202305 VALUES [('2023-05-01'), ('2023-06-01'))
)
DISTRIBUTED BY HASH(user_id) BUCKETS 8;

        物理存储‌:每个 user_id 哈希值映射到 8 个分桶,每个分桶对应多个 Tablet,最终存储为物理文件
‌        查询优化‌:查询 date='2023-05-15' AND user_id=123 时,仅扫描 p202305 分区中对应分桶的 Tablet
        通过这种多层分片机制,Doris 平衡了数据管理灵活性与查询性能需求。

http://www.xdnf.cn/news/557587.html

相关文章:

  • RFID技术在半导体晶圆卡塞盒中的应用方案
  • C语言学习笔记之结构体
  • Cribl 在的function 的活用 (pipeline中)
  • day018-磁盘管理-案例
  • PySide6 GUI 学习笔记——常用类及控件使用方法(常用控件调色板QPalette)
  • Linux X86平台安装ARM64交叉编译器方法
  • 如何在 AOSP 中判断一个源文件属于哪个模块(以 CameraService 为例)
  • 首次中医知识问答模型微调
  • CSS display有几种属性值
  • 深入理解 Python 中的几种方法:实例方法、类方法、静态方法与特殊方法
  • leetcode 162. Find Peak Element
  • python新手学习笔记①
  • Linux探秘:驾驭开源,解锁高效能——基础指令
  • Git命令使用全攻略:从创建分支到合并的完整流程
  • 大模型高效微调技术全面解析:从PEFT原理到实战应用
  • 项目进度延误,如何按时交付?
  • 预训练模型:深度学习的通用特征引擎
  • Greenplum数据库维护篇之常用操作指导
  • TripGenie:畅游济南旅行规划助手:个人工作纪实(十八)
  • Windows逆向工程提升之IMAGE_DOS_HEADER
  • 定时任务延迟任务
  • linux内核编译学习笔记
  • Java异常处理与File类终极指南
  • 【基础知识】SPI协议的种类及异同
  • 数据库 1.0.1
  • DAY28类
  • MYSQL备份恢复知识:第四章:备份锁
  • 【优秀三方库研读】在 quill 开源库中为什么封装 safe_fwrite,而不是直接使用系统 fwrite
  • MySQL中添加一个具有创建数据库权限的用户
  • Java并发进阶系列:深度讨论jdk1.8 ConcurrentHashMap并发环境下transfer方法桶位分配过程