Моя настройка:
- cassandra 1.2.19
- один кластер центра данных с 4 узлами
- NetworkTopologyStrategy с коэффициентом репликации 3
- Уровень согласованности записей в БД установлен на
LOCAL_QUORUM
Я пытаюсь перебрать все записи в данной таблице, и я делаю это с помощью некоторого унаследованного кода приложения, который извлекает данные партиями с последовательнымвыберите запросы этого типа:
SELECT * FROM records WHERE TOKEN(partition_key) > last_partition_key_of_previous_batch LIMIT 1000;
Проблема в том, что иногда некоторые записи пропускаются.Я также заметил, что эти пропущенные записи старые, добавленные несколько месяцев назад в базу данных.
Все запросы на выбор выполняются с уровнем согласованности ONE
.
Возможно ли, что в этом причина?
Из того, что я понял об уровнях согласованности, когда уровень согласованности для чтения равен ONE
, только один узел запрашивается для выполнения запроса.
Возможно ли, что иногда узел, который выполняет запрос, не содержит всех записей, и поэтому иногда некоторые записи отсутствуют?