数据建模中的规范化抵制与库存模型设计
1. 抵制规范化冲动
在数据建模中,来自规范化背景的建模者常常会受到一些自然冲动的诱惑,但我们更关注易用性和性能带来的价值,而非事务处理效率,因此会有意打破一些传统建模规则。
1.1 具有规范化维度的雪花模式
扁平化、非规范化的维度表中重复的文本值会让来自操作领域的数据建模者感到不适。以产品维度表为例,300,000 个产品归属于 50 个不同的部门。规范化背景的建模者希望存储 2 字节的部门代码,而不是在产品维度表中冗余存储 20 字节的部门描述,然后创建一个新的部门维度表进行解码。他们认为这样的设计可以节省空间,因为 300,000 行的维度表只包含代码,而不是冗长的描述符。
此外,一些建模者认为更规范化的维度表更容易维护。如果部门描述发生变化,他们只需要更新部门维度表中的一处,而不是在原始产品维度表中的 6,000 处重复更新。然而,这些维护工作通常在数据加载到展示区域的维度模式之前,在 ETL 系统中就已经完成。
维度表的规范化被称为雪花化。冗余属性从扁平的、非规范化的维度表中移除,并放置在单独的规范化维度表中。雪花化虽然是维度模型的合法扩展,但考虑到易用性和性能这两个主要设计驱动因素,我们建议抵制雪花化的冲动。
雪花化存在以下问题:
- 呈现复杂 :大量的雪花表会使呈现变得更加复杂,业务用户不可避免地会在这种复杂性中挣扎,而简单性是维度模型的主要目标之一。
- 查询性能慢 :大多数数据库优化器也难以处理雪花模式的复杂性。大量的表和连接通常会导致查询性能变慢,并且连接规范的复杂
超级会员免费看
订阅专栏 解锁全文
1049

被折叠的 条评论
为什么被折叠?



