同步框架清晰的跟踪表

时间:2013-02-21 14:40:23

标签: c# asp.net .net microsoft-sync-framework

让我向您解释一下我的项目情景:

在系统架构中,将有许多节点,很少的中间服务器和一个主服务器。

问题描述:

为简化方案,我不解释中间服务器。常见的情况是假设系统中有n个节点(节点#1,节点#2,...,节点#n)和1个服务器(服务器#1)。大多数本地输入将在节点级别完成,主要配置将在服务器级别完成。现在所有节点都应该将它们的数据同步到服务器(即上传),同时,它们应该从服务器下载其他节点的数据。因此,在同步过程之后,所有节点和服务器上的数据都是相同的。在同步时,任何节点都可能处于脱机状态,因此该节点在上线时将从服务器上传和下载数据。

我的团队解决方案:

我的团队建议使用Microsoft的同步框架2.1。我们为概念验证创建了一个示例应用程序。该示例有一个服务器和一个节点,我们使用数据填充服务器,就好像它来自节点#2并将其与节点#1同步,同步和冲突得到了正确解决。请注意,我们已经处理了主键和冲突。

我们看到的问题如下:

  1. 在服务器和所有节点之间成功同步之后,我们应该删除/清空跟踪表条目,否则表大小将呈指数级增长。成功同步后,所有节点都将清除其跟踪表,只有当所有节点都同步时,服务器才会清除跟踪表,否则将保留表。当服务器有跟踪表条目并且节点已清除表时,同步框架将再次尝试同步所有节点,这将导致重复的条目。

2 个答案:

答案 0 :(得分:1)

跟踪表用于更改跟踪,如果您清除它,Sync Fx将如何知道自上次同步以来发生的变化?

如果要减小大小,可以使用较低的保留期限运行常规元数据清理。

答案 1 :(得分:0)

无法清除跟踪数据。正如JuneT已经提到的那样。

每条记录都需要有跟踪记录。因此,跟踪记录的ID等于相应记录的ID。

确实有很多数据。我们的环境中有200多张桌子。这些表包含相应的跟踪表。所以表的总数超过400个表。

在10GB数据库中,跟踪数据约为3GB(30%)。此比率当然取决于每个数据模型,但它可以指示跟踪数据开销。