大数据

技术元数据关联业务流程

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字段,记录业务定义变更历史。

总结

您的现有结构已包含元数据管理核心要素,修正重点应是:

  1. 拆解技术/业务关注点(避免混合存储);
  2. 通过术语库标准化业务定义
  3. 按需增加流程关联能力
    此方案平衡了灵活性与规范性,适合从本地管理向企业级治理演进。