首页/数据/数仓建模速查/OLAP 冷热分层与数据搬运
湖仓与引擎63 条

OLAP 冷热分层与数据搬运

实时分析库容量有限:热数据留在 OLAP 集群、历史数据沉到湖表;查询端可用视图或联合查询把冷热结果合并,降低存储成本。

数仓建模速查数据更新于 2026-10-13

OLAP 冷热分层与数据搬运

实时分析库(ClickHouse、Doris、StarRocks)的存储成本与容量都高于对象存储,常规做法是把近期热数据留在 OLAP 集群、历史数据沉到湖表,查询侧用视图或联邦查询把冷热两段结果合并。关键参数是下沉边界:它必须不短于业务回溯期,否则历史查询会出现空洞。

基本信息

热数据近期数据留在 OLAP 集群
冷数据历史数据沉到湖表
合并方式视图 UNION 或联邦查询
搬运粒度按分区同步并校验
关键参数下沉边界与业务回溯期

典型使用场景

  • 控制集群容量:只保留近 90 天明细,更早数据下沉到湖表
  • 跨期对比查询:用 UNION 视图把冷热两段拼成完整时间轴
  • 明细排查:涉及历史工单时走联邦查询,让过滤条件尽量下推
  • 搬迁评估:先确认业务回溯期与合规留存要求,再决定下沉边界
  • 一致性监控:定期比对冷热两段的行数与金额,及时发现搬运断档

冷热合并视图

冷热合并视图
CREATE VIEW dw.v_trade_store_day AS
SELECT store_id, dt, order_cnt, pay_amt
FROM dw.dws_trade_store_day_recent       -- 热段:OLAP 集群内明细
UNION ALL
SELECT store_id, dt, order_cnt, pay_amt
FROM lake.dws_trade_store_day_history;   -- 冷段:湖表外接
-- 查询务必带上 dt 条件,让冷热两段都能做分区裁剪
-- 例如:SELECT * FROM dw.v_trade_store_day WHERE dt >= '2026-01-01';

冷热设计要点

要点做法风险
下沉边界按业务回溯期确定边界过近导致历史缺数
合并方式视图 UNION ALL过滤不下推会全量扫描
搬运一致性按分区同步并校验中断几天出现空洞
成本分配热在 OLAP、冷在对象存储冷段查询延迟上升
冷段查询延迟明显高于热段,跨期查询要对使用方做好预期管理,高频历史区间可以再做一层预聚合。
历史数据下沉过早而回溯期设置过短,运营查询整年数据时缺一段,且往往到月度汇总时才被发现,补数成本很高。
下沉边界不要一次设到位:先从较长的保留期开始,按实际查询命中情况逐月收缩,比一次性设成最短回溯期安全得多。

易错点

  • 下沉边界早于业务回溯期:历史查询缺数据,问题常在月度汇总时才暴露
  • 冷热合并视图不带过滤条件:冷热两段全量扫描,查询成本高于直接在 OLAP 查
  • 搬运按天同步却不做校验:中断几天后数据出现空洞,且没有监控能发现
  • 把冷段接进高并发看板:对象存储查询延迟拖慢整个看板响应

数据来源与参考

  • Apache Doris 官方文档:Cold Hot Separation
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