我们开始设计一个流程来检测ERP数据库中的变化,以创建数据仓库数据库。由于他们不喜欢在ERP数据库上放置触发器甚至不喜欢启用CDC(sql server),我们正在考虑从通过事务复制复制到中央存储库的数据库中读取更改,然后有一个额外的副本将合并变化(我们将在额外的副本上有CDC)......
我想知道是否有可能数据发生变化,比如说15分钟,这对于考虑我们设计的变化非常重要,我们计划设计的方式无法跟踪每一个变化,它只会在一段时间后获得最新信息,例如,如果一行上的值从A变为B,然后1分钟后,从B变为C,复制系统将把最后一个值带到中央存储库,然后我们将该表与我们的额外副本合并(额外的副本可能具有A的值,然后它将使用C更新,并且我们丢失了B的值)。
在数据仓库数据库中是否存在需要跟踪表所经历的所有更改的好方案?
答案 0 :(得分:2)
在某些情况下,处理DW中的历史数据非常重要,例如:
尺寸值更改时。比如说,供应商与另一个供应商合并并更改了他们的商业名称
当事实表使用基于事实表之外的其他信息派生的计算更改。比如说转换率改变了。
当您需要运行反映以前期间事实信息的查询时(事实表的版本)。
每个变更主体可能是银行账户余额或存储仓库项目数或股票价格等的示例。
对于您的具体情况,您应该与您的客户核实系统的使用方式,确切的好处,并进行相应的设计。应该捕获更改的细化程度(每小时,每天等)主要是客户的电话。
处理维度数据更改的一些技巧在Kimball-Slowly Changing Dimension。
答案 1 :(得分:1)
直接回答您的问题:取决于申请。
实施例: 该值是某些库存中商品的描述字段,其中商品本身不会更改(即商品ID X始终是闪闪发光的商品)。在这种情况下,可能不需要保存短期描述。
该值是温度传感器的最后读数。如果它超过某个值,则采取措施使温度恢复。在这种情况下,您当然需要保存每个更改。
这提出了三点:
需要进行每次更改的第二种情况表明设计非常糟糕。这样的系统肯定会将带有时间戳的新值插入表中,而不是更新单个值。
确实存在糟糕的设计。因此:
存储的数据量取决于数据的性质。
一个。您能从仓库数据中获取任何情报吗?
湾您是否能够根据数据库级别的变化知道业务级别发生了什么?
C。由于您升级了ERP产品,数据库架构发生变化时,您的数据会发生什么变化?
我想知道是否可以在表级保存更改日志。您可以对一组更改的含义进行反向工程,然后将其保存到仓库中,或者实际让ERP“告诉”您已完成的操作并保存这些更改。