目標應用程序是一箇中等規模的網站,每小時支持幾百到幾千個用戶,並可以選擇以上的比例。數據模型相當簡單,並且緩存潛力相當高(讀取與編輯操作的比率約爲10:1)。選擇SQL/NoSQL應該考慮什麼?
在基於SQL的關係數據存儲與NoSQL選項(如HBase和Cassandra)之間進行選擇時,應該考慮什麼?
目標應用程序是一箇中等規模的網站,每小時支持幾百到幾千個用戶,並可以選擇以上的比例。數據模型相當簡單,並且緩存潛力相當高(讀取與編輯操作的比率約爲10:1)。選擇SQL/NoSQL應該考慮什麼?
在基於SQL的關係數據存儲與NoSQL選項(如HBase和Cassandra)之間進行選擇時,應該考慮什麼?
對我來說,你沒有任何特別的問題需要解決。如果您需要ACIDity,請使用數據庫;如果你不這樣做,那沒關係。最後只需構建您的應用程序。讓我引用NoSQL: If Only It Was That Easy:
真正要指出的是,如果你正在舉行作出一些超級真棒,因爲你不能選擇一個數據庫回來,你做錯了。如果你知道mysql,只是用它。當你真正需要時進行優化。使用它像一個K/V商店,使用它像一個RDBMS,但爲了上帝的緣故,建立你的殺手級應用程序!這對大多數應用程序都無關緊要。 Facebook仍然使用MySQL,很多。維基百科使用MySQL,很多。 FriendFeed使用MySQL,很多。 NoSQL是一個很棒的工具,但它肯定不會成爲你的競爭優勢,它不會讓你的應用變得熱門,而且最重要的是,你的用戶不會對此產生任何影響。
'你的用戶不會對這個問題有任何疑問' - 我喜歡這個部分,真的。 LOL – GusDeCooL 2016-12-26 22:48:41
Digg對這個問題有一些interestingarticles。實質上,您將處理負擔轉移到了寫入而不是讀取,這在高度可伸縮的應用程序中可能是需要的。 Cassandra特別高度可用。
簡單地說,Cassandra是用在迪納摩運行像 基礎設施BigTable的 數據模型 分佈式數據庫。它是以列爲導向的 ,並允許存儲相對結構化的數據。它有一個完全分散的模型 ;每個節點 是相同的,並且沒有單一的故障點 。這也是極其容錯的;數據被複制到 多個節點以及跨數據中心 。卡桑德拉也很有彈性;讀取和寫入吞吐量 隨着新機器添加 線性增加。
當你說,數據模型很簡單,這可以說是NoSQL選項。
當您有足夠的屬性進行選擇,繁重的事務負載或複雜的表結構時,這可以說是傳統的SQL表。
我建議找出用一個或兩個NoSQL數據庫實現數據模型是多麼困難。當這很困難時,你也可以創建一個經典的表格模式來進行比較。
當您遇到NoSQL問題時,這可能是SQL選項。但也可能的是,用NoSQL可以更好地處理重負載 - 但也可能是一個好的SQL數據庫能夠充分擴展......
緩衝也可以用一個簡單的代理服務器完成......
在困難中,還可以考慮混合使用NoSQL和SQL。
我喜歡拇指的伊恩·厄爾的規則:「如果你在你的數據庫上部署的memcache,你自己發明的ad-hoc,難以維持的NoSQL系統。」
http://www.rackspacecloud.com/blog/2010/02/25/should-you-switch-to-nosql-too/
我尊敬你2(喬納森埃利斯和伊恩厄爾)太多認爲這是一個嚴重的反應。當然,這只是一個暴躁的笑話? – schmichael 2011-04-19 22:39:19
你的意思是每小時100到1k或100k用戶嗎? – Bobby 2010-03-13 21:26:46
清除含糊不清:) – 2010-03-13 21:29:36
請至少做一個_little_研究(可能兩分鐘的價值)。只需快速瀏覽http://stackoverflow.com/questions/tagged/nosql。 – 2010-03-14 17:34:05