【发布时间】:2010-08-19 23:15:37
【问题描述】:
将视频文件作为 BLOB 对象存储在数据库中还是将它们存储在物理磁盘上是个好主意。
这是一个类似于 youtube 的网站,用户可以上传他们的视频并查看它们
数据库将是 Mysql
哪个选项更好,为什么
谢谢
【问题讨论】:
标签: database video-capture video-processing data-storage
将视频文件作为 BLOB 对象存储在数据库中还是将它们存储在物理磁盘上是个好主意。
这是一个类似于 youtube 的网站,用户可以上传他们的视频并查看它们
数据库将是 Mysql
哪个选项更好,为什么
谢谢
【问题讨论】:
标签: database video-capture video-processing data-storage
专业 MySQL: - BLOB 可能受外键约束,因此保持数据库冗余而不是保存到文件系统。在这种情况下,您必须对文件的删除进行编程。 - 细化的用户权限。
缺点: - MySQL 不是免费运行的,它带来了开销,而不是从文件系统提供服务。 - 网络服务器不能直接从数据库中提供 BLOB。这意味着 PHP 将不得不调解这个过程。当 BLOB 从 MySQL 加载到 PHP 中时,内存使用量将至少与 BLOB 一样大。因此,在您的文件可能达到数百 MB 的情况下,这会给网络服务器带来巨大的压力。
实际上 MySQL 并不是用来保存文件的。 BLOB 主要用于保存大量的序列化数据,例如缓存。
【讨论】:
我使用 NFS 存储大约 5 年的媒体内容,从存储角度来看没有任何问题。 操作、编码和保存通过 ffmpeg、php 脚本和 cron 作业进行管理。 视频元数据存储在 MySql 数据库中,并通过 Nginx(通过只读 NFS 挂载)提供 Web 交付。 在此环境中,视频文件最大为 2GB。 也许我可以在另一个数据库引擎上运行得更快,但是,实时浪费是由于编码过程而不是保存文件。
当我保存数以千计的小图像(如头像)时,我曾经使用 MySql 来存储文件元数据(图像路径和其他属性),而不是将文件保存在 BLOB 字段中,这会导致数据库速度过慢大量查询。
【讨论】: