2010-03-04 71 views
32

我正在考慮使用Cassandra作爲數據庫的項目。即使我們使用MySQL開始,我們希望最終遷移到Cassandra,因爲它具有可伸縮性。我知道像Facebook,Digg這樣的大公司,以及最近的Twitter都在使用Cassandra,但我不相信任何這些網站都會使用Rails。我的問題是使用Ruby on Rails來使用Cassandra是否可行。要考慮的幾點:Cassandra生產是否準備好了Ruby on Rails?

  1. 我們嚴重依賴Authlogic gem。切換到Cassandra會影響它的工作原理嗎?
  2. Cassandra是否有任何成熟的Ruby客戶端?在Github上看起來,fauna's client (now twitters's client)是最成熟的。有沒有人有過生產經驗?

欣賞任何提示。

+3

是的,但不要以爲這些公司都在使用Cassandra。例如,Facebook有一個大規模的MySQL部署,並且Twitter將所有的推文存儲在MySQL中。考慮你的具體用例。 – 2011-02-02 06:14:21

+0

我會說Ruby對於Cassandra來說還不夠成熟。 – 2015-05-25 19:29:54

回答

16

Twitter的大部分前端都運行軌道。 Fauna的客戶端實際上是由twitter構建和發佈的,因此您可以非常確定它在最新的工作負載上保持穩定。看看提交歷史記錄顯示,推動它的頻繁改進非常棒。

最有可能的Authlogic需要定製才能與Cassandra正常工作。特別是,它似乎提供了基於named_scope和關係數據的某些方法。

看來有人在Authlogic中爲DataMapper支持構建了一個插件:http://twitter.com/collintmiller/statuses/2064046718。您可以將其作爲使其與Cassandra兼容的起點。

祝你好運!

+0

謝謝。關於Fauna的澄清是非常有用的,我一定會研究DataMapper插件。 – funkymunky 2010-03-06 11:52:03

+1

另一個值得考慮的方法是:讓你的Rails應用程序使用mysql和cassandra。通過這種方式,您的用戶表(等等)可以使用AuthLogic保留在MySql上,而高容量表可以使用cassandra。我還沒有嘗試過,但從我看到的這聽起來可能。 – 2010-03-20 03:28:12

9

我不認爲從MySQL開始,然後移動到卡桑德拉是一個好主意。

Cassandra是一個NoSQL解決方案,而MySQL是一個「經典」的SQL驅動的數據庫。

這意味着您的模型會有所不同。

如果你從MySQL開始,你將不得不依靠ActiveRecord來創建你的模型。如果您更改爲Cassandra,則必須將所有模型更改爲兼容NoSQL的中間件(例如BigRecord)。這不僅意味着改變你的模型,而且也意味着使用它們的控制器(因爲它們的接口會不同)。

這就是說,卡桑德拉之類的應用程序應該用於非常苛刻的應用程序 - 比如twitter。

其餘的網絡應用程序的強度不那麼強烈 - 你確定你還需要Cassandra嗎?

PostgreSQL和一個設計良好的數據庫在98%的時間內已經足夠好了。

+1

完全同意。 NoSQL是一個很酷且令人興奮的技術。如果你需要大幅度降低成本。錯誤你需要首先擴大規模。 – 2010-03-04 22:43:11

1

還有http://github.com/NZKoz/cassandra_object,其中IIANM建立在動物羣客戶端之上。 「Cassandra Object爲Cassandra提供了一個很好的API。CassandraObjects大多與鴨子類型的ActiveRecord對象兼容,所以你的大部分控制器代碼應該可以正常工作......只有當你想要幫助開發,現在有一堆粗糙的邊緣。「

5

我現在在研究Cassandra,MongoDB和CouchDB。

判斷哪個開發人員支持最多的方法之一是通過檢查最高級別的github項目上的每個監視器的數量。至少作爲一個粗略的估計。

現在它是

852 - MongoDB的 http://github.com/jnunemaker/mongomapper

544 - CouchDB的 http://github.com/jchris/couchrest

178 - 卡桑德拉 http://github.com/fauna/cassandra

雖然,我有一堆高調的說網站(Twitter,Digg,Reddit等)最近宣佈他們正在轉向Cassandra,這是一個很大的問題爲他們提供信心。

到目前爲止,Mongo似乎擁有最多最好的文檔。他們的自動分片仍然處於alpha階段,儘管如此,它的縮放比例還有待觀察,我認爲。

我剛剛開始瞭解所有這些東西,所以如果別人有洞察請分享。

+0

由於Mongo有很多用例,而這種情況有點扭曲,而像Cassandra這樣的東西只會被具有特定需求的人使用,在這種情況下,性能很高等。 – Bitterzoet 2010-06-30 21:11:41

7

如果你再改卡桑德拉,你將有你所有的機型更改爲NoSQL的

這是不正確的。如果你編程的方式是你的MySQL數據庫沒有加載連接,那麼是的,你可能會遇到問題。當我們開始MySQL路由時,我們儘可能地避免了連接。然後,當我們開始遷移到Casandra時,這很容易,我們只在一開始就使用了1個模型。然後一起說4個模型。等等。事實上,當你閱讀twitter的採訪時,你會注意到他們同時運行MySQL和Casandra的同一模型:http://nosql.mypopescu.com/post/407159447/cassandra-twitter-an-interview-with-ryan-king

對於Authlogic,只要你願意,你可以在mySQL中保留該部分,只要保持它與Cassandra數據的鬆散結合。

+0

感謝您的鏈接,這非常有趣。我們現在堅持使用MySQL,因爲我們知道它100%適用於我們的應用程序。很高興知道,未來可能轉向Cassandra。 – funkymunky 2010-03-23 04:58:10