Couchbase 相同数据的xdcr复制

Couchbase 相同数据的xdcr复制,couchbase,Couchbase,我将使用couchbase作为我网站的数据库。我计划的网站是国际性的,所以我可能会在美国,欧洲和澳大利亚的数据中心保持低延迟。我还希望尽量减少数据中心之间的带宽,因此我计划在用户存储数据时对所有数据中心进行并行更新 我的问题是:如果我几乎同时将相同的数据插入所有三个集群,couchbase是否足够聪明,能够识别出这些数据是相同的,因此不需要在数据中心之间进行复制 我观看了,他解释说,文档更新时cas值会更新,这用于确定哪些文档需要复制。如果在更新集群上的任何文档时更新了cas值,那么我猜答案是否

我将使用couchbase作为我网站的数据库。我计划的网站是国际性的,所以我可能会在美国,欧洲和澳大利亚的数据中心保持低延迟。我还希望尽量减少数据中心之间的带宽,因此我计划在用户存储数据时对所有数据中心进行并行更新

我的问题是:如果我几乎同时将相同的数据插入所有三个集群,couchbase是否足够聪明,能够识别出这些数据是相同的,因此不需要在数据中心之间进行复制


我观看了,他解释说,文档更新时cas值会更新,这用于确定哪些文档需要复制。如果在更新集群上的任何文档时更新了cas值,那么我猜答案是否定的,因为我很可能一次只向所有3个集群发送一些数据,并且只发送到一个集群的任何数据都会使该集群的cas暂时不同步。但是,如果每个文档的cas值是独立的,则答案可能是肯定的。也许有一些选项可以更改,使cas值独立于每个文档?

Couchbase对您存储的文档体一无所知。从它的角度来看,如果您将同一文档写入3个集群,所有集群都通过XDCR双向链接,那么它会将它们视为具有该ID的文档的3个不同文档变体。Couchbase将执行其正常的冲突解决过程,以选择3个集群中的哪一个是赢家。这将导致获胜文档被转移到其他两个集群,尽管它可能与失败的修订内容完全相同

每当您在不同的集群中写入同一文档ID时,您必须知道冲突解决将选择获胜的版本。如果你不小心,你可以覆盖你不想覆盖的数据

通常,为您的用例选择不同的方法。对于每个用户,可能会根据地理位置选择一个家庭集群。该用户的所有操作都绑定到此群集。如果该群集关闭,您可以切换到另一个群集。使用这种方法可以避免写入多个集群,并且只能在定义良好的条件下更改集群

CAS值只是修订的不透明标识符。在上面的示例中,所有3个文档写入都会以不同的CAS值结束,这是Couchbase将它们视为不同的原因之一,并且必须选择一个获胜者


冲突解决过程在文档中进行

所有文档的最新版本都将通过需要设置的单向复制发送。需要发送这些文档,以便每个集群中都可以获得最新的文档。此外,根据远程站点的性能,您可能会导致浏览器在等待其非主要数据中心响应时对Ajax请求进行排队。但是couchbase是否只是在集群之间进行某种比较(例如比较cas值),然后在看到它们相同时不发送大量文档内容?最起码,它会发送:数字序列,每一个突变都会增加;CAS值;文件标志;到期TTL值。如果确定该文档是唯一的或较新的,则会复制该文档。感谢您提供的信息。您知道是否可以关闭这些比较参数中的任何一个吗?例如,可以禁用时间戳比较吗?没有文档说明您可以禁用它们。