2016-08-17 80 views
1

我們有一個用例,我們需要用事務支持來編寫/更新兩個表。這是必需的,因爲兩個表都是相關的,所以它們不能不同步。 我們還討論了合併兩個表格,但這看起來不太可行。在Cassandra提供交易支持

AFAIK,Cassandra不提供交易支持。有沒有任何技術/庫可以做到這一點?

我們也在爲此評估Couchbase。你認爲couchbase會比Cassandra更好嗎?

回答

1

在Couchbase中,您可能可以將RDMBS中三個不同表中的內容合併爲一個JSON文檔,因此不需要事務處理。不知道你的應用程序,我不知道這是一個好的JSON文檔模型。將關係模式與NoSQL模式進行比較對於桔子來說是蘋果。

在相關說明中,當您編寫單個對象時,Couchbase非常一致。您的讀/寫總是會進入相同的活動vBucket(即碎片)。

2

Cassandra支持按鍵線性化和比較並設置(CAS)。這足以在客戶端實現交易。

Percolator's transactions提供了可串行化的隔離級別。它們在業內頗爲知名,並在亞馬遜的DynamoDB transaction libraryCockroachDB database和Google的Pecolator系統本身中使用。 Percolator交易的step-by-step visualization可能會幫助您瞭解它們。

如果您期望爭用並且可以處理Read Committed隔離級別,那麼Peter Bailis的RAMP transactions可能適合您。我還創建了一個step-by-step RAMP visualization,這可能對理解有幫助。

第三種方法是使用補償交易也稱爲saga模式。它在80年代後期在Sagas論文中有所描述,但與分佈式系統的興起更相關。請參閱Applying the Saga Pattern探討靈感。