2014-10-29 3 views
2

Я использую Spring и Cassandra как базовую базу данных. Сообщал о весеннем зонтичном проекте «spring data cassandra». Не удалось выяснить, как здесь управляются транзакции, в отличие от спящего режима. Не забудьте поделиться сведениями о том, что Менеджер транзакций будет включен, если некоторые из вас включили его.Управление транзакциями для данных Spring cassandra

ответ

4

Cassandra не поддерживает транзакции в традиционном (ACID) смысле. Есть несколько конструкций, в которых вы можете добиться чего-то вроде транзакционной атомарности в особых случаях, таких как атомные партии (см. http://www.datastax.com/dev/blog/atomic-batches-in-cassandra-1-2) или «Легкие транзакции» (см. http://www.datastax.com/dev/blog/lightweight-transactions-in-cassandra-2-0), но ничего не поддается полномасштабному управлению транзакциями.

В основном это результат архитектуры Cassandra, которая фокусируется на масштабируемости и отказоустойчивости на уровне, недоступном для традиционных реляционных баз данных.

+0

Я знаю, что Кассандра не поддерживает транзакцию atomicity.I'm пытается выяснить, если есть какая-то основа, выполнит задачу для меня. Kundera (https://github.com/impetus-opensource/Kundera/w iki/Transaction-Management), похоже, выполняет эту работу, но я смотрю что-то конкретное с проектом Spring-data-cassandra (http://projects.spring.io/spring-data-cassandra/) – Anish

+0

Извините, @Anish, ничего как в SDC. Не стесняйтесь создавать проблему с запросом на https://jira.spring.io/browse/DATACASS –

+0

@Mathew Adams: Я записал то же самое в JIRA, но они отметили его как Invalid. Они неправильно истолковали как проблему Кассандры, а не то, что можно включить, создав обертку весной вместо Кассандры. Вы можете найти мою ошибку в журнале [здесь] (https://jira.spring.io/browse/DATACASS-180) – Anish

3

Пакет Cassandra в настоящее время является атомарным по умолчанию. http://docs.datastax.com/en/cql/3.0/cql/cql_reference/batch_r.html

Так что, вероятно, лучший эквивалент @Transactional весной данных (Хотя, полный ACID не для этого мира, это просто не так, как он играет)

Нечто подобное должно играть (вы можете изменить значение ConsistencyLevel и RetryPolicy, как вы хотите - это дело!):

Insert insert1 = CassandraTemplate.createInsertQuery("table1", value1, new WriteOptions(ConsistencyLevel.LOCAL_ONE, RetryPolicy.DEFAULT), cassandraConverter); 

Insert insert2 = CassandraTemplate.createInsertQuery("table2", value2, new WriteOptions(ConsistencyLevel.LOCAL_ONE, RetryPolicy.DEFAULT), cassandraConverter); 

Batch batch = QueryBuilder.batch(insert1,insert2); 

//cassandraOperations - object of CassandraTemplate , injected by Spring 
cassandraOperations.execute(batch); 
Смежные вопросы