2011-06-06 75 views
25

所以我有一個網站可能最終會獲得一些相當高的流量。我的數據庫實現目前在SQL Server 2008中。我真的只有2桌和一些存儲特效。大部分數據庫都可以重新設計,無需加入即可工作(儘管在SQL Server中如此輕鬆地加入時沒有意義)。SQL Server與NoSQL

我聽說像Digg和Facebook這樣的網站使用NoSQL數據庫進行大量基本數據訪問。這是值得研究的東西,還是SQL Server不會真的讓我放慢速度?

我在我的網站上使用了分頁(雖然這可能會在未來發生變化),並且我還使用AJAX的大部分「活」內容訪問數據,所以它似乎並不是一個性能障礙目前,但恐怕會隨着數據開始呈指數級增長。

我將獲得很多表現,我將轉向NoSQL?老實說,現在我甚至沒有完全理解NoSQL,所以的任何提示如何這將幫助我改善得更好。

謝謝你們。

+0

可能的重複:http://stackoverflow.com/questions/1145726/what-is-nosql-how-does-it-work-and-what-benefits-does-it-provide – RThomas 2011-06-06 20:54:54

+0

可能重複[什麼是NoSQL,它是如何工作的,它提供了什麼好處?](http://stackoverflow.com/questions/1145726/what-is-nosql-how-does-it-work-and-what-benefits-does-它提供) – 2017-02-20 15:42:49

回答

42

其實Facebook在其核心使用關係數據庫,請參閱SOCC Keynote Address: Building Facebook: Performance at Massive Scale。許多其他網絡規模的網站也是如此,請參閱Why does Quora use MySQL as the data store instead of NoSQLs such as Cassandra, MongoDB, CouchDB etc?。另外還討論瞭如何將SQL Server擴展爲網絡規模大小,請參閱基於MySpace體系結構的How do large-scale sites and applications remain SQL-based?(更多詳細信息,請參見Scale out SQL Server by using Reliable Messaging)。我並不是說NoSQL沒有它的用​​例,我只想指出白色和黑色之間有許多灰色陰影。

如果您擔心目前的解決方案無法擴展,那麼您可能應該考慮哪些因素會妨礙當前解決方案的可伸縮性。測試數據生產起來很便宜,可以加載'呈指數級增長'的數據量並運行測試工具,查看其破解的位置。 NoSQL解決方案都不會帶來神奇的現成可擴展性,它們都要求您瞭解如何有效地使用它們並正確部署它們。如果你想確保規模的成功,他們還要求你進行大量測試。傳統的關係解決方案也是如此。

+1

是的,是的,一百萬次是的。 – HLGEM 2011-06-07 18:08:31

+0

另一個有趣的SQL案例研究(newrelic使用mysql每天存儲200億數據點到磁盤) - http://www.slideshare.net/jthurman42/getting-100b-metrics-to-disk – Anoop 2015-06-10 05:56:28

7

Sql Server擴展性很好。例如,Stack Overflow使用它來爲你提供這個頁面。 Facebook和谷歌可能會使用nosql的一種形式,但即使你把它做得很大,你也不可能達到這個水平。

7

通過簡單的表格結構和適合一臺服務器的數據,使用哪種平臺並不重要。有需要移動到NoSQL的一個幾個可能的原因:

  • 數據縮放 - SQL效果最好時,所有的數據在一臺服務器上的配合(高達數TB)。很多NoSQL存儲沒有加入的原因是它們被設計爲不要求所有對象都在一臺服務器上。

  • 性能擴展 - NoSQL存儲在處理高流量方面傾向於更快,但不一定足夠重要。只要您沒有遇到數據大小問題,您就可以通過複製和緩存提高SQL性能。寫入通常必須在一臺服務器上運行,但在大多數情況下,在寫入性能成爲問題之前,您需要提高讀取性能。

  • 複雜的數據訪問 - 某些類型的查詢根本不適合於關係模型。圖形和集合商店與關係數據庫的工作方式完全不同,因此更適合某些應用程序。

  • 更簡單的開發 - 如果您還沒有SQL數據庫和所有代碼來支持它,那麼使用無模式數據存儲可以節省相當多的開發時間。

+0

在單服務器小數據場景中,您也可以從NoSQL中受益匪淺。通常由於NoSQL的無風格特性導致開發週期更短,數據訪問速度更快(無ORM) – synhershko 2011-06-07 10:12:51

+0

像RavenDB這樣的NoSQL可以讓您編寫用於通過MVC提供網站內容的模型,然後使用相同的POCO存儲。您實際上沒有數據層,因此通常用於數據庫建模的75%的開發時間將被保存。性能和數據縮放默認情況下非常好,但可以很容易地進行調整,因爲它旨在支持分片和複製,而在SQL中它似乎更像是一種破解。 – synhershko 2011-06-07 10:21:39

+0

我的意思是第四點。比以前的SQL解決方案快數百倍以上是我使用redis的主要原因,但開發體驗非常接近。它不會像你所建議的那樣去除數據層 - 我有一些存在於數據存儲和MVC視圖中的對象,但對於超出基本CRUD視圖模型的任何對象,最終都會有與數據對象完全不同的要求。 – 2011-06-07 12:35:36

1

我不這麼認爲,您必須將您的數據庫從SQL移動到NoSQL,除非直到您服務的數千TB數據。如果您正確地對錶格進行規範化並提供數據,並且還需要設置適當的歸檔機制,它應該可以工作。

如果你仍然有問題要怎麼選擇,以及如何,比check this。假設您決定轉向NoSQL數據庫,而不是有很多市場參與者。只需看看list,這又取決於您的需求和您所擁有的數據類型。