我有 2 个 postgres 数据库在两台不同的计算机上运行相同的方案,不能保证在处理读/写请求时有任何网络连接。
因为它们在两个不同的位置运行,所以我试图找到一种解决方案来不时合并它们以保持两者的数据更新(我可以每隔几周连接它们,或者使用闪存驱动器传递文件)。
我主要担心的是该数据库在某些表中具有唯一值(自动增量主键),我不确定如何处理这个问题 - 如果两个 dbs 为不同的数据创建相同的键怎么办?是否有任何工具可以自动合并并输出所做的更改?
(如果重要,请使用 postgres 10,ubuntu env。)
谢谢
我认为这样做的一个好方法是让序列的增量为 2 而不是 1。这样你的主键在一个站点上甚至在另一个站点上都是不均匀的。然后,您可以合并而无需担心。
然后您
seq_uneven
在一个站点和另一个站点seq_even
上使用。解决您主要问题的方法非常简单,至少在概念上是这样。使您的基于序列的列成为 bigint 或 bigserial,然后开始您的序列相距甚远,以至于它们在任何可能的时间范围内都不会重叠。如果这些值以例如发票号码的形式向用户公开,那么您可能必须做出妥协,以使它们在任何实际时间范围内都不会重叠。