我目前被指派为我的公司开发同步应用程序。我们的数据库服务器上有SQL服务器,它将与客户端数据库同步。客户端数据库是未知的,它们可以是SQLite或MYSQL之类的。
这个同步应用程序所做的是,检测服务器和客户端数据库中发生的更改。保存这些更改并同步。如果服务器数据库发生更改,则将与客户端数据库同步,反之亦然。
我对此做了一些研究,并了解了许多解决办法。其中之一是使用。但我几乎找不到一个好的实现示例,用于与远程数据库进行同步。
然后,我看到了Server 2008上的变更数据捕获(CDC)。CDC通过触发器检测源表上的更改,并将这些更改放在一个名为sync_table的单独表中,然后使用该表进行同步。
因为我不能使用CDC功能,因为我没有足够的数据库权限在我的机器上,我已经开始开发我自己的解决方案,它的工作方式就像CDC一样。我为每个源表创建单独的sync_table,创建触发器来检测数据更改并将这些数据放入sync_table中。
不过,我建议多做一些研究,以选择最佳的执行方法。
我需要记住以下几点
如往常一样,如有任何帮助,将不胜感激:)
发布于 2012-09-04 20:37:54
有一个名为SymmetricDS的开源项目,有许多相同的目标。看看文档和数据模型,看看问题是如何解决的,也许你会得到一些想法。对于每个源表,没有单独的影子表,而是有一个sym_data表,其中所有数据都以逗号分隔的值格式捕获。其优点是可以在一个地方查找捕获的数据,并检索属于同一事务的更改。在成功传输数据之后,通常通过清除表来保持表的小。它使用web协议(HTTP)进行数据传输。其优点是利用现有的web服务器进行性能、管理和通过防火墙进行已知的过滤。在允许客户端同步之前,还使用了注册协议。服务器管理员为客户端ID“打开注册”,这允许客户机第一次连接。它支持许多不同的数据库,因此您将找到如何在这些系统上编写触发器和检索唯一事务It的示例。
https://stackoverflow.com/questions/12088313
复制相似问题