我有一个OLTP数据库,目前正在创建一个数据仓库。DW (DimStudents)中有一个维度表,其中包含学生数据,如地址详细信息、电子邮件、通知设置。
在OLTP数据库中,此数据分布在多个表中(因为它是第三范式的标准OLTP数据库)。
目前有10,390条记录,但这个数字预计还会增长。
我想使用Type2ETL,如果OLTP数据库中的一条记录发生了更改,则会向DW中添加一条新记录。
扫描DW中的10,000条记录,然后将结果与OLTP中包含的多个表中的结果进行比较的最佳方法是什么?
我正在考虑使用OLTP数据的临时表创建一个“快照”,然后将结果逐行与DW中的维度表中的数据进行比较。
我使用的是SQL Server 2005。这似乎不是最有效的方法。还有别的选择吗?
发布于 2010-08-13 19:43:36
WHERE LastUpdated >= some_time_here
您似乎正在使用SQL server,因此您也可以尝试rowversion类型(8字节db范围唯一计数器)。
发布于 2010-08-12 23:54:47
听起来你是在倒退。执行ETL (提取、测试、加载)的典型方法是:
”
实际上,在第1步中,您将通过对OLTP数据库中的多个表进行查询来创建一条物理记录,然后将结果记录与维度数据进行比较,以确定是否进行了修改。这是做事情的标准方法。此外,就数据量而言,10000行也是微不足道的。任何RDBMS和ETL进程都应该能够在不超过几秒钟的时间内完成处理。我知道SQL Server有DTS,但我不确定它的名称在最近的版本中是否有更改。对于做这样的事情,这是一个完美的工具。
发布于 2010-08-13 00:00:58
您的OLTP数据库是否具有审核跟踪?
如果是这样,那么您可以查询审计跟踪,只查询自上次ETL以来被触及的记录。
https://stackoverflow.com/questions/3469415
复制相似问题