PostgreSQL数据库同步

PostgreSQL数据库同步,postgresql,Postgresql,我的公司有两个位置:总部(HQ)和子位置(SL)。这两个位置(HQ和SL)都有单独的PostgreSQL(9.6)数据库,具有相同的模式,它们将离线进行事务处理(插入/删除/更新)。当两者都联机时,两个数据库都需要同步(即,处于相同的状态)。有可能吗?有什么配置设置可以打开吗?没有 有可能吗?是的,您可以编写一些东西来完成它,但这将是特定于模式的,并且可能不是您真正想要的: 您提出的问题是唯一列(包括主键和序列列):如何解决HQ和SL之间的冲突 也许总部总是赢。如果两者之间存在冲突,我们只需删除

我的公司有两个位置:总部(HQ)和子位置(SL)。这两个位置(HQ和SL)都有单独的PostgreSQL(9.6)数据库,具有相同的模式,它们将离线进行事务处理(插入/删除/更新)。当两者都联机时,两个数据库都需要同步(即,处于相同的状态)。有可能吗?

有什么配置设置可以打开吗?没有

有可能吗?是的,您可以编写一些东西来完成它,但这将是特定于模式的,并且可能不是您真正想要的:

您提出的问题是唯一列(包括主键和序列列):如何解决HQ和SL之间的冲突

也许总部总是赢。如果两者之间存在冲突,我们只需删除SL中的行

也许所有独特的列中都有一部分可以指定它的来源

也许你只是把它标记了一下,然后由操作员手动处理。(这就是LotusDomino处理这种情况的方式)

所有这些都需要关于数据如何被使用的信息,而postgres没有这些信息。因此,管理此重新同步可能必须由您自己的自定义代码完成,并且您必须非常小心它如何管理它


编辑:正如Keven在下面指出的那样,如果你完全关心一致性,那么尝试这样做可能会导致灾难。

你打算如何解决冲突?您的应用程序设计时是否考虑到了这一点?对于这一点,没有现成的解决方案,也不简单。另外一点:如果你关心一致性,你首先就不会构建这样的系统。如果你不关心一致性,那么你就不需要Postgres的开销,也可以使用NoSQL数据库等更轻的工具。凯文,你绝对同意。就我个人而言,我使用postgres尽我所能验证数据库中的所有内容。试图修复床铺数据并不有趣。