我目前被分配为我的公司开发一个同步应用程序。我们的数据库服务器上有 SQL 服务器,它将与客户端数据库同步。客户端数据库是未知的,它们可以是 SQLite 或 MYSQL 或其他。
此同步应用程序的作用是检测服务器和客户端数据库上发生的更改。保存这些更改并同步。如果服务器数据库发生更改,它将与客户端数据库同步,反之亦然。
我对此进行了一些研究,并了解了许多解决方案。其中之一是使用 Microsoft Sync Framework。但是我几乎没有找到一个很好的与远程数据库同步的实现示例。
然后我在 SQL Server 2008 上遇到了更改数据捕获(CDC)。CDC 通过触发器检测源表上的更改并将这些更改放在一个名为 sync_table 的单独表上,然后将该表用于同步。
由于我的机器上没有足够的数据库权限,因此我无法使用 CDC 功能,因此我开始开发自己的解决方案,其工作方式与 CDC 类似。我为每个源表创建单独的同步表,创建触发器来检测数据更改并将这些数据放入同步表中。
但是,建议我对其进行更多研究,以选择最佳实施方法。
我需要记住以下几点,
- 数据库可能/可能不在同一网络上。
- 在服务器端,用户必须能够选择哪些表将参与同步过程。
- 需要先注册将与服务器数据库同步的设备。这意味着所有客户端设备都将由用户注册,然后才能开始同步。
像往常一样,任何帮助将不胜感激:)