2011-12-01 91 views
0

我在讓用戶上傳圖片到我的應用程序時遇到了困境。我的主機允許無限制的存儲空間,但只允許250K個人文件。我在125K,我計劃發佈一個功能,允許用戶上傳圖片。如果我開始上傳大量圖片,我可以快速填充該配額。我想過把它們存儲在MySQL等數據庫中。這是一個可行的解決方案,還是僅僅是愚蠢的?如果它只是愚蠢的,那麼一些免費/廉價的選擇會是什麼?在數據庫中存儲大量圖像是愚蠢的嗎?

回答

1

是的,把圖像數據放在一個分貝將是一種愚蠢的。
我會看看使用像Amazon S3存儲的東西。

這是一個CodingHorror帖子,幾年前傑夫在這裏討論它。

+0

這看起來像我最好的選擇。它超級便宜。我認爲帶寬成本不會像我的存儲一樣成爲問題。 :P。非常感謝! – LordZardeck

+0

不客氣! :) – tzaman

1

使用數據庫顯然比使用文件系統慢。如果你已經有125k,也許使用VPS而不是託管是一個好主意。這是約5-10美元/星期一。

+0

什麼?你可以在哪裏獲得5-10美元/月的VPS? – LordZardeck

+0

http://www.hetzner.de/hosting/produkte_vserver/vq7(我用這個滿足我的小小需求) – Ximik

+0

真是棒極了。我可能最終將其用於某些副項目。 – LordZardeck

0

我個人不會那麼做。它最終會在以後導致更多問題。 爲什麼不登錄http://www.000webhost.com/(或類似)並創建腳本來上傳圖片而不是服務器?這是我會做的。

或者,您可以開始設置圖片保存期限的限制嗎?並在x天后刪除它們?

0

您可以選擇將圖像存儲在CDN或s3之類的選項嗎?從服務器上獲取圖像並獲得快速基礎架構的好處。更多這裏:http://aws.amazon.com/cloudfront/

如果您需要保護圖像但更加可行,則會更復雜。

1

有很多很好的理由將圖像(或任何龐大的媒體文件)存儲在數據庫之外。

將圖像存儲在數據庫中的原因是如果您需要圖像數據以使用SQL ACID語義。

例如,如果您在數據庫中插入一行但回滾,則您希望圖像數據也被丟棄。如果將圖像數據從外部存儲到數據庫,則必須清理孤立的圖像。 同樣,如果你從數據庫中刪除行,你也必須記得從磁盤或S3或其他東西中刪除它們。 同樣,如果你更新行,你會失去事務隔離,所以你有競爭條件。

如果您將圖像存儲在數據庫之外,還需要創建數據庫備份。不僅因爲現在您的備份是一個多步驟過程(備份數據庫,然後是備份映像收集),而且您也無法創建熱備份。在備份從數據庫複製數據的過程中,您的映像集可能會在分鐘內發生更改。

+0

+1對於一些非常有用的信息。由於這不是一個重要的企業項目,我不認爲我必須擔心需要將圖像存儲在數據庫中。感謝分享! – LordZardeck