图片、声音、视频等大文件在后台数据库中的存储管理方式通常有两种:
- 文件存储到数据库中
- 文件存储到文件系统中,数据库中保存文件路径
这两种文件存储管理方式有各自优缺点, 选择哪种方法存储大文件应根据具体情况而定。
文件系统存储管理方式
文件系统存储管理方式将文件存储到磁盘中,在数据库中使用varchar类型记录文件路径。该方法的缺点主要有:
- 文件不支持DELETE
当删除文件路径时,不支持自动删除对应文件。
- 文件不支持事务隔离
如果改变文件内容或删除文件,这些操作将立刻被其他客户端看到。
- 文件不支持回滚
数据库记录能够恢复,但文件删除不能。
文件不支持数据库的备份工具
文件不支持SQL的访问权限设置
文件不是SQL数据类型
数据库不会验证文件路径是否有效。当文件移动、重命名、删除时,数据不会自动更新路径。
数据库中存储文件
数据库通常支持BLOB类型,可用于存储任何二进制数据。数据库中存储文件,其优点对应文件系统管理存储方式的缺点。同样,数据库中存储文件也存在一些缺点:
- 对数据库的读/写的速度永远都赶不上文件系统处理的速度
- 数据库备份变的巨大,越来越耗时间
- 对文件的访问需要穿越你的应用层和数据库层
多媒体大文件存储建议
当只涉及较小规模图片、音频的存储时,建议直接存放到数据库中。当涉及视频大文件存储时,建议还是用文件系统存储。
参考链接
- SQL反模式,by Bill karwin著, 谭振林, Push Chen译.
- 特殊格式文件(视频、声音等) 在数据库中的存储方式,by Jesson.
- 关于图片或者文件在数据库的存储方式归纳,by 王滔.
- SQL Server 2008新特性——FILESTREAM,by 曾毅.
- oracle对大对象类型操作:blob,clob,nclob,bfile,by lxy2330.
- 类似优酷土豆视频网站的视频源文件一般是存储在什么样系统上?,by zhihu.
- How to add hours to current date in SQL Server?,by stackoverflow.