Палец вверх 6
Перевод
Перевод

Гектор, чтобы получить итоговое значение счетчика после выполнения incrementCounter

Мы делаем следующее, чтобы обновить значение счетчика, теперь мы задаемся вопросом, есть ли прямой способ вернуть обратно обновленное значение счетчика.

mutator.incrementCounter (rowid1, "cf1", "counter1", value);

counter cassandra hector
задан tom 27 янв. 2012 г., 22:54:29
источник

2 ответа

Решение 7
Перевод
Перевод

В экономном API Cassandra нет единой операции incrementAndGet.

Счетчики в Кассандре в конечном итоге последовательны и не атомарны. Операция Fragile ConsistencyLevel.ALL необходима для получения значения счетчика «гарантированно будет обновлено», то есть для выполнения согласованного чтения. ConsistencyLevel.QUORUM недостаточно (как указано в документе разработки счетчиков: https://issues.apache.org/jira/secure/attachment/12459754/Partitionedcountersdesigndoc.pdf ).

Чтобы реализовать метод incrementAndGet, который выглядит непротиворечивым, вам может понадобиться сначала прочитать значение счетчика, затем выполнить мутацию с приращением и вернуть (чтение значения + inc).

Например, если предыдущее значение счетчика составляет от 10 до 20 (для разных реплик), и для одного из них добавляется 50, значение read-before-increment возвращает либо 60, либо 70. И read-after-increment может по-прежнему возвращать 10 или 20.

ответ дан Wildfire 28 янв. 2012 г., 21:36:25
источник
Палец вверх 0
Перевод
Перевод

Единственный способ сделать это - запрос для этого. В Cassandra нет функции увеличения, затем чтения.

ответ дан psanford 28 янв. 2012 г., 1:16:59
источник