У меня есть приложение, которое:
- Использует встроенную базу данных RavenDB
- С опцией монотонного чтения
- Со статическими индексами
Я заметил, что когда приложение запускается, индексы все временно устаревают, даже если они не были устаревшими при завершении работы приложения (чисто) предыдущего запуска.
Например, я запускаю приложение, вставляю 10 записей и жду, пока индексы будут обновлены. Я запрашиваю его и вижу ожидаемые результаты. Затем я закрываю приложение, запускаю его снова и запрашиваю, и я не получаю никаких результатов. Через секунду индексы обновились, и теперь я могу получить результаты. Если я повторю это, иногда я получаю 10 результатов, иногда 0 результатов, иногда 2 результата.
Мое предположение заключалось в том, что при запросе индекса в момент времени T я всегда видел "по крайней мере, как последовательные" результаты при T + 1. Однако, если сервер перезагружается за это время, я, кажется, вижу менее согласованные результаты при T + 1. Это не конечная последовательность, это возможная несогласованность!:)
Мои вопросы:
- Было ли мое предположение неправильным/глупым?
- Есть ли способ предотвратить это?
- Является ли это поведение просто запущенным, или это может произойти в любое время? Например, можно ли отобразить 10 результатов, затем обновить 0 результатов, а затем снова 10 результатов следующего обновления только потому, что Равен решил, что он хочет переиндексировать все?