2012-12-17 35 views
4

我正在寫一個簡單的Web API,完全圍繞文件上傳。用戶可以通過基於HTTP的API將文件上傳到服務,該服務將生成供用戶訪問的文件,並且還需要將文件與上傳的文件一起存儲。所以會有很多文件在播放。我應該將附件存儲在CouchDB或S3中嗎?

基本上,我試圖決定將它們存儲在CouchDB中並將它們存儲在Amazon S3中。

對於CouchDB,我可能會有一個單獨的文檔,供用戶初始上傳文件,附件數據內嵌在_attachments集合中。系統製作的其他文件將被添加到該文檔中。 (該服務執行文檔轉換,因此他們上傳Excel XLS並且系統生成PDF,TXT等)。我認爲這樣會很好,因爲上傳的文檔記錄上的一個刪除操作也會刪除生成的PDF,TXT或任何其他附件。

隨着S3,我感覺到它的安全性,我知道我使用的託管解決方案完全專用於單個文件存儲。它也專門將這些帶寬專用於這些文件,並且它不會來自我的API Web服務器。缺點是它爲我的API代碼增加了很多額外的邏輯,現在我必須保持很多遠程文件與我的本地CouchDB數據庫知道它們的同步。另外,如果我想讓最終用戶直接從S3訪問文件,我必須處理請求籤名和其他內容。文檔都是單獨存儲的,因此從CouchDB中刪除用戶上傳的附件需要我針對其他文件對S3進行多次刪除查詢。

我熟悉S3,並在當前項目中使用它,但CouchDB在如何允許附件中看起來非常棒。我很樂意使用它,但是有什麼問題或缺點?在上述場景中,CouchDB附件是否比S3更有意義,並且存儲了很多上傳的文件?

感謝

+0

我認爲跟S3一起工作的一個重要原因是對象的耐久性。需要多少工程和管理才能進入CouchDB部署,該部署具有11個9的耐久性和接近無限的可伸縮性? – jamieb

回答

0

我使用CouchDB的成功爲許多項目和一些類似的項目。你用couchdb在箱子裏得到這麼多。我的問題是文件的平均大小是多少,你認爲你的數據庫有多大?

0

這兩種解決方案都非常明智:有優點和缺點。

您沒有提到將文件存儲爲CouchDB附件的一個優點是它們將與數據一起復制。它使連續備份更容易,並且在您的快照中,您的數據將與您的文件保持一致。

相關問題