我們的應用程序將通過HTTP提供大量小尺寸縮略圖(大小約6-12KB)。我被要求調查使用NoSQL數據存儲是否是數據存儲的可行解決方案。理想情況下,我們希望我們的數據存儲是錯誤的,並且是分佈式的。將圖像存儲在NoSQL商店
將blob存儲在NoSQL存儲中是一個好主意,哪一個對它有好處?另外,NoSQL對我們的問題來說是一個很好的解決方案,或者我們可以更好地將圖像存儲在文件系統中,並直接從Web服務器提供服務(作爲CDN,目前我們不能選擇)?
我們的應用程序將通過HTTP提供大量小尺寸縮略圖(大小約6-12KB)。我被要求調查使用NoSQL數據存儲是否是數據存儲的可行解決方案。理想情況下,我們希望我們的數據存儲是錯誤的,並且是分佈式的。將圖像存儲在NoSQL商店
將blob存儲在NoSQL存儲中是一個好主意,哪一個對它有好處?另外,NoSQL對我們的問題來說是一個很好的解決方案,或者我們可以更好地將圖像存儲在文件系統中,並直接從Web服務器提供服務(作爲CDN,目前我們不能選擇)?
Mongo DB應該適合你。我還沒有將它用於blob,但這裏是一個來自Mongo DB團隊的漂亮的FLOSS Weekly podcast interview with Michael Dirolf,他在這裏討論了這個用例。
是否將圖像存儲在數據庫或文件系統中有時是「聖戰」類型的辯論之一;每一方都感到他們做事的方式是一個正確的方式。一般來說:
要存儲在數據庫中:
要存儲在文件系統中:
我傾向於在文件系統方面下來,因爲它擴展得更好。但取決於你的項目的規模,任何選擇都可能正常工作。對於NoSQL,差異更不明顯。
問題是關於在分佈式鍵值存儲中存儲blob。文件系統不是容錯或分佈式的,所以沒有真正的比較。 –
根據文件系統的不同,它既可容錯又可分佈 - 請參閱MogileFS,Hadoop DFS和GlusterFS等內容。 –
這些都不是文件系統。 –
那麼CDN將是明顯的選擇。既然這樣,我會說你最好的選擇是容錯和負載平衡,這將是你自己的私人數據中心(無論對你來說意味着什麼)在2個或更多的負載平衡器(比如F5)後面。這將是您最簡單的管理系統,您可以獲得儘可能多的硬件預算允許的容錯。您不需要任何新的軟件專業知識,只需XCOPY。
對於真正的容錯性,您將需要地理分散,或者您需要使用反剷挖掘機。
(Gravatars?)
CDN加上一個NoSQL db作爲原點是一個很好的組合。我已經成功地看到了MongoDB(和它的GridFS模塊)幾次完成。 –
如果你是一個Python環境,考慮y_serial模塊:
在10分鐘內,你將能夠存儲和訪問您的圖片(事實上,任何任意的Python對象,包括網頁) - 壓縮形式; NoSQL的。
我正在尋找一個類似的個人項目解決方案,並且遇到了Riak,對我來說,這對於這個問題來說似乎是一個驚人的解決方案。基本上,它將每個文件的指定數量的副本分發給網絡中的服務器。它的設計使得服務器來來去去並不是什麼大不了的事情。離開的服務器上的所有副本分佈在其他服務器中。
使用正確的配置,Riak可以處理整個數據中心崩潰。
哦,它有商業支持。
謝謝,我會檢查出 –
你可以跳過該播客的前13分鐘:) –