2010-06-04 136 views
25

我正在通過apache cassandra並處理樣本數據插入,檢索等。Cassandra - 交易支持

文檔非常有限。

我想知道

  • 我們可以完全取代關係數據庫如MySQL /甲骨文與卡桑德拉?
  • 確實cassandra支持回滾/提交?
  • 確實cassandra客戶端(thrift/hector)支持獲取關聯對象(我們在另一個超級列族中保存一個超級列表項的對象)?

這將幫助我進一步深入。

謝謝你提前。

回答

26

簡短的回答:

號在設計上,卡桑德拉重視可用性和分區容忍了一致性1。基本上,不可能在保持所有三種品質的同時獲得可接受的等待時間:必須犧牲一個品質。這被稱爲CAP定理。

一致性的數量可以在Cassandra中使用一致性級別配置,但不存在回滾的任何語義。沒有保證,即使第一次寫入成功,您也能夠回滾您的更改。

如果你不想在Cassandra之上建立事務或鎖的應用程序,你可能想看看Zookeeper,它可以用來提供分佈式同步。

您可能已經猜到了這一點,但Cassandra沒有外鍵或類似的東西。這必須手動處理。我不太熟悉赫克托爾,但是更高級別的客戶可以半自動地做到這一點。

您是否可以使用Cassandra輕鬆替換RDBMS取決於您的特定用例。在你的用例中(根據你的問題),可能很難這樣做。

+0

謝謝勞蒂斯。 考慮到所有功能後,我們決定不去cassandra並堅持關係數據庫。 – 2010-07-10 11:41:14

+1

cassandra郵件列表上有關交易的良好線索:http://cassandra-user-incubator-apache-org.3065146.n2.nabble.com/best-practices-for-simulating-transactions-in-Cassandra-td7064256.html – Zanson 2011-12-22 23:20:11

+0

謝謝。很好的答案! – Amresh 2012-08-29 18:45:16

2

如果Zookeeper能夠處理具有Oracle質量的交易,那麼它是一個完成的交易。在任何數據庫之上實現關係和關係完整性都沒有問題。外鍵只是另一個數據字段。 ACID /交易是關鍵問題。

+0

我不同意外鍵只是另一個數據字段。 SQL數據庫中實施的強制類型處理數據何時被其他連接刪除的數據,以及連接嘗試引用它時的情況。它會正確拒絕其中一個連接。在高層實現時,如何執行這些操作,而不會影響性能的鎖定/資源同步? – 2014-04-23 10:03:34

5

在版本2.x中,您可以組合原子記錄爲batch的CQL語句。無論是全部還是全部都不成功。你也可以閱讀關於lightweight transactions。 不僅如此,還有幾個Cassandra的持久化管理器。您可以通過它們在客戶端級別獲取外鍵行爲。例如,AchillesKundera