在DB裡,若有一個資料表的欄位存放著xxx.pdf的資料,是代表這個pdf檔存放在這個資料表裡嗎?還是說它只是記錄檔名而已,實際要抓檔案還是要透過程式指定到實體存放pdf的實體路徑才能讀取這個檔,也就是說DB只存放檔名而已,要抓檔案還是要到實體路徑去存取,DB無法直接存放實體檔案.
如果可以直接存放檔案,那要取得檔案的指令要怎麼下?
SELECT file FROM a_table where xxx.pdf = xxx.pdf;
這樣好像也只是把檔案秀出來,沒辦法存取到檔案,有點不懂...=,=
DB裡面應該是存路徑和檔名的資料
檔案本身,則是存放在硬碟裡,透過DB裡面的記錄去連接到這個檔案。
兩種方式都可以
只記錄檔名,或者,把實體檔案放到資料庫....
兩者各有利弊。
只記錄檔名,備份的時候,必須同時備份檔案與資料庫,同時,如果遇到資料庫需要回復
必須兩者一併回復。
把檔案放到資料庫,備份比較簡單,但是,需要花費更多時間進行備份,畢竟,資料庫變大了(很多)
如果是使用SQL Server 2008/2008 R2/2012,可以考慮使用File Stream的方式將檔案儲存到資料庫。同時,如果裝有適當的iFilter,還可以進行全文檢索。
個人建議, DB 與 File 分開放
DB 裡只記錄檔名與放該檔案路徑的必要資訊
(如果檔案是分開來放到不同路徑的話)
以Windows為例, 當同一個資料夾裡有超過3000個檔案的話
就會變慢
全文檢索? 不必了, 再好的Filter, 要處理非純文字的內容, 都會消耗效能
更何況圖檔或是合死的pdf檔, 你也很難全文檢索
只是檔案沒放到DB裡, 最大的問題在資安
尤其在Windows下, 只要有User權限的帳號, 都有可能看得到, 所以要留意各資料夾的權限
了解,所以現在我要如何判斷DB上存放檔名的欄位是放檔名還是放檔案呢?
leo226提到:
存放檔名的欄位是放檔名還是放檔案呢?
檔名...這...需要懷疑嗎?