我正在建立一个用于数据表比较的新系统。这是发生的事情:
我的软件查询第三方数据库,我们无法在其中写入数据或更改结构。结果是一个数据表。此时,此数据表已同步,然后以 XML 格式保存到磁盘。下一次同步,查询再次返回一个 DataTable。然后我们从磁盘加载存储的数据表并开始计算差异:新的、更改的和删除的记录。只有差异记录被同步,存储的 XML 被最新的查询替换。
这工作正常,但对于较大的查询性能很差。因此,我们希望将数据切换并存储在 SQL Server(2008 及更高版本)数据库中。为此,我们正在寻找最佳实践。我们想到的一件事是为记录计算某种哈希值并使用它来检查记录是否已更改。该系统必须对所有类型的 DataTables 通用,因此没有严格的列结构。
SQL Server 是否支持这样的事情?还是在代码中计算哈希并将其存储到 SQL 中更好?我们认为没有必要存储整个记录;新记录将在源表中。对于修改过的记录,使用散列来查找更改就足够了,对于删除的记录,存储记录的主键就足够了,以便能够删除目标系统中的记录。