powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / Cassandra Optimistic Locking
3 сообщений из 3, страница 1 из 1
Cassandra Optimistic Locking
    #38678703
rds29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,
Подскажите пожалуйста нужно реализовать следующую логику Optimistic Locking используя Java и Cassandra:

Имеется таблица

Col1 (PK) Date Versionabc Some Date 3
Для реализации Optimistic locking используется колонка version. Когда мы считываем запись из базы данных - мы запоминаем версию, а когда необходимо сделать update этой записи - проверяем, что версия не поменялась.
Нужно сделать так, чтобы обеспечивалась атомарность проверки и обновления записи в таблице. Также необходимо инкрементировать версию при каждом апдейте.

Проблемы
1. Version нельзя поместить where для запроса вида
Код: sql
1.
update table where Col1 = 'abc' and version = 3


2. Version нельзя поместить в PK, т.к. ее нужно изменять (насколько я понял PK - константа и менять его содержимое нельзя)
3. Можно сделать select, получив текущую version, сравнить в Java коде с той версией, которую мы запомнили, и потом сделать update. Здесь проблема в атомарности, точнее в ее отсутствии, а она необходима.

Подскажите, как обойти данные проблемы?
...
Рейтинг: 0 / 0
Cassandra Optimistic Locking
    #38680264
Sergey L.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Cassandra Optimistic Locking
    #38680881
rds29
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо,

Запрос, написанный ниже, решает все проблемы:

Код: sql
1.
update table1 set version = 5 where Col1 = 'abc'  if version = 4;



Такой запрос возвращает в качестве результата boolean колонку [applied], если изменения были внесены, то результат будет trueб иначе false.
Т.о. я могу получить информацию о том, прошел update или нет.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / NoSQL, Big Data [игнор отключен] [закрыт для гостей] / Cassandra Optimistic Locking
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]