元数据基础:技术元数据、业务元数据、管理元数据
元数据,说白了就是“数据的数据”。我习惯把元数据分成三类来管理。
为什么要这么分?你想想看,不同角色关心不同信息。开发关心数据库字段类型,业务关心字段的业务含义,管理者关心谁改了数据。所以三类刚刚好。
技术元数据
技术元数据,描述的是数据的技术细节。数据库的表结构、字段类型、索引,ETL 的调度规则,API 的请求格式,这些都是技术元数据。
我在项目中遇到过数据模型文档完全空白的情况。联合查询时全靠猜字段含义。嗯,后来我要求每张表都写技术元数据。
举个例子,一个商品表的字段描述可以写成这样:
{
"table": "product",
"schema": "public",
"fields": [
{
"name": "product_id",
"type": "BIGINT",
"nullable": false,
"comment": "商品主键,自增"
},
{
"name": "product_name",
"type": "VARCHAR(256)",
"nullable": false,
"comment": "商品名称(用户端展示)"
},
{
"name": "category_id",
"type": "INT",
"nullable": true,
"comment": "分类外键,关联 category 表"
}
],
"primary_key": ["product_id"],
"indexes": [
{"name": "idx_category", "columns": ["category_id"]}
]
}
我的小建议:技术元数据最好随代码一起版本管理。我之前团队用 JSON 文件放在 Git 仓库里,建表时直接从中生成 DDL,效果不错。
业务元数据
业务元数据,解释数据在业务场景中的含义。字段 “cust_id” 是客户编号还是交易对手?数据的口径是什么?业务元数据就是回答这些问题的。
我曾接手过一个标注团队的元数据,字段名叫 “status”,有人写 “0/1”,有人写 “A/B/C”。后来统一加了业务词典,才算稳定下来。
业务元数据通常包含:
- 业务定义 —— 字段在真实业务中代表什么
- 数据口径 —— 聚合逻辑、计算规则
- 枚举值映射 —— 代码值与业务含义的对照表
- 关联关系 —— 跨系统的数据流转关系
避坑指南:我曾经在一次医药项目中吃过亏。业务元数据里没写数据有效期。结果统计时报了过期数据。嗯,从那以后我坚持业务元数据必须包含有效期规则。
管理元数据
管理元数据,描述数据的管理信息。谁创建的?什么时候修改的?访问权限怎么控制的?数据质量规则是什么?
这类元数据经常被忽略。但数据出问题时,它往往是救命稻草。比如数据被误删了,管理元数据里记录了操作人和时间,就能快速回滚。
一个管理元数据的示例:
{
"dataset": "user_profile",
"version": "v2.3.1",
"created_at": "2025-01-15T10:00:00Z",
"created_by": "data_team_alice",
"updated_at": "2025-03-20T14:30:00Z",
"updated_by": "data_team_bob",
"access_control": {
"owner": "data_platform_department",
"readers": ["bi_team", "recommend_team"],
"writers": ["data_ingestion_service"]
},
"quality_rules": [
{"rule": "not_null", "fields": ["user_id", "email"]},
{"rule": "unique", "fields": ["user_id"]},
{"rule": "range_check", "fields": ["age"], "min": 0, "max": 120}
],
"retention_days": 730
}
实践要点:我建议你至少为每个数据集维护一个管理元数据文件。特别是质量规则部分,数据管道跑完之后直接校验这些规则,能拦住大部分脏数据。
三类元数据的核心差异
我把它们的区别整理成一个表格。你可以在项目中选择对应的字段来填充:
| 分类 | 核心关注点 | 典型字段 | 面向角色 |
|---|---|---|---|
| 技术元数据 | 数据的技术实现 | 数据类型、长度、索引、ETL 调度配置 | 数据工程师、后端开发 |
| 业务元数据 | 数据的业务语义 | 业务定义、数据口径、枚举值、关系 | 业务分析师、产品经理 |
| 管理元数据 | 数据的治理与合规 | 责任人、访问权限、质量规则、版本 | 数据管理员、安全团队 |
三类元数据相辅相成。技术元数据保障可读性,业务元数据保障可理解性,管理元数据保障可信性。我个人习惯在项目启动时就明确分类,而不是后期补。提前把元数据模板定下来,能省掉后面大量扯皮的时间。