信创数仓分层建模|国产数据库 ODS/DWD/DWS 分层落地规范(金仓 / 达梦 / 高斯适配)

摘要

信创数据中台建设中,很多团队直接照搬互联网数仓建模经验,用国产数据库却套 MySQL 建模思路,结果步步踩坑:分层过度复杂但性能低下、敏感数据裸奔不符合等保密评、国产数据库分区 / 列存 / 压缩特性完全没利用、指标口径混乱数据对不上。要么建了一堆表用不起来,要么合规验收反复打回。

本文基于政务、金融信创项目实战,输出ODS/DWD/DWS 三层标准分层建模规范,适配人大金仓 V9、达梦 DM9、GaussDB 三大主流国产数据库,覆盖每层定位、建模规范、存储策略、性能优化、数据流转、合规加固全流程,附命名规范、建表模板、国产库专属优化方案。照着做,既能发挥国产数据库性能,又能满足等保三级 + 密评合规要求,数据一致性 100% 可追溯。

政务选金仓,金融选达梦;开源自主选 openGauss,生态活跃成本低;政务云华为栈选 GaussDB,全栈信创一体化交付。全文无空泛理论,所有规范均经过生产项目验证,可直接落地。


一、痛点直击:信创数仓为什么不能直接搬互联网建模方案

📌 核心结论:信创数仓的核心矛盾不是数据量太大,而是合规要求高、业务场景严谨、国产数据库特性没吃透。照搬互联网四五层复杂架构,只会过度设计、性能低下、合规不达标。

1.1 四大普遍乱象

  1. 分层过度,冗余严重 搞五六层架构,ODS、DWD、DWS、ADS、DIM 层层叠加,数据冗余 3~5 倍,存储成本飙升,链路越长出错概率越高,排查问题要跨好几层。
  2. 国产库当 MySQL 用,性能低下 放着分区表、列存、压缩、向量化执行这些国产数据库特性不用,还是用 OLTP 那套范式建模、普通 B 树索引,大表查询全表扫描,数仓跑成 "慢查询仓库"。
  3. 合规缺失,验收卡壳 敏感字段不脱敏、数据没有审计、权限一锅粥,原始数据人人能看。等保、密评测评时,数据安全、权限分离、可追溯性项直接扣分。
  4. 口径混乱,指标对不上 同一指标不同层、不同主题口径不一致,业务部门对账对不上,数据可信度低,数仓变成 "数据废墟"。

1.2 信创数仓的核心原则

  • 分层极简:ODS 贴源、DWD 明细、DWS 汇总,三层足够,避免过度设计
  • 合规嵌入:脱敏、审计、权限、可追溯,从建模阶段就融入每层设计,不是事后补
  • 特性利用:充分发挥国产数据库分区、列存、压缩、并行能力,性能优先
  • 口径统一:指标、维度、编码全局统一,一个口径出数据

二、标准架构:ODS/DWD/DWS 三层分层模型(信创适配版)

2.1 整体架构图

复制代码
【业务源层】
  人大金仓 / 达梦 / GaussDB 业务系统
          ↓ SeaTunnel全量/增量同步
【ODS层 贴源层】
  保留原始数据、不做清洗、可追溯、可回滚
  → 按源系统分库、按时间分区、原始字段保留
          ↓ ETL清洗、标准化、脱敏
【DWD层 明细层】
  清洗标准化、维度关联、统一编码、敏感数据脱敏
  → 事实表+维度表、主题域划分、保留最细粒度
          ↓ 聚合、预计算
【DWS层 汇总层】
  面向主题、指标预聚合、公共维度统一
  → 按主题分、多粒度聚合、直接支撑报表/应用
          ↓
【应用层】 报表、大屏、查询、分析

2.2 三层定位对比表

层级 定位 数据粒度 保留周期 存储策略 访问权限 核心目标
ODS 贴源层 原始数据镜像,可追溯 和源库完全一致 30~90 天 低成本存储、按天分区 仅 ETL 账号可访问 保留原貌、可回溯、可核对
DWD 明细层 清洗标准化后的最细粒度数据 事务级最细粒度 6~12 个月 高性能存储、按主题分 开发、分析可访问脱敏后数据 统一口径、干净可用、支撑明细查询
DWS 汇总层 面向主题的指标预聚合 日 / 周 / 月多粒度 永久 / 按业务需求 高性能存储、宽表预聚合 业务、报表可访问 提升查询性能、统一指标输出

