數據庫系統中文件附件保存的最佳辦法

作者: ChenJacklondon  發布時間: 2010-10-28 15:37  閱讀: 2016 次  推薦: 0   原文鏈接   [收藏]  
摘要:文件附件怎樣在數據庫存儲,軟件開發人員,都會碰到這個問題,這里作者提出了一種新的思路。

  軟件開發人員,都會碰到這個問題,也都會被這個問題困住一兩個星期。

  以 Java/JDK 為例, JDBC 驅動程序中,對這個問題也經過多年、歷經多次版本升級,才能解決。而且代碼還不能跨數據庫。 

  C#也一樣,總之是麻煩。

  其實,這個問題可以有另一思路,更簡單,更高效。值得系統架構師們考慮:

  1.在數據庫中,單獨用一個表,處理所有各類文件,只保存文件的信息

TT_BINARY_DATA_INFO (bin_uuid, file_size, file_name,data_type,compress_format,memo,created_dt,created_by,updated_dt,updated_by,updated_cnt)

  上面的表中, compress_format 為文件壓縮格式,可以不壓縮,也可以用zip 壓縮格式,或者其它。

  2.在指定目錄中,保存文件內容(按年月劃分子目錄,或者不分子目錄),文件名為 uuid.dat

  采用這一種方案的原因是,數據庫系統通常處理不好二進制數據,要么數據多了很占用磁盤空間,導致數據庫性能下降、備份時間更長;要么是文件大了無法保存。而采用以上方案,這些問題都不存在:備份更快了;文件大了也能輕松應付;程序更容易寫;不論哪種數據庫都可以用。

  這一解決方案,目前在國內基本無人知曉,但在國外,舉例來說,Bugzilla/phpBB 都提供了選項,用戶可以把文件內容保存在數據庫中、或者保存在指定目錄中。并且,它們的文檔中,都推薦把文件內容,存放在指定目錄中下。想必它們經過認真的對比,發現“把文件內容,存放在指定目錄中下”更好吧。我也覺得這種方法更好,自從知道這種解決方法,我把我所負責的項目,都轉換成這種方式了,效果很不錯。

0
0
 
標簽:文件附件
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()