你提到的“雪花模式(Snowflake Schema)”,通常是在数据仓库 / 维度建模语境下说的。一般与之对比的是星型模式(Star Schema)。
之所以“不只用雪花模式”,核心原因是:雪花模式更规范,但查询更慢、使用更复杂;星型模式牺牲一点冗余,换来性能和易用性。
下面具体说:
雪花模式把维度进一步拆成多张规范化的表,例如:
dim_product(product_id, category_name, sub_category_name)dim_product → dim_category → dim_sub_category查询时要多 join:
SELECT ...
FROM fact_sales f
JOIN dim_product p ON f.product_id = p.product_id
JOIN dim_category c ON p.category_id = c.category_id
JOIN dim_sub_category s ON c.sub_category_id = s.sub_category_id
join 越多:
分析师、BI 工具(Tableau / Power BI / Superset)更喜欢:
雪花模式:
雪花模式以前是为了节省存储(避免重复文本)。
但现在:
所以“为了规范化省空间”的动机弱了。
星型模式:
优点:
也不是,适合用雪花的场景:
实际中常见折中:
不只用雪花模式,是因为它用“查询复杂度和易用性”换“规范化”,而在数据仓库里,通常查询性能和业务易用性更重要。
如果你愿意,我也可以画一张星型 vs 雪花对比图,或者结合你用的数仓(Hive / ClickHouse / BigQuery / Doris 等)说更适合哪种。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。