尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

银行数据仓库架构设计:分层策略、模型规范与血缘质量体系

银行数据仓库架构设计:分层策略、模型规范与血缘质量体系 银行的数据仓库很多人一开始以为就是“把业务系统的数据搬过来再出报表”。真正扎进去才发现搬数据只是最外层的事最难的是数据怎么组织、怎么分层、怎么让业务人员看得懂、怎么让口径不打架这些统统属于数据架构的范畴。这个系列前面聊了不少基础内容这篇把焦点放到一个核心问题上一套银行数据仓库的数据架构到底应该怎么搭。很多银行的数据团队不是没有架构而是架构散落在各个人脑子里。你做你的贴源层我做我的汇总层名字叫法各异字段口径靠口头相传最后的结果就是数仓越建越大但一个个都是“烟囱”重复计算严重业务方取数还是要找三五个人确认口径。所以这篇文章想讲的不是某个工具怎么用而是从架构层面把一套可持续演进的数据仓库体系讲清楚包括分层策略、模型设计、命名规范、血缘管理、质量校验以及我踩过的一些坑。1. 数据架构设计的切入点先想清楚“为谁服务”1.1 银行数据仓库为什么不能照搬互联网的做法我见过不少从互联网行业转到金融领域的数据工程师上手第一件事就是想把数仓搞成“大宽表一把梭”觉得只要把数据都拉进一张表查询就快业务就满意。这个思路在部分场景下是成立的但在银行这种数据环境里往往行不通。原因有几个银行的源系统数量多、数据链路长一个简单指标可能涉及核心系统、信贷系统、渠道系统、总账系统等多套来源银行对数据的准确性、可追溯性要求极高监管报送的数据出了问题不是返工那么简单再加上银行的数据生命周期长历史数据动辄保留数年数据结构还经常因为监管口径变化而调整。所以银行数据仓库的数据架构首要考虑的不是“性能极致”而是“确定性”和“可维护性”。工时、快不重要正确、稳定、哪天出了问题能快速定位到根因这才是第一位的。互联网那套“快速迭代、差不多就行”的思路放到银行环境里会吃大亏。1.2 架构的核心目标降低端到端的认知成本我做了几年银行数仓之后最大的体会是数据架构的本质是在降低“认知成本”。什么叫认知成本就是一个人从拿到业务需求到找到数据、写对SQL、得到正确结果整个过程需要耗费的理解和沟通成本。架构搭得好这个链路是清晰的业务人员知道去哪找数据开发人员知道建表该放哪层分析师知道指标的口径定义在哪里查。反过来架构搭得不好会出现什么情况业务人员取个数要问三个人开发人员改个表要担心下游报表挂掉分析师写SQL时要在十几个相似命名的表里猜哪个是对的。这些都不是技术能力问题而是架构没有把职责边界划清楚。数据架构做得好不好一个很朴素的判断标准就是一个刚入职的数据分析师能不能在两天内自己找到数据并产出正确的报表。如果他要反复找人确认那架构一定有问题。1.3 先定原则再定方案任何一家的数仓架构都不可能完全一样但架构设计的原则是可以通用的。我在银行实践过程中慢慢沉淀出几条硬性原则单一事实来源。每一个指标、每一个维度在架构上必须有唯一的权威定义和唯一的加工位置。重复计算是口径冲突的最大根源。层次之间职责清晰。贴源层只做接入明细层只做标准化汇总层只做聚合应用层只服务特定场景。禁止跨层乱取数。命名即文档。看到表名就能知道它是哪一层、属于哪个主题、是增量还是全量、对应哪个业务日期这是一个合格数仓的基本功。血缘可追溯。从应用报表到原始系统每一层的数据变换路径都要能查得到这是银行监管审计的硬要求。这些原则听起来很虚但后续所有的模型设计、表结构规范、调度依赖、质量规则都是围绕它们展开的。2. 分层架构设计主流的四层结构2.1 为什么一定要分层而不是“一张大表走天下”很多刚接触数仓的朋友会问你们搞这么多层ODS、DWD、DWS、ADS不就是在多复制几份数据吗直接查源系统不就行了这里需要解释一下分层的本质。分层的第一个作用是职责隔离。源系统的数据模型是面向业务操作的它考虑的是“怎么让这笔交易处理得更快”而数仓需要的是“怎么让这批数据更好地被分析”。如果所有分析都直接压在源系统上一个是性能撑不住一个是分析逻辑一旦写错会影响源系统的稳定性。所以需要把数据先“搬”到数仓这一侧再逐步转换成适合分析的形态。分层的第二个作用是并行工程。没有分层的时候A团队要做客户分析B团队要做风险报表大家都从源系统直接抽数各自写一套清洗逻辑谁跟谁都不一样。有了分层之后底层的数据接入和清洗是统一的上面的应用层各取所需大家在一个公共基础上工作效率高得多。分层的第三个作用是权限管控。银行对数据安全非常敏感不同角色能看的数据范围不一样。通过分层可以在不同层上设置不同的访问控制粒度。比如ODS层限制最严DWS汇总层相对宽松ADS层按场景授权既保证安全又不阻碍正常使用。2.2 主流四层结构ODS、DWD、DWS、ADS在银行数仓的实践里绝大多数团队都会采用一种“四层结构”只是在不同银行里的叫法略有差异比如有的叫“贴源层、整合层、汇总层、应用层”有的叫“操作数据存储层、明细数据层、汇总数据层、数据集市层”。我这里统一用互联网行业也比较熟悉的叫法ODS、DWD、DWS、ADS。层英文定位数据粒度主要职责ODSOperational Data Store贴源层与源系统保持一致把源系统的数据完整接入数仓基本不转换保留原始信息DWDData Warehouse Detail明细整合层业务过程级别清洗、标准化、去重、统一编码按主题域组织明细数据DWSData Warehouse Summary汇总宽表层分析主题级别面向高频分析场景做公共粒度的汇总、宽表加工ADSApplication Data Store应用数据集市层报表/应用级别面向具体报表或业务应用定制化加工体量小但口径精确ODS层是整个数仓的门面。这一层的核心要求是“全量保留、结构贴近源系统”。它的作用不是给业务人员看而是作为数据接入的第一站保证原始数据不失真。很多银行在做数据迁移或者数据质量回溯时都要依赖ODS层的完整数据所以这一层一般不会轻易删除历史数据。DWD层是数仓里最考验建模功力的地方。这里要把来自几十个系统的数据按照业务过程重新组织字段统一命名编码统一口径脏数据按规则处理。这一层做得好上面所有层都是顺水推舟这一层做得糙后面所有报表都会返工。我个人的经验是DWD层建设的时间通常要占整个数仓开发周期的40%以上。DWS层很大程度上是“为性能而生”的。如果所有报表都直接跑DWD层的明细数据几十亿行的表每天被几十个报表任务反复扫描既浪费资源又拉长调度时间。DWS层面向分析主题做公共汇总把最常用的维度组合和指标预先算好下游应用直接查结果就行。公共汇总层的好处在于“一次加工、多处复用”避免每个报表团队都自己汇总一遍。ADS层是最接近业务的一层。它不追求通用性反而强调定制化。同一个指标在不同部门的报表里展示格式可能不同在ADS层就可以分别处理。这一层的表一般数量最多、生命周期最短随着业务需求变化经常增减所以对它的管理要求是“轻量、快速、可下线”。2.3 分层的常见变异别把架构做成教条上面说四层结构是大多数银行的主流做法但我在具体实践过程中也见过不少变体而且这些变体往往是根据自身条件做的合理调整。第一种变体是在ODS和DWD之间增加一个“轻度汇总层”。有些银行业务系统数据量特别大明细数据直接落DWD会有大量重复清洗计算干脆在接入的时候做一个轻度的标准化和压缩把一些字段拼接、类型转换提前做掉减少后续层的负担。第二种变体是把维表和主数据单独抽出来做一层。银行里客户、机构、产品这些维度的数据分散在多个系统里变更频繁。如果不单独管理每个事实表都关联一份维表镜像很容易出现不同表中维度数据不一致的情况。所以很多团队会做一个“维表层”统一管理缓慢变化维和主数据事实表在DWD或DWS层通过外键关联即可。第三种变体是数仓分层和数据湖分层并存。现在不少银行引入数据湖技术把非结构化数据、日志数据、历史归档数据放在湖里再把经过加工的结构化数据落入数仓。这种模式下原来的ODS层可能被数据湖的原始区部分替代DWD和DWS层仍然保留在数仓侧。架构的逻辑分层不变但物理承载的引擎发生了变化。不管怎么变核心还是要守住分层的职责边界。我见过最痛心的案例是有的团队在处理临时需求时嫌走完整分层链路麻烦直接从ODS拉数去做汇总分析快速交付了一个报表。短期看确实快但过两个月这个临时报表要变成固定报表时发现它的加工逻辑散落在别人看不懂的脚本里口径没人说得清重新迁移又怕数据对不上。这种架构上的“技术债”比代码层面的技术债更难还。3. 数据模型设计与主题域划分实操3.1 两种建模思路在银行环境里的配合使用聊完分层下一个绕不开的话题是建模。数据仓库的建模方式最常被提起的两大流派是范式建模和维度建模。范式建模以第三范式3NF为代表强调消除数据冗余保证数据一致性适合作为企业级数据模型的基础维度建模则以星型模型和雪花模型为代表强调查询性能和易用性适合面向分析场景。银行数仓的典型做法是“混合建模”底层基础数据层用范式建模思路将全行的核心业务实体梳理成规范化的关系模型形成企业级数据模型上层汇总层和应用层用维度建模思路把最常用的分析场景建模成星型结构。这个思路很好理解。底层就好比一个大型仓库所有货品要分门别类、入库登记、统一编码追求的是“管理规范”上层就好比超市货架摆出来的商品已经是按顾客的购买习惯组织好的追求的是“拿了就走”。如果仓库里没有规范化的底层超市货架上的东西就会来源混乱、标签不一致如果只有仓库没有货架顾客想买瓶水还要翻遍整个仓库效率太低。3.2 金融主题域怎么划分主题域是数据架构里比较抽象但又非常关键的概念。通俗地说主题域就是把全行的业务数据按照业务视角分成几个大的板块每个板块内部的数据在业务语义上有紧密关联板块之间通过公共实体相关联。银行数仓的主题域划分通常从业务价值链来考虑。核心的域大概包括客户域、产品域、协议域、机构域、渠道域、事件域、财务域、营销域、风险域、公共域。客户域个人客户、对公客户、客户关系、客户评级等是银行各种业务围绕的中心。产品域存款产品、贷款产品、理财、基金、保险等描述银行“卖什么”。协议域账号、合同、合约等描述客户与银行之间“定了什么”是连接客户和产品的纽带。机构域总行、分行、支行、网点等组织架构以及渠道归属。事件域交易流水、存取款记录、转账记录、利息计算等描述“发生了什么”。财务域总账、科目余额、利润等体现银行的经营结果。公共域日期、币种、汇率等基础公共数据。主题域划分不是一次性定死的随着业务发展可以调整但基本原则是“稳定的实体先固下来”。客户、机构、产品这些实体无论在哪个银行都有相对稳定的业务定义先做扎实而营销活动、渠道行为这些变化快的域可以在后续扩展。我见过一些团队一开始就把主题域拆分得特别细什么“信用卡交易域”“手机银行行为域”都单独成域结果导致同一类数据分散在多个域里数据模型反而更混乱。所以主题域的粒度要适中既不能太粗让一个域里堆满不同类型的数据也不能太细让域之间界限模糊。3.3 维度建模落地事实表和维度表的配合主题域确定了“数据怎么组织”维度建模解决的是“表怎么设计”。星型模型是银行数仓里应用最广泛的模式它的核心就是事实表加维度表。事实表记录业务过程的度量值比如交易金额、笔数、余额等粒度要尽可能细。在DWD层我倾向于保留最细粒度的交易明细事实表到了DWS层再衍生出按日、按机构、按产品等不同粒度汇总的事实表。事实表的设计有一个关键点要明确每个事实行的“粒度”。粒度意味着这一行数据代表的是什么级别的业务事件比如“一笔交易”还是“一个客户一天的交易汇总”。粒度不清晰后续所有计算都可能是错的。维度表是用来描述业务事件的上下文信息的比如哪个客户、哪个产品、哪个机构、哪个渠道、哪天发生的。维度表的设计在银行里有一个绕不开的问题——缓慢变化维也就是维度属性会随时间变化。最典型的是客户信息客户搬了地址、改了职业、升级了VIP等级这些变化怎么处理常见的做法是拉链表或者在维表里保留历史版本。我在银行实践时通常会对关键维度采用“全量快照拉链”的方式既保留当前最新信息又能回溯历史某一个时点的维度属性。维度建模里还有一个容易忽视的点维表的公共编码要全局统一。银行的客户号、机构号、产品编码可能存在多个系统各编一套、互不对应的情况。在DWD层就需要建立映射关系把不同系统的编码统一到一套“标准编码”上。这一步做得越早后面做关联分析就越顺畅。4. 元数据、血缘与质量数据架构的“隐形骨架”4.1 血缘关系在银行场景里的硬需求数据血缘听起来是个“加分项”但在银行的场景里它其实是刚需。监管报送、审计检查、内部对账都可能要求你对任何一个报表数字给出完整的溯源链路这个数字怎么算的、从哪张表来、经过了哪些加工步骤、原始数据是哪个系统的哪张表。没有血缘管理的时候人要怎么追溯只能打开一个个SQL脚本一层层往上翻。一个指标经过四五层加工之后人工追溯的代价非常大。更麻烦的是如果中间层有人改过加工逻辑口头通知到的只是下游几个人血缘链路没更新后续排查问题会直接迷失方向。所以我在推进数据架构时会把血缘关系作为架构的一部分来建设而不只是当成一个辅助功能。具体做法是在数据开发平台里要求每个加工任务登记输入表和输出表自动解析SQL来生成字段级血缘同时在数据字典里维护业务口径说明。这些信息沉淀下来无论是做影响分析我改了这个表会影响哪些下游报表还是做来源分析这个报表的数据源头在哪里都可以直接查血缘图。4.2 元数据管理让“这张表是干什么的”不再靠猜元数据就是“描述数据的数据”说白了就是表的注释、字段的注释、业务定义、技术类型、负责人、更新频率等信息。很多团队不重视元数据认为把表建出来能跑数就行了。但数据架构的长期健康恰恰依赖元数据这块“隐形骨架”。举一个实际场景。某天业务人员反馈报表上的“存款余额”跟上个月对不上。排查时发现月底最后一天有笔大额入账因为系统跑批延迟ODS层没抓到这笔数据导致第二天的余额少了。如果有完善的元数据你可以很快定位到这个表的更新频率、数据延迟容忍度、以及对应源系统的抽取时间判断是不是抽取窗口设置的问题如果没有元数据你得一个个问开发人员“这张表什么时候抽数”效率极低。元数据管理不一定要上什么重型系统但至少要建立起一套规范每个表必须有负责人、必须有业务说明每个字段必须有中文名和口径注释每个任务必须登记调度依赖。再往后才是自动采集血缘、自动检测指标口径冲突这些高阶能力。基础的规范先立住很多事情就顺了。4.3 质量校验必须前移到模型设计期很多银行有独立的数据质量团队每天跑质量规则发现异常告警。但我的感受是很多质量问题其实在设计阶段就能规避不需要等到事后发现。数据架构层面能做的质量保障包括这么几件事一是在表结构设计时就定义约束。枚举值字段要限定取值范围金额字段要定义精度和格式日期字段要定义统一格式主键字段要声明唯一性。这些约束从源头保证数据“合法”。二是把质量校验规则纳入ETL流程。ODS接入时做非空校验DWD清洗时做去重和格式校验DWS汇总后进行“总数校验抽样比对”。每一层都要有“校验门禁”校验不通过数据就不能往下一层流动。三是建立“数据对账”机制。所谓对账就是拿数仓的数据跟源系统的总量进行比对。每天数据跑完后自动对比“源系统当天记录数”和“ODS层插入记录数”或者对比“DWD层汇总金额”和“总账科目余额”差异超过阈值就告警。这个机制看起来笨但非常有效。银行数据最怕“悄悄错”对账机制就是保证“错了一定会被发现”。5. 实操从需求到物理落表不走样5.1 一个典型需求应该怎么拆讲了这么多原则下面用一个贴近实际的例子演示一个需求从业务描述到物理表设计的过程。假设业务部门提了一个需求要看“每日各网点、各客户等级的存款余额情况”。拿到这个需求第一步不是急着建表而是先跟业务确认几个关键问题这个余额是时点余额还是日均余额如果是时点余额是取哪个时点是日终余额还是实时余额客户等级是按照哪个标准划分的是银行内部的客户分层还是某个外部评级时间粒度是自然日还是包含工作日、节假日的处理这个报表是给运营人员看日常概况还是要做营销分析预测一旦确定了口径接下来就能明确这是一个DWS层可以支撑的常规明细汇总场景。如果只取日终余额至少需要一个“账户日终余额快照表”再加一个“客户等级维表”以及“机构维表”。然后按机构加客户等级汇总即可。如果没有做前面的口径确认直接按字面意思把“存款余额”取出来很可能取到的是账户的实时余额结果业务人员拿它跟日终报表对账怎么都对不上最后又是数仓背锅。这种问题在银行里太常见了几乎每天都在上演。5.2 表命名的规范和字段设计的细节模型设计落到物理模型时最基础也最容易被忽视的就是命名规范。我在银行里推过一套命名方式这里分享一下表名前两到三位表示层次比如ODS层的表用ods开头DWD层用dwd开头DWS层用dws开头ADS层用ads开头。层次后面跟主题域缩写比如cust表示客户prod表示产品acct表示账户/协议org表示机构。再后面是业务过程或表用途比如tran表示交易bal表示余额daily表示日累计。最后可以通过后缀区分数据更新策略或者时间粒度比如di表示日增量df表示日全量mi表示月增量。举个例子dws_acct_bal_di表示账户余额相关的、按日增量的汇总层宽表dim_cust_level表示客户等级维度表。一个新手看到表名大致能猜出它的层次和用途这就是命名规范的收益。字段命名上常见的坑是同一含义在不同表里字段名不一致。比如“客户号”有的表叫cust_id有的叫customer_no有的叫cif_id下游关联时痛苦不堪。在DWD层建设时我建议统一一套标准字段命名清单核心的公共字段客户号、机构号、产品号、交易日期、金额字段全行统一不允许各自发挥。5.3 增量、全量、拉链不同的数据更新策略怎么选物理表设计里还有一个直接影响存储和计算成本的决策——数据更新策略。我总结一下常见的三种全量表每次把源系统的最新全量数据覆盖到目标表适合数据量不大、维度变化频繁的表。比如机构表、产品表每天全量刷一遍就好。增量表每次只同步新增和变化的数据适合交易流水、日志这类数据量巨大且主要以追加为主的表。增量表必须跟源系统明确增量标识字段。拉链表通过记录数据的生效开始时间和生效结束时间保存完整的变更历史适合客户信息、协议信息等需要历史回溯的维度表。查询时用生效开始时间 业务日期 and 生效结束时间 业务日期来取快照。选择更新策略的关键是“平衡查询效率和存储成本”。在银行环境里拉链表用得很多因为银行业务对历史追溯要求高但又不可能为每一天保留一份全量快照。拉链表既能通过生效时间精确回溯某个时点又能大幅节省存储代价是加工逻辑稍微复杂一些。有时候为了查询方便我会在拉链表上再保留一个当前有效子集视图业务人员日常取数直接查视图就行只有做历史回溯时才去查全表。6. 常见问题与排查技巧实录6.1 模型调整之后下游报表数据对不上了这是数仓开发里最让人头疼的问题之一。某天下游同事跑过来说某某报表数字跟昨天不一样了。一排查发现不是数据本身的问题是有人改了底层DWD表的加工逻辑影响了下游所有应用。排查这个问题的第一步是确认“对不上”是正常波动还是异常波动。”先对比今天的数字跟昨天的数字再对比跟上周同一天的数字如果差异是系统性的再往下查加工逻辑变更。第二步是利用血缘关系做影响分析找出所有依赖这张DWD表的应用任务逐一确认它们是否感知到了逻辑变化。第三步才是去查具体的SQL逻辑差异。踩过几次坑之后我总结出两个关键措施一是所有DWD层和DWS层表的加工逻辑变更必须走变更评审提前整理影响范围二是核心基础表的变更要“新增字段而不是修改旧字段”尽量保持新增逻辑对旧逻辑的兼容宁可多留一份新计算结果也不要直接覆盖旧结果。这个原则听起来保守但在银行这个环境里非常有效。6.2 同一个指标两个部门算出来不一样这种情况几乎每个银行都遇到过。一个“不良贷款率”风险管理部算出来一个数财务会计部算出来另一个数两边都对但就是不一样。原因往往是口径差异分子“不良贷款”按五级分类口径还是按逾期天数口径分母“贷款总额”是时点数还是期间平均数这些细微差异反映到架构层面就是“指标定义没有被唯一管理”。解决方案只有一个就是建立指标字典对核心指标实行“单一事实来源”的管理定义清楚指标的业务口径、计算公式、数据来源表、加工位置。当一个指标在不同应用场景下确实需要不同口径时要显式地在指标字典里区分出两个指标比如“不良贷款率五级分类口径”和“不良贷款率逾期口径”不要让两个部门共用一个指标名各算各的。这个工作说起来简单做起来非常艰难涉及跨部门协调。我的经验是不要试图一次性把全行所有指标都梳理清楚先挑20个最高频的核心指标建立标准定义再逐步扩展。先把最痛的解决问题团队才有信心继续推下去。6.3 数据量暴增调度时间和存储成本双双失控数据量增长是所有银行数仓都会面临的阶段性问题几乎每次行里上一个新系统、开展一项新业务E调度的数据量都会上一个台阶。架构上怎么应对首先检查是否做了合理的分区和分桶。银行的数据仓库通常按业务日期分区查询要养成“带分区条件”的习惯避免全表扫描。如果分区粒度太粗比如按月分区可以拆成按天分区如果一些表膨胀得特别快可以考虑按机构或按渠道再分桶。其次是合并小文件。不少数仓引擎在跑批时会产生海量小文件导致后续读取效率严重下降。定期做文件合并和压缩对存储和计算都有显著改善。再次是数据倾斜问题。金融数据很容易出现极端倾斜比如某个头部网点的交易量比其他网点大几个数量级。倾斜会导致reduce阶段被长尾拖垮常见的思路是加盐或随机分发拉平数据分布。最后也最根本的是“该删就删该沉就沉”。银行数据虽然要求长期保留但“保留”不代表“温暖在线”。超过一定期限的历史明细可以迁移到成本更低的存储区域线上只保留热数据和温数据。这个动作需要跟数据管理的同事充分沟通合规要求确认好保存周期之后执行但一定要做否则存储成本会吞噬整个数仓的资源。6.4 多做个“全链路数据验收”胜过事后无数补救最后分享一个习惯。每次大的架构调整或模型重构之后我都会组织一次“全链路数据验收”不只看单张表的加工结果而是从源系统到ODS到DWD到DWS再到ADS选几个核心指标做一次端到端的对账。比如选出“存款余额”“贷款余额”“交易笔数”这几个指标从ODS原始表一路对到最终报表每个加工环节都做一次“输入汇总等于输出汇总”的验证。这个习惯帮我提前发现过很多问题比如某个源系统的分区字段格式变了但抽取任务没适配某个DWD表在清洗时用了不等于条件把NULL值意外过滤掉了某个汇总层的关联因为一对多关系导致金额翻倍。这些都是单测很难发现的坑只有全链路对账才能暴露出来。数据架构上的事情很多时候就是“做得越细后面越省心”。7. 再从架构的角度看演进湖仓一体与自动化建模现在很多银行开始提湖仓一体、数据中台、仓库智能体这些概念。我说说自己的看法这些技术概念确实有价值但它们没有推翻传统数据仓库的分层架构更多是换了一种物理承载方式。湖仓一体解决的是过去数仓无法很好处理非结构化数据和海量原始文件的问题。日志数据、语音数据、图像数据现在可以先落入数据湖再通过统一的元数据管理纳入到数仓的分析体系里。原来ODS层的一部分功能可以下沉到湖的原始区但DWD、DWS的逻辑分层职责仍然是不可替代的。数据湖适合当“仓库的扩容区”不适合直接替代数仓的分析加工能力。至于“数据仓库智能体”这类自动化建模工具我觉得在银行场景里更多是辅助、辅助、再辅助。它可以帮你自动探查数据、推荐字段映射、生成初步的模型建议但银行对口径的严谨性要求决定了关键模型和核心指标仍然需要人来把关。自动化的收益更多体现在“把人从繁琐的重复工作中解放出来”而不是“替代架构设计”。当然架构也不是一成不变的。一家银行从传统数仓走向大数据平台再走到云原生数据仓库物理形态会不断变化但只要底层的分层职责、模型组织、血缘追踪、质量门禁这些架构原则没有丢演进就不会走样。数据架构这件事说到底是“用结构对抗复杂度”。银行的数据链路长、参与者多、监管要求高如果没有清晰的结构分分钟就会被复杂度淹没。我个人这些年最深的体会是数据架构不是设计一次就一劳永逸的图纸它更像一棵树需要持续修剪、灌溉、调整生长方向。只要你把主干立正了后面的分叉就不容易歪。希望这篇文章能把“主干”的轮廓说清楚也欢迎大家在实际落地时多交流踩坑心得。
返回列表