2.3 信创合规内置设计

  1. 权限分层:每层独立账号,ODS 原始数据最小权限,DWS 层开放业务权限,符合最小权限原则
  2. 脱敏分层:敏感字段在 ODS→DWD 过程中脱敏,DWD 及以下不出现明文敏感数据
  3. 审计全链路:每层数据读写都留痕,数据血缘可追溯,符合等保审计要求
  4. 存储分级:热数据高性能 SSD,冷数据低成本存储,符合成本与性能平衡

三、ODS 层:贴源层建模规范与国产数据库适配

ODS 层的核心是原汁原味保留源数据,不做业务清洗,只做格式对齐,目标是可追溯、可回滚、可对账。

3.1 建模核心规范

命名规范
复制代码
ods_源系统标识_表名
示例:
ods_kingbase_biz_apply    -- 金仓政务申报主表
ods_dm_biz_order        -- 达梦交易订单表
  • 统一小写,下划线分隔,源系统前缀区分不同业务库
  • 表名、字段名和源库保持一致,便于溯源和核对
字段规范
  1. 字段名称、类型、长度与源库完全对齐,不做转换

  2. 统一增加 3 个系统字段:

    复制代码
    etl_time      TIMESTAMP    -- ETL入库时间
    etl_date      DATE         -- 数据日期,分区键
    source_sys    VARCHAR(32)  -- 来源系统标识
  3. 不做任何清洗、转换、计算,保留原始数据面貌

分区策略
  • 分区键 :统一用etl_date按天分区,和同步周期对齐
  • 分区粒度:按天分区,便于回溯、重跑、清理过期数据
  • 保留周期:政务场景 30 天,金融场景 90 天,过期自动清理
数据同步
  • 首次全量:SeaTunnel 全量初始化,一次性同步历史数据
  • 日常增量:T+1 凌晨全量覆盖,或小时级增量同步
  • 对账机制:每日同步后行数校验,和源库比对确保一致

3.2 国产数据库适配要点

数据库 ODS 层存储优化方案 核心命令 / 配置
人大金仓 V9 范围分区表 + 冷热分离 + 表空间 按天创建分区,超过 7 天迁入冷表空间,开启表级压缩
达梦 DM9 范围分区 + 表空间映射 + 批量插入优化 按天分区,ODS 独立表空间,关闭日志归档提升导入速度
GaussDB 5.x 范围分区 + 行存转列存 + 压缩 原始数据行存,超过 3 天转列存,开启高压缩比

3.3 建表模板(金仓示例)

复制代码
CREATE TABLE ods_kingbase_biz_apply (
    id BIGINT,
    dept_id INT,
    apply_content TEXT,
    status INT,
    create_time TIMESTAMP,
    -- 系统字段
    etl_time TIMESTAMP DEFAULT now(),
    etl_date DATE NOT NULL,
    source_sys VARCHAR(32) DEFAULT 'kingbase'
) PARTITION BY RANGE (etl_date)
TABLESPACE ts_ods_hot;

-- 创建分区示例
CREATE TABLE ods_kingbase_biz_apply_20260901
PARTITION OF ods_kingbase_biz_apply
FOR VALUES FROM ('2026-09-01') TO ('2026-09-02')
TABLESPACE ts_ods_hot;

四、DWD 层:明细层建模规范与维度退化策略

DWD 层是数仓的核心,完成清洗、标准化、脱敏、维度关联,输出最细粒度的干净数据,是所有汇总的基础。

4.1 建模核心规范

命名规范
复制代码
dwd_主题域_事实/维度_业务含义
示例:
dwd_government_fact_apply    -- 政务主题域 申报事实表
dwd_common_dim_dept         -- 公共维度 部门维度表
  • 按主题域划分,政务、金融、公共维度等大主题分类
  • 事实表加fact前缀,维度表加dim前缀,一目了然
清洗与标准化
  1. 空值处理:数值型空值补 0,字符串空值补 '',明确空值语义
  2. 编码统一:字典码、状态值、单位统一,比如性别 0/1 统一为男 / 女,状态编码全局一致
  3. 格式统一 :日期格式统一YYYY-MM-DD HH:MI:SS,金额统一保留 2 位小数,单位统一为元
  4. 数据脱敏 :身份证、手机号、姓名、地址等敏感字段,ODS→DWD 过程中完成脱敏
    • 不可逆脱敏:哈希、掩码,用于分析统计
    • 可逆脱敏:国密算法加密,授权场景可解密
  5. 去重校验:主键去重,重复数据保留最新一条
