Моя компания использует Cassandra (2.1.8), работающую на серверах Debian.
Без настройки согласованности в моих запросах/подготовленных заявлениях я иногда возвращал «ноль» из "SELECT * FROM table_name WHERE key = ?"
. После добавления:
statementGet.setConsistencyLevel(ConsistencyLevel.ONE);
Каждый раз получаю ответ. Но из приведенной ниже статьи: Стратегия чтения/записи для уровня согласованности
Если вас не волнует последовательность, то это обсуждение спорно; чтение/запись с любым уровнем согласованности и пусть функции асинхронной репликации и антиэнтропии Cassandra делают свою работу. Тем не менее, хотя вашей целью является минимизация сетевого трафика/стоимости, если ваша рабочая нагрузка в основном связана с чтением, то дополнительные затраты на выполнение операций записи в CL QUORUM или ALL на самом деле могут быть не такими уж большими.
говорят, что мои уровни постоянства не имеют значения, если я не забочусь о постоянстве. А я нет. Для меня не имеет большого значения, являются ли данные часами или днями давности. Но я забочусь о получении данных каждый раз.
Что мне нужно знать, так это: нужно ли мне устанавливать уровень согласованности для моих записей, чтобы гарантировать, что они действительно записаны, и что моя операция чтения будет всегда извлекать значение, если я ранее написано что угодно.
И каким может быть этот уровень согласованности, учитывая вышеуказанные критерии?