我已经在几个应用程序上工作过,并与其他开发人员讨论过有关数据仓库的几个细节。如何递增填充数据仓库?
我看到的主要问题是关于操作数据存储中的更改数据检测(CDC)。 更新和硬删除显然可能很难在操作数据存储中检测到。
可以通过在EVERY表上插入触发器来处理更新,该触发器会使用当前时间戳自动更新updated_at列。尽管删除更困难 - 一种解决方法是在触发器中更新一个删除了id的审计表,一张表和一个时间戳。
使用触发器似乎是最合理的方式来执行更改数据检测,但我已经看到的另一个选项是解析数据库事务日志文件,虽然这可能会更难以更新操作数据存储数据库。
我的问题是,人们通常如何处理这个问题?我已经做了相当多的研究,看起来好像很多做数据仓库的公司正在推出他们自己的次优解决方案。
我发现避免与CDC相关的问题的另一种解决方案是每隔一段时间简单重建一次ENTIRE(或与源数据相关的部分)数据仓库,这将确保所有数据是最新的并且在操作数据存储上执行CDC的代码中没有任何错误。
作为附录:解析ODS日志文件通常是主要ETL供应商中的CDC工具所做的工作。解析日志并不是一件容易的事,我会推荐我提到的触发器或其他方法。 –
很好的回答ñ西! –