1

我有一个桌面应用程序从 web 服务接收数据并将其存储在本地 postgresql 数据库中(而 web 服务从 SQL Server 数据库中检索数据)。在该过程结束时,我的本地数据库中的一个表中至少有 250 万个条目,但这将在大约 15 天的时间范围内以大约 300 行的批次从 de webservice 接收。

我需要一种方法来确保我的本地数据库具有与服务器数据库完全相同的信息。

我正在考虑为收到的每个批次创建某种校验和,然后,在收到所有批次后,整个表的另一个校验和,但我不知道这是否是最好的解决方案,如果是,我不知道知道从哪里开始创建它。

PS:TCP 已经处理了完整性检查,所以我什至不知道是否需要这样做,但数据相同至关重要。

4

2 回答 2

0

您是否可以控制 Web 服务和 SQL Server DB?如果你这样做了,SQL Server Change Tracking 应该可以解决问题。MSDN Change Tracking 将跟踪每个表的每个更改(或只是您关心的更改)。每次同步时,您只需将您的版本号传递给它,它将返回使您更新所需的变更集。

于 2011-02-25T15:37:21.183 回答
0

我可以看到校验和如何可能有用,但是您正在进行的转换量可能会使它变得不切实际。您必须在数据的原始形式或转换后的形式上得出校验和;它对两者都无效。

你有一些奇怪的限制(我自己也去过那里),所以在不了解所有细节的情况下很难想出一个清晰的策略。也许以下建议之一会起作用。

  1. 迁移完成后 SQL Server 端和 PostgreSQL 端的简单计数 (*)。

  2. 迁移完成后,从 SQL Server 端和 PostgreSQL 端转储一个键列表,然后对这些文件进行排序和比较。

  3. 如果由于对 SQL Server 的访问受限而无法实现 1 和 2,则可能会在进行过程中将 Web 服务调用的结果转储到单个文件位置,然后最后从 PostgreSQL 中提取相同的数据,并进行比较那些文件。

如果您选择选项 2 或 3,则有许多工具可用于比较文件。

于 2011-02-25T21:26:08.173 回答