2011-03-16 104 views
0

尋找這方面的一些意見,並試圖開始推進我的下一個項目的堅實設計。想象一下500萬張個人照片和相關的lo-res預覽圖像;每套圖片屬於一個畫廊,屬於一個人。有X個人。可以這麼說,Flickr的專門版本。攝影數據庫的存儲方法

這些被安置在一個遠程主機與Web界面查看這些圖片。還有一個桌面應用程序可以將它自動上傳到遠程主機並輸入畫廊的詳細信息。桌面應用程序具有關於每個畫廊和個人的預覽圖像和信息。可以說,與Flickr同步的桌面應用程序。

我需要決定兩件事:遠程主機的後端存儲和桌面應用程序的本地存儲。這是針對Windows環境的,所以我一直認爲SQL Server Express將會是一個不錯的選擇,但是這個項目已經有了很大的發展,並且可能只適用於桌面端。

遠程(網絡)服務器可以是Windows或Linux,PHP或.Net - 只要技術適用,我不在乎。問題在於如何最好地將所有數據存儲在Web服務器上,以便在發生災難時可以輕鬆地對其進行索引,快速訪問,最重要的是可以輕鬆進行備份和恢復。只要數據庫解決方案支持某種雲計算場景,我並不擔心服務器配置或磁盤空間。

我在想沒有SQL後端最有意義,將照片,畫廊和用戶存儲爲「文章」而不是「行」。 No-SQL似乎更有能力通過雲增長。另一方面,Flickr已被廣告爲使用MySQL ...

也許這是一個更存在的問題,一個真正的編碼問題,但我知道沒有更好的羣問!

回答

0

已經管理了一張超過500萬張照片的股票照片網站,我可以說MySQL無疑是一個可行的選擇。如果使用複製,備份很容易。只要停止一個奴隸,複製它,然後開始備份。

MySQL全文搜索不是很好,可能會很慢。所以你可能想看看像Solr這樣的基於Lucene的引擎。彈性搜索對於可伸縮性來說也是一個很好的選擇。

如果你不確定你的數據結構,那麼像MongoDB這樣的東西可能是一個很好的解決方案。但是Mongo對聚合有限制(約10,000條記錄),所以請記住這一點。但它是最容易設置的之一。

任何東西都可以在雲中工作,所以我認爲這個要求是一個有爭議的問題。你可以在EC2上設置你想要的任何東西。

+0

將照片存儲爲數據庫中的二進制數據,還是將文件系統中的文件與db中引用的路徑一起存儲? – 2011-03-17 01:50:07

+0

當然在文件系統上。它允許您將它們存儲在任何位置,並且不需要每個圖像負載都有一個數據庫連接。這也使得使用CDN更容易。 – 2011-03-17 10:27:52

相關問題