在数据库中存储媒体与其他选项

时间:2011-03-29 05:52:41

标签: database-design

我正在寻找有关存储和检索媒体文件(如mp3文件等)的最佳方式的建议。

有没有人有这种问题的经验?

我只是在寻找有关如何处理这一特定问题的建议。

感谢。

1 个答案:

答案 0 :(得分:0)

您没有为您的问题提供任何上下文,因此我将假设某种类型的基于CMS网络的应用程序,因为这是最常见的。

最常用于媒体的方法是将媒体文件存储在磁盘上,并仅将元数据和某种文件ID放在数据库中。这使得管理数据库变得更简单(它将只是其大小的一小部分),并且提供文件更简单,更快(特别是对于较大的文件)。这种方法的缺点是文件通常不太安全,并且很难确保文件存储和数据库备份同步。

我们有一个VLE系统,可以在本地存储其媒体,并有一个Oracle后端来存储其他数据。经过几年的使用,数据库已经增长到40Gb以及备份和日志等,但文件存储现在接近2Tb。作为DBA,我对这个选择感到非常高兴。虽然我可以在任何时候完成数据库的完整时间点恢复,但我不确定媒体文件是否属实。 2Tb的SATA(文件存储)SAN与2Tb +的光纤通道(数据库)SAN也节省了资金(请记住+。它可以加起来:对于Oracle来说,这意味着更多的重做,临时,RMAN备份等)。

我们还有一个小型CMS,用于处理主网站上的公司类型页面。这将(大部分)其媒体放入数据库。这个页面有几百页,有一个35Gb的Oracle数据库。它足够聪明,可以缓存所有内容,因此无需一直在数据库内部查找内容。这个重要应用程序的所有数据都在一个相当安全的地方。作为DBA,我对此也非常满意。虽然在这种情况下CMS确实有一些修改的怪癖,但有时它会导致几乎所有数据的新副本进行简单的更改。这在数据库中更难管理(重做,撤消,空间恢复等)。

选择地点总是有一个折衷。数据库中的空间更昂贵,但如果您的应用程序证明它是合理的,那么它可能是一个不错的选择。什么是“最佳”取决于您正在做什么以及您对应用程序及其内容的重要性,安全性,成本和速度的感受。您还需要考虑管理和支持大型数据库的开销 - 许多DBA流程都存在扩展问题。您对大型文件系统所做的工作与小型文件系统没什么不同。这在数据库中并非如此。在40Gb级别,我们享受RMAN的夜间备份,在线三天,夜间一致的数据泵导出,在线5天,以及24小时的闪回。这些都非常好,但在2Tb我们就是没有它们。

我已经给出了Oracle的观点,但其中很多也适用于其他数据库。