1

假设我们有一个带有 ID、CONTENT 和 TIMESTAMP 的分布式表。ID 是 hash(CONTENT) 并且 CONTENT 具有足够的确定性,可以在系统中的多个位置输入,彼此紧随其后。

假设发生了某个现实生活中的事件。就像有人赢得了奥运会一样。然后,它进入这个数据库中的记录,除了时间戳之外,它看起来总是一样的。由于每台机器以略有不同的延迟观察事件。

所以。当机器同步这个分布式表时,他们会想知道“我们已经有了这个确切的 ID!它也不是一个相同的行!我们应该怎么做!?”。我想以以下形式给他们答案:bool compare(row a, row b)或者,最好是row merge(row a, row b)

有谁知道如何做到这一点?我只能找到与合并两个不同表相关的“合并”事物,而实际上这是一张表,只是分布式的。

对我来说,这对于使我的系统“最终保持一致”非常重要。我想利用 postgresql 的分布式数据库机制,因为它们非常可靠,我不想重写它们。

4

1 回答 1

2

PostgreSQL 没有“分布式数据库”特性。您无法重写它们或避免重写它们,因为它们不存在,而且我很好奇您从哪里获得可靠性信息。

我能想到的最接近的 tihng 是一个名为 Bucardo 的 3rd 方插件,它通过冲突解决进行多主复制。

您也可能在考虑Postgres-XC,但该项目旨在生成一个同步、一致、透明的多主集群,因此首先不会解决冲突。

还有 Rubyrep;我对它的了解还不够,无法知道它是否符合您的需求。

将来 PostgreSQL 将支持类似于您所描述的内容,包括逻辑复制/双向复制,但目前它是 pre-alpha 质量,并且可能最快在 PostgreSQL 9.5 中登陆。

于 2014-02-03T04:33:37.293 回答