2012-01-09 117 views
4

我在將圖像存儲在Mongo GridFS或雲文件系統上進行辯論。由於一些原因,我傾向於雲計算。使用的語言是Nginx服務器上的PHP。在MongoDB GridFS中存儲圖像

  1. 將圖像存儲在GridFS中會增加數據庫的大小。因此,更多的數據庫必須存儲在內存中,當涉及到分片時,我將花費更多的時間/金錢來管理服務器。

  2. 從GridFS的檢索圖像比雲需要更長的時間,因爲我要 一)使用id b)中讀出的圖像到存儲器 c)中使用的PHP頭以顯示圖像

查詢圖像

雲會更好,因爲它將圖像的網址直接映射到雲。

這些理由聽起來有效,還是應該與我的思維方向不同?

回答

4

這不完全正確。

將圖像存儲在GridFS中會增加數據庫的大小。 因此,更多的數據庫必須存儲在內存中,當涉及諸如 分片之類的事情時,我將花費更多的時間/金錢來管理服務器。

Mongodb網格將大文件分割成塊,只有當它被請求時它們纔會被加載和服務(每個塊)。是的,它肯定會佔用比文件系統更多的內存。這些都是使用內存數據存儲時的折衷。

從GridFS的檢索圖像比雲需要更長的時間,因爲我 必須a)使用的ID B)讀出的圖像到存儲器 c)中使用的PHP頭以顯示圖像

查詢圖像

正如我前面所說的那樣,它會在第一次加載到內存中。所以你不會遇到很多性能問題,事實上它會是一個收益,因爲它是從RAM而不是磁盤服務的。但是如果你還不滿意,我會建議將圖像緩存在nginx中。所以它不會在第一個之後來到mongo。

+0

'從RAM提供'。我已經將信息存儲在RAM中,而不是網格的一部分。在RAM中存儲更多信息可能會降低服務器的性能。說你處理1000個圖像,只有這麼多的RAM。將它存儲在雲服務器上並在客戶端瀏覽器上緩存看起來似乎更好。我錯了嗎? – 2012-01-09 16:12:45