2010-10-24 64 views
0

我想要做到以下幾點,並且需要建議,如果這樣做是有道理的。基本上,因爲我能夠在MongoDB中執行查詢,並且MongoDb在這些數據中的快速增長速度很快,因爲數據的熱點被緩存在內存中。我正在考慮存儲數據,我通常會在mongoDB中通過mysql進行連接。當我使用memcached來存儲簡單的查詢結果(例如電影描述頁面)時,對於需要更多實時/按需查詢的較大內容,我正考慮將其存儲在MongoDB中。例如,觀看電影的人數以及誰看到它,並對其進行分析。MongoDB作爲MySQL的頻繁連接和查詢緩存

希望我解釋清楚。

更多信息:

我們不希望保持對每一個等級像等書面形式向我們的MySQL服務器,MongoDB的似乎是一個很好的選擇,存儲的收視率,觀點後來電影等,然後中能夠做到處理這些數據。而與Memcached的數據不保留,並未能如願查詢

感謝, 費薩爾

回答

2

內存單獨的緩存是不是一個很好的理由去與MongoDB的。任何正確配置的RDBMS都會將頻繁使用的數據緩存在內存中。

MySQL的哪些方面正在限制您的性能?你的服務器有足夠的內存嗎?你的磁盤速度夠快嗎?您是否有適當配置的SSD等低延遲緩存設備?

+0

我們還沒有真正實現。處於尋找不同選擇的階段。我在想這個,因爲MongoDB在Foursquare被大量使用來做簽入,並且在那裏算法地處理這些數據。因爲我們不想繼續寫入我們的mysql服務器,所以MongoDB似乎是存儲評級,視圖等的一個很好的選擇,然後可以對這些數據進行處理。而Memcached數據不會持久存在,無法執行查詢。 – 2010-10-24 21:20:03

+0

MongoDB適合做關鍵/值存儲類型的操作。你的任務主要涉及那些?混合數據庫設置並不一定是壞的,但是您應該非常確信在使用它之前,MongoDB會帶來顯着的好處。你真的不想試圖在兩個不同的數據庫之間複製你的數據。不要嘗試在兩個地方存儲數據。你不能輕易地做一個跨越MySQL和MongoDB的查詢,並且你需要非常肯定你在分割數據之前不會這麼做。 – 2010-10-24 21:33:06

+0

以及我們想到的是在mongoDB(這是評級)存儲用戶ID,videoID,VideoName,評級。然後,當用戶獲得這些數據(當他看着他所有的評級時)並按照他評價的那部電影的視頻描述進行操作時,我們可以調用Memcached中的videoID來獲取描述,如果數據不存在,然後去mysql獲取並將其存儲在Memcached中,然後將其返回給用戶。 – 2010-10-24 21:54:18

0

在應用程序中使用這兩種解決方案沒有任何問題。事實上,我使用mysql將用戶會話存儲爲cookie。另外,我有另一個利用mysql的項目,但是對於我的應用程序的某些部分,我將使用MongoDB。爲什麼?它的速度很快,我討厭寫連接查詢。在mongo中輸入/輸出數據非常容易,因爲假設必須在mysql中執行連接查詢。

當保存標籤爲一個特定的用戶,它是如此的天哪織補eary保存/修改/刪除了儲存在MongoDB中的標籤。對於MySQL,我將不得不編寫一個連接多個表的查詢。對於用戶帳戶,密碼,城市,州等數據 - 我將所有內容保存到MySQL中。

0

你所說的是具有標準化和非標準化數據的想法。使用MongoDB作爲標準化sql數據的非規範化數據存儲是好的。使用Mongodb作爲您的特定數據類型的唯一數據存儲也很好。只要確保在系統設計中清楚瞭解真實數據的位置以及非規範化數據的位置即可。

歸一化數據是真實的事實。非規範化的數據是八卦 - 你不確定它是否是最新的。