每天写点什么2026-03-19-Doris三种存储模型

Doris 数据模型详解

1. 明细模型 (Duplicate Key Model)

明细模型是Doris中最基础的数据模型,存储最原始的明细数据,不做任何预聚合处理。

特点:

  • 适合存储需要保留所有原始数据的场景
  • 查询时会扫描所有相关数据行
  • 支持任意列作为排序键(DUPLICATE KEY)
  • 数据写入后不会进行去重或聚合

应用场景:

  • 日志分析系统,需要保留所有原始日志记录
  • 交易流水记录,需要查询每笔交易的详细信息
  • 用户行为轨迹分析,需要完整的行为序列

示例:

sql 复制代码
CREATE TABLE user_actions (
    user_id BIGINT,
    action_time DATETIME,
    action_type VARCHAR(20),
    device_id VARCHAR(50),
    ip_address VARCHAR(20)
)
DUPLICATE KEY(user_id, action_time)
DISTRIBUTED BY HASH(user_id) BUCKETS 10;

2. 主键模型 (Unique Key Model)

主键模型保证相同主键的数据行只保留最新版本,实现数据的更新和删除功能。

特点:

  • 支持数据的更新(UPDATE)和删除(DELETE)操作
  • 相同主键的数据会自动合并,只保留最新版本
  • 需要指定UNIQUE KEY作为主键列
  • 适合需要频繁更新的数据场景

应用场景:

  • 用户资料表,需要更新用户信息
  • 商品库存表,需要实时更新库存数量
  • 订单状态表,需要变更订单状态

示例:

sql 复制代码
CREATE TABLE user_profiles (
    user_id BIGINT,
    username VARCHAR(50),
    email VARCHAR(100),
    phone VARCHAR(20),
    last_login DATETIME,
    update_time DATETIME
)
UNIQUE KEY(user_id)
DISTRIBUTED BY HASH(user_id) BUCKETS 10;

3. 聚合模型 (Aggregate Key Model)

聚合模型会在数据导入时按照指定的聚合键进行预聚合计算,大幅提升查询性能。

特点:

  • 导入时自动按AGGREGATE KEY进行聚合计算
  • 数值列需要指定聚合函数(SUM, MAX, MIN等)
  • 大幅减少存储空间和查询计算量
  • 适合分析型查询场景

应用场景:

  • 网站访问统计,按天/小时聚合PV/UV
  • 销售报表,按地区/产品聚合销售额
  • 监控指标,按时间窗口聚合CPU/内存使用率

示例:

sql 复制代码
CREATE TABLE sales_summary (
    product_id INT,
    sale_date DATE,
    region VARCHAR(50),
    total_sales DECIMAL(12,2) SUM,
    order_count BIGINT SUM,
    max_price DECIMAL(12,2) MAX
)
AGGREGATE KEY(product_id, sale_date, region)
DISTRIBUTED BY HASH(product_id) BUCKETS 10;
相关推荐
染指11103 小时前
140.Agent-多Agent框架-Agent执行Skills流程
数据库·人工智能·设计模式·langchain·agents
niucloud-admin3 小时前
JAVA V6 多商户商城 开发文档——JAVA服务端
java·开发语言
fengkai45453 小时前
十二、Redis -2
运维·数据库·redis·容器
alexlifexyz3 小时前
写了个 Claude Code 插件:AI 写的 Java 违反阿里规约,就写不进文件
java
威哥爱编程3 小时前
【AI全栈12-01】Spring Boot 为何是 AI 全栈后端优选
java·spring boot·后端
威哥爱编程3 小时前
【AI全栈12-03】Spring Boot 用多模型路由把智能客服成本降下来
java·spring boot·后端
威哥爱编程3 小时前
【AI全栈12-02】Spring Boot 跑通第一个 AI 对话接口:HR 政策问答机器人实战
java·spring boot·后端
Wang's Blog3 小时前
Java 中间件之 RabbitMQ 快速入门: 异步通讯的优缺点
java·中间件·java-rabbitmq
用户094248568033 小时前
第31章:JVM字节码解释器与模板解释器源码路径
java·jvm