Подтвердить что ты не робот

Cassandra - поддержка транзакций

Я прохожу через apache cassandra и работаю над вставкой образцов данных, извлечением и т.д.

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

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

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

Это поможет мне многое продолжить дальше.

благодарим вас заранее.

4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 2

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

Ответ 3

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