图片或多媒体大文件的存储与管理

图片、声音、视频等大文件在后台数据库中的存储管理方式通常有两种:

  • 文件存储到数据库中
  • 文件存储到文件系统中,数据库中保存文件路径

这两种文件存储管理方式有各自优缺点, 选择哪种方法存储大文件应根据具体情况而定。

文件系统存储管理方式

文件系统存储管理方式将文件存储到磁盘中,在数据库中使用varchar类型记录文件路径。该方法的缺点主要有:

  • 文件不支持DELETE

当删除文件路径时,不支持自动删除对应文件。

  • 文件不支持事务隔离

如果改变文件内容或删除文件,这些操作将立刻被其他客户端看到。

  • 文件不支持回滚

数据库记录能够恢复,但文件删除不能。

  • 文件不支持数据库的备份工具

  • 文件不支持SQL的访问权限设置

  • 文件不是SQL数据类型

数据库不会验证文件路径是否有效。当文件移动、重命名、删除时,数据不会自动更新路径。

数据库中存储文件

数据库通常支持BLOB类型,可用于存储任何二进制数据。数据库中存储文件,其优点对应文件系统管理存储方式的缺点。同样,数据库中存储文件也存在一些缺点:

  • 对数据库的读/写的速度永远都赶不上文件系统处理的速度
  • 数据库备份变的巨大,越来越耗时间
  • 对文件的访问需要穿越你的应用层和数据库层

多媒体大文件存储建议

当只涉及较小规模图片、音频的存储时,建议直接存放到数据库中。当涉及视频大文件存储时,建议还是用文件系统存储。

参考链接

  1. SQL反模式,by Bill karwin著, 谭振林, Push Chen译.
  2. 特殊格式文件(视频、声音等) 在数据库中的存储方式,by Jesson.
  3. 关于图片或者文件在数据库的存储方式归纳,by 王滔.
  4. SQL Server 2008新特性——FILESTREAM,by 曾毅.
  5. oracle对大对象类型操作:blob,clob,nclob,bfile,by lxy2330.
  6. 类似优酷土豆视频网站的视频源文件一般是存储在什么样系统上?,by zhihu.
  7. How to add hours to current date in SQL Server?,by stackoverflow.