1

我有一个客户希望两个站点能够同步数据库,以便站点 A 的信息可以与站点 B 同步,这样两个站点就可以查看相同的数据。

我什至不确定所需的基础设施。VPN 是否需要连接 2 个数据库或基于 Internet 的数据库是否可以工作,即/站点 A 到 InternetDatabase,站点 B 到 InternetDatabase。每个站点都会定期将数据复制到它,然后 InternetDatabase 会同步它,然后站点可以将数据拉下来。

我的另一个想法是像 Dropbox。如果站点 A 和站点 B 使用 Dropbox 帐户来同步 ADT 文件等,那么每个站点的数据库是否可以与这些 ADT 文件同步?

谢谢

4

1 回答 1

2

如果这两个站点更新完全不同的表,那么像 Dropbox 这样的东西可能会起作用。Dropbox 不会同步/合并文件的内容。这意味着如果站点 A 和站点 B 都更新了某个文件,那么您将负责编写代码以合并更改。

Advantage Database Server 支持本机内置的复制,因此这可能是最简单的解决方案。Advantage 复制是在逐个记录的基础上执行的,并且是异步处理的。如果无法访问目标数据库,则将更新存储在队列中并定期处理。如果两个站点之间的连接持续打开/可用,则源更新和复制更新之间的延迟通常很小,但显然取决于网络带宽和延迟。

您可以使用 VPN 连接两个站点,但这不是必需的。但是,如果您不使用某种 VPN,则应确保两个站点之间的通信已加密(这是设置订阅时的一个选项)。

编辑对于通信,您所需要的只是“正常”网络连接。主要问题是处理防火墙和 NAT 等问题。使用 Advantage,您可以定义它使用的端口。如果您使用 TCP/IP 连接,则需要确保配置的端口允许到 ads.exe 进程的入站连接。您也可以使用 UDP,但如果您正在处理防火墙,使用 TCP 可能会更简单。

您关于重复键的问题是一个很好的问题。如果两个站点都添加具有相同主键的记录或同时更新相同记录,则会导致冲突。有一个选项可以简单地忽略冲突,在这种情况下最后一次更新获胜。更实际地,您可能希望编写一个ON CONFLICT 触发器来处理冲突。

于 2011-01-15T17:56:05.197 回答