自上次从该数据库导入数据以来,我们需要一种方法来了解TeraData数据库中哪些行已更改。 TeraData数据库中的表格或数据没有任何内容可证明是可靠的变更信号,我们可以用它来确定这一点。在SQL Server中,似乎Change Tracking功能完全符合我们的要求,但源系统是TeraData。有没有人知道TeraData中是否有一个功能,或者是否与TeraData一起使用的第三方工具,它会有效地添加SQL Server Change Tracking提供的功能,但是会添加到TeraData数据库中吗?
答案 0 :(得分:0)
Teradata是OLAP数据库。您在Sql Server中也引用的功能是用于OLTP类型处理的。 Teradata假设您将执行大型设置操作,而不是小型单行级操作。有关Teradata优化器和功能集的所有内容都是基于为大型设置操作产生性能的。
我们设法跟踪Teradata数据库内更改的唯一方法是:
我们已经对包括Oracle和Teradata在内的各种源数据库执行了此操作。触发器非常简单,并且会针对源表中的每个插入,更新和删除操作,在“数据捕获”表中添加新行。
我们最终从模板中为捕获变更所需要的每个表以及数据捕获表的DDL生成了触发器。 (我们也附加了副本)。数据捕获表具有与源表完全相同的属性,外加至少两个元数据属性:更改类型和时间戳。
此外,我们最终在元数据属性上添加了“复制时间戳记”,以便在拾取数据时填写该属性。这是必需的,因为数据可以不按TIME顺序附加。换句话说,短暂的交易可能会在长期运行的交易(早于很久才开始的交易)完成之前就完成对Data Capture表的追加。
这似乎比仅引用SQL Server“更改跟踪”要复杂得多,但是它非常简单,不会对数据库的整体性能产生太大影响。由于我们添加了所有触发因素,因此我们的评估带来了3%的影响。