2014-10-29 2 views
2

스프링과 카산드라를 기본 데이터베이스로 사용하고 있습니다. 스프링 우산 프로젝트 '봄 데이터 카산드라'를 언급 했습니까? 최대 절전 모드와 달리 여기에서 트랜잭션을 관리하는 방법을 찾을 수 없습니다. 일부 사용자가 포함시킨 경우 포함될 트랜잭션 관리자에 대한 세부 정보를 친절하게 공유하십시오.스프링 데이터 용 트랜잭션 관리 cassandra

답변

4

카산드라는 전통적인 (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 데이터 카산드라 프로젝트 (http://projects.spring.io/spring-data-cassandra/)와 관련하여 뭔가를 찾고 있습니다. – Anish

+0

미안 해요, @Anish, nothing SDC 에서처럼. https://jira.spring.io/browse/DATACASS –

+0

@Mathew Adams : JIRA에서도 같은 기록을했지만 Invalid로 표시했습니다. 그들은 Cassandra 문제로 오해하고 Cassandra 위에 대신 Spring에 의해 래퍼를 생성하여 통합 할 수있는 무언가가 아닙니다. 내 버그는 [여기]에서 찾을 수 있습니다 (https://jira.spring.io/browse/DATACASS-180). – Anish

3

카산드라 배치는 기본적으로 기본적입니다. http://docs.datastax.com/en/cql/3.0/cql/cql_reference/batch_r.html

는 그래서 이런

뭔가 (그것은 재생 그냥 그렇게이며, 전체 ACID이 세상을하지 않습니다,하지만) 아마 최고의 상응하는 봄의 데이터 에서 @Transactional하는 것입니다해야 재생 (당신은 당신이 원하는대로 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); 
관련 문제