星型模型:数仓三十年的“老古董”,怎么又成了大模型时代的香饽饽?

上周跟某头部零售数仓团队的负责人喝咖啡,他吐槽说刚把团队攒了两年的实时数仓架构拆了一半,又捡回了十几年前写的星型模型脚本。我当时一口冰美式差点喷出来——这东西不是早被雪花模型、Data Vault吹成“过时老古董”了?

被骂了二十年的“偷懒设计”,到底是什么

很多人第一次在数仓教材里接触星型模型,最先听到的评价往往是“这设计太糙了”。 一张核心的事实表在结构正中间,存着所有业务过程的度量值——比如订单金额、点击次数、库存余量。周围一圈维度表,分别对应时间、地区、用户、商品这些描述性的属性,所有维度表都直接和中间的事实表做关联,连一层多余的嵌套拆分都没有。整个结构摊开在ER图上,像个向外伸着射线的星星,星型模型的名字就这么来的。
零售数仓星型模型逻辑结构示意图
零售数仓星型模型逻辑结构示意图
它从诞生那天起,就自带“反规范”的基因。传统的数据库设计追求第三范式,恨不得把每个冗余字段都拆到独立的表里,减少数据重复存储的浪费。但星型模型完全不管这套——它的设计目标从一开始就不是“最省存储”,而是“跑数最快、业务方最容易看懂”。星型模型的核心优势从来不是“设计优雅”,而是“查询路径最短、理解成本最低”。 当然,它的短板也从一开始就写在脸上。如果维度表管不住自己,什么字段都往里面塞,表膨胀的速度能快到超出所有人的预期。我见过太多团队把星型模型用成了“大宽表垃圾桶”,用户维度表里塞了地址、偏好、消费能力、甚至历次浏览记录,最后单表做到20亿行,每次关联查询直接把集群打挂。 之前大家之所以嫌弃它,很大原因是觉得“不规范”。那时候行业主流的方向是把维度表再拆成多层,形成像雪花一样的嵌套结构——也就是雪花模型。听起来确实高级:冗余更少,存储更省,设计上挑不出错。但真到业务场景里就露馅了:运营要查个“上周华东地区买过咖啡的用户复购率”,得关联七八张嵌套的维度表,写个SQL要半小时,等查询跑完俩小时过去了,运营那边催着要活动复盘数据,等数出来黄花菜都凉了。

为什么大模型一来,这老东西突然又香了

前几年行业追实时数仓、追湖仓一体的时候,很多人都觉得星型模型那套面向离线批量的设计,早就该进博物馆了。结果大模型接进数仓的第一周,所有人都被现实打了脸。 问题出在大模型的理解能力上。它能读懂自然语言的查询需求,也能写出来语法正确的SQL,但它读不懂太复杂的表结构。你给它一套三层嵌套的雪花模型,它写出来的SQL十次有八次关联错表,跑出来的数能差出去几个亿。某云厂商去年做过内部对照测试,同样的大模型接数仓场景,雪花模型下大模型生成SQL的准确率刚过50%,换了同数据量的星型模型结构,准确率直接跳到97%。
大模型自动生成数仓查询SQL流程示意图
大模型自动生成数仓查询SQL流程示意图
你说讽刺不?之前我们费了老大劲,把表结构拆得越规范越好,就为了满足传统数仓的设计审美,结果大模型来了,说你别搞那么复杂,我就喜欢这种直来直去的。大模型对表结构的友好度要求,远高于传统的规范化设计要求。 现在的落地场景已经很明显了。连锁咖啡品牌的活动复盘看板、电商大促的实时销售监控、银行的客户分层画像分析,这些需要频繁让业务方自然语言查数的场景,几乎都在快速回归星型模型。之前某品牌的运营团队,用雪花模型的时候,查个细分维度的销售数据,得找数仓工程师排期,等两天才能拿到结果。现在换成星型模型,接了大模型的对话式查数入口,运营自己对着对话框说句话,10秒出结果。 产业链的反应更是快得离谱。之前做数仓建模工具的厂商,全在吹“全自动规范化建模、符合第三范式”,现在转头全在宣传“内置星型模型快速生成模板”,甚至把“星型模型自动适配大模型查询”当核心卖点卖。这风向转的,比夏天的台风还快。

别吹成神,这东西的坑一点没少

别吹成神,这东西的坑一点没少
别吹成神,这东西的坑一点没少
现在很多团队一拥而上捡星型模型,又开始踩十几年前踩过的老坑。 最常见的就是维度表过度冗余。为了让大模型查的方便,什么字段都往维度表里塞——商品的历史价格、历次活动标签、供应链批次,全堆到商品维度表里,最后一张表几百个字段。每次更新维度表的时候要扫全表,原来2小时能跑完的批处理,现在要跑12小时,数仓直接变成慢数仓。 还有数据一致性的老问题。为了减少关联路径,很多团队把同一个字段复制到多个维度表里——比如“用户等级”,既存在用户维度表,又存在订单维度表,还存在营销活动维度表。最后三个表里的同名字段数据对不上,大模型查数的时候不知道该取哪个表的,跑出来的数一会儿一个样。我朋友之前团队就出过这档子事,运营和市场部因为两个渠道的活动ROI对不上,差点在周会上吵起来,最后查了半天才发现,两个部门查的数,分别取自两个不同维度表里的同一个字段,数据差了整整15%。 更麻烦的是治理的缺位。之前靠数仓团队人工盯着表结构,至少还能保证元数据的口径统一。现在接了大模型,没有严格的血缘追踪和字段口径管理,大模型随便关联错表,出了问题都找不到根因。之前某互联网公司的大模型查数,把“退款金额”关联到了“订单总金额”的维度上,算出来的活动ROI是负的300%,给老板汇报完才发现错了,整个团队加班到凌晨三点改数。 说白了,工具从来不是万能的。你就算把星型模型架的再漂亮,没有配套的元数据管理、口径统一机制,该出的错一点不会少。

未来3-5年的判断

别信那些“星型模型一统江湖”的极端说法。未来3-5年的数仓架构,不会是某一种模型的一家独大,而是分层的适配。 底层的存储治理层,还是会保留原来的规范化设计——不管是Data Vault还是雪花模型,核心作用是从根源上保证数据的一致性,减少冗余,给所有上层应用提供统一的可信数据源。而面向交互的查询入口层,会大规模采用轻量化的星型模型设计,把底层治理好的数据,按照业务主题重新组织成“事实表+维度表”的简单结构,不管是给人查,还是给大模型查,都能做到路径最短、理解成本最低。 那种“为了设计纯粹性,拒绝适配新场景”的做法,本质上是把工具当成了目的。架构从来都是服务于业务的,当技术环境从“人写SQL、离线跑数”变成“大模型写SQL、实时要数”的时候,选择最适配当前环境的结构,才是最理性的选择。 上周那个拆架构的朋友跟我说,现在他们团队的数仓查询响应速度,比之前快了三倍,大模型写SQL的准确率也上来了,老板上周刚给他们批了预算买GPU。我问他当初拆雪花模型的时候心疼不?他说心疼啥,总不能为了坚持个十几年前的“设计洁癖”,让业务方等数等到下班吧。

作者|大讲堂

排版|大讲堂

审核|满满

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:星型模型:数仓三十年的“老古董”,怎么又成了大模型时代的香饽饽?
文章链接:https://www.lfdjt.com/info_23_28575.html