2016-05-09 1 views
1

Это вопрос о поведении кассандры для запроса select *. Это больше для понимания, я знаю, что нормально, я не должен выполнять такой запрос.Запрос все и консистенция

Предполагая, что у меня есть 4 узла с RF = 2. Следующая таблица (столбец семьи): создать таблицу test_storage ( текст идентификатор, created_on TIMESTAMP, место ИНТ, текстовые данные, PRIMARY KEY (ID) ); Я вставил 100 записей в таблицу.

Теперь я выбираю * из test_storage через cqlsh. Выполняя запрос несколько раз, я получаю разные результаты, поэтому не все записи. При изменении согласованности с local_quorum я всегда возвращаю полный результат. Почему это так? Я предположил, что, несмотря на производительность, я также получаю согласованность всех записей, поскольку он должен запрашивать весь диапазон токенов.

Вторая проблема, когда я добавляю вторичный индекс в этом случае к местоположению и выполняю запрос типа select * из test_storage, где location = 1 Я также получаю случайные результаты с последовательностью. И всегда правильные результаты при изменении уровня согласованности local_quorum. И здесь я не понимаю, почему это происходит?

ответ

1

При изменении согласованности с local_quorum я всегда возвращаю полный результат. Почему это так?

Добро пожаловать в мир возможной согласованности. Чтобы понять это, читать мои слайды: http://www.slideshare.net/doanduyhai/cassandra-introduction-2016-60292046/31

Я предположил, несмотря от производительности, что я также получить согласованность одной записи, так как он должен запросить весь маркер диапазона

Да, Cassandra будет запрашивать все лексема диапазоны из-за Неправительственный ограниченный SELECT *, но он будет запрашивать данные только из одной реплики из 2 (РФ = 2)

и сделать запрос, как выбрать * из test_storage где место = 1 я также получить случайный результаты wiht consi stency один

Тот же ответ, как и выше, родной вторичный индекс Cassandra только с помощью таблицы Кассандры под капотом, чтобы сохранить обратное индексирование так же возможные правила согласований применяются там