Кассандра - сопровождение транзакций - PullRequest
29 голосов
/ 04 июня 2010

Я прохожу через Apache Cassandra и работаю над вставкой образца данных, извлечения и т. Д.

Документация очень ограничена.

Мне интересно знать

  • можем ли мы полностью заменить отношение db как mysql / oracle на cassandra?
  • поддерживает ли Кассандра откат / коммит?
  • Поддерживает ли клиент cassandra (thrift / hector) извлечение связанного объекта (объектов, в которых мы сохраняем ключ одного столбца в другом семействе столбцов)?

Это мне очень поможет в дальнейшем.

Заранее спасибо.

Ответы [ 3 ]

29 голосов
/ 09 июня 2010

Краткий ответ: Нет.

По своему замыслу Cassandra оценивает доступность и допуск раздела по согласованности 1 . По сути, невозможно получить приемлемую задержку при сохранении всех трех качеств: нужно пожертвовать одним. Это называется теорема CAP.

Количество согласованности настраивается в Cassandra с использованием уровней согласованности, но семантики для отката не существует. Нет никакой гарантии, что вы сможете откатить свои изменения, даже если первая запись удалась.

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

Возможно, вы уже догадались, но у Кассандры нет внешних ключей или чего-то в этом роде. Это должно быть обработано вручную. Я не очень знаком с Гектором, но клиент более высокого уровня мог бы сделать это полуавтоматически.

Возможность использования Cassandra для простой замены СУБД зависит от вашего конкретного случая использования. В вашем случае использования (на основе ваших вопросов) это может быть трудно сделать.

6 голосов
/ 10 февраля 2015

В версии 2.x вы можете комбинировать CQL-операторы в журналированном пакете , который является атомарным. Либо все, либо ни одно из утверждений не увенчались успехом. Также вы можете прочитать о легких транзакциях . Более того - у Кассандры есть несколько менеджеров персистентности. С ними можно добиться поведения внешних ключей на уровне клиента. Например, Ахиллес и Кундера .

2 голосов
/ 22 декабря 2011

Если Zookeeper способен обрабатывать транзакции, имеющие качество Oracle, тогда сделка завершена.Отношения и целостность отношений - не проблема для реализации поверх ЛЮБОЙ базы данных.Внешний ключ - это просто другое поле данных.КИСЛОТА / Транзакции - ключевой вопрос.

...