哪種存儲文件更好?直接將文件存儲在數據庫中或僅存儲該文件的位置?我應該將文件存儲在數據庫中還是僅存儲該文件的位置?
回答
當接受這麼快的回答時,您不會從更大的受衆那裏得到答案。
這取決於。你需要考慮幾件事情。
如果你有米老鼠免費的數據庫,這意味着它不妥善處理斑點(閱讀每一個選擇的斑點;不要存儲在單獨區域的斑點),保持文件之外。
如果您有企業數據庫,將blob保留在數據庫中完全沒有問題。這些不會讀取每個SELECT上的斑點。一個額外的讀取blob不是一個「性能」「問題」。
大多數數據庫都是2k頁不是8k或16k。如果你的頁面尺寸較大,那麼在最後一頁的未使用部分,每個斑點都會有一些浪費。
將數據庫保留在數據庫中的缺點是您的數據庫備份會更大。某些企業數據庫注意到該頁面未更改,並將其從增量備份中排除;其他人沒有增量。
將數據塊保留在數據庫中的優點是數據和參照完整性。您不會遇到與blob不同步的問題。
- 去年我完成了一個分配,客戶在分貝中有130GB的數據,在分貝以外存儲了700GB的文檔。經過十年的問題,他們咬緊牙關,將文件移入數據庫。猜猜看是什麼,應該是一個簡單的工作(長而簡單),因爲參考文獻應該是絕對正確的,最終會變得非常龐大,因爲有太多重複和無效的參考文獻。由此產生的數據庫是630GB,有100GB的笨蛋。 2K pagesize。
迴應評論
- 斜線或反斜線
容易。在數據庫中,僅存儲斜槓。您需要一種識別目標系統的方法,並指示IsWindoze
。它應該在表層次結構中更高,而不是在您找到Filename
的級別。如果指示符已設置,則每當您報告或顯示Filename
列時,將斜槓更改爲反斜槓。
您將遇到與Unix不具有的DriveLetter
和冒號類似的問題。
避免將文件存儲在數據庫中。大多數人不善於處理他們。
只是要補充,它通常是一個壞主意 - 唯一一次它變得遠程可行的時候是當你處理數據庫,你可以保證記錄將在內存中當你需要它,並從那裏服務。但幾乎在所有情況下,文件系統都是更好的選擇。 – Arantor 2010-11-25 02:58:36
首選的方法是將文件存儲在文件系統中,並將文件的位置存儲在數據庫中。其原因與數據庫物理分配磁盤空間的方式有關(通常是8k或16k塊)。刪除那裏的大文件會導致數據庫使用不同的機制來存儲文件(SQL Server稱爲row overflow data)。通常,這些頁面位於普通表外,因此每行的每個邏輯讀取都會在磁盤上產生兩個物理讀取。不用說,這對性能不利。
最後回答:這取決於你的引擎。
自20世紀90年代以來,SQL Server的頁面大小還沒有被使用過。 Oracle默認爲8K,SQL Server爲8K。只有Sybase AFAIK還在上個世紀。
SQL Server現在提供FILESTREAM它結合了兩者的優點,因爲Oracle已經與BFILE
做長SQL Server和Oracle提供對磁盤和備份壓縮
我確保PostgresSQL至少提供類似的功能。
注意:這主要是爲PerformanceDBA的FUD提供替代方案
- 1. 我應該在Android中存儲文件?
- 2. 庫和媒體文件應該存儲在存儲庫中嗎?
- 3. 我應該在數據庫中存儲Type還是應該將其存儲在枚舉中?
- 4. 我應該使用文件還是數據庫表來存儲參數?
- 5. 應該將文本文件存儲在我的SQL Server數據庫中嗎?
- 6. FMDataBase - 我應該在哪裏存儲數據庫文件?
- 7. 我應該將Git存儲庫存儲在Home還是Eclipse Workspace中?
- 8. 我應該將位圖存儲在SQLITE數據庫中嗎
- 9. 什麼Eclipse元數據文件應該在存儲庫中?
- 10. 我應該使用文件系統文件還是數據庫來存儲圖像等文件?
- 11. 用戶數據應該存儲在配置文件中嗎?
- 12. 我應該存儲數據是數據庫或文件考慮在Android
- 13. 我應該將全局常量存儲在資源文件(.resx)還是類中?
- 14. 我應該將我的Jasmine文件存儲在Symfony項目中?
- 15. 我應該將圖像保存在數據庫還是文件夾中?
- 16. .git文件夾應該存儲在我的SVN倉庫中嗎?
- 17. 我應該在數據庫中還是在XML或文本文件中存儲值?
- 18. 我應該將枚舉ID /值存儲在數據庫還是C#枚舉中?
- 19. 我應該將數據存儲在Umbraco還是定製的數據層中
- 20. 我應該將.testsettings和.vsdmi文件提交到存儲庫嗎?
- 21. 我應該在測試時在Factory girl還是spec文件中存儲模型?
- 22. 我應該在mysql數據庫中存儲雙精度數還是小數?
- 23. 我應該在Mongo之前還是之後存儲數據?
- 24. 我應該將用戶配置文件信息存儲在緩存還是會話中?
- 25. 我應該將用戶的文檔數據存儲在服務器上還是文件系統上?
- 26. 應該將其作爲文件系統存儲還是將其存儲在Cassandra表中?
- 27. 我們應該在Java Eclipse動態Web項目中存儲數據庫配置文件的位置?
- 28. 我應該在數據庫還是json文件中保存用戶通知?
- 29. 靜態數據應該存儲在數據庫還是應用程序中
- 30. 我應該如何在Rails 3.2數據庫中存儲一個csv文件?
您使用的數據庫是? – 2010-11-25 02:53:49
我很驚訝 - 這個問題還在公開討論/辯論中?它不是任何重複的,嗯... – 2011-03-12 04:54:22