数据中台架构与标准字典实验说明
本文整理了两个部分:
- 数据中台当前的元数据架构与只读检索链路。
- 在隔离实验副本中进行的标准字典迁移实验与评测结果。
原始项目保持不动,所有实验都在复制出来的新目录里完成。
一、数据中台架构
1.1 总体链路
flowchart LR Q[自然语言问题] --> S[Codex / Skill] S --> M[MCP 服务] M --> C[业务目录 catalog.json] M --> H[Hive Metastore] M --> D[DataRiver 元数据图谱] M --> R[别名归一 / 资源解析 / 血缘解释] R --> O[候选表 / 字段语义 / 关系说明]
这套架构的核心不是“直接写 SQL”,而是把问题拆成可解释的元数据检索步骤:
- 先把用户的自然语言问题转成业务概念。
- 再从业务目录、Hive Metastore 和 DataRiver 图谱里找证据。
- 最后输出候选表、字段语义、别名、血缘和解释。
1.2 关键组件
| 组件 | 作用 |
|---|---|
mcp/ |
元数据检索服务与实验代码 |
catalog.json |
本地业务资源目录,来源于资源清单 |
| Hive Metastore | 真实表、字段、存储位置、表参数 |
| DataRiver Metadata | 逻辑表、字段节点、process 节点、血缘关系 |
doops / 运维链路 |
只读连通性检查与环境接入 |
| Skill | 把问题拆解成可操作的元数据检索任务 |
1.3 只读边界
这套系统只做元数据分析,不做业务写入:
- 允许:
SELECT、SHOW、DESCRIBE、EXPLAIN - 不允许:
INSERT、UPDATE、DELETE、DROP、ALTER、CREATE - 不允许直接改表、改结构或执行危险运维操作
也就是说,它更像一个“数据资产解析器”,而不是通用 SQL 执行器。
1.4 主要能力
| 能力 | 说明 |
|---|---|
search_business_catalog |
按业务语言检索本地目录 |
business_search |
在表名、字段名、注释、别名里做业务检索 |
describe_table_detail |
返回表、字段、存储位置、结构语义 |
resolve_data_resource |
判断资源是实体表、别名、逻辑过程还是字段级资源 |
search_datariver_vertices |
搜索 DataRiver 节点 |
get_lineage |
解释表之间的血缘和上下游关系 |
1.5 架构要点
- 数据入口是业务目录,不是直接从自然语言猜表名。
- Hive Metastore 负责物理表事实,DataRiver 负责逻辑关系和 process 血缘。
- 归一化、别名映射、资源解释是检索效果的关键。
- 结果必须可解释,最好能给出“为什么命中”。
二、标准字典实验
2.1 实验目标
这次实验想回答三个问题:
- 标准字典能不能把自然语言问题对齐到统一概念。
- 有了标准字典后,检索和数据处理会不会更稳。
- 关系扩展后的结果,能不能方便人工复核。
2.2 实验方法
在隔离实验副本中,按照 SCHEMA-MINERpro 的思路做了四步:
flowchart LR A[595 条目录资源] --> B[生成全量候选字典] B --> C[构造 100 条评测任务] C --> D[三路对比: 无字典 / 标准字典 / 关系增强] D --> E[Precision@K / Recall@K / MRR / conceptRecall / relationAccuracy] E --> F[抽样人工复核]
2.3 字典长什么样
标准字典不是单个词表,而是“概念 + 别名 + 表 + 字段 + 关系”的组合。
结构大致如下:
1 | { |
2.4 全量字典覆盖规模
| 指标 | 数值 |
|---|---|
| 目录资源数 | 595 |
| 概念数 | 488 |
| 生成概念数 | 475 |
| 预置人工概念数 | 13 |
| 别名引用数 | 4583 |
| 唯一别名数 | 2692 |
| 优先表引用数 | 624 |
| 唯一优先表数 | 577 |
| 字段关键词数 | 4550 |
| 唯一字段关键词数 | 1661 |
这说明全量字典已经不是“几个关键词”的小词表,而是一套可用于业务检索和关系扩展的候选标准体系。
2.5 评测指标是什么意思
| 指标 | 含义 | 怎么看 |
|---|---|---|
Precision@K |
前 K 条里有多少是对的 | 越高越准 |
Recall@K |
应该命中的结果,有多少被找出来 | 越高越全 |
MRR |
第一个正确结果出现得早不早 | 越高越好 |
conceptRecall |
直接概念有没有对齐到字典里 | 看字典识别能力 |
relationAccuracy |
相关概念是否被关系扩展带出 | 更像关系覆盖率,不等于人工语义真值 |
2.6 100 条评测结果
| 模式 | P@1 | P@3 | P@5 | P@10 | R@1 | R@3 | R@5 | R@10 | MRR | 额外指标 |
|---|---|---|---|---|---|---|---|---|---|---|
| 无字典 | 0.800 | 0.397 | 0.264 | 0.143 | 0.652 | 0.804 | 0.849 | 0.878 | 0.848 | - |
| 标准字典 | 0.790 | 0.333 | 0.210 | 0.127 | 0.652 | 0.733 | 0.746 | 0.789 | 0.822 | conceptRecall 0.880 / relationAccuracy 0.120 |
| 关系增强字典 | 0.790 | 0.333 | 0.210 | 0.127 | 0.652 | 0.733 | 0.746 | 0.789 | 0.822 | conceptRecall 0.880 / relationAccuracy 0.860 |
2.7 结果怎么理解
这组结果说明了三件事:
- 标准字典的主要价值不是立刻把检索排序做高,而是把问题先对齐到统一概念上。
- 关系增强后,相关概念更容易被带出来,
relationAccuracy明显更高。 - 但自动指标不能直接代表“语义正确”,尤其是关系扩展部分,仍然需要人工抽查。
换句话说,标准字典更像“统一语言”,关系增强更像“补上下文”,两者都需要人来验。
三、人工抽样复核
为了避免只看自动指标,这次还做了抽样复核页:
打开摘要实验报告 打开抽样复核页 下载抽样样本 JSON抽样规则是分层抽样,一共 25 条,按 5 类任务各抽 5 条:
- business
- table
- relation
- field
- alias
复核时建议重点看三件事:
- 候选表是不是对的。
- 标准概念有没有对齐。
- 关系扩展有没有拉偏。
复核页里已经提供了“通过 / 部分通过 / 不通过”和问题标签,最后还能导出复核 JSON。
四、复现方式
1 | cd <实验副本>/mcp |
五、结论
- 数据中台架构这边,关键是“业务目录 + Hive + DataRiver + 只读解释链路”。
- 标准字典实验这边,关键是把业务概念、别名、表、字段和关系连起来。
- 在这组实验里,标准字典提升了概念对齐,关系增强提升了关系覆盖,但最终仍应结合人工复核判断。
六、相关输出文件
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 灯推的恬静小屋!
评论
