2011-02-04 74 views
0

我有漂亮的常規表users(id,登錄名,密碼)。並且每個用戶可以上傳pdf文件(它必須小於2 MB)。這反映在表users_pdf文件與數據庫中的文件路徑

id | pdf  | user_id 
--------------------- 
1  | some_pdf|  1 
2  | pdf2   |  1 
3  | pdf3   |  3 

好了,問題是:我應該保存文件路徑爲PDF在pdf列,或真正的PDF文件,而不是?

如果我要存儲路徑,這意味着處理文件系統文件夾,並且有時(例如備份)可能會非常痛苦。如果我將文件存儲在數據庫本身中,速度會很慢,特別是如果表格會有一百萬條左右的數據,對吧?

那麼,你會建議什麼?

UPD。與文件系統的工作意味着每個用戶的文件夾,如

-users 
|----user_id_1 
    |--file.pdf 
|----user_id_2 
    |--file.pdf 
    |--file.pdf 
|----user_id_3 
    |--file.pdf 
    |--file.pdf 

,所以如果我想有一個像100萬個用戶,該文件結構將死亡緩慢的,對不對?

+0

類似於:http://stackoverflow.com/questions/3748/storing-images-in-db-yea-or-nay – 2011-02-04 04:50:47

+0

文件,數據庫的文件系統。有沒有混淆? – Nishant 2011-02-04 04:53:12

回答

1

你說它小於2mb,所以在表中存儲文件是一個選項。儘管最好的解決方案是擁有像露天一樣的文檔管理系統,甚至可以使用像svn這樣的現有版本管理解決方案。 (而不是直接存儲在文件系統中,你需要一個內容管理系統)。您可以只存儲文檔的網址。這將幫助你維護,避免數據庫膨脹,不會影響你的數據庫性能,更重要的是通過利用現有的解決方案(我是否說版本管理,你有可能需要它)來簡化你的編程。

1

存儲二進制數據不一定很慢。 BLOB和類似的數據類型存儲指向列中數據的指針,並將實際數據存儲在其他地方,因此選擇和更新非常簡單。只要你做得正確,我認爲在數據庫中存儲實際文件沒有什麼大的缺點。