上个月,一家做化工的企业找到我,说他们想做数据治理,但卡在了一个很尴尬的地方:核心业务系统是十年前上的,厂商早就联系不上了,源代码也丢了,系统里的数据质量一塌糊涂——字段命名混乱、空值满天飞、同一张表里混着三种编码。IT 负责人问我:"这系统我们改不动,数据治理是不是就没戏了?"
业务系统改不动,数据治理还能怎么做?FineDataLink 5.0 旁路采集与质量治理方案
我给他的回答是:改不动源系统,恰恰是数据治理最常见、也最该被认真对待的场景。 很多人一提到数据治理,下意识反应是"改造源系统、规范数据录入、统一编码规则",这套思路在系统还能改的时候是对的,但在大量存量系统面前,它不现实。这篇文章,我结合 FineDataLink 5.0 的能力,讲清楚"源系统改不动"时,数据治理到底该怎么做。
一、核心结论:源系统改不动,治理的重心要后移
先给结论。当源系统无法改造时,数据治理的重心必须从"源头规范"后移到"旁路采集 + 下游治理"。 具体来说,就是三条:
其一,放弃"改源系统"的幻想,转向"旁路采集"。 源系统改不动,那就别指望它能把数据吐干净。通过 CDC 日志监听、数据库直连等方式,在不动源系统代码的前提下,把数据"旁路"采集出来。
其二,把治理动作放到 ODS 汇聚层和加工层。 数据采集出来后,在 ODS 层做汇聚,在加工层做清洗、转换、规则检测。治理的战场,从源系统转移到了数据集成平台。
其三,用数据质量规则做"兜底"。 源系统的脏数据是客观存在的,改不掉,那就用质量规则去检测、拦截、告警,让脏数据进不了下游,而不是让脏数据一路污染到报表。
这三条,构成了"源系统改不动"场景下数据治理的基本框架。下面我逐一展开。
二、真实场景:老系统是怎么把治理逼成"死局"的
我复盘过一个制造企业的案例。这家企业的核心 ERP 是 2008 年上线的,用了十几年,里面沉淀了海量的历史数据。问题在于,这套 ERP 在十几年的使用过程中,经历了多次"野蛮生长":不同时期由不同的实施方维护,字段命名没有统一规范,编码规则改了又改,还出现过几次数据迁移事故,导致部分历史数据本身就是错的。
当企业想做数据治理时,面临的是一个死局:源系统改不动(厂商失联、代码丢失、改动风险极高),但源系统的数据质量又严重拖累了所有下游的分析和报表。
数据团队尝试过两条路,都走不通。前一条路是"改造源系统",结果发现厂商早就联系不上,代码也没人维护,改一个字段可能引发连锁故障。后一条路是"在报表层打补丁",结果发现报表层的补丁越打越多,最后报表逻辑复杂到没人敢动。
这个案例让我得出一个判断:当源系统改不动时,任何试图"从源头解决"的努力都是徒劳的,正确的做法是承认源系统脏,然后把治理的重心放到数据采集和加工环节。
三、旁路采集:不动源系统,也能把数据拿出来
旁路采集,是"源系统改不动"场景下的核心手段。它的思路是:不修改源系统的代码,不侵入源系统的业务逻辑,通过技术手段把数据"旁路"出来。
3.1 两种主要的旁路采集方式
| 采集方式 | 技术原理 | 适用场景 | 对源系统的影响 |
|---|---|---|---|
| 数据库直连抽取 | 通过 JDBC 直连源数据库,定时抽取数据 | 数据量中等,可接受定时延迟 | 几乎无影响,只读查询 |
| CDC 日志监听 | 监听数据库的日志变化,实时捕获增量数据 | 数据量大,需要实时或准实时 | 无侵入,只读日志 |
这两种方式的共同点是:都不修改源系统的代码,都不侵入源系统的业务逻辑。 数据库直连抽取,是把源数据库当成一个"只读数据源",定时把数据抽出来;CDC 日志监听,是监听数据库的日志文件,实时捕获数据的增删改变化。
FineDataLink 同时支持这两种方式。它的定时任务支持 JDBC 直连抽取,数据管道支持 CDC 实时同步。对于"源系统改不动"的场景,这两种方式恰好构成了完整的旁路采集能力。
3.2 旁路采集的三个关键点
旁路采集听起来简单,做起来有三个关键点,做不好就会出问题。
其一,采集不能影响源系统的性能。 老系统本来就脆弱,如果采集任务在业务高峰期大量读库,可能把源系统拖垮。所以采集任务要合理设置执行时间,避开业务高峰,或者限制并发。
其二,采集要能处理脏数据。 源系统的数据是脏的,采集任务不能因为遇到一条脏数据就整体失败。FineDataLink 的定时任务支持脏数据容忍,可以设置脏数据阈值,超过阈值才失败,避免"一颗老鼠屎坏一锅汤"。
其三,采集要能增量。 老系统的数据量可能很大,全量采集成本高。CDC 日志监听天然支持增量,定时抽取也可以通过增量字段(如时间戳、自增 ID)实现增量抽取。
四、ODS 汇聚与清洗:治理的战场在这里
数据旁路采集出来后,治理的战场就转移到了数据集成平台。这里的关键动作是 ODS 汇聚、清洗、转换。
4.1 ODS 汇聚:把脏数据先"原样"收进来
ODS 层的作用,是把源系统的数据"原样"汇聚进来,不做加工。这一步的价值在于:先把数据完整地、原样地收进来,为后续的清洗和治理提供一个稳定的基础。
很多人会问:源系统数据这么脏,为什么不直接清洗?答案是:如果边采集边清洗,一旦清洗逻辑出错,原始数据就丢了,想重新清洗都无从下手。 先把脏数据原样收进 ODS,再在加工层清洗,这样即使清洗出错,也能回到 ODS 重新来。
4.2 清洗与转换:在加工层把数据"洗干净"
ODS 汇聚之后,是清洗和转换。这一步要解决源系统数据的主要问题:字段命名混乱、空值、编码不一致、重复数据等。
FineDataLink 的数据转换能力,提供了丰富的清洗算子。字段映射解决命名混乱,空值处理解决缺失值,类型转换解决编码不一致,去重解决重复数据。这些清洗动作,都在可视化的数据开发画布里完成,不需要写代码。
4.3 规则检测:用质量规则做兜底
清洗之后,还要用数据质量规则做兜底。因为清洗只能处理"已知的脏数据",对于那些"未知的、突发的"数据质量问题,需要靠质量规则来检测和拦截。
FineDataLink 5.0 的数据质量模块,支持数据质量六性(完整性、一致性、准确性、不重复性、时效性、有效性)的规则检测。质量检测任务可以嵌入到定时任务里,实现"清洗 → 检测 → 告警"的自动化。
五、一个完整的旁路采集与质量治理方案
把上面的环节串起来,就是一个完整的"源系统改不动"场景下的数据治理方案。我用一张表把这个方案的各个环节、动作和产出梳理清楚。
| 环节 | 核心动作 | 使用的 FineDataLink 能力 | 产出 |
|---|---|---|---|
| 旁路采集 | 不动源系统,采集数据 | 定时抽取 + CDC 实时同步 | 源数据进入 ODS |
| ODS 汇聚 | 原样收数据,不加工 | 数据同步节点 | 稳定的 ODS 层 |
| 清洗转换 | 字段映射、空值处理、去重 | 数据转换算子 | 干净的加工层数据 |
| 规则检测 | 六性规则检测 | 数据质量模块 | 质量报告 + 告警 |
| 下游供数 | 干净数据供下游 | 数据输出 | 数仓、报表数据 |
这个方案的核心逻辑是:源系统脏,没关系,把脏数据原样收进来,在平台里洗干净,再用质量规则兜底,最后把干净数据供出去。 治理的战场,从源系统转移到了数据集成平台。
六、案例数据:老系统治理的真实效果
讲一个案例。安特威是一家工业阀门制造企业,它的业务系统里同样存在大量历史遗留的数据问题。在数据治理上,安特威面临的核心挑战,就是如何在不动核心业务系统的前提下,把数据治理做起来。
安特威用 FineDataLink 构建了数据集成和治理体系。通过旁路采集,把核心业务系统的数据采集出来;通过 ODS 汇聚和清洗转换,把脏数据洗干净;通过数据质量规则,对关键数据做检测和把关。最终,安特威实现了业务数据的统一汇聚和治理,为下游的分析和决策提供了可靠的数据基础。
这个案例的价值在于:它证明了"源系统改不动"不是数据治理的死局,只要把治理的重心从源头后移到采集和加工环节,数据治理照样能做起来。
再看一个数据规模更大的案例。厦钨新能源是新能源材料领域的头部企业,它的数据治理需求更复杂。厦钨新能源用 FineDataLink 打通了多个业务系统的数据,构建了统一的数据集成平台,为后续的数据分析和数据治理打下了基础。这个案例说明,旁路采集和统一汇聚,是后续所有数据治理工作的前提——没有这一步,谈治理就是空中楼阁。
六、补充:信创环境下的老系统治理
讲到这里,我必须单独强调一个在"源系统改不动"场景里越来越重要的问题——信创环境。很多企业的老系统,恰恰是信创替代的重点对象,而信创替代又往往和"源系统改不动"叠加在一起,让数据治理的难度进一步上升。
具体来说,信创环境下的老系统治理,有三个特殊的难点。
其一,源数据库正在从 Oracle、SQL Server 迁移到达梦、KingbaseES、OceanBase、GaussDB 等国产数据库。 这个迁移过程本身就会产生数据质量问题——迁移前后的数据格式、编码、精度可能不一致,迁移过程中可能出现数据丢失、重复。数据治理平台必须能同时支持国产数据库的采集和治理,才能在这个过渡期把数据质量稳住。
其二,老系统的数据要和新系统的数据统一汇聚。 信创替代往往是"新系统上国产库、老系统逐步退役"的渐进过程,这个过程中,老系统的数据和新系统的数据要在一个平台里统一汇聚、统一治理。如果数据集成平台不支持国产数据库,这个统一汇聚就做不成。
其三,国产数据库的 CDC 采集能力参差不齐。 达梦、KingbaseES、OceanBase、GaussDB 这些国产数据库,各自的日志机制、CDC 支持程度不一样。一个数据集成平台如果只支持 MySQL、Oracle 的 CDC,不支持国产数据库的 CDC,那在信创环境下做旁路采集就会受限。
FineDataLink 5.0 在信创适配上做了专门的覆盖。它支持达梦 DM8、人大金仓 KingbaseES、OceanBase、GaussDB、PolarDB-X 等信创数据源的实时同步,也支持这些国产数据库的定时抽取。对于正在做信创替代的企业来说,这一点直接决定了"源系统改不动"场景下的数据治理能不能落地。
我接触过一个央企的案例。这家企业在信创替代过程中,核心业务系统从 Oracle 迁移到了达梦,迁移过程中出现了大量数据质量问题。他们用 FineDataLink 做旁路采集和数据治理,通过达梦的 CDC 实时同步把数据采集出来,再用数据质量规则做检测和把关,最终在信创环境下稳住了数据质量。这个案例说明:信创替代不是数据治理的障碍,反而是数据治理的契机——趁迁移的机会,把数据治理一起做了。
七、不同情况下的行动建议
"源系统改不动"的场景,不同企业的具体情况差异很大。我按源系统的"改不动程度"和"数据脏的程度",分三档给建议。
1. 源系统能小改,数据不太脏
这类企业最幸运。源系统虽然整体改不动,但可以做一些小改动(比如补几个字段、修几个明显的错误),数据质量整体还行。
建议:优先做"源头小改 + 旁路采集"的组合。能改的源头问题先改掉,改不动的交给旁路采集和下游治理。不要一上来就上全套治理,先解决最痛的问题。
2. 源系统完全改不动,数据比较脏
这类企业是"源系统改不动"场景的典型。源系统碰不得,数据质量又差。
建议:老老实实走"旁路采集 + ODS 汇聚 + 清洗转换 + 规则检测"的完整链路。重点是把 ODS 层建起来,把清洗逻辑做扎实,把质量规则配到位。这一步做好了,脏数据就进不了下游。
3. 源系统改不动,且数据质量极差、历史包袱重
这类企业最棘手。源系统碰不得,数据质量极差,还有大量历史遗留问题。
建议:分两步走。前一步,先把"增量数据"治理起来——从现在开始,新产生的数据走旁路采集 + 清洗 + 检测,保证新数据是干净的。后一步,再逐步处理"存量数据"——对历史脏数据做专项清洗,能洗的洗,洗不了的标注出来,不让它污染下游。不要试图一次性把历史包袱全解决,那会拖垮整个项目。
七、补充:老系统治理的三个常见误区
在"源系统改不动"的场景里,我见过太多企业踩进同一个坑。这里把三个最常见的误区列出来,帮你提前避坑。
误区一:把"数据治理"等同于"数据清洗"
很多人以为数据治理就是"把脏数据洗干净"。这个理解太窄了。数据清洗只是数据治理的一个环节,治理还包括数据标准、数据质量规则、数据血缘、数据安全等一系列内容。在"源系统改不动"的场景下,如果只做清洗、不做质量规则和血缘,那脏数据今天洗了明天又脏,治理永远做不完。
正确的理解是:清洗解决"当下的脏数据",质量规则解决"未来的脏数据",血缘解决"脏数据从哪来"。 三者缺一不可。
误区二:指望一次性把历史数据全治理干净
我在前面已经提过,这里再强调一次。历史脏数据是十几年积累下来的,情况极其复杂,一次性治理的成本高到不现实。更糟的是,一次性治理往往伴随着"大而全"的清洗规则,这些规则一旦出错,反而会把原本还能用的数据搞坏。
正确的做法是"先增量、后存量、逐步消化"。 先把新数据的质量管住,再对历史数据做专项、分批的治理。
误区三:忽视 ODS 层,边采集边清洗
这个误区很隐蔽,但危害很大。有些企业为了"省事",在采集的同时就做清洗,把清洗后的数据直接入库。结果一旦清洗逻辑出错,原始数据就丢了,想重新清洗都无从下手。
正确的做法是"先原样收进 ODS,再在加工层清洗"。 ODS 层是数据治理的"安全垫",它保证了原始数据永远有备份,清洗可以反复重来。
这三个误区,本质上是同一个问题:把数据治理想简单了。 数据治理是一个系统工程,尤其是"源系统改不动"的场景下,更需要完整的方案设计,而不是零敲碎打的补救。
八、选型时的三个关键验证
最后,给你三个在选型时一定要验证的点,这三个点最能暴露一个平台在"源系统改不动"场景下的真实能力。
其一,验证旁路采集的无侵入性。 让厂商现场演示,对一个"改不动"的源数据库做 CDC 采集。重点看采集过程是不是真的不动源系统代码、不影响源系统性能。如果厂商需要你在源系统里加触发器、改配置,那它的"旁路采集"就有水分。
其二,验证脏数据容忍能力。 让厂商演示,源数据里混入脏数据(空值、错误类型、超长字段)时,采集和清洗任务能不能正常处理,而不是整体失败。这个能力,直接决定了老系统治理能不能落地。
其三,验证质量规则的嵌入能力。 让厂商演示,质量检测任务能不能嵌入到数据处理流程里,检测不通过时能不能自动告警、阻断下游。如果质量检测是"事后手动跑",那它的治理能力就是残缺的。
"源系统改不动"场景下的数据治理能力,不体现在 PPT 上的功能清单,体现在一次真实的"脏数据采集 → 清洗 → 检测 → 阻断"的端到端演示里。
九、数据质量六性:老系统治理的检测标尺
前面反复提到"数据质量六性",这里把它展开讲清楚。因为它是"源系统改不动"场景下,衡量治理效果的核心标尺。FineDataLink 5.0 的数据质量模块,正是围绕这六性来构建检测规则的。
| 质量维度 | 检测内容 | 老系统常见问题 | 典型检测规则 |
|---|---|---|---|
| 完整性 | 数据是否缺失 | 关键字段大量为空 | 主键、必填字段非空检测 |
| 一致性 | 数据是否前后一致 | 同一字段多种编码 | 编码规范、口径一致检测 |
| 准确性 | 数据是否真实准确 | 历史数据本身是错的 | 值域、格式、逻辑校验 |
| 不重复性 | 数据是否重复 | 迁移导致重复记录 | 主键重复检测 |
| 时效性 | 数据是否及时 | 采集延迟、数据过期 | 更新频率、时间戳检测 |
| 有效性 | 数据是否可用 | 格式错误、类型错误 | 类型、长度、枚举检测 |
这张表的价值,在于它把"数据质量"这个抽象概念,落到了六个可检测、可量化的维度上。老系统治理的成效,最终要体现在这六个维度的检测通过率上。 如果治理做完了,但完整性、一致性这些维度的检测通过率没有提升,那治理就是白做了。
在实际操作里,我建议企业按"先完整性、后准确性、再其他"的顺序来配置质量规则。因为老系统最普遍的问题是字段缺失(完整性),其次是数据错误(准确性),先把这两类最痛的规则配上,再逐步扩展到其他维度。
还有一个细节值得注意:质量规则不是配得越多越好。 规则太多,会导致大量的误报和告警,反而让数据团队疲于应付。正确的做法是,先针对最关键的几张核心表、最关键的几个字段,配最关键的几条规则,跑顺了再逐步扩展。
最后,我想把"源系统改不动"这件事的本质再点透一次。很多企业把老系统当成数据治理的"拦路虎",觉得只要系统改不动,治理就没法做。但换个角度看,老系统恰恰是数据治理价值最容易被看见的地方。 因为老系统的数据最脏、问题最多、对下游的拖累最重,一旦通过旁路采集和下游治理把这些问题解决了,治理的成效会立竿见影地体现在报表准确率、对账效率、决策质量上。
所以,与其纠结"源系统为什么改不动",不如把精力放在"改不动的前提下,怎么把治理做起来"。旁路采集解决"数据怎么拿出来",ODS 汇聚解决"数据怎么稳住",清洗转换解决"数据怎么洗干净",质量规则解决"数据怎么不再脏"。这四步走通了,"源系统改不动"就不再是数据治理的死局,而是一个可以被系统化解决的技术问题。
常见问题解答(FAQ)
1. 源系统改不动,是不是意味着数据治理永远做不彻底?
不是。源系统改不动,只是意味着"源头规范"这条路走不通,但"旁路采集 + 下游治理"这条路是通的。数据治理的目标是"让下游用上干净的数据",而不是"让源系统变干净"。只要能把脏数据在采集和加工环节拦截住、洗干净,治理就是有效的。
核心判断:数据治理的彻底性,不取决于源系统改不改得动,而取决于下游治理做得到不到位。
2. CDC 旁路采集,会不会影响老系统的性能?
这是很多人担心的问题。CDC 日志监听的技术原理是读取数据库的日志文件,而不是直接查询业务表,所以对源系统的影响很小。但要注意,如果源数据库的日志量特别大,或者采集任务的配置不当,还是可能对源系统造成一定压力。所以采集任务要合理配置,避开业务高峰。
核心判断:CDC 旁路采集对源系统的影响是可控的,关键在于合理配置,而不是技术本身有风险。
3. 老系统的历史脏数据,要不要一次性清洗干净?
我的建议是不要。历史脏数据量大、情况复杂,一次性清洗的成本极高,而且容易出错。更务实的做法是:先把增量数据治理起来,保证新数据干净;历史脏数据做专项处理,能洗的洗,洗不了的标注隔离,逐步消化。
核心判断:历史脏数据的处理,要"先增量、后存量、逐步消化",不要指望毕其功于一役。 治理是一个持续迭代的过程,而不是一次性的工程。