| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > NoSQL > Cassandra Optimistic Locking |
| Автор: rds29 24.6.2014, 15:29 |
| Добрый день, Подскажите пожалуйста нужно реализовать следующую логику Optimistic Locking используя Java и Cassandra: Имеется таблица Col1 (PK) | Date |Version -------------------------- abc | Some Date |3 Для реализации Optimistic locking используется колонка version. Когда мы считываем запись из базы данных - мы запоминаем версию, а когда необходимо сделать update этой записи - проверяем, что версия не поменялась. Нужно сделать так, чтобы обеспечивалась атомарность проверки и обновления записи в таблице. Также необходимо инкрементировать версию при каждом апдейте. Проблемы 1. Version нельзя поместить where для запроса вида update table where Col1 = 'abc' and version = 3 2. Version нельзя поместить в PK, т.к. ее нужно изменять (насколько я понял PK - константа и менять его содержимое нельзя) 3. Можно сделать select, получив текущую version, сравнить в Java коде с той версией, которую мы запомнили, и потом сделать update. Здесь проблема в атомарности, точнее в ее отсутствии, а она необходима. Подскажите, как обойти данные проблемы? |