我是否应该在关系/事务数据库中跟踪缓慢变化的维度?

时间:2013-07-09 13:05:40

标签: database relational-database data-warehouse etl dimensional-modeling

让我们使用人力资源数据库的示例。人力资源人员日常使用的交易数据库处理每天发生的所有招聘和解雇。还有一个从该事务数据库中提取的维度数据仓库。

假设延迟足够低,以下哪个参数将被视为“最佳实践”?

1)Transactional数据库应该只需跟踪当前数据的方式。它不应该跟踪缓慢变化的数据(例如,特定员工的经理人的历史,他的工资随时间的变化情况等)。 ETL过程应检测过渡数据库中的更改,并更新数据仓库中缓慢变化的维度。

2)交易数据库能够跟踪它自己的历史信息。如果ETL会话之间的某些事情发生了两次变化,那么你将永远失去第一个变化。 Dimensional数据库的主要目的是在报表中实现高效的查询性能,因此它仍然可以完成它的工作。这也使ETL过程更快更简单。

我觉得这两个论点都有优点,如果它们都是有效的论据,我很乐意在它们之间做出选择。

我错过了一些没有被考虑的事情吗?

其中一个论点是错的吗?

1 个答案:

答案 0 :(得分:3)

我认为@ marek-grzenkowicz所说的是正确的。如果HR事务/操作系统的业务需求声明需要更改历史记录,则它们属于事务/操作系统。同样,如果业务需求声明需要此历史记录(或者可能是不同粒度级别的历史记录),则仓库也会存储该历史记录。历史记录可能存储在两个系统中。

我也推荐“数据仓库工具包”。我现在正在阅读它,它似乎有很多时间和现场测试的设计模式,用于建模数据。这本书的第3版刚刚在几周前发布。