架构定下来后,这一章逐个拆解核心模块的实现方案。最关键的突破是美团的"自动语义"(定义即研发)。
美团的核心能力建设之一是自动语义,它实现了"定义即研发"(来源:美团技术团队)——业务定义的指标,无需人工开发,自动变成可查询的语义。
它把业务语言定义的指标自动解析为结构化的逻辑表达,并通过主外键关系将数仓模型自动关联成星型、雪花模型,从而扩展出复杂指标。这条能力贯穿四个环节:
| 环节 | 作用 |
|---|---|
| 指标定义 | 业务语言定义指标 |
| 模型关联 | 主外键关系自动关联成星型/雪花模型 |
| 指标高亮与路由选表 | 快速定位指标对应的模型和表 |
| 查询语义构建 | 生成实际查询 SQL |
结合指标仓库的预计算模式,业务既能灵活扩展复杂指标,又能在有限时间内完成指标扩展、模型关联等复杂查询前置依赖的计算。
通俗讲:传统是"业务提需求 → 研发写 SQL 建数据集",自动语义是"业务定义指标 → 系统自动翻译成模型关联 + SQL",把研发从翻译工作里解放出来。
快手在语义模型层实现了自动化建模(来源:快手指标中台技术分享),核心是:基于维度建模理论,对指标/维度/数据表进行模型构建,形成可供查询的语义模型,从而提升数据模型的开发效率。
传统维度建模靠数据开发手工设计星型/雪花模型,自动化建模把这个过程变成"半自助配置"——业务定义好指标和维度,系统自动生成对应的语义模型。
统一服务层提供两类能力(来源:快手指标中台技术分享):
配套的查询语言是 OAX(快手自研),类似"指标查询 DSL",上层应用通过它表达"查哪些指标、按哪些维度、什么时间范围",无需关心底层是哪张表、哪个引擎。
各厂的查询引擎选型(多来源交叉):
| 厂商 | 查询引擎 | 特点 |
|---|---|---|
| 快手 | 自研 Octo | 统一查询引擎,跨引擎联邦查询 |
| 腾讯欧拉 | StarRocks / Impala | tMetric 物化加速层 |
| 美团 | 多引擎模型 + 查询降级 | 智能查询服务 |
核心诉求一致:对上层屏蔽多引擎的复杂性,一个统一查询入口,内部做联邦查询和路由。
「指标多维分析系统」系列(qhlhaylee,来源:知乎专栏,cnblogs 镜像)给出了一个从零实现多维分析系统的路径,四篇结构:
| 篇 | 主题 | 内容 |
|---|---|---|
| (一) | 基于 Mondrian 搭建千万级多维分析系统 | 用开源 OLAP 引擎 Mondrian(ROLAP,支持 MDX)从零搭起 |
| (二) | 基于融合引擎模式的多维分析系统 | 多引擎融合,扬长避短 |
| (三) | 查询性能优化 | 性能调优实战 |
| (四) | 完整介绍 | 发展历程、系统架构、核心流程、性能/正确性保障、业务反思 |
第四篇总结的完整介绍框架(这是从零实现一套指标多维分析系统的完整视角):
其中两个"业务挑战"值得单独说:性能保障(查询要快)和正确性保障(结果要准)——这正是指标查询系统区别于普通报表系统的两个命门,也是下一章(性能)和治理(口径正确性)的主题。
注意:融合引擎模式与美团"多引擎模型 + 查询降级"是同一思路——不用单一引擎扛所有场景,而是多引擎分工、按查询路由。
| 模块 | 美团 | 快手 | 腾讯欧拉 | 系列(qhlhaylee) |
|---|---|---|---|---|
| 语义层 | 自动语义(定义即研发) | 语义模型层 + 自动化建模 | tMetric(Headless BI) | Mondrian 语义层 |
| 模型 | 主外键关联星型/雪花 | 维度建模 | Uni-Model 三层 | — |
| 查询引擎 | 多引擎 + 降级 | Octo 联邦查询 | StarRocks/Impala | 融合引擎 |
| 查询语言 | 语义查询 | OAX | — | MDX |
| 加速 | 智能物化 + 增量引擎 | 加速层 | 物化加速 | 查询性能优化 |
可以看到,虽然各厂实现细节不同,但语义层 + 统一查询 + 物化加速这个三角结构是共识。
本章要点回顾
上一章:04 系统架构设计 | 下一章:06 查询加速与性能优化