Apache Cassandra: требуется явная согласованность чтения/записи?

Моя компания использует Cassandra (2.1.8), работающую на серверах Debian.

Без настройки согласованности в моих запросах/подготовленных заявлениях я иногда возвращал «ноль» из "SELECT * FROM table_name WHERE key = ?". После добавления:

statementGet.setConsistencyLevel(ConsistencyLevel.ONE);

Каждый раз получаю ответ. Но из приведенной ниже статьи: Стратегия чтения/записи для уровня согласованности

Если вас не волнует последовательность, то это обсуждение спорно; чтение/запись с любым уровнем согласованности и пусть функции асинхронной репликации и антиэнтропии Cassandra делают свою работу. Тем не менее, хотя вашей целью является минимизация сетевого трафика/стоимости, если ваша рабочая нагрузка в основном связана с чтением, то дополнительные затраты на выполнение операций записи в CL QUORUM или ALL на самом деле могут быть не такими уж большими.

говорят, что мои уровни постоянства не имеют значения, если я не забочусь о постоянстве. А я нет. Для меня не имеет большого значения, являются ли данные часами или днями давности. Но я забочусь о получении данных каждый раз.

Что мне нужно знать, так это: нужно ли мне устанавливать уровень согласованности для моих записей, чтобы гарантировать, что они действительно записаны, и что моя операция чтения будет всегда извлекать значение, если я ранее написано что угодно.

И каким может быть этот уровень согласованности, учитывая вышеуказанные критерии?


person Nixxon    schedule 23.06.2016    source источник
comment
Какой уровень согласованности вы используете для записи и чтения? Вы читаете сразу после написания? Я знаю это поведение из своих модульных тестов, где я пишу и читаю множество записей, используя согласованность ONE для чтения и QUORUM для записи?   -  person Olaf H    schedule 26.06.2016