Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 数据库同步方法_Database_Synchronization - Fatal编程技术网

Database 数据库同步方法

Database 数据库同步方法,database,synchronization,Database,Synchronization,我目前被指派为我的公司开发同步应用程序。我们的数据库服务器上有SQL server,它将与客户端数据库同步。客户机数据库是未知的,它们可以是SQLite或MYSQL或其他类型 此同步应用程序的作用是检测服务器和客户端数据库上发生的更改。保存这些更改并同步。如果服务器数据库发生更改,它将与客户端数据库同步,反之亦然 我对它做了一些研究,并了解了许多解决方案。其中之一是使用Microsoft Sync框架。但我几乎找不到一个与远程数据库同步的好实现示例 然后我在SQLServer2008上遇到了变更

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

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

我对它做了一些研究,并了解了许多解决方案。其中之一是使用Microsoft Sync框架。但我几乎找不到一个与远程数据库同步的好实现示例

然后我在SQLServer2008上遇到了变更数据捕获(CDC)。CDC的工作原理是通过触发器检测源表上的更改,并将这些更改放在一个名为sync_table的单独表上,然后使用该表进行同步

因为我不能使用CDC功能,因为我的机器上没有足够的数据库权限,所以我开始开发自己的解决方案,就像CDC那样工作。我为每个源表创建单独的sync_表,创建触发器来检测数据更改,并将这些数据放入sync_表中

然而,我被建议对它进行更多的研究,以选择最佳的实现方法

我需要记住以下几点

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

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

有一个名为SymmetricDS的开源项目,有许多相同的目标。看看这个问题是如何解决的,也许你会有一些想法。不是每个源表都有一个单独的阴影表,而是一个sym_数据表,其中所有数据都以逗号分隔值格式捕获。这样做的好处是可以查找捕获的数据并检索属于同一事务的更改。在成功传输数据后,通过经常清除表来保持表小。它使用web协议(HTTP)进行数据传输。其优点是利用现有的web服务器进行性能、管理和已知的防火墙过滤。在允许客户端同步之前,还使用了一个注册协议。服务器管理员为客户端ID“打开注册”,这允许客户端第一次连接。它支持许多不同的数据库,因此您将找到如何在这些系统上编写触发器和检索唯一事务ID的示例。

有一个名为SymmetricDS的开源项目,其目标与许多相同。看看这个问题是如何解决的,也许你会有一些想法。不是每个源表都有一个单独的阴影表,而是一个sym_数据表,其中所有数据都以逗号分隔值格式捕获。这样做的好处是可以查找捕获的数据并检索属于同一事务的更改。在成功传输数据后,通过经常清除表来保持表小。它使用web协议(HTTP)进行数据传输。其优点是利用现有的web服务器进行性能、管理和已知的防火墙过滤。在允许客户端同步之前,还使用了一个注册协议。服务器管理员为客户端ID“打开注册”,这允许客户端第一次连接。它支持许多不同的数据库,因此您将找到如何在这些系统上编写触发器和检索唯一事务ID的示例。

非常感谢您的回复。这个链接当然对我有帮助+11111111非常感谢Eric Long的回复。这个链接当然对我有帮助+11111111