暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

数仓建设初期数据量如何预估?

会飞的一十六 2026-04-14
42

一、数据量预估的核心依据

  1. 源系统现有数据存量

  • 业务库(MySQL/Oracle)、日志服务器、埋点系统、第三方接口的当前总数据量、单表行数、单表大小

  1. 源系统日增量(最关键)

  • 日订单量、日用户注册、日PV/UV、日日志条数、日接口调用量、日消息量。

  1. 核心业务规模指标

  • 总用户数、日活DAU、商户数、设备数、单据量、支付笔数——业务量直接决定数据量

  1. 数仓分层膨胀/压缩系数

  • ODS/DWD/DWS/ADS 每层会放大或缩小,有行业固定经验值。

  1. 数据保留周期(TTL)

  • ODS存3个月/1年?DWD永久?日志存30天?直接决定总存量。

  1. 技术架构系数

  • Hadoop 3副本、压缩比(ORC/Snappy)、冷热分离、冗余预留(30%)。

二、标准化预估公式

1. 单表日增量(基础)

日增量(GB) = 日记录数 × 单条记录大小(KB) ÷ 1024 ÷ 1024

2. 数仓每层数据量(核心)

数仓某层量 = ODS原始量 × 分层系数

3. 总存量

总存量(GB) = 历史存量 + 日增量 × 保留天数 × 3副本(默认) ÷ 压缩比

4. 集群总存储预估

集群需求 = 数仓总数据量 × 1.3(预留30%冗余)

三、数仓分层系数(经验值)

初期建设直接用这个系数,误差≤30%:

分层
系数
说明
ODS
1.0
原始同步,1:1
DWD
1.0~1.2
清洗、去重、拆维度,轻微膨胀
DWS
0.1~0.3
轻度聚合,压缩80%左右
ADS
0.01~0.05
指标/报表,极度压缩

重点:埋点/日志数据是数仓80%存储,业务数据只占20%,一定要分开估。

注意:制造业类似,制造业设备的日志数据与业务数据也需要分开估算,其中设备日志数据占绝大多数(80%)

四、案例

场景1:结构化业务数据(订单/用户/支付)

  • 日订单:10万条

  • 单条订单:2KB

  • 保留:永久

  • 历史存量:1000万条

  1. ODS日增量:

10万 × 2KB ≈ 0.19GB/天

  1. 年增量:0.19 × 365 ≈ 69GB

  2. DWD:69 × 1.1 ≈ 76GB

  3. DWS:69 × 0.2 ≈ 14GB

场景2:埋点/行为日志(占存储大头)

  • DAU:50万

  • 人均日行为:50条

  • 单条日志:1KB

  • 保留:90天

  1. 日日志量:50万 × 50 = 2500万条

  2. ODS日增量 ≈ 23.8GB

  3. 90天存量:23.8 × 90 ≈ 2142GB

  4. 3副本:2142 ×3 = 6426GB

  5. 压缩比(ORC+Snappy≈4):6426 ÷4 ≈ 1606GB

五、初期数仓建设预估原则(避免踩坑)

  1. 宁大勿小:初期估大30%,后期扩容麻烦,浪费一点成本远好过不够用。

  2. 日志优先估:日志占80%存储,业务数据可以粗略。

  3. 压缩必须算:Hive数仓默认压缩比3~5倍,不算会估大4倍。

  4. 增长预期:常规业务月增5%~15%,电商大促月增30%+。

  5. 不用追求精准:0-1阶段误差±30%完全可接受,核心是量级别错(GB/TB/PB别搞反)。

往期精彩
美团SQL面试题:用户最近消费天数&两次消费间隔计算
面试问:数仓中跨域是放在哪一层?跨域整合和联邦查询有什么区别?
用户问:指标平台与本体论有什么区别?
SQL面试提问:NTILE等频分桶和自定义区间分桶到底有什么区别?
读者问:多维场景下,维度不存在时,同环比如何计算?
同环比分析:为什么生产环境中必须用LEFT JOIN,而不用LAG?| 附实战案例
SQL实战:蚂蚁金服|大厂招聘最优选人策略
数仓面试提问:为什么不建议在ADS层写复杂SQL?
数据治理之后如何体现收益?| 阿里云
数据本体论如何指导数仓建模?
SQL库存消耗数据开发:制造业物料管理数据方案
面试提问:数仓开发如何做需求才能不出错呢?你是否有自己的一套工作SOP?
面试提问:一个新的业务如何设计数据域?
数仓之DWB层完整设计方案与实战
数据开发:如何深入理解业务并高于业务视角?
面试提问:什么是基于业务过程的数据建模?
从数仓建模角度标签体系如何落地建设?

文章转载自会飞的一十六,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论