Кассандра Оптимистическая Блокировка

У меня есть таблица cassandra1:

CREATE TABLE Policy.table1 (
name VARCHAR ,
date TIMESTAMP ,
version_num INT,
PRIMARY KEY   (
         name
         )) WITH caching = 'all'
     --   and memtable_flush_period_in_ms = 7200 ;
     ;

Мне нужно реализовать оптимистическую блокировку на этом столе. Когда мы читаем строку из таблицы 1, мы помним ее version_num. И когда мы хотим обновить эту строку, мы сравниваем текущее значение version_num и значение, которое мы запомнили. Также нам нужно увеличивать version_num при каждом обновлении.

Проблемы:

Мы не можем поместить version_num в предложение where, это приведет к ошибке: Плохой запрос: не найден PRIMARY KEY version_num в предложении where:

 update table where name = 'abc' and version = 3

Мы не можем установить version_num как часть первичного ключа, потому что нам нужно обновить его значение

Если мы проиндексируем version_num, это не поможет для операторов обновления, будет выдано то же исключениеЕдинственный способ, который я вижу, - получить текущее значение version_num с помощью Java, и, если ожидаемые и фактические значения version_num совпадают, - выполнить обновление. Проблема в том, что в этом случае у нас нет атомарной операции проверки значения version_num и обновления строки.

Вы видите какое-либо решение этой проблемы?

Ответы на вопрос(1)

Ваш ответ на вопрос