我需要按顺序在数据中心之间按顺序传输密钥,无论是按插入顺序还是按密钥顺序传输(因为我可以确保按照lexiographical顺序插入密钥)。
由于更新的文档被推送到复制队列,似乎它们的传输大致与它们插入/更新的顺序相同。它是否正确?这是我现在可以依赖的东西,即使它没有明确记录吗?
答案 0 :(得分:1)
简短的回答是“不,它们不是以任何特定顺序发送的”,您不应该设计您的系统以期望订单。
稍长的答案是每个vBucket(aka shard)都有一个复制流,因此在典型的部署中,将有从源集群到目标集群的1024个流。流中的突变将按顺序发送(实际上它们具有序列号)但不同的流是独立的,因此属于不同vBucket的突变可能会“乱序”复制。
然而,文档所属的vBucket由Couchbase自动管理,并且基本上是不透明的,因此您不应该依赖于分配给特定vBuckets的特定文档。
答案 1 :(得分:-1)
Couchbase是一个多主系统(AP)。因此,您的密钥不可能是“全局”订单。实际上,任何具有事务的数据库(即使在单个节点上)都可能出现“乱序”的记录。
当然,你可以围绕“我们永远不会添加更多Couch节点”的用例来设计你的整个系统,但这是一个坏主意。更改您的设计,或将数据库更改为更符合您需要的数据库。