在mysql中存储二进制数据(图像,pdf,mp3,视频等)的最佳方法是什么?为什么?

时间:2010-06-22 11:22:02

标签: php mysql sql sql-server

在mysql中存储二进制数据(图像,pdf,mp3,视频等)的最佳方法是什么?为什么?我想知道的是你是如何做到的(作为开发人员)以及为什么?大网站也是如何做到的?

提前谢谢你; - )

5 个答案:

答案 0 :(得分:4)

要在MySQL中存储二进制数据,可以使用 MySQL Manuel: 10.4.3. The BLOB and TEXT Types

虽然如果不是真的有必要,我不会将二进制数据存储在数据库中,因为在MySQL等中存储数据的主要原因(如Join,Index,...)很难用于这些数据类型。 Blob也会降低整体数据库性能。

也许您为存储多个方面和文件系统路径的文件构建了一个单独的表...

答案 1 :(得分:3)

在Oracle中,我会使用BLOB列来存储这些对象。这样,数据完整性和安全性就像所有其他数据一样得到保证。另一种方法是使用BFILE,它是指向外部文件系统上文件的指针 - 当您下次尝试访问该文件时,该文件可能已被移动,删除,修改甚至丢失。

答案 2 :(得分:1)

好吧,我把图像放在磁盘上,我有很多很多,我不想想这可能是维护噩梦。到目前为止我的数据库(mysql)小于5GB,我对~50GB的jpeg文件很好(每个图像都保存了几个大小)。 如果正确完成,将图像存储在单独的数据库中(可能使用单独的raid控制器)可能是件好事,但我相信系统可以更快地将它们存储在磁盘上。

答案 3 :(得分:1)

我只会将数据库用于存储文件元数据(大小,MIME类型,标签等)。出于数据完整性和安全性的考虑,我最好将二进制数据卸载到专用服务,例如Amazon's S3

关于数据完整性:我通过执行涉及大blob的事务来避免数据库服务器过载。相反,我建议先存储文件并执行一些定期的异步“垃圾收集”。

答案 4 :(得分:0)

我从未使用过PBMS存储引擎,但它看起来像是一种方法:

Blob streaming