2014-10-29 90 views
2

我使用Spring和Cassandra作爲底層數據庫。曾提到春季傘項目「春季數據卡桑德拉」。 找不到與hibernate不同的事務處理方式。 請分享交易經理的詳細信息,如果你們中的一些人已經合併了。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試圖找出是否有一些框架,將爲我執行任務。昆德拉(https://github.com/impetus-opensource/Kundera/w iki/Transaction-Management)似乎做了這項工作,但我正在尋找Spring-data-cassandra項目的具體內容(http://projects.spring.io/spring-data-cassandra/) – Anish 2014-10-29 11:04:27

+0

對不起,@Anish,什麼都沒有就像SDC中那樣。請隨時通過https://jira.spring.io/browse/DATACASS – 2014-10-29 21:26:26

+0

@Mathew Adams創建請求問題:我在JIRA中記錄了相同內容,但他們將其標記爲無效。他們誤解爲Cassandra問題,而不是通過Spring而不是Cassandra創建封裝的方式。你可以找到我的bug [這裏](https://jira.spring.io/browse/DATACASS-180) – Anish 2014-11-01 17:56:45

3

Cassandra批處理默認爲當前原子。 http://docs.datastax.com/en/cql/3.0/cql/cql_reference/batch_r.html

原來如此,或許,最好相當於在春天數據 @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);