根据documentation主索引(文档密钥索引)在Couchbase中是可选的。 Couchbase如何在没有索引的情况下有效地确保文档密钥的唯一性?
文档引用的主要索引仅适用于N1QL查询,与强制唯一性无关。
相反,唯一性由键/值数据服务强制执行。来自"Data" overview documentation:
每个值(二进制或JSON)由唯一键标识,由用户或应用程序在保存项目时定义。密钥是不可变的:一旦项目被保存,密钥就无法更改。
我不是Couchbase内部的专家,但是唯一的密钥是Couchbase如何存储/检索/分片数据的基础。查看Understanding vBuckets获取更多信息('vBucket'类似于'shard')。这是一个片段:
通过CRC32散列算法将项目写入vBuckets并从中检索,该算法应用于项目的密钥,因此生成项目所在的vBucket的编号。