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

资讯详情

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

数据编目:大数据时代数据治理与资产化的关键基石

数据编目:大数据时代数据治理与资产化的关键基石 做数据这行这么多年有个体会越来越深大家天天挂在嘴边的“数据驱动”“数据资产化”真正落地时往往卡在同一个地方——不知道自己手里到底有什么数据也不知道这些数据是什么意思、能不能用、归谁管。很多团队折腾了半天连一份靠谱的数据清单都拿不出来。这时候你就知道数据编目这件事才是大数据领域真正的地基。数据编目说简单也简单就是给数据做“登记造册”类似于图书馆的图书目录但说复杂也复杂因为它牵涉到元数据管理、数据血缘、数据分级分类、数据治理流程、工具链选型等一系列配套工程。我见过不少团队一开始觉得编目就是个“建个Excel表登记一下”的活结果数据量一上来、业务方一问细节就全线崩溃。也见过一些团队把编目做成了一套能持续运转的机制后面做数据开发、做数据治理、做数据安全全都顺了很多。这篇文章我打算把这几年在数据编目上的实操经验完整梳理一遍。从为什么大数据领域必须有数据编目到一套标准的数据编目到底长什么样再到落地步骤、工具选型和避坑经验一次性讲透。适合正在做数据平台、数据治理或者刚接触数据资产方向的朋友参考。1. 先想清楚数据编目为什么成了大数据领域的“第一块地基”1.1 没有编目的时候数据团队的真实困境是什么先描述一个很常见的场景。公司的数仓跑了一两年Hive表几百张ClickHouse表几十张Kafka Topic几十个各种任务调度几千条。看起来规模不算大但真到用的时候全是问题业务方要一个“近30天用户活跃数”数据团队翻遍数仓发现至少有四张表都叫“用户活跃”相关的名字口径却完全不一样新来的数据开发想复用一张现成的表但没人说得清这张表是谁建的、数据从哪来、每天几点更新、有没有经过质量校验做数据安全合规的时候要找出哪些表里包含手机号、身份证号等敏感信息结果只能靠人肉遍历字段名翻了好几天数据团队内部开需求评审会一半时间花在“对齐表名和字段含义”上另一半时间花在“确认这张表能不能用”上。这就是典型的元数据失控状态。在没有数据编目的时候数据团队最值钱的资产反而成了最大的负担——数据越多找数据越难理解数据越贵数据价值自然也就无从释放。1.2 数据编目不是“锦上添花”而是数据资产管理的前提数据资产这个概念被提了很多年但一个连清单都没有的仓库谈不上资产管理。数据编目本质上就是给数据资产建立一个全局的“登记簿”把每一项数据资产是谁、是什么、从哪来、到哪去、怎么用、安不安全这些关键信息结构化地管理起来。在大数据场景下数据编目的必要性会被成倍放大。原因很简单大数据通常意味着海量数据、多源异构、快速迭代。数据源来自业务库、日志、埋点、第三方接口、离线文件数据形态有结构化表、半结构化JSON、非结构化文本数据加工链路动辄十几层。这种情况下人的记忆力完全不可靠唯一可靠的只有系统化的数据编目机制。大数据圈子里面试或晋升答辩时数据治理、数据资产也是绕不开的高频考点。很多人能把数据质量的六大维度背得滚瓜烂熟但问到“元数据怎么管理”“数据编目应该包含哪些核心属性”时反而不太答得上来这其实反映出行业对数据编目认知的普遍欠缺。1.3 数据编目到底解决了哪几类核心问题我用自己实践中的总结来归纳好的数据编目至少要解决四类问题第一类找得到。数据分散在不同的存储引擎、不同的项目空间、不同的团队手里编目让“全公司有哪些数据、在哪里”这个问题第一次有了确定性的答案。第二类看得懂。原始的表名和字段名往往是开发人员按自己的习惯起的业务人员根本看不懂编目补充了业务含义、字段说明、枚举值解释、统计口径让数据从“开发能懂”变成“业务也能懂”。第三类信得过。数据有没有经过质量校验、更新频率是多少、最近一次更新时间是什么时候、下游有哪些应用在用这些信任信息挂在编目上数据消费者在取数之前就能判断能不能用。第四类管得住。数据归属哪个团队、谁是负责人、敏感级别多高、谁能访问这些管理信息同样是编目的核心组成是数据权限、数据安全、合规审计的基础。2. 一套完整的数据编目到底应该包含什么2.1 技术元数据让机器能“读懂”数据很多团队做数据编目只做到“把表字段录入平台”但严格来讲技术元数据才是一切编目的骨架。技术元数据描述的是数据本身的技术特征包括存储位置、存储格式、表结构、字段类型、分区信息、数据量、更新频率、主键外键约束、ETL依赖关系等等。举个例子一张用户订单表。技术元数据至少要记录它存储在数仓的哪个库哪个表底层文件格式是Parquet还是ORC分区字段是dt目前有12个字段其中order_id是bigint类型、user_id是bigint类型、order_amount是decimal(10,2)类型表的总行数、总存储量调度任务每天凌晨2点跑增量更新。这些信息看起来“机械”但作用非常大。数据开发在做数据接入、任务优化、存储治理的时候第一件事就是查技术元数据。没有这些就只能一条SQL接一条SQL地去看。大数据平台上数据表动辄几百上千张逐个看根本不现实。技术元数据的采集应该尽量自动化最好从元数据源比如Hive MetaStore、MySQL Information_Schema、Kafka Cluster直接同步而不是靠人工填写。2.2 业务元数据让人类能“看懂”数据业务元数据是数据编目里最有“人性”的部分解决的问题是——这个字段在业务上到底是什么意思。还是那张用户订单表。order_id在代码里是订单ID业务人员需要知道的则是“这个ID是订单生成时系统自动分配的唯一编号”status字段的值是0、1、2、3光看代码谁知道对应什么状态必须在编目里写清楚0已创建1已支付2已发货3已完成。而order_amount这个字段尤其坑它到底含不含运费、含不含优惠券抵扣这就是所谓的数据口径也必须落在编目描述里。业务元数据是数据编目中最难建设的一部分。因为技术元数据可以自动采集业务元数据却需要懂业务的人来维护。很多数据团队不做业务元数据就是觉得维护成本太高但恰恰是这部分决定了一个编目系统是不是真的能被业务方用起来。我的经验是业务元数据不需要一步到位可以先把高频使用的核心表维护起来例如交易、用户、商品相关的核心实体先由数据产品经理牵头梳理再逐步沉淀到平台上。这里有个比较实用的办法就是让下游分析人员在提数需求时同时补充对字段含义的描述这样业务元数据会随着使用场景不断丰富起来。2.3 管理元数据让数据“责任到人”管理元数据解决的是“人和数据的关系”。具体包括数据责任人、所属团队、数据来源系统、上架状态、安全等级、共享范围、审批流程、使用日志等。这部分的必要性多数团队是在出事之后才意识到的。比如某个数据报表数据错了业务方投诉过来结果查了半天一层层追责最后发现这张表已经三年没人维护了。再比如安全审计要求提供“哪些人访问过哪些敏感数据”的清单结果根本没有记录访问日志。这些都是管理元数据缺失的典型症状。在我主导的数据治理项目里管理元数据遵循一个原则每条数据资产都必须有且只有一个清晰的责任人以及一个明确的安全等级。责任人决定了数据出问题找谁安全等级决定了这套数据能否被其他人使用。这两项不填数据不允许上架到公共数据目录里。2.4 数据血缘回答“这份数据从哪来、到哪去”数据血缘是数据编目里的进阶内容但也是大数据场景下不能回避的内容。血缘描述的是数据在加工链路中的流转关系某个字段由哪些上游表加工而来某个指标又供哪些下游报表、算法模型消费。没有血缘的时候做数据变更评估基本靠猜。改一个字段类型下游哪个任务会挂没人敢打包票某个上游表要下线哪些下游应用会受影响只能通过全局搜索代码来模糊判断。我在实际落地血缘时有几点体会。第一血缘解析不要追求全链路100%能做到表级血缘准确率90%以上就已经很够用了第二字段级血缘通常很难一次解析准确字段级可以先用INSERT语句的简单识别兜底再依靠人工修正第三真实场景里手动补录血缘往往比自动解析还要快因为大量调度任务是通过配置化ETL平台生成的这类血缘通过平台元数据就能直接获取。3. 数据编目落地五步实操法直接“抄作业”3.1 第一步摸底现状——先给数据资产“拍个X光片”任何编目项目都逃不过第一步把数据资产的现状摸清楚。这个阶段的核心任务是盘点数据源和已有的元数据存储明确接入范围。实际操作时我通常会让团队按数据源类型分组去盘。常用产出物就是一张盘点清单里面记录数据源名称、存储引擎、数据量级、更新方式、负责人、接入优先级。盘点清单可以先用Excel管起来但不建议长期依赖Excel。梳理范围时有几个原则供参考优先覆盖核心业务系统主数据比如用户、订单、商品、支付这些数据是业务分析最刚需的优先覆盖已经进入离线数仓和实时数仓的表暂不追各个业务系统里零散的库表数据量极小且已停止更新的历史数据可先标记“待归档”不纳入编目范围。这个阶段最容易犯的错是“贪多求全”恨不得把全公司的数据一口气全部纳入编目。实际上数据编目也是一个有优先级、需要迭代的过程先把最核心的几十张表做成标杆效果比大而全的半成品好得多。3.2 第二步设计编目模型——别急着建表先定规范编目模型设计的本质是回答“一条数据资产记录应该有哪些字段”。我建议把编目模型分成四个维度基础信息维度数据名称、数据描述、数据域、数据负责人、所属团队、数据源类型、存储位置、上架时间技术信息维度表结构、字段列表、分区信息、更新频率、数据量、存储格式、生产任务ID业务信息维度业务定义、统计口径、枚举值说明、常见使用场景、关联指标管理信息维度安全等级、共享范围、审批流配置、质量状态、生命周期策略。在这个基础上还需要设计表名、字段名的命名规范。比如表名前缀ods_表示贴源层、dwd_表示明细层、dws_表示汇总层、ads_表示应用层字段名统一用snake_case日期字段统一叫dt或dateID类字段统一加_id后缀金额类字段统一加_amount后缀。这些规范看起来细碎但它是将来所有搜索、分类、判断的基础。编目模型的设计不宜过度字段能从元数据源自动同步的就不用手工录。手工维护的字段应该控制在一二十个以内否则运营成本高到项目做不下去。3.3 第三步选择工具——先不卷工具但确定机制这部分我只简单提一下详细选型对比放在第5章。这里要强调的是数据编目的成败更多取决于运营机制而不是工具本身。在选择工具前你需要先回答几个问题编目数据存哪里、谁来更新、更新频率、和调度系统怎么联动、怎么和权限系统打通。这些机制没定工具再强也用不起来这些机制确定了哪怕先用一套简单的数仓表加后台管理页面也能跑起来。以我之前的经验为例规范层面定的是“采集自动化业务信息业务方反哺周期性人工巡检”。技术元数据每天凌晨同步一次业务描述由数据产品经理牵头按迭代节奏补充每个月月底集中巡检一次编目完整度。机制先跑通再上工具整体会顺畅很多。3.4 第四步信息补全与质量校验——编目最容易忽略的“最后一公里”技术元数据自动采集完成之后真正体现编目价值的是后三步业务信息补全、质量校验、持续运营。业务信息补全的原则是“自上而下定框架自下而上填内容”。先由数据产品经理梳理出数据域和数据主题比如交易域、用户域、商品域、营销域再把每一张表映射到对应的数据域里最后组织业务方和数据开发一起来补充字段的业务含义和口径说明。质量校验维度建议至少包含以下指标编目覆盖率已上架资产数/纳入范围资产总数目标值可以先定90%以上字段注释完整率有业务注释的字段数/总字段数目标建议70%以上负责人落实率有明确负责人的资产数/总资产数目标100%安全等级标注率已标注敏感级别的资产数/总资产数目标100%。这些指标可以做成一张简单的数据质量看板挂在编目平台上让整个数据团队每周都能看到变化。公开的指标才能驱动持续改进藏在文档里的指标最后都会变成没人看的废纸。3.5 第五步融入研发流程——让编目从“额外负担”变成“日常习惯”很多编目项目上线一两个月后就开始烂尾最核心的原因就是编目和数据研发流程没有形成联动。数据开发建了张新表却没人在编目平台里登记业务元数据半年没人维护慢慢又回到查无可查的旧状态。要让编目可持续必须把它嵌进现有的研发流程里。至少做到这几件事新表上线之前必须先完成编目登记否则不允许发布生产任务表结构变更后自动触发编目信息刷新并通知数据负责人确认数据质量稽核发现异常时自动在编目上标记“质量异常”状态让下游使用者第一时间看到编目信息的维护情况作为数据团队内部的一个例行考核指标不用多重的奖惩但要让团队意识到这是分内事。4. 大数据核心场景数据编目是怎么渗透进日常工作的4.1 数据地图与数据门户找数据不再靠“打听”编目最直观的产品形态就是数据地图或者叫数据门户。做过数据平台的朋友应该都体会过没有数据地图的时候找一张表基本靠问人有了数据地图所有已上架的数据资产都可以按数据域浏览按关键词搜索点进去能看到这张表的所有技术信息和业务说明还能直接看到上下游血缘甚至直接在页面上发起数据申请。数据地图表面看只是一个搜索页面但背后完全靠数据编目撑起来。搜索靠的是基础信息里的关键词浏览靠的是分类和标签详情靠的是技术业务管理元数据的完整度。数据编目质量越高数据地图越好用团队使用率也就越高。4.2 数据开发与指标建设从源头减少“重复造轮子”以我自己的经验来看数据编目还能在源头上减少“重复造轮子”的现象。很多团队里不同项目组各建各的表一张“用户订单”的宽表能出现三五个近义版本。有了清晰的编目和血缘数据开发在开工之前就先在数据地图上查一下发现已有现成表就直接复用已经有相似表就基于它做增量开发只有确认都不合适时才新建。数据团队的资源是有限的省下来的开发工时比什么都值钱。4.3 数据安全与合规编目是权限管控的基础数据安全是大数据领域近几年的绝对热点。做数据分级分类本质上就是把“哪些数据是敏感的”这个信息结构化地登记在编目上。没有编目你连公司里存了多少手机号、身份证号都不知道安全管控无从谈起。有了分级分类之后权限策略就可以基于编目信息自动执行。比如安全等级为L4的敏感数据默认不开放查询L3的数据默认需要申请审批L2的数据允许项目组内部直接访问。这个逻辑听上去合理但很多公司连第一步“给每张表打上安全标签”都做不到。4.4 数据质量与数据运维让问题“提前暴露”编目中记录的更新频率、生产任务、状态标记还能帮助数据运维提前发现异常。比如某张表声明了每天早上6点完成更新但编目平台在7点检查时发现上次更新还是两天前的状态就可以自动触发告警如果这张表的下游是运营看板相关人员就能在业务方发现数据异常之前提前介入。这就是数据编目和数据运维联动起来的价值。5. 主流数据编目工具选型参考5.1 开源工具横向对比目前业界常用的开源数据编目与元数据管理工具主要有四类我做了个对比表方便大家选型时参考工具定位核心能力适合场景不足Apache Atlas数据治理框架元数据管理、血缘、分类、权限同步深度绑定Hadoop生态适合Hive、Spark为主的数仓UI体验一般血缘展示偏工程化部署维护成本不低DataHub现代数据目录元数据采集、搜索、血缘、文档、数据质量中大型数据团队希望有较好产品体验生态相对年轻部分功能需要二次开发Amundsen数据发现平台搜索、快捷访问、数据热度强搜索体验的场景偏“找数据”需求血缘和数据质量能力偏弱OpenMetadata一体化元数据平台元数据、数据质量、数据血缘、协作希望一个平台解决元数据质量血缘的团队社区版仍在快速迭代生产落地需要评估稳定性我的建议是如果技术栈以Hadoop生态为主且治理诉求偏合规Atlas会是稳妥的选择如果团队追求产品体验和协作效率DataHub或OpenMetadata更值得尝试如果只是解决“数据搜不到、找不到”的痛点Amundsen这类轻量搜索型工具也够用。5.2 商业与云原生工具选型云厂商基本都提供了数据地图能力比如阿里云DataWorks里的数据地图AWS的Glue Data Catalog都深度绑定自家生态。如果公司的大数据平台本来就在某个云厂商上用云厂商自带的数据地图是最省事的选择开通即可用数据源接入也比较顺滑。但云厂商工具也存在“绑定”的问题。跨云或混合云场景下商业工具的统一编目能力就会显得力不从心。这种情况下考虑开源元数据平台自建或者采购成熟的数据治理产品反而更合适。工具选型的底层逻辑不是看哪家功能多而是看它和你已有的技术栈、团队规模、运维能力匹不匹配。一个需要5个人维护的开源系统放在本来运维人力就不足的团队里就是灾难。5.3 选型之外的提醒先跑机制再谈工具这点我在前文也强调过但值得单独再写一遍。数据编目的核心从来不是工具而是“谁来维护、怎么维护、怎么考核”这套机制。工具只是把机制落地的载体。很多团队一上来就雄心勃勃部署Atlas折腾了大半年血缘解析、元数据同步结果发现根本没有人在平台上补充业务含义最终平台沦为无人问津的“僵尸系统”。所以如果团队还没有想清楚谁来维护业务元数据我建议先不要上重型工具先在数仓里建一套编目表配合简单的管理后台跑一两个月机制验证成熟之后再考虑工具化升级。6. 那些年做数据编目踩过的坑一次性帮你避掉6.1 元数据本身比数据还“脏”采集只是第一步很多团队以为从MetaStore同步完元数据编目就完成了一大半。真相是同步过来的元数据本身就很乱字段注释大量为空注释和实际字段含义对不上表名命名规则混乱。比如我见过一张表名叫“dwd_order_di”实际存的是退款数据的也见过“userId”实际上是商家ID的。所以元数据采集之后一定要有“清洗”环节。清洗的重点是统一命名、剔除无效表临时表、备份表、修正错误的字段注释。这块工作相当耗时但绕不开。6.2 业务方不配合编目就变成数据团队“自嗨”这是数据编目失败最常见的原因。数据编目如果只有技术元数据技术团队自己用没问题但要让编目真正发挥价值必须有业务人员参与补充业务定义和口径。问题是业务人员通常很忙他们凭什么叫你“维护系统”我的做法是把编目的“回报”亮出来。业务方最痛的是找一个数据要找半天、口径总是对不齐编目系统恰恰能解决这个痛点。可以选一两个核心业务部门做试点先把他们最常用的表维护好让他们尝到“搜一下就能找到对的表、看到清楚口径”的甜头其他部门就会主动来找你帮忙。6.3 血缘解析“开箱即用”是幻觉很多团队对血缘解析的期待是“部署完工具血缘自动就画出来了”但实际落地往往发现理想很丰满现实很骨感。SQL各种写法五花八门、多层嵌套、动态表名存储过程里的血缘基本解析不出来跨引擎的任务比如Hive加工完导出到MySQL再被ClickHouse消费在单一工具里很难形成完整链路。应对策略是分层分级先保证调度系统层面的表级血缘再逐步推进SQL解析的字段级血缘。表级血缘覆盖率能够达到95%以上实际使用中已经能解决90%的问题。6.4 标签体系一上来就搞几十个维度结果没人用数据标签是编目里很有用的东西但也很容易做偏。最常见的误区是一上来就设计一套庞大的标签体系什么业务域、数据域、主题域、场景域、质量域、时效域……搞了一堆维度结果落地时没人知道该怎么打标打了标也没人搜。我的建议是标签体系从简开始。先做三个最刚需的维度——数据域交易、用户、商品等、业务归属对应公司组织架构、敏感级别L1到L4。这三类维度覆盖了大多数找数、管数、安全合规场景。跑通之后再逐步增加“使用场景”“数据时效”等扩展标签。6.5 编目覆盖率很高但使用率很低问题出在哪这个现象经常出现。编目平台上的资产上架率做到了95%但数据团队日常还是习惯用聊天工具问“这张表在哪”编目平台访问量惨淡。问题通常出在两个方面。一是编目信息和真实情况脱节业务人员搜索几次发现结果不对自然不再信任平台二是编目平台没有嵌入日常工作的工具链大家没有打开它的习惯。破局的方法也不复杂。一方面提高信息时效性技术元数据每日同步离线表超过一个月未更新就自动标记为“疑似废弃”。另一方面让编目平台成为数据开发的必经入口比如指标评审时强制要求附上数据地图中对应表的链接、数据申请权限必须先定位到编目中的资产。当编目平台成为流程中的一环使用率自然而然就上去了。6.6 敏感数据识别只靠字段名漏报率居高不下数据分级分类的建设中很多人用字段名匹配来识别敏感字段比如字段名包含phone、id_card就认为是敏感字段。这种方式简单快捷但准确率有限。字段名叫phone的是手机号字段名叫“contact_way”的可能也是手机号。更麻烦的是很多敏感信息藏匿在JSON字段的嵌套结构里字段名完全看不出。我建议采用“字段名规则匹配数据内容识别人工确认”三层机制。先用规则匹配圈出一个候选集再对候选集做内容识别例如判断某字段是否确实是11位手机号或18位身份证号最后人对有歧义的部分做确认。三层下来漏报率能得到有效控制。7. 最后分享一点经验之谈做数据编目这几年我最大的体会有两句话。第一句数据编目是典型“看起来简单、做起来复杂、坚持下来价值巨大”的事。它不像写一个算法模型那样有强烈的技术成就感但它踏踏实实地消除了团队日常工作中的大量隐性成本。第二句数据编目的成功不取决于工具多先进而取决于有没有人把它当作长期工作去运营数据和业务两条线有没有持续投入。如果你现在刚好在搭建公司的数据平台或者正在为团队里“数据找不到、看不懂、不敢用”的问题头疼我建议不要急着上各种高大上的平台先花两周时间把核心数据资产盘出来把技术元数据、业务口径、负责人、安全等级这几项最基础的信息登记清楚。哪怕一开始只是记录在数仓表里、用简单的页面展示你先跑起来。编目这件事最大的敌人是“想着等条件成熟再做”但数据量每天都在涨再等下去只会越来越难收拾。后面等这套手工机制跑顺了再考虑数据地图、血缘解析、自动分级这些进阶能力。一步一步来数据编目真正带来的好处你在用的过程中自然会感受到。
返回列表