Couchbase - что такое асинхронный индекс? - PullRequest
0 голосов
/ 22 января 2019

Я читаю на 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 голосов
/ 22 января 2019

Это означает, что когда документ хранится в Couchbase, он помещается в очередь для индексации. Операция записи не ожидает окончания индексации. Представьте себе ситуацию, когда ваше приложение:

  1. Записывает какой-то документ А, например {'type': 'invoice', 'foo':'bar', ... etc ... }
  2. Немедленно выполняет запрос N1QL SELECT * FROM mybucket WHERE type = 'invoice'

Чрезмерно упрощенное объяснение: документ A будет поставлен в очередь для индексации после шага 1. На шаге 2 N1QL не является ограниченным (по умолчанию SDK / сервер будет не ограничен), и может не возвращаться документ А, потому что он еще не был проиндексирован пока . Если ваша ситуация требует этого, вы можете указать RequestPlus (или AtPlus) вместо NotBounded. Это заставит ваш запрос дождаться завершения индексации перед выполнением запроса.

Пример использования в C # RequestPlus:

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

Хотя это влияет на производительность! RequestPlus будет худшей производительностью, NonBounded будет лучшим, AtPlus будет где-то посередине.

Обратите внимание, что если вы используете доступ по ключу / значению вместо N1QL, вам не нужно беспокоиться об этом. Вы всегда сможете получить доступ к документу по его ключу напрямую, независимо от индексации.

Для получения дополнительной информации:

...