事实表设计
  • 保留最细粒度,一条记录对应一次业务事务
  • 关联所有核心维度外键,比如部门、时间、状态、类型
  • 保留所有可度量的数值字段,不提前聚合
  • 按时间分区,按天分区,支持重跑和回溯
维度表设计
  1. 公共维度统一:时间、部门、地区、人员等公共维度全局唯一,全链路复用
  2. 缓慢变化维:用拉链表处理维度属性变化,保留历史快照
  3. 维度退化 :低基数、变化少的维度,直接退化到事实表字段,减少关联,提升性能 💡 信创数仓数据量普遍不大,优先适度维度退化,少做雪花模型,宽表性能远优于多表关联

4.2 国产数据库适配要点

数据库 DWD 层优化方案 核心优势
人大金仓 V9 事实表分区 + 联合索引 + 并行查询 多维度查询走联合索引,并行计算提升分析速度
达梦 DM9 事实表分区 + 位图索引 + 优化器提示 低基数字段位图索引性能好,Oracle 兼容模式语法平滑迁移
GaussDB 5.x 列存引擎 + 向量化执行 + 分区裁剪 大宽表列存扫描速度是行存数倍,适合分析场景

4.3 建表模板(达梦示例)

复制代码
CREATE TABLE DWD_GOVERNMENT_FACT_APPLY (
    ID BIGINT PRIMARY KEY,
    DEPT_ID INT,
    DEPT_NAME VARCHAR(100),    -- 维度退化,部门名称直接落地
    APPLY_TYPE VARCHAR(32),
    STATUS INT,
    STATUS_NAME VARCHAR(32),  -- 状态名称退化
    CREATE_TIME DATE,
    AMOUNT NUMBER(18,2),
    ETL_TIME TIMESTAMP DEFAULT SYSDATE,
    ETL_DATE DATE NOT NULL
) PARTITION BY RANGE (ETL_DATE) (
    PARTITION P202609 VALUES LESS THAN ('2026-10-01')
) TABLESPACE TS_DWD;

-- 联合索引,覆盖常用查询维度
CREATE INDEX IDX_DWD_APPLY_DEPT_DATE ON DWD_GOVERNMENT_FACT_APPLY(DEPT_ID, ETL_DATE);

五、DWS 层:汇总层建模规范与指标体系

DWS 层面向业务主题,预聚合指标、构建宽表,直接支撑报表、大屏、查询,目标是快、准、统一。

5.1 建模核心规范

命名规范
复制代码
dws_主题域_粒度_业务含义
示例:
dws_government_day_apply_stat    -- 政务主题 日粒度 申报统计
dws_finance_month_order_sum     -- 金融主题 月粒度 订单汇总
  • 明确标注聚合粒度:day/week/month/quarter/year
  • 一个表对应一个主题一个粒度,避免大而全的万能表
聚合原则
  1. 按主题聚合:一个主题一个聚合模型,比如政务申报、金融交易
  2. 多粒度并存:日、周、月多粒度聚合,不同场景用不同粒度
  3. 指标统一:同一指标口径、公式、命名全局统一,比如 "申报量" 就是 count (id),不能有的算总数有的算去重
  4. 公共维度对齐:所有聚合都按统一的维度切片,比如时间、部门、地区,便于横向对比
宽表优先策略

信创场景数据量普遍在千万级以内,优先做宽表聚合,把常用维度、指标都塞到一张宽表里,避免多表关联。查询性能比雪花模型高 3~10 倍,开发也更简单。

常用聚合方式
  • 时间维度:日汇总、周汇总、月累计、同比环比
  • 业务维度:按部门、按地区、按类型、按状态
  • 组合聚合:多维度交叉汇总,支撑多维分析

5.2 国产数据库适配要点

数据库 DWS 层优化方案 适用场景
人大金仓 V9 物化视图 + 结果缓存 + 索引全覆盖 固定报表、定期刷新场景,自动刷新物化视图
达梦 DM9 实表预聚合 + 分区索引 + 并行插入 复杂聚合场景,提前计算好,查询直接读结果表
GaussDB 5.x 列存宽表 + 向量化聚合 + 分区裁剪 大宽表多维分析,向量化执行性能优势明显

5.3 指标口径管理

  1. 建立统一指标字典,每个指标明确:名称、口径、计算公式、粒度、更新频率
  2. 所有指标从 DWS 层输出,禁止业务直接查 DWD/ODS 自定义指标
  3. 指标变更走评审流程,更新后同步通知所有使用方,避免口径混乱

六、全链路流转:ETL 调度 + 质量管控 + 血缘审计

6.1 调度策略

