2012-12-21 165 views
1

我正在查看SQL & NoSQL數據庫 - 即MySQL和DynamoDB(均位於AWS)。NoSQL數據庫設計

我正在建立一個約會/社交網絡,我已經建立的演示一直使用MySQL數據庫,大約有50個表用於數據的邏輯分離,然後使用SQL查詢(通常與連接)來提取所需的數據塊發送回瀏覽器。

我正在轉向AWS,並且正在重建系統,並想知道是否可以在NoSQL中編寫像這樣的網站100%。我知道你不知道該網站的具體情況,但它可以與任何其他約會/社交網絡如Facebook(顯然更多涉及)或Eharmony/Match Maker等相比...

是否可以構建社交網站NoSQL上100%?還是會混合使用NoSQL & SQL是否現實?

THX

回答

4

這是一個非常難以回答的問題,如果沒有更深入的瞭解你究竟具備哪些功能,以及你將使用哪種語言編寫網站。有許多不同類型的NoSQL解決方案。

像Dynamo和Cassandra這樣的NoSQL數據庫是鍵值存儲。與MongoDB和RavenDB相比,它們提供了一組非常不同的功能。還有許多其他類型。

就我個人而言,我完全可以根據RavenDB編寫一個社交媒體網站。但那是因爲我傾向於關注域驅動設計,並且喜歡用.Net/C#編寫。它具有您需要的所有功能,例如查詢索引,針對大數據作業的映射/縮減,全文搜索以及空間距離鄰近搜索。如果你想從PHP或JavaScript編程,你可以使用他們的http/rest api,但是他們的C#客戶端更容易使用。

您的要求可能與我的不同。我鼓勵你在試用之前試用幾種不同的NoSQL技術。您仍然可能發現您需要SQL(或MySQL)數據庫來處理您的NoSQL解決方案無法處理的某些事情。例如,RavenDB不建議用於臨時報告 - 這麼多人建立了一個獨立的SQL Server數據庫,並將Raven中的數據複製到SQL中,以便他們可以爲高級用戶提供單獨的報告數據庫。

1

要記住的最重要的事情是,大多數的NoSQL引擎(如Cassandra)不支持查詢,從而使已在你的設計中的一個因素(即你想當然SQL中的許多事物一樣在一個noSQL解決方案中,JOIN要困難得多)。據說,你絕對可以使用noSQL解決方案構建全功能的應用程序。我鼓勵你查看來自許多供應商的資源,例如Cassandra,MongoDB,Dyanamo和其他許多供應商。

+2

它們支持查詢,但是您可以運行的查詢通常很多*有限。 – tadman

+0

好點。我可以說的一個更好的方式是「不支持範圍廣泛的查詢」。 – jchapa

+0

MongoDB支持查詢事物的非SQL方式並具有索引,其他鍵值存儲區支持範圍選擇器。 「NoSQL」本質上僅僅意味着「沒有SQL查詢」,但不是沒有查詢。區別非常重要,因爲在某些問題域中,一些NoSQL系統實際上比SQL好得多。 – tadman