|
軟件開發(fā)人員,都會碰到這個問題,也都會被這個問題困住一兩個星期。
以 Java/JDK 為例, JDBC 驅(qū)動程序中,對這個問題也經(jīng)過多年、歷經(jīng)多次版本升級,才能解決。而且代碼還不能跨數(shù)據(jù)庫。
C#也一樣,總之是麻煩。
其實,這個問題可以有另一思路,更簡單,更高效。值得系統(tǒng)架構(gòu)師們考慮:
1.在數(shù)據(jù)庫中,單獨用一個表,處理所有各類文件,只保存文件的信息
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.在指定目錄中,保存文件內(nèi)容(按年月劃分子目錄,或者不分子目錄),文件名為 uuid.dat
采用這一種方案的原因是,數(shù)據(jù)庫系統(tǒng)通常處理不好二進制數(shù)據(jù),要么數(shù)據(jù)多了很占用磁盤空間,導致數(shù)據(jù)庫性能下降、備份時間更長;要么是文件大了無法保存。而采用以上方案,這些問題都不存在:備份更快了;文件大了也能輕松應(yīng)付;程序更容易寫;不論哪種數(shù)據(jù)庫都可以用。
這一解決方案,目前在國內(nèi)基本無人知曉,但在國外,舉例來說,Bugzilla/phpBB 都提供了選項,用戶可以把文件內(nèi)容保存在數(shù)據(jù)庫中、或者保存在指定目錄中。并且,它們的文檔中,都推薦把文件內(nèi)容,存放在指定目錄中下。想必它們經(jīng)過認真的對比,發(fā)現(xiàn)“把文件內(nèi)容,存放在指定目錄中下”更好吧。我也覺得這種方法更好,自從知道這種解決方法,我把我所負責的項目,都轉(zhuǎn)換成這種方式了,效果很不錯。
it知識庫:數(shù)據(jù)庫系統(tǒng)中文件附件保存的最佳辦法,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。