环节 调度频率 时间窗口 依赖关系
ODS 层同步 每日凌晨 1 点 业务低峰期 源库业务日结完成
DWD 层清洗 每日凌晨 2 点 ODS 同步完成后 依赖对应 ODS 分区数据就绪
DWS 层聚合 每日凌晨 3 点 DWD 清洗完成后 依赖对应主题 DWD 数据就绪
数据校验 每日凌晨 4 点 所有任务完成后 全链路数据质量核查
报表输出 每日凌晨 5 点 校验通过后 生成日报、推送数据

💡 生产建议:统一调度平台编排,依赖驱动,不要定时卡死时间;失败自动重试 + 告警。

6.2 三级质量管控

  1. 入库校验:ODS 层行数校验、主键非空校验,和源库一致才能入库
  2. 清洗校验:DWD 层空值校验、格式校验、脱敏校验,脏数据拦截
  3. 聚合校验:DWS 层指标对账,和明细层聚合结果比对,误差为 0 才能发布

6.3 数据血缘与审计

  1. 血缘追踪:每层数据都有来源标识,字段级血缘可追溯,问题可定位到源系统
  2. 操作审计:所有 ETL 任务、数据读写、表结构变更全程留痕,可追溯到人
  3. 版本管理:模型变更保留历史版本,可回滚、可对比

七、国产数据库专属优化:金仓 / 达梦 / 高斯分层存储最佳实践

7.1 人大金仓 V9 分层优化方案

基于 PG 内核,充分发挥分区、表空间、并行、索引能力。

复制代码
-- 分层表空间规划
ts_ods_hot    -- ODS近7天数据,SSD高性能
ts_ods_cold   -- ODS历史数据,低成本存储
ts_dwd        -- DWD明细层,SAS高性能
ts_dws        -- DWS汇总层,SSD高性能

-- 核心优化参数
effective_cache_size = 24GB    -- 优化器缓存估算
work_mem = 64MB                -- 聚合排序内存
maintenance_work_mem = 2GB     -- 索引构建、VACUUM内存
random_page_cost = 1.1          -- SSD优化
  • ODS 层:按天分区,自动冷热迁移,7 天以上自动迁入冷表空间
  • DWD 层:事实表按天分区,常用查询维度建联合索引
  • DWS 层:高频报表用物化视图,定时自动刷新

7.2 达梦 DM9 分层优化方案

Oracle 兼容体系,发挥分区、位图索引、批量处理能力。

复制代码
-- 表空间规划
TS_ODS    -- ODS层
TS_DWD    -- DWD明细层
TS_DWS    -- DWS汇总层

-- 核心优化参数
BUFFER = 8GB
SORT_BUF_SIZE = 2097152
MAX_BUFFER = 16GB
  • ODS 层:批量导入关闭归档,提升导入速度,导入完成再开启
  • DWD 层:低基数字段建位图索引,多维度组合查询性能好
  • DWS 层:预聚合实表,按分区建索引,查询直接命中

7.3 GaussDB 5.x 分层优化方案

集中式发挥列存、向量化优势,分布式场景按需扩展。

  • ODS 层:行存保留原始数据,超过 3 天转列存压缩存储
  • DWD 层:明细宽表列存,向量化执行清洗、关联、聚合
  • DWS 层:多维度聚合宽表列存,分析查询性能是行存 3~5 倍
  • 分布式场景:按主题分片,水平扩展支撑更大数据量

八、建模避坑:12 个信创数仓最容易踩的致命错误

⚠️ 坑 1:分层过度,搞四五层架构

  • 后果:数据冗余、链路复杂、排查困难、存储成本高
  • 整改:ODS/DWD/DWS 三层足够,别盲目照搬互联网大厂架构

⚠️ 坑 2:ODS 层做清洗,原始数据不可追溯

  • 后果:数据错了没法对账,没法回溯源库,出问题找不到根因
  • 整改:ODS 只贴源不清洗,所有转换都在 DWD 层做,保留原始数据可核对

⚠️ 坑 3:敏感字段不脱敏,裸奔到 DWS 层

  • 后果:等保、密评数据安全项直接不通过,存在泄露风险
  • 整改:ODS→DWD 必须脱敏,DWD 及以下不出现明文敏感数据

⚠️ 坑 4:雪花模型深度建模,大量关联查询慢

  • 后果:层层维度关联,查询要 join 五六张表,性能极差
  • 整改:适度维度退化,优先宽表,少做雪花模型,信创数据量不大,宽表性价比最高

