我正在 this site 上阅读 Couchbase并遇到了。我对索引有较高的理解,但仅此而已。第二行同样难以理解。
主索引与 Couchbase 中的所有其他索引一样,都是异步维护的。您可以通过设置查询的一致性级别来设置数据的新近度
最佳答案
这意味着当文档存储在Couchbase中时,它会被放入队列中以进行索引。写入操作不会等待索引完成。想象一下您的应用程序的情况:
- 写入一些文档 A,例如
{'type': 'invoice', 'foo':'bar', ... 等等 ... }
- 立即执行 N1QL 查询
SELECT * FROM mybucket WHERE type = 'invoice'
过于简单化的解释:文档 A 将在步骤 1 后排队等待索引。在步骤 2 中,N1QL 是 NotBounded(默认情况下 SDK/Server 将是 NotBounded),并且可能不会返回文档 A,因为它还没有被索引。尚未。如果您的情况需要,您可以指定 RequestPlus(或 AtPlus)而不是 NotBounded。这将使您的查询在执行查询之前等待索引完成。
使用 RequestPlus 的 C# 示例:
var request = QueryRequest.Create("SELECT * FROM mybucket WHERE type = 'invoice'");
request.ScanConsistency(ScanConsistency.RequestPlus);
但这确实会对性能产生影响! RequestPlus 将是最差的性能,NonBounded 将是最好的,AtPlus 将处于中间位置。
请注意,如果您使用键/值访问而不是 N1QL,则不必担心这一点。无论索引如何,您始终能够通过文档的键直接访问文档。
了解更多信息:
关于indexing - Couchbase - 什么是异步索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54310423/