2010-03-13 66 views
19

目標應用程序是一箇中等規模的網站,每小時支持幾百到幾千個用戶,並可以選擇以上的比例。數據模型相當簡單,並且緩存潛力相當高(讀取與編輯操作的比率約爲10:1)。選擇SQL/NoSQL應該考慮什麼?

在基於SQL的關係數據存儲與NoSQL選項(如HBase和Cassandra)之間進行選擇時,應該考慮什麼?

+0

你的意思是每小時100到1k或100k用戶嗎? – Bobby 2010-03-13 21:26:46

+0

清除含糊不清:) – 2010-03-13 21:29:36

+0

請至少做一個_little_研究(可能兩分鐘的價值)。只需快速瀏覽http://stackoverflow.com/questions/tagged/nosql。 – 2010-03-14 17:34:05

回答

18

對我來說,你沒有任何特別的問題需要解決。如果您需要ACIDity,請使用數據庫;如果你不這樣做,那沒關係。最後只需構建您的應用程序。讓我引用NoSQL: If Only It Was That Easy

真正要指出的是,如果你正在舉行作出一些超級真棒,因爲你不能選擇一個數據庫回來,你做錯了。如果你知道mysql,只是用它。當你真正需要時進行優化。使用它像一個K/V商店,使用它像一個RDBMS,但爲了上帝的緣故,建立你的殺手級應用程序!這對大多數應用程序都無關緊要。 Facebook仍然使用MySQL,很多。維基百科使用MySQL,很多。 FriendFeed使用MySQL,很多。 NoSQL是一個很棒的工具,但它肯定不會成爲你的競爭優勢,它不會讓你的應用變得熱門,而且最重要的是,你的用戶不會對此產生任何影響。

+0

'你的用戶不會對這個問題有任何疑問' - 我喜歡這個部分,真的。 LOL – GusDeCooL 2016-12-26 22:48:41

1

Digg對這個問題有一些interestingarticles。實質上,您將處理負擔轉移到了寫入而不是讀取,這在高度可伸縮的應用程序中可能是需要的。 Cassandra特別高度可用。

簡單地說,Cassandra是用在迪納摩運行像 基礎設施BigTable的 數據模型 分佈式數據庫。它是以列爲導向的 ,並允許存儲相對結構化的數據。它有一個完全分散的模型 ;每個節點 是相同的,並且沒有單一的故障點 。這也是極其容錯的;數據被複制到 多個節點以及跨數據中心 。卡桑德拉也很有彈性;讀取和寫入吞吐量 隨着新機器添加 線性增加。

0

當你說,數據模型很簡單,這可以說是NoSQL選項。

當您有足夠的屬性進行選擇,繁重的事務負載或複雜的表結構時,這可以說是傳統的SQL表。

我建議找出用一個或兩個NoSQL數據庫實現數據模型是多麼困難。當這很困難時,你也可以創建一個經典的表格模式來進行比較。

當您遇到NoSQL問題時,這可能是SQL選項。但也可能的是,用NoSQL可以更好地處理重負載 - 但也可能是一個好的SQL數據庫能夠充分擴展......

緩衝也可以用一個簡單的代理服務器完成......

在困難中,還可以考慮混合使用NoSQL和SQL。

相關問題