Couchbase-什么是异步索引?

时间:2019-01-22 14:27:15

标签: indexing couchbase

我正在this site的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

1 个答案:

答案 0 :(得分:2)

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

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

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

使用RequestPlus的C#示例:

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

这确实对性能有影响! RequestPlus将是最差的性能,NonBounded将是最好的性能,AtPlus将处于中间位置。

请注意,如果您使用键/值访问而不是N1QL,则不必为此担心。无论索引如何,您始终可以直接通过其键访问文档。

有关更多信息: