Ano*_*per 4 slowly-changing-dimension data-versioning
处理包含多个版本的数据记录时有两种策略。一种是将当前记录放在一张表中,将其过去的版本放在历史表中。
另一种是将所有版本放在同一个表中,并在当前版本上添加一个标志。
我已经看到了每种策略的争论,并且我已经看到社区在不同的帖子中同意这两种策略。
如果没有正确答案,如何决定采取哪种策略?我可以看到将所有记录保留在同一个表中以简化查询(所有记录都在一个表中)和一般情况下表较少的优点。
另一方面是,您拥有这些巨大的表,其中包含大量记录,具体取决于表之间的版本数量和复杂关系。
Pro 历史表数据库设计是否需要修订?数据库历史记录更改,相同还是不同的表?
如果我们明确讨论数据仓库场景中缓慢变化的维度,并且您遵循 Kimball 方法,那么实际上有超过 2 种不同的方法可以实现这一点。
Kimball 方法有7 种不同的记录 SCD 的方法(向下滚动到链接中的缓慢变化维度技术)。类型 1、2 和 3 显然是最常见的,我真的不知道有人使用 5、6 或 7。
历史表是类型 4,是我当前使用的表。它使我们能够使“实时”表尽可能紧凑。我们很少查询历史表,因此它们实际上只是在我们需要审核维度的历史记录时才存在。该表与任何其他表之间没有关系,并且它有一个代理 ID 作为主键。
我曾在使用类型 2 的地方工作过,即 Flag 方法,它可能会导致关键表上不必要的大表增长。然而,这只是我的经验!
| 归档时间: |
|
| 查看次数: |
8284 次 |
| 最近记录: |