我有一个客户希望两个站点能够同步数据库,因此站点A的信息可以与站点B同步,这样两个站点就可以查看相同的数据。
我甚至不确定所需的基础设施。连接2个数据库或基于互联网的数据库是否需要VPN,即/ Site A到InternetDatabase和Site B到InternetDatabase。每个站点定期向其复制数据,然后InternetDatabase同步它,然后站点可以将数据拉下来。
我的另一个想法就像Dropbox。如果站点A和站点B使用Dropbox帐户同步ADT文件等,那么每个站点的数据库是否可以与这些ADT文件同步?
由于
答案 0 :(得分:2)
如果两个站点更新完全不同的表,那么像Dropbox这样的东西可能会起作用。 Dropbox不会同步/合并文件的内容。这意味着如果站点A和站点B都更新了某个文件,那么您将负责编写合并更改的代码。
Advantage Database Server本身支持replication built in,因此这可能是最简单的解决方案。 Advantage复制是在逐个记录的基础上执行的,并且是异步处理的。如果无法访问目标数据库,则更新将存储在队列中并定期处理。如果两个站点之间的连接始终打开/可用,则源更新和复制更新之间的延迟通常较小,但显然取决于网络带宽和延迟。
您可以使用VPN连接两个站点之间的连接,但这不是必需的。但是,如果您不使用某种VPN,则应确保在两个站点之间加密通信(在设置订阅时这是一个选项)。
编辑对于通信,您只需要“正常”的网络连接。主要问题是处理防火墙和NAT等问题。使用Advantage,您可以定义它使用的端口。如果使用TCP / IP连接,则需要确保配置的端口允许到ads.exe进程的入站连接。您也可以使用UDP,但如果您正在处理防火墙,则TCP可能会更简单。
关于重复键的问题很好。如果两个站点都添加具有相同主键的记录或同时更新同一记录,则会导致冲突。有一个选项可以简单地忽略冲突,在这种情况下最后一次更新获胜。更现实的是,您可能希望编写ON CONFLICT trigger来处理冲突。