Могу ли я обнаружить конфликты, когда пишу Кассандре? - PullRequest
2 голосов
/ 27 марта 2012

Существует ли какая-либо временная метка / счетчик, которую можно использовать для проверки того, что в цикле чтения-изменения-записи данные в строке не изменялись между чтением и изменением?

Другими словами, могу ли я прочитать какой-то идентификатор во время чтения строки, и когда я записываю его обратно, скажу Кассандре, что это был за идентификатор, и тогда произойдет сбой записи, если идентификатор изменился с тех пор? (Что означает, что после прочтения данных произошла какая-то другая запись)

1 Ответ

2 голосов
/ 28 марта 2012

Каждый столбец в cassandra - это кортеж (или триплет), который содержит имя, значение и метку времени.Временная метка столбца представляет последний раз, когда он был изменен.Если у вас есть 100 узлов, какой-либо узел с обновлением с самой последней отметкой времени победит.Вот как достигается Окончательная согласованность .

zznate имеет хорошую презентацию: Введение в Apache Cassandra для разработчиков Java , где есть ссылка на эту тему (слайд 37)

Доступ к метке времени столбца Cassandra

Таким образом, вам не нужен «какой-то идентификатор», когда у вас есть возможность получить метку времени для данного столбца, представляющего последний раз, когда он был изменен.Однако в масштабе, с сотнями узлов, как вы можете быть уверены, что узел, к которому вы подключаетесь, имеет самый последний столбец?(см. презентацию zznate)

Дело в том, что вы не можете без включения транзакций:

  1. Cassandra - поддержка транзакций
  2. Cassandra Transaction с ZooKeeper - это работает?
  3. как интегрировать Cassandra с Zookeeper для поддержки транзакций
  4. И многие другие: Кассандра и транзакции
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...