库表(离线元数据库表管理)使用说明
1. 功能定位
“库表”用于统一登记离线数仓/数据库中的元数据,核心目标是:
- 提供统一的库表检索与展示入口(表基础信息、责任人、生命周期、成本、访问情况等)。
- 支持人工维护与批量导入,弥补外部系统元数据分散、缺少统一 Web 门户的问题。
- 为后续治理能力(分级分域、生命周期治理、成本治理)提供基础数据。
当前入口为:/metadata_table_modelview/api(见 myapp/views/view_metadata.py:293,对应数据表 metadata_table,见 myapp/models/model_metadata.py:21)。
2. 可见范围与权限说明
库表可见性与编辑删除权限由责任人(owner)和租户配置共同决定(过滤逻辑见 myapp/views/view_metadata.py:72-100)。
2.1 可见范围(列表/查询)
- 当
ENABLE_MULTI_TENANT=False(默认情况):- 管理员可见全部记录。
- 普通用户仅可见:
owner包含*的记录(公开);owner包含当前用户名的记录。
- 当
ENABLE_MULTI_TENANT=True:- 系统管理员可见全部记录;
- 组织管理员可见本组织用户创建的记录;
- 普通用户可见:
owner包含当前用户名的记录;owner包含*且创建者在同组织内的记录。
2.2 编辑/删除权限
- 管理员可编辑、删除任意记录。
- 非管理员仅可编辑、删除
owner中包含自己用户名的记录(check_edit_permission,见myapp/views/view_metadata.py:257-261)。 - 批量删除(“删除”动作
muldelete)同样遵循上述规则(见myapp/views/view_metadata.py:263-272)。
3. 新增与编辑(字段说明)
新增与编辑字段一致(add_columns 与 edit_columns 相同,见 myapp/views/view_metadata.py:111、:121),主要字段如下:
app:产品,支持下拉选择与手动输入。db:数据库,必填,限制为 ASCII 字符(正则^[\x00-\x7F]*$)。table:表名,必填,需匹配正则^[a-z][a-z0-9\-_]*[a-z0-9]$,长度 1~54。describe:表描述,必填。field:数据域,支持多选与手动输入。warehouse_level:数仓分层(表单标签为“数仓等级”),默认TMP,可选ODS/DWD/DWS/TOPIC/APP/DIM/TMP。value_score:价值评分,默认0。security_level:安全等级,默认“普通”,可选 普通/机密/秘密/高度机密。ttl:保留周期,默认1 year,可选 1 week / 1 month / 3 month / 6 month / 1 year / forever。storage_cost:数据成本,必填,默认0,仅允许数字字符(正则^[0-9]*$)。owner:责任人,逗号分隔;默认*(公开)。create_table_ddl:建表 SQL(文本)。
字段定义见
myapp/views/view_metadata.py:145-253。原文档将warehouse_level表述为“数仓分层”,代码中表单标签实为“数仓等级”,二者指同一字段;并据代码补充了value_score字段。
3.1 表名命名建议
表单中给出的推荐命名格式(见 myapp/views/view_metadata.py:149):
dwd_[产品]_[数据域]_[数据域描述]_[刷新周期d/w/m/y][存储策略i(增量)/f(全量)]
示例:dwd_qq_common_click_di
4. 新增时系统自动处理逻辑
创建记录时,系统会自动补充以下信息(pre_add,见 myapp/views/view_metadata.py:275-280):
- 若
owner为空或仅为*,会自动写为:当前用户名,*(既保留责任人又允许公开)。 - 自动生成
node_id = db::table。 - 自动记录
creator = 当前用户名。
5. 批量导入与导出
- 支持批量导入(
import_data=True,见myapp/views/view_metadata.py:136)。 - 支持数据下载导出(
download_data=True,见myapp/views/view_metadata.py:137)。 - 导入预处理:若
recent_visit为空,会自动置为None,避免脏值(pre_upload,见myapp/views/view_metadata.py:139-143)。
建议导入前重点校验:table、db、storage_cost、owner。
6. 展示与查询建议
- 列表页默认按
id desc排序(base_order,见myapp/views/view_metadata.py:108);可排序字段为id / storage_cost / visits_seven。 - 常用搜索字段:
app、db、table、describe、field、warehouse_level、owner(见myapp/views/view_metadata.py:116)。 - 详情页可查看治理相关信息(如存储大小、生命周期、推荐生命周期、最近访问、建表 SQL、字段信息等,见
show_columns,myapp/views/view_metadata.py:112-115)。
7. 推荐运维方式
7.1 定时同步(需二开)
通过二开,实现离线任务定时拉取外部系统元数据并回填到库表(例如每日凌晨增量同步),适用于 Hive、Presto、MySQL、Redis 等多源场景。
7.2 在线同步(需二开)
如需“变更即同步”,可扩展事件驱动或 CDC 方案,实现近实时元数据更新。
7.3 反向同步(需二开)
可扩展“平台建表元数据 -> 外部数据库 DDL 执行”的能力,实现元数据与实际表结构联动。
8. 二开扩展点
可优先从以下扩展点入手:
- 扩展字段类型与字段级校验规则(例如分区策略、血缘信息、敏感字段标签)。
- 增加“更新远程表结构”动作(当前代码中预留了 DDL 动作位置,见
myapp/views/view_metadata.py:284-287的注释代码)。 - 对接统一元数据中心、数据地图或治理平台,形成完整元数据闭环。