同步框架清除跟踪表
本文关键字:跟踪 清除 框架 同步 | 更新日期: 2023-09-27 18:00:28
让我向您解释一下我的项目场景:
在系统架构中,将有许多节点,很少有中间服务器和一个主服务器。
问题描述:
为了简化场景,我不解释中间服务器。常见的场景是,假设系统中有n个节点(节点#1、节点#2、…、节点#n)和1个服务器(服务器#1)。大部分本地输入将在节点级别完成,主要配置将在服务器级别完成。现在,所有节点都应该将其数据同步到服务器(即上传),同时,它们还应该从服务器下载其他节点的数据。因此,在同步处理之后,所有节点和服务器上的数据都将相同。可能在同步时,任何节点都处于脱机状态,因此该节点将在联机时从服务器上传和下载数据。
我的团队的解决方案:
我的团队建议使用微软的同步框架2.1。我们为概念验证创建了一个示例应用程序。样本有一个服务器和一个节点,我们用数据填充服务器,就好像数据来自节点#2,并将其与节点#1同步,同步和冲突得到了正确解决。请注意,我们已经处理了主键和冲突。
我们看到的问题如下:
- 在服务器和所有节点之间成功同步后,我们应该删除/清空跟踪表条目,否则表大小将呈指数级增长。成功同步后,所有节点都将清除其跟踪表,只有当所有节点都同步时,服务器才会清除跟踪表,否则将保留这些表。当服务器有跟踪表条目,并且节点已经清除了这些表时,同步框架将再次尝试同步所有节点,这将导致重复条目
跟踪表用于更改跟踪,如果清除它,Sync Fx将如何知道自上次同步以来发生了什么更改?
如果要减小大小,可以使用指定的较低保留期运行定期元数据清理。
无法清除跟踪数据。正如JuneT已经提到的。
每个记录都需要有一个跟踪记录。因此,跟踪记录的Id等于相应记录的Id。
确实有很多数据。我们的环境中有200多张桌子。这些表包含相应的跟踪表。所以表的总量超过了400张。
在10GB的数据库中,跟踪数据大约为3GB(30%)。这个比率当然取决于每个数据模型,但它可以指示跟踪数据开销。