回答
您還沒有給出任何關於您的問題的上下文,因此我將假定某種CMS基於Web的應用程序,因爲這是最常見的。
最常用於媒體的方法是將媒體文件存儲在磁盤上,並在數據庫中只放置元數據和某種文件ID。這使得管理數據庫變得更簡單(它只是它本來的大小的一小部分)並且爲文件提供服務更簡單和更快(尤其是對於更大的文件)。這種方法的缺點是文件通常不太安全,而且確保文件存儲和數據庫備份同步也很困難。
我們有一個VLE系統,它在本地存儲其媒體,並有一個Oracle後端來存儲其他數據。經過幾年的使用後,數據庫已經增長到40GB加上備份和日誌等,但文件存儲現在接近2TB。作爲DBA,我對這個選擇感到非常高興。雖然我可以在任何時候對數據庫進行完整的時間點恢復,但我不確定媒體文件是否屬實。 2Tb的SATA(文件存儲)SAN vs 2Tb +的光纖通道(數據庫)SAN也可以節省資金(請記住+,它可以加起來:對於Oracle來說,這意味着更多的重做,臨時RMAN備份等)。
我們還有一個小型CMS,用於處理主網站上的公司類型頁面。這使得其(大部分)媒體進入數據庫。這服務幾百頁,並有一個35Gb的Oracle數據庫。它足夠聰明,可以緩存所有內容,因此無需在數據庫內部隨時查找內容。這個重要應用程序的所有數據都在一個相當安全的地方。作爲DBA,我也很高興。雖然在這種情況下,CMS確實有一些修改的怪癖,有時會導致幾乎所有數據的新副本進行簡單的更改。這在數據庫中難以管理(重做,撤消,空間恢復等)。
選擇位置總是存在折衷。數據庫中的空間更加昂貴,但是如果您的應用程序證明它合適,那麼這可能是一個不錯的選擇。什麼是「最佳」取決於你在做什麼以及你對應用程序及其內容的重要性,安全性,成本和速度的感受。您還需要考慮管理和支持大型數據庫的開銷 - 許多DBA流程存在問題擴展。你對大文件系統的處理與小文件系統沒有多大區別。這在數據庫中並非如此。在40Gb級別,我們享受RMAN的夜間備份,三天在線,夜間一致的數據泵導出,5天在線,24小時閃回。這些都非常好,但在2TB我們不能擁有它們。
我已經給出了Oracle的觀點,但其中的大部分也適用於其他數據庫。
- 1. Python對象存儲內存/字典/數據庫/其他選項
- 2. 在.NET中使用數據庫作爲存儲介質實現日誌庫
- 3. iOS 5數據存儲:核心數據,SQL或其他選項?
- 4. 存儲數據有哪些其他選項?
- 5. 數據庫設計 - 有多少數據存儲,性能VS質量
- 6. SQL Server歸檔選項 - 單獨的表與單獨的數據庫vs其他
- 7. SqlCommand - 防止其他數據庫中的存儲過程調用
- 8. 最佳數據存儲 - 三重存儲/關係數據庫/其他?
- 9. 存儲其他數據在數據庫錶行
- 10. 離線數據存儲/同步選項,核心數據,TouchDB或其他?
- 11. MySql:將多項選擇數據存儲在數據庫中
- 12. 內存中的緩存和數據庫之間的選擇,任何其他內存中的選項php
- 13. 防止其他數據庫從存儲過程中恢復
- 14. 數據存儲選項
- 15. Android SqLite:選擇其他數據庫表中存在值的行
- 16. 數據庫設計:將數據從紙質表格存儲到數據庫中
- 17. j2me中的數據存儲選項
- 18. Sqlite3數據庫只存儲的ID而不是其他任何其他
- 19. 與其他項目(.NET)共享我的存儲庫(存儲庫模式)?
- 20. 純文本vs數據庫存儲
- 21. cancan:存儲在數據庫vs accessible_by?
- 22. 存儲API請求數據庫vs memcached
- 23. 數據庫vs文件系統存儲
- 24. 配置VS數據庫存儲
- 25. ZODB或其他數據庫在python中的大型數據存儲
- 26. UIimagejpegrepresentation壓縮質量vs其他算法
- 27. FileUtils.writeStringToFile()vs其他文件寫入選項
- 28. SQL觸發VS其他選項性能
- 29. Git - 將其他存儲庫鏈接到我的存儲庫
- 30. 所有其他存儲庫繼承的基礎存儲庫