国产信创迁移实战
这是项目落地的核心部分------信创迁移实战。
一、迁移背景与路径
政策驱动(信创)+ 成本/可控性考量,将核心数仓从 Oracle 迁移至:
| 迁移路径 | 目标平台 | 场景 |
|---|---|---|
| Oracle → 高斯(GaussDB) | 华为高斯(OLAP/OLTP) | 国产数据库替换 |
| Oracle → 阿里大数据中台 | MaxCompute + DataWorks | 云上数仓+数据采集加工 |
| Oracle → Hive | Hadoop生态(Hive + Tez/Spark) | 开源大数据底座 |
迁移核心对象 :并不是迁移原始数据,而是迁移加工数据的SQL逻辑(ETL脚本、存储过程、视图)。
二、迁移的核心考量(二选一或并存)
| 维度 | 关键点 |
|---|---|
| 功能考量 | 新平台能否实现相同的业务逻辑?SQL语法、函数、窗口函数、递归查询是否兼容? |
| 数据库安全性 | 权限管控、数据加密、审计日志、行列级权限、动态脱敏是否满足行方要求? |
三、迁移全生命周期(前期→中期→后期)
四、前期:分析与规划(不能省,否则后期填坑)
1. 盘点当前数仓模型
-
按主题/业务域梳理:贷前、贷后、客户、账务、征信等。
-
区分核心模型 vs 边缘模型,决定迁移优先级。
2. 下游影响分析
-
哪些报表、API、风控系统、监管报送依赖这些模型?
-
迁移期间是否需要双跑(新老并行)?
3. 迁移周期评估
-
模型复杂度:简单汇总 → 1天;复杂多源拉链 → 3-5天。
-
个人负责模型数:50~100个(面试可具体化,如"我主导迁移了67个核心模型")。
五、中期:模型重构与开发(最耗时)
1. 模型重构的常见变化
| 重构类型 | 说明 | 示例 |
|---|---|---|
| 字段优化 | 新增/删除/重命名字段,拆分或合并字段 | 借据金额 + 利率 → 新增 月还款额 |
| 颗粒度变化 | 汇总层级调整 | 日汇总 → 月汇总 |
| 表结构调整 | 拆表(垂直/水平)、合并表 | 将个人借据明细和企业借据明细合并为统一借据明细 |
| 加载机制变化 | 全量 ↔ 增量 ↔ 切片 ↔ 拉链表 | Oracle缓慢变化维 → Hive拉链表 |
2. 新老系统映射文档(必须产出)
重点:维护完整的数据血缘映射文档
| 老系统表 | 老字段 | 新系统表 | 新字段 | 转换逻辑 | 状态 |
|---|---|---|---|---|---|
| 个人借据明细 | 借据号 | 借据明细表 | 借据号 | 直接映射 | ✅ |
| 个人借据明细 | 借据金额 | 借据明细表 | 借据金额 | 单位:分→元 | ✅ |
| - | - | 借据明细表 | 客户类型 | 新增字段,关联客户主表 | ✅ |
3. SQL差异处理(核心痛点)
🔹 DELETE 改写
Oracle支持DELETE FROM table WHERE condition,Hive不支持。
Hive方案:保留想保留的数据 → OVERWRITE覆盖。
sql
-- 原Oracle:DELETE FROM T WHERE status = '无效';
-- Hive改写:
INSERT OVERWRITE TABLE T
SELECT * FROM T WHERE status != '无效';
🔹 UPDATE 改写
Hive原生UPDATE需要ACID表(较麻烦),标准方案:UNION ALL覆盖
sql
-- 需求:将EMPNO=7369的工资改为1000
INSERT OVERWRITE TABLE emp
SELECT * FROM emp WHERE empno != 7369
UNION ALL
SELECT
empno, ename, job, mgr, hiredate,
1000 AS sal, -- 修改后的工资
comm, deptno
FROM emp WHERE empno = 7369;
🔹 其他常见差异
| Oracle | Hive/高斯 | 注意事项 |
|---|---|---|
TO_DATE |
TO_DATE 或 DATE |
格式串可能不同 |
ROWNUM |
ROW_NUMBER() |
必须用窗口函数 |
MERGE INTO |
拆成INSERT + UPDATE两段 | 或使用INSERT OVERWRITE全量刷新 |
| 存储过程/游标 | Shell/Python + SQL | 逻辑外置 |
六、后期:测试与上线(质量生命线)
1. 对比测试策略
核心原则:同一份数据 → 新老系统各自跑 → 导出到对比库 → SQL对账。
对比维度
| 维度 | 校验内容 | 对比方法 |
|---|---|---|
| 数据量 | 记录数 | COUNT(*) 对比 |
| 主键唯一性 | 是否重复、缺失 | GROUP BY 主键 |
| 字段值 | 异常值、NULL、空字符串、前后空格 | 逐字段对比 |
| 数据类型/精度 | 金额字段小数位、日期格式 | 元数据对比 + 抽样 |
| 度量字段 | 总分、汇总值、均值 | SUM、AVG、多维度GROUP BY |
| 多颗粒度 | 日/月/年、机构/产品维度 | 各维度分别汇总对比 |
对比SQL示例(两表对账)
sql
-- 新老系统差异检查:金额字段总和不一致的行
SELECT
COALESCE(a.借据号, b.借据号) AS 借据号,
a.金额 AS 老系统金额,
b.金额 AS 新系统金额
FROM 老系统结果表 a
FULL OUTER JOIN 新系统结果表 b ON a.借据号 = b.借据号
WHERE a.金额 != b.金额
OR (a.金额 IS NULL AND b.金额 IS NOT NULL)
OR (a.金额 IS NOT NULL AND b.金额 IS NULL);
2. 历史存量数据迁移(两种方案)
| 方案 | 做法 | 适用场景 | 优缺点 |
|---|---|---|---|
| 方案A:直接抽取 | 从Oracle拉取已加工好的历史结果表 | 老逻辑复杂、不想重算 | 快,但逻辑不落地新平台 |
| 方案B:基于ODS重算 | 用历史ODS层数据,在新数仓重新跑一遍加工逻辑 | 验证新平台能力、保持逻辑一致性 | 推荐,虽然慢但彻底验证 |
3. 增量数据迁移
-
老系统继续跑 → 新系统并行追数 → 最终切换
-
常用手段:双跑 + 对比 + 切流
4. 上线策略
text
分批上线(按主题/按下游)→ 试运行(观察1-2周)→ 全量切换 → 老系统下线
-
试运行重点:稳定性、性能、数据质量、下游反馈
-
回滚预案:保留老系统至少1个月
七、技术架构总览
迁移前(Oracle传统数仓)
text
Oracle (存储过程 + SQL) + Linux Crontab + Shell
迁移后(目标架构)
| 目标平台 | 组件 |
|---|---|
| 高斯(GaussDB) | GaussDB + Linux + 调度工具 |
| 阿里大数据中台 | MaxCompute + DataWorks + 数据集成 |
| Hive数仓 | Hive + Tez/Spark + Sqoop + Oracle(临时双跑) |
八、可用的量化总结
示例:xx主导了某银行信贷数仓从Oracle到Hive的信创迁移,累计迁移67个 核心模型,涵盖贷前评分、贷后预警、监管报送等主题。输出50+份 新旧映射文档,解决SQL兼容问题(DELETE/UPDATE/存储过程改造),通过全量+增量双跑对比保证数据一致性,最终实现零故障分批上线。
国产信创 - 一句话解释
信创 = 信息技术应用创新
国产信创 = 用中国自主研发的IT软硬件,替代国外的产品
简单说:把Oracle换成高斯/达梦,把Windows换成麒麟,把EMC换成华为存储------核心系统"中国造"。
一、为什么要搞信创?(背景)
| 驱动因素 | 说明 |
|---|---|
| 国家安全 | 避免关键系统受制于人(如芯片断供、软件授权停用) |
| 供应链风险 | 国外厂商可能因制裁、政治因素断供 |
| 自主可控 | 核心技术掌握在自己手里 |
| 政策要求 | 党政军、金融、能源、电信等行业被要求逐步替换 |
你项目中的 Oracle → 高斯,就是信创落地的典型案例。
二、信创覆盖的领域("全栈国产化")
text
┌─────────────────────────────────────────┐
│ 信创全栈架构 │
├─────────────────────────────────────────┤
│ 应用层 │ 国产OA、国产ERP、风控系统 │
│ 数据库层 │ 高斯、达梦、人大金仓、OceanBase│
│ 中间件层 │ 东方通、金蝶、中创 │
│ 操作系统层 │ 麒麟、统信(UOS)、欧拉 │
│ 芯片层 │ 龙芯、飞腾、鲲鹏、海光、兆芯 │
│ 服务器/存储│ 华为、浪潮、中科曙光、深信服 │
└─────────────────────────────────────────┘
你项目中涉及的 Oracle → 高斯 ,就是数据库层面的信创替换。
三、金融行业信创的时间线(为什么你在做这个)
| 阶段 | 时间 | 要求 |
|---|---|---|
| 试点期 | 2020-2022 | 头部银行、保险、证券试点替换 |
| 推广期 | 2023-2025 | 全面铺开,所有金融机构启动替换 |
| 攻坚期 | 2025-2027 | 核心系统完成国产化改造 |
你现在做这个迁移项目,正是踩在信创推广期→攻坚期的节点上。
四、你项目中涉及的信创产品
| 原国外产品 | 国产替代 | 你的场景 |
|---|---|---|
| Oracle | 高斯(GaussDB) | 数仓/OLTP数据库替换 |
| Oracle | 阿里大数据中台(MaxCompute) | 云上数仓加工 |
| Oracle | Hive(开源,但生态国产化) | Hadoop数仓底座 |
注:Hive本身是Apache开源,但在信创体系中,配合麒麟OS+鲲鹏芯片+华为存算,也算国产化方案。
五、如何回答"什么是信创"
简洁版 (30秒):
"信创是'信息技术应用创新'的简称,是国家推动的国产IT全栈替换战略。在项目中,就是把原来的Oracle数仓迁移到华为高斯数据库,目的是实现自主可控,满足监管要求。"
完整版 (1分30秒):*"信创主要解决卡脖子 问题。金融行业被要求2027年前完成核心系统国产化。我们项目做的就是数据库层的信创替换------Oracle迁到高斯/GaussDB。迁移过程中不仅要解决SQL兼容问题,还要保证数据一致性、性能不下降。xx负责了50多个风控模型的迁移,涉及贷前评分、贷后预警等核心场景。"*
六、信创常见国产数据库对比
| 数据库 | 厂商 | 特点 | 适用场景 |
|---|---|---|---|
| 高斯(GaussDB) | 华为 | 分布式、兼容Oracle | 金融核心交易/数仓 |
| 达梦(DM8) | 武汉达梦 | 类Oracle语法 | 党政军、政务 |
| 人大金仓 | 人大金仓 | 兼容性好 | 能源、交通 |
| OceanBase | 蚂蚁 | 分布式强一致 | 互联网、金融 |
| TiDB | PingCAP | 开源、HTAP | 互联网、实时数仓 |
"高斯",是目前金融行业信创数据库的第一梯队。
七、一句话总结
信创 = 国家要求 + 全栈国产化 + 你的项目正在干的事