2010-11-15 27 views
0

使用MySQL進行系統/用戶數據的基本存儲。我需要存儲/搜索消息(添加網絡郵件功能),並進行分析(從當前和歷史數據中快速生成報告/圖表,如此類型的數據損耗)+這意味着我需要存儲歷史數據。用於中等規模用戶內容網站的數據庫類型和引擎

所以問題是:
1)我是否對任何事情都使用MySQL,或者使用單獨的數據庫來處理消息,分析/歷史數據/用戶數據?我聽說MySQL網站上還有一些實時動態提要,它不太適合。

2)對於使用MySQL的表是足夠好的InnoDB,還是需要像TukoDB這樣的更高級的引擎?

用於發送消息提到使用非關係數據庫而不是MySQL的朋友。但是,如果我使用單獨的數據庫類型,然後添加詮釋他讓他們都保持同步頭痛,並考慮到這是一個24-7用戶內容網站,我不能有任何停機時間。

- 網站是一個高流量的用戶內容網站,大量的讀/寫,但沒有錢,所以我需要較少依賴服務器/硬件和更多的數據庫/軟件,以保持我漂浮,因此只對外開放免費/開源數據庫和數據庫引擎。

回答

1

回答這個問題之前,直接我應該說,你擔憂還爲時過早。很多假設在你有一個工作項目之前將會出錯。因此,而不是設計完美的架構,只是使項目(非完美)和準備好更改

現在,回到問題。

對於短信的朋友提到01​​使用非關係型數據庫,而不是MySQL的的 。但是,如果我使用單獨的數據庫類型 然後增加他 讓他們全部同步的頭痛 ,並且由於這是一個24-7用戶內容 網站,我不能有任何停機時間。

這是一個很好的建議。您不需要保持同步,因爲您會將不同的數據保存在不同的數據庫中。

  • SQL數據庫 - 用於事務數據。
  • 文檔數據庫 - 用於歷史和非結構化。

網站是一個高流量用戶的內容 網站,大量的讀取/寫入沒有錢,所以我需要較少依賴於 服務器/硬件和更多的數據庫/軟件,以保持我漂浮, 因此開放給只有免費/開源 數據庫和數據庫引擎。

如果我們將着眼於CAP定理和您的要求,我們可以告訴大家,SQL數據庫,因爲你犧牲分區容忍性或可用性爲統一起見(這似乎你並不需要的是不適合你)。

從你所描述的,你會更好的數據庫支持最終一致性。 MongoDB是最受歡迎的文檔數據庫之一。

我聽說關於Cassandra的好消息。它允許您調整一致性,可用性和分區容差。

Redis可用於提供一致性和可用性的極高負載。

所以我建議:

  • 使用SQL數據庫(InnoDB的是不夠好),用於需要高一致性的關鍵數據。
  • 使用文檔數據庫獲得更高的流量數據(MongoDB,CoachDB)。
  • 使用鍵/值(哈希)數據庫爲極高的交通數據(〜Redis)。
  • 使用你最舒服的數據庫。
+0

但我沒有得到這個,你說我不需要保持它們同步,但它們仍然需要連接,因爲讓我們拿郵件。它鏈接到MySQL DB中的用戶表中的用戶。電子郵件中的用戶標籤位於MySQL中的標籤表中。會有來自個人資料相冊的用戶照片,這些用戶照片位於MySQL數據庫中。分析信息可以進入文檔數據庫,但仍需要在兩個數據庫中引用用戶。那麼在某種程度上,3仍然需要關聯? – Tony38 2010-11-15 22:57:06

+0

應用程序可以輕鬆地鏈接所有這些。重點是你不要手動同步它們。該應用程序可以實時進行。 – 2010-11-15 23:03:26

+0

所以活飼料在鍵/值DB下最好,而郵件在文檔數據庫下最好,基本用戶配置文件細節在SQL下最好? – Tony38 2010-11-16 16:47:42

0

我們在我的公司做的是:我們每天對數據進行備份,並從這個備份計算統計數據。例如,它非常適合營銷目的。所以,我們可以堅持InnoDB ...

目前,你不需要考慮(太多)當你將有1000萬用戶會發生什麼。優先考慮的是讓東西開始運轉!因此,使用InnoDB的MySQL將會很好。

當第一個用戶將到達,你會發現你需要改進的地方......

+0

但這是一個社交網絡。人們需要它是實時的。如果用戶發佈更新並查看其分析,則需要更新。最多我可以延遲2-3分鐘不再更長。 – Tony38 2010-11-15 22:36:31

+0

也許您應該關注如何讓用戶瞭解最新信息並進行分析?我公司的業務是具有一些社交功能的照片共享網絡應用程序。我們剛剛達到了百萬用戶,並有4000萬張圖片。數據目前存儲在運行InnoDB的複製MySQL服務器上,並且工作正常。我正在嘗試使用Apache Cassandra和MongoDB,但這些都是爲了不久的將來... – 2010-11-15 23:24:43

相關問題