2. 银行交易数据架构概览

在银行交易体系中,Schema 并不是一个抽象的技术名词,而是贯穿核心银行、支付、清算、渠道以及数据湖/仓的“数据契约”。它定义了每一笔交易在不同系统之间如何被理解、校验、转换和存储。理解 Schema 在各系统中的角色,是开展 Schema Registry 治理的前提。

一、核心原理:Schema 是交易语义的锚点

银行交易数据架构通常呈现“多源产生、集中清算、分层沉淀”的特征。核心银行系统负责账户与账务,支付系统负责交易发起与路由,清算系统负责跨行/跨机构资金结算,渠道系统负责客户触达,数据湖/仓负责分析与监管报送。每个系统对同一笔交易都有自己的字段命名、类型、精度和必填约束。

Schema 的核心作用有三点:

  • 语义一致性:确保“交易金额”在支付系统是 decimal(18,2),在清算系统不会变成字符串或丢失精度。
  • 契约可验证:上下游系统在发布/订阅时,能够通过 Schema 校验消息是否合法。
  • 演进可管理:当业务新增字段或调整枚举时,Schema Registry 可以控制兼容性,避免“上游改字段、下游全崩”。

Schema Registry 治理的本质,不是“统一所有系统的 Schema”,而是“在异构系统之间建立可演进的契约与映射规则”。

二、各系统中 Schema 的角色与典型挑战

下面这张表概括了五类系统中 Schema 的主要角色、典型格式和治理难点:

系统 Schema 角色 典型格式 主要挑战
核心银行系统 账务字段定义、账户与交易主数据契约 COBOL Copybook、DB2 DDL、ISO 8583 子集 字段命名晦涩、精度固定、变更审批链长
支付系统 交易报文结构、路由与风控字段 ISO 8583、JSON、Protobuf 版本碎片化、渠道扩展字段多、兼容性难控
清算系统 清算批次、结算指令、对账文件结构 ISO 20022、定长文件、XML 跨机构标准差异、批量与实时并存、对账口径不一
渠道系统 用户请求/响应、埋点与设备信息 JSON、Avro、表单定义 高频变更、前后端字段不一致、弱校验
数据湖/仓 贴源层、明细层、汇总层的数据模型 Hive DDL、Iceberg Schema、Avro Schema 漂移、分区演化、历史数据回溯困难

从表中可以看出,Schema 在不同系统中的“刚性”差异很大。核心银行和清算系统偏向强约束、低频变更;渠道和支付系统偏向高频变更、弱约束。Schema Registry 治理必须承认这种差异,而不是一刀切。

三、方法流程:从交易发起到数据沉淀的 Schema 流转

一笔银行交易从渠道发起,到最终进入数据湖/仓,Schema 会经历多次转换。典型流程如下:

  1. 渠道系统生成请求 JSON,包含用户输入、设备信息、渠道标识。
  2. 支付系统将请求转换为 ISO 8583 或内部 Protobuf 报文,补充路由与风控字段。
  3. 核心银行系统根据账务 Schema 校验账户、金额、币种,完成记账。
  4. 清算系统按 ISO 20022 或定长文件生成清算批次,与对手机构交换。
  5. 数据湖/仓通过 CDC 或消息订阅采集各系统数据,按贴源 Schema 落表,再逐层加工。

在这个过程中,Schema Registry 需要记录每个环节的 Schema 版本、兼容性策略和映射关系。例如,渠道 JSON 中的 txnAmount 映射到支付系统的 amount,再映射到核心银行的 tx_amt,最后进入数据湖的 transaction_amount。如果没有统一的映射登记,排查一笔交易就会变成“字段考古”。

{
  "schemaId": "payment.txn.v3",
  "compatibility": "BACKWARD",
  "fields": [
    {"name": "txnId", "type": "string", "required": true},
    {"name": "amount", "type": "decimal(18,2)", "required": true},
    {"name": "currency", "type": "string", "required": true},
    {"name": "channelCode", "type": "string", "required": false}
  ],
  "mapping": {
    "channel.txnAmount": "amount",
    "core.tx_amt": "amount",
    "lake.transaction_amount": "amount"
  }
}

四、案例与场景:一次渠道字段变更引发的连锁反应

某银行渠道系统计划新增 deviceFingerprint 字段,用于风控。渠道团队直接发布新版本 JSON,未在 Schema Registry 登记。支付系统使用旧版 Avro Schema 反序列化,遇到未知字段时直接丢弃;核心银行不关心该字段;数据湖贴源层因为 Schema 漂移,导致当天分区数据缺少该字段,风控模型无法回溯。

复盘发现三个问题:

  • 渠道系统未执行 Schema 变更审批,绕过了 Registry。
  • 支付系统未配置“未知字段保留”策略,导致信息丢失。
  • 数据湖未启用 Schema 演化感知,无法自动合并新字段。

Schema 治理的失败往往不是技术问题,而是流程问题:变更不登记、兼容性不校验、映射不维护,最终导致数据链路“断链”。

五、常见误区与治理要点

在银行交易数据架构中,Schema 治理常见误区包括:

  • 误区一:追求全行统一 Schema。核心银行与渠道系统的变更频率和约束强度完全不同,强行统一会导致业务僵化。
  • 误区二:只登记不校验。Schema Registry 如果只做存储,不做兼容性检查,就退化为文档库。
  • 误区三:忽略映射关系。同一语义字段在不同系统命名不同,缺少映射会导致对账和溯源困难。
  • 误区四:数据湖 Schema 放任漂移。贴源层如果不管理 Schema 演化,历史数据将无法关联分析。

治理要点:按系统分级制定兼容性策略;核心银行与清算系统采用严格向前兼容;渠道与支付系统允许向后兼容但必须登记;数据湖/仓启用 Schema 演化与版本回溯。

只有把 Schema 当作交易数据架构中的“契约资产”来管理,才能在核心银行、支付、清算、渠道与数据湖/仓之间建立稳定、可演进的数据链路,为后续 Schema Registry 的落地治理打下基础。

银行交易数据架构:Schema 流转与映射 渠道系统 JSON / Avro txnAmount 支付系统 ISO 8583 / Protobuf amount 核心银行 Copybook / DDL tx_amt 清算系统 ISO 20022 / XML SettlementAmount 数据湖 / 数据仓 贴源层 → 明细层 → 汇总层 transaction_amount Schema Registry 版本 · 兼容性 · 映射