0

我目前被分配为我的公司开发一个同步应用程序。我们的数据库服务器上有 SQL 服务器,它将与客户端数据库同步。客户端数据库是未知的,它们可以是 SQLite 或 MYSQL 或其他。

此同步应用程序的作用是检测服务器和客户端数据库上发生的更改。保存这些更改并同步。如果服务器数据库发生更改,它将与客户端数据库同步,反之亦然。

我对此进行了一些研究,并了解了许多解决方案。其中之一是使用 Microsoft Sync Framework。但是我几乎没有找到一个很好的与远程数据库同步的实现示例。

然后我在 SQL Server 2008 上遇到了更改数据捕获(CDC)。CDC 通过触发器检测源表上的更改并将这些更改放在一个名为 sync_table 的单独表上,然后将该表用于同步。

由于我的机器上没有足够的数据库权限,因此我无法使用 CDC 功能,因此我开始开发自己的解决方案,其工作方式与 CDC 类似。我为每个源表创建单独的同步表,创建触发器来检测数据更改并将这些数据放入同步表中。

但是,建议我对其进行更多研究,以选择最佳实施方法。

我需要记住以下几点,

  • 数据库可能/可能不在同一网络上。
  • 在服务器端,用户必须能够选择哪些表将参与同步过程。
  • 需要先注册将与服务器数据库同步的设备。这意味着所有客户端设备都将由用户注册,然后才能开始同步。

像往常一样,任何帮助将不胜感激:)

4

1 回答 1

3

有一个名为 SymmetricDS 的开源项目具有许多相同的目标。查看文档和数据模型看看问题是如何解决的,也许你会得到一些想法。不是每个源表都有一个单独的影子表,而是有一个 sym_data 表,其中所有数据都以逗号分隔值格式捕获。优点是可以在一个地方查找捕获的数据并检索属于同一事务的更改。成功传输数据后,通过经常清除表来保持表较小。它使用 Web 协议 (HTTP) 进行数据传输。优点是利用现有的 Web 服务器进行性能、管理和通过防火墙进行已知过滤。在允许客户端同步之前,还使用了一个注册协议。服务器管理员为客户端 ID“打开注册”,允许客户端首次连接。它支持许多不同的数据库,所以你

于 2012-09-04T20:37:54.437 回答