Couchbase-什么是异步索引



我在这个网站上读到了Couchbase的文章,发现了它。我理解高水平的索引,但仅此而已。第二行同样难以理解。

The primary index, like every other index in Couchbase, is maintained asynchronously. You set the recency of the data by setting the consistency level for your query

这意味着当文档存储在Couchbase中时,它会被放入队列中进行索引。写入操作不等待索引完成。想象一下,您的应用程序:

  1. 写入一些文档A,如{'type': 'invoice', 'foo':'bar', ... etc ... }
  2. 立即执行N1QL查询SELECT * FROM mybucket WHERE type = 'invoice'

一个过于简单的解释:文档A将在步骤1之后排队进行索引。在步骤2中,N1QL为NotBounded(默认情况下,SDK/服务器将为NotBouned),可能不会返回文档A,因为它还没有被索引。如果您的情况需要,您可以指定RequestPlus(或AtPlus)而不是NotBounded。这将使您的查询在执行查询之前等待索引完成。

C#中使用RequestPlus:的一个例子

var request = QueryRequest.Create("SELECT * FROM mybucket WHERE type = 'invoice'");
request.ScanConsistency(ScanConsistency.RequestPlus);

不过,这确实会影响性能!RequestPlus将是最差的性能,NonBounded将是最好的,AtPlus将在在中间。

请注意,如果您使用键/值访问而不是N1QL,那么您就不必担心这一点。无论索引如何,您都可以通过文档的键直接访问文档。

更多信息:

  • 请求规范(文档)
  • 关于AtPlus的博客文章

最新更新