Cassandra - поддержка транзакций
Я прохожу через apache cassandra и работаю над вставкой образцов данных, извлечением и т.д.
Документация очень ограничена.
Мне интересно знать
- можем ли мы полностью заменить отношение db как mysql/oracle с помощью cassandra?
- поддерживает ли кассандра откат/фиксация?
- клиенты cassandra (бережливый/hector) поддерживают выборку связанного объекта (объекты, в которых мы сохраняем один супер столбцов в другом суперколонном семействе)?
Это поможет мне многое продолжить дальше.
благодарим вас заранее.
Ответы
Ответ 1
Краткий ответ: Нет.
По своему замыслу Cassandra ценит доступность и допуск раздела по согласованности1. По сути, невозможно получить приемлемую задержку при сохранении всех трех качеств: нужно пожертвовать одним. Это называется теорема CAP.
Степень согласованности настраивается в Cassandra с использованием уровней согласованности, но семантики для отката не существует. Нет никаких гарантий, что вы сможете откатить изменения, даже если первая запись удалась.
Если вы не хотите создавать приложение с транзакциями или блокировками поверх Cassandra, вы, вероятно, захотите взглянуть на Zookeeper, который можно использовать для обеспечения распределенной синхронизации.
Возможно, вы уже догадались, но у Кассандры нет внешних ключей или чего-то в этом роде. Это должно быть обработано вручную. Я не очень знаком с Гектором, но клиент более высокого уровня мог бы сделать это полуавтоматически.
Возможность использования Cassandra для простой замены СУБД зависит от вашего конкретного случая использования. В вашем случае использования (на основе ваших вопросов), это может быть трудно сделать.
Ответ 2
В версии 2.x вы можете комбинировать CQL-операторы в журнале batch, который является атомарным. Либо все, либо ни одно из утверждений не выполняется. Также вы можете прочитать облегченные транзакции.
Более того - для Кассандры есть несколько менеджеров по сохранению. С ними можно добиться поведения внешних ключей на уровне клиента. Например, Achilles и Kundera.
Ответ 3
Если Zookeeper может обрабатывать транзакции с качеством Oracle, то это будет сделано. Отношения и целостность отношений не являются проблемой для реализации поверх ЛЮБОЙ базы данных. Внешний ключ - это еще одно поле данных. ACID/транзакции - ключевая проблема.