在MySQL数据库中存储图像文件或URL?哪个更好?

Fra*_*ona 6 mysql database-design blob

可能重复:
在DB中存储图像 - 是或否?
数据库与文件系统中的图像

我一直在使用RIA技术(Flex + PHP + MySQL + Ajax)开发Web应用程序,现在我处于图像文件的两难境地.

我在我的Flex应用程序中使用了一些图像,因此我认为"如果我将它们存储到数据库中,然后从中检索它可能会很棒;然后,维护过程应该更容易".但是,这是我的困境:

我应该存储我的图像的物理URL,还是如果我直接存储图像会更好?

例如,我的Cars表应该是这样的:

ID(自动数字)| Source(文本)

或者像这样?

ID(自动数字)| Image(longblob或blob)

我知道这里有很酷的人可以回答我这个问题,向我解释哪个更好,为什么:)

Sco*_*ion 6

我个人建议将图像存储在数据库中.当然它既有利也有弊.

在数据库中存储BLOB数据的优点:

  • 保持BLOB数据与行中的其余项目保持同步更容易.
  • BLOB数据与数据库一起备份.拥有单一存储系统可以简化管理.
  • BLOB数据可以通过MySQL中的XML支持来访问,它可以返回XML流中数据的基本64位编码表示.
  • 可以对包含固定或可变长度字符(包括Unicode)数据的列执行MySQL全文搜索(FTS)操作.您还可以对图像字段中包含的格式化基于文本的数据执行FTS操作 - 例如,Microsoft Word或Microsoft Excel文档.

在数据库中存储BLOB数据的缺点:

仔细考虑哪些资源可以更好地存储在文件系统而不是数据库中.很好的例子是通常通过HTTP HREF引用的图像.这是因为:

  • 与使用文件系统相比,从数据库中检索图像会产生很大的开销.
  • 数据库SAN上的磁盘存储通常比Web服务器场中使用的磁盘上的存储更昂贵.


Vin*_*ura 5

作为一般规则,您不要让数据库保持较小,因此它们的性能更好(并且备份更好).因此,如果您只能在数据库中存储文件系统引用(路径+文件名)或URL,那就更好了.