我有 Kimball 风格数据仓库的数据模型。关于维度表及其所有权时的整个星型与雪花型架构难题。
场景:一堆物联网设备每隔几分钟记录一次读数。每个物联网设备都属于某个业务实体(分支机构)。这意味着,通过行级安全性,特定业务部门的用户只能查看属于其业务部门的设备的数据。
什么是更好的模型?
选项 A - 雪花 FactDeviceReading 通过 DimBusinessEntity 和 DimDevice 之间的链接链接到 DimBusinessEntity。为了知道设备读数属于哪个业务实体,必须通过 DimDevice 查看。
选项 B - 星号 FactDeviceReading 和 DimBusinessEntity 之间的直接链接。而 DimBusinessEntity 和 DimDevice 之间存在“软”关系。
接受建议。
我认为设计的驱动因素之一应该是如何实现行级安全性(RLS)
保持 RLS 模型一致。因此,如果您使用 DimBusinessEntity 驱动 RLS,则将此 Dim 的 FK 添加到每个事实表中,而不是通过 DimDevice 执行此操作,因为大概不是每个事实表(现在或将来)都可以保证包含 FK到 DimDevice
如果您这样做,则无需在 DimBusinessEntity 和 DimDevice 之间创建 FK,因为它们始终通过事实表链接。
如果您不使用 DimBusinessEntity 来驱动 RLS,那么我仍然不会将 Dims 雪花化。如果业务实体仅存在于设备上下文中,则考虑将业务实体属性非规范化到设备 Dim 中