我应该跟踪关系/事务数据库中缓慢变化的维度吗? [关闭]
Posted
技术标签:
【中文标题】我应该跟踪关系/事务数据库中缓慢变化的维度吗? [关闭]【英文标题】:Should I be tracking slowly changing dimensions in a Relational/transational database? [closed] 【发布时间】:2013-07-09 13:05:39 【问题描述】:让我们以人力资源数据库为例。人力资源人员日常使用的事务数据库处理每天发生的所有招聘和解雇。还有一个从该事务数据库中提取的维度数据仓库。
假设延迟足够低,以下哪个论点将被视为“最佳实践”?
1) 事务数据库应该只需要跟踪该数据当前的状态。它不应该跟踪缓慢变化的数据(例如,特定员工曾担任过哪些经理的历史,他的薪水如何随着时间的推移而变化,等等)。 ETL 过程应该检测过渡数据库中的变化,并更新数据仓库中缓慢变化的维度。
2) 事务数据库不仅能够跟踪它自己的历史信息。如果在 ETL 会话之间发生两次更改,您将永远失去第一次更改。 Dimensional 数据库的主要目的是提高报表中的查询性能,因此它仍在发挥作用。这也使 ETL 过程更快更简单。
我觉得这两个论点都有优点,如果它们都是有效的论点,我很乐意在它们之间进行选择。
我是否遗漏了一些没有被考虑在内的东西?
其中一个论点是完全错误的吗?
【问题讨论】:
您缺少的是业务需求。用户需要历史数据吗?另外,获取一份数据仓库工具包:维度建模完整指南 - 书中有一整章是关于 HR 数据的维度建模。 【参考方案1】:我认为@marek-grzenkowicz 所说的是正确的。如果 HR 事务/运营系统的业务需求表明需要更改历史记录,则它们属于事务/运营系统。同样,如果业务需求声明需要此历史记录(或者可能是不同粒度级别的历史记录),那么仓库也会存储该历史记录。历史记录可能会存储在两个系统中。
我也推荐“数据仓库工具包”。我现在正在阅读它,它似乎有很多经过时间和现场测试的设计模式来对您的数据进行建模。这本书的第 3 版几周前刚刚出版。
【讨论】:
以上是关于我应该跟踪关系/事务数据库中缓慢变化的维度吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章