我已经开发了几个应用程序,并与其他在数据仓库的几个细节方面遇到问题的开发人员进行了交谈。
我看到的主要问题是关于操作数据存储中的变更数据检测 (CDC)。 更新和硬删除显然很难在操作数据存储中检测到。
可以通过在每个表上插入触发器来处理更新,该触发器会使用当前时间戳自动更新 updated_at 列。但删除更难——一种解决方案是在其中放置一个触发器,以更新带有已删除 ID、表和时间戳的审计表。
使用触发器似乎是进行更改数据检测的最合理方法,但我看到的另一种选择是解析数据库事务日志文件,尽管这可能会使更新操作数据存储数据库变得更加困难。
我的问题是,人们通常如何处理这个问题?我做了一些研究,看起来很多做数据仓库的公司都在推出他们自己的次优解决方案。
我见过的另一个避免与 CDC 相关问题的解决方案是每隔一段时间简单地重建整个(或与源数据相关的部分)数据仓库,这将确保所有数据都是最新的并且没有错误在对操作数据存储执行 CDC 的代码中。