文章
技术元数据关联业务流程
1. 当前结构分析
字段名 | 问题描述 |
---|---|
库名/表名/字段名 | 基础技术元数据完整 |
类型 | 仅技术属性,缺少业务语义(如是否枚举值、计量单位) |
元数据分类 | 分类颗粒度不明确(是技术/业务/管理?是否细分主题域?) |
业务定义 | 自由文本难以标准化,缺少关联术语库 |
敏感等级 | 合规性基础字段 |
创建人/时间 | 管理元数据基础字段 |
2. 修正方案(分步实施)
Step 1:拆分主表为「技术元数据」和「业务元数据」
-- 技术元数据表(保留物理属性)
CREATE TABLE tech_metadata (
field_id INT PRIMARY KEY AUTO_INCREMENT,
db_name VARCHAR(50) NOT NULL COMMENT '库名',
table_name VARCHAR(100) NOT NULL COMMENT '表名',
field_name VARCHAR(100) NOT NULL COMMENT '字段名',
data_type VARCHAR(30) NOT NULL COMMENT '类型',
is_pk BOOLEAN DEFAULT 0 COMMENT '是否主键',
is_nullable BOOLEAN DEFAULT 1 COMMENT '是否可为空',
default_value VARCHAR(200) COMMENT '默认值',
ddl_sql TEXT COMMENT '完整DDL语句',
create_time DATETIME COMMENT '创建时间',
update_time DATETIME COMMENT '更新时间'
);
-- 业务元数据表(增强业务属性)
CREATE TABLE biz_metadata (
meta_id INT PRIMARY KEY AUTO_INCREMENT,
field_id INT NOT NULL COMMENT '关联技术字段',
meta_category VARCHAR(50) COMMENT '元数据分类(参考DCMM:业务/技术/管理)',
business_term_id INT COMMENT '关联业务术语ID',
definition TEXT COMMENT '业务定义',
business_rule TEXT COMMENT '业务规则(如校验逻辑)',
data_owner VARCHAR(50) COMMENT '数据所有者',
sensitivity_level ENUM('公开','内部','秘密','机密') DEFAULT '内部',
data_lifecycle VARCHAR(20) COMMENT '生命周期(如在线/归档/销毁)',
FOREIGN KEY (field_id) REFERENCES tech_metadata(field_id),
FOREIGN KEY (business_term_id) REFERENCES business_glossary(term_id)
);
Step 2:新增支撑表(关键扩展)
-- 业务术语表(实现术语标准化)
CREATE TABLE business_glossary (
term_id INT PRIMARY KEY,
term_name VARCHAR(100) NOT NULL COMMENT '术语名称',
definition TEXT NOT NULL COMMENT '标准定义',
domain VARCHAR(50) COMMENT '所属领域(如财务、供应链)',
synonym VARCHAR(200) COMMENT '同义词',
steward VARCHAR(50) COMMENT '责任人'
);
-- 业务流程关联表(可选,按需添加)
CREATE TABLE metadata_process_mapping (
mapping_id INT PRIMARY KEY,
field_id INT COMMENT '关联字段',
process_id INT COMMENT '关联流程ID',
role ENUM('input','output','decision','reference') COMMENT '在流程中的角色',
stage VARCHAR(100) COMMENT '流程阶段',
FOREIGN KEY (field_id) REFERENCES tech_metadata(field_id)
);
Step 3:字段级修正建议
原字段 | 修正建议 |
---|---|
类型 | 拆分为data_type (技术类型) + value_type (业务类型,如金额/日期/枚举) |
元数据分类 | 细化分类: - technical (表/字段/索引)- business (指标/术语)- operational (ETL任务) |
业务定义 | 关联到business_glossary.term_id 避免重复定义 |
敏感等级 | 改用枚举类型,并增加protection_method (如脱敏规则) |
3. 实施示例
场景:改造「客户表.customer_status」字段
-- 技术元数据
INSERT INTO tech_metadata
(db_name, table_name, field_name, data_type, is_pk)
VALUES ('crm_db', 'customer', 'customer_status', 'varchar(10)', 0);
-- 业务术语(预定义)
INSERT INTO business_glossary
(term_id, term_name, definition, domain)
VALUES (1001, '客户状态', '标识客户活跃度状态,包括:活跃/休眠/流失', '客户管理');
-- 业务元数据关联
INSERT INTO biz_metadata
(field_id, business_term_id, sensitivity_level, business_rule)
VALUES (LAST_INSERT_ID(), 1001, '内部', '枚举值: ACTIVE-活跃, DORMANT-休眠, CHURN-流失');
4. 查询优化建议
(1) 快速查看字段完整上下文
SELECT
t.db_name, t.table_name, t.field_name,
b.definition, g.term_name, g.domain,
m.process_id, m.role
FROM tech_metadata t
LEFT JOIN biz_metadata b ON t.field_id = b.field_id
LEFT JOIN business_glossary g ON b.business_term_id = g.term_id
LEFT JOIN metadata_process_mapping m ON t.field_id = m.field_id
WHERE t.field_name = 'customer_status';
(2) 影响分析(哪些流程依赖此字段)
SELECT p.process_name, m.role, m.stage
FROM metadata_process_mapping m
JOIN biz_process p ON m.process_id = p.process_id
WHERE m.field_id = (SELECT field_id FROM tech_metadata WHERE field_name = 'customer_status');
5. 工具化建议
- 轻量级方案:用Excel维护
business_glossary
,通过Power Query关联到数据库元数据; - 自动化方案:使用Apache Atlas采集技术元数据,人工补充业务属性;
- 版本控制:为
biz_metadata
表增加version
字段,记录业务定义变更历史。
总结
您的现有结构已包含元数据管理核心要素,修正重点应是:
- 拆解技术/业务关注点(避免混合存储);
- 通过术语库标准化业务定义;
- 按需增加流程关联能力。
此方案平衡了灵活性与规范性,适合从本地管理向企业级治理演进。