2011-10-09 52 views
1

我正在製作一個具有社交網絡功能的系統。我想知道您對持久性技術最適用於某些功能的想法。應用程序特性持久性選擇 - NoSQL還是RDBMS?

讓我們系統的三個基本特徵:

  • 用戶流 - 應用程序中所有用戶活動將被記錄下來,然後在用戶的個人資料顯示,這將是類似Facebook的牆。這將是應用程序的主要重點之一,它需要儘可能獲得最佳性能。
  • 應用和安全日誌 - 這裏是應用程序的錯誤被存儲,並且如其它用戶相關的數據:IP,地理空間位置,歷史日誌等,這部分將被用作附加的安全層。
  • 顯示應用程序,用戶和廣告的統計信息。

上述每個特徵的理想持久性技術是什麼?如果某些答案是關係數據庫,爲什麼最好在NoSQL上選擇關係數據庫?如果答案是NoSQL,那麼最推薦的NoSQL是什麼?

對不起了很多問題,但我學習,我可以走了,想從那些誰已經不懂的題目,所以我不走沉澱的決定,聽取選項。

注:如果你可以提高問題的標題,請隨時自由地這樣做。

回答

4

去之前投入使用的情況下,NoSQL的是有沒有辦法解決several problems。不管是什麼的答案(S)你來到這裏,想想這些問題:

  • 你希望你的系統依靠BigData
  • 難道被分佈式受益?
  • 多少停機時間是確定的?
  • 您是否願意在不同的數據中心支持3個大型盒子,或者300個小型盒子?

我們您的使用情況:

  • User Stream =>

的NoSQL絕對可以解決這個問題,因爲這裏沒有100%的一致性要求。話雖如此,這是有趣的你提到的Facebook,因爲它們依賴於龐大的MySQL農場來解決這個問題:)

  • Application and security logs =>

NoSQL的是存儲日誌很大,其實很多一些NoSQL解決方案構建在之上的數據結構是類似日誌的結構:Log-Structured Merge-Tree這是/在Google BigTabe,Cassandra和其他平臺中使用的。加上日誌可以長到相當龐大,因此能夠縮放尺寸與NoSQL的

  • Statistics of the application容易=>

你這裏沒有提供太多細節,但NoSQL的肯定可以解決displaying stats

現在你的問題應該你去NoSQL。真相被告知:

如果大多數的NoSQL大師帶着面具了,他們會同意的,開發者解決日常問題,MOST可以和相當與一個SQL的解決方案來解決,如PostgreSQL的,MySQL等等,還有一些很酷的Redis緩存層。只有一小部分問題會從NoSQL中真正受益。

如果你決定去與NoSQL的,我會建議一個基於Erlang的解決方案(了Riak,CouchDB的),因爲NoSQL的,容錯數據庫應該有一個非常強大的,靈活的,自然分佈的基礎=>如Erlang OTP。加簡單是王道。當然,他們擁有大多數語言的客戶端,所以如果你不想要的話,你甚至不需要知道如何拼寫Erlang。

+0

+1對於一個非常非常好的答案! – Bojangles

相關問題