⚠️ 坑 5:不做分区,全表扫描性能差

  • 后果:千万级表查询全表扫,一次要几十秒
  • 整改:所有事实表按时间分区,查询走分区裁剪,性能提升 10 倍以上

⚠️ 坑 6:国产数据库当 MySQL 用,特性全浪费

  • 后果:放着列存、分区、压缩、向量化不用,性能还不如 MySQL
  • 整改:针对每个数据库特性做分层优化,充分发挥国产数据库能力

⚠️ 坑 7:指标口径不统一,数出多门

  • 后果:同一指标不同报表不一样,业务对账对不上
  • 整改:统一指标字典,所有指标从 DWS 输出,一个口径对外

⚠️ 坑 8:权限一锅粥,人人都能看原始数据

  • 后果:权限失控,合规不通过,数据安全风险高
  • 整改:每层独立账号,最小权限原则,ODS 原始数据仅限 ETL 账号访问

⚠️ 坑 9:命名混乱,表不知道是干嘛的

  • 后果:维护困难,新人看不懂,重复建设
  • 整改:严格命名规范,前缀 + 主题 + 粒度 + 含义,见名知意

⚠️ 坑 10:不做数据校验,错了都不知道

  • 后果:脏数据、丢数据、重复数据,报表错误
  • 整改:三级校验机制,每层都做行数、主键、指标对账

⚠️ 坑 11:不考虑存储成本,全放高性能存储

  • 后果:历史冷数据占着 SSD,存储成本飙升
  • 整改:冷热分层,热数据 SSD,冷数据低成本存储,自动迁移

⚠️ 坑 12:没有数据血缘,出问题查不到

  • 后果:数据错误找不到来源,排查全靠猜
  • 整改:全链路血缘追踪,每个字段都能追溯到源系统源表

九、验收标准:分层建模落地 7 项必查

序号 检查项 达标标准
1 架构合理性 三层架构清晰,分层定位准确,无过度设计
2 模型规范性 命名统一、字段规范、分区合理、符合建模规范
3 数据一致性 各层数据行数对齐,指标口径统一,聚合结果可对账
4 性能达标 核心查询响应时间≤3 秒,报表出数≤10 秒
5 合规性 敏感数据脱敏、权限分层、操作审计,符合等保要求
6 可追溯性 数据血缘完整,可追溯到源系统,变更有记录
7 可维护性 文档齐全、调度清晰、异常可告警、问题可快速定位

总结

信创数仓分层建模,从来不是照搬互联网架构就行,核心是贴合信创合规要求、充分发挥国产数据库特性、极简分层、统一口径。三层架构足够支撑绝大多数政务、金融场景,过度设计只会带来成本和风险。

把模型做规范、把国产数据库特性用透、把合规嵌入每层、把质量管控跑通,就能建出性能好、合规强、数据准的生产级数仓,支撑业务分析与决策。

政务选金仓,金融选达梦;开源自主选 openGauss,生态活跃成本低;政务云华为栈选 GaussDB,全栈信创一体化交付。

📚 专栏推荐:专注 SpringBoot3 + 人大金仓 + 达梦 + GaussDB 信创实战,持续输出生产级部署、性能调优、数据中台、合规加固干货,关注不迷路。

觉得文章有用的话,欢迎点赞、收藏、关注三连,后续更新更多信创数据落地的硬核内容。

相关推荐
风哥2号44 分钟前
MySQL8.x/9.x数据库安装自动化全过程-Fgedu
数据库·mysql自动化安装
疯狂打码的少年1 小时前
【数据库技术】SQL数据查询(SELECT基本语法)
数据库·笔记·sql·oracle
阿里云云原生1 小时前
实验:回测、离线实验平台与题目级 Rubric丨AgentLoop 数据飞轮实践(四)
云原生·agent
程序员黎剑1 小时前
Redis缓存击穿:热点Key过期打崩数据库的3种解决方案
数据库·redis·缓存
Carl_.Net软开1 小时前
NSSM后台启动influx时序数据库
数据库·时序数据库
IPdodo_2 小时前
静态 IP 访问异常排查:403/429 归因与迁移验收
服务器·网络·数据库·python·网络协议·php·性能测试
DevOpenClub2 小时前
PDF 多格式解析如何避免混用输出:TEXT、HTML、XML 与 TAG 数据契约
xml·前端·数据库·pdf·html
meilindehuzi_a2 小时前
从域名到数据库:React + Node.js 项目部署全流程与用户访问链路
数据库·react.js·node.js
泡干脆面就番茄2 小时前
MySQL_流程控制_分组查询与连接查询详解
数据库·mysql