每天写点什么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;
相关推荐
zlwool4 小时前
图纸管理选型避坑指南
数据库·erp·设备erp·非标机械
EXI-小洲4 小时前
Java 操作 Word:字符串替换、图片插入、动态生成表格与API接口下载
java·开发语言·spring boot·word
小灰灰搞电子5 小时前
完全驾驭 Qt 与数据库:C++ ORM 框架 QxOrm 原理与实践指南
数据库·c++·qt
2601_961901705 小时前
SpringBoot使用Nacos进行application.yml配置管理
java·spring boot·spring
何以解忧,唯有..6 小时前
LangChain 工具调用(Tool Calling)实战指南
java·前端·langchain
QQ_21696290967 小时前
【源码编号:project79475】SpringBoot校内二手交易平台:商品发布、分类检索、留言交流、订单管理全流程实战
java·spring boot·后端
软件聚导航7 小时前
「聚小软 AI 助手」技术升级:从数据库检索到 RAG 知识库问答
前端·数据库·mysql·微信小程序·小程序·ai编程·rag
2601_960906727 小时前
1X发布自己的世界模型1XWM
mysql·mongodb·rabbitmq·memcached
学习星球7 小时前
单调栈——从“找下一个更大的“到柱状图中的最大矩形
数据库·c++·算法·leetcode·xcode
前端 贾公子8 小时前
第09章:上下文与记忆 (2)
java·服务器·前端