将图像数据存储在MySQL数据库中?

cma*_*cre 10 mysql image

我正在实施一个处理大量图像的项目.

在您看来,以下两种方法的缺点是什么?

  • 我需要存储数千个项目,每个项目作为多个字符串属性和图像.
  • 每个项目作为ID(整数)
  • MyISAM表
  • 你将如何存储图像:
    • 方法1:将图像存储到目录中,每个图像命名为ID.jpg
    • 方法2:将图像作为二进制BLOB存储到数据库中

使用方法1我可以直接访问图像,就是这样

<img src="same_directory/10.jpg" />  
Run Code Online (Sandbox Code Playgroud)

使用方法2,我仍然可以使用上面的HTML,但需要将jpg访问重定向到PHP脚本,该脚本将从数据库返回真实图像.

在性能方面哪一个你觉得它更快?

我很想接近1.

Kon*_*aju 5

方法1的优点:

  • 检索平面文件表单Web服务器更快.
  • 大多数网络主机可能会采用这种方法.
  • 平面文件存储的文件系统更快.

方法2的优点:

  • 您的所有数据都保存在一个地方,如果您迁移您的网站/数据库,图像就会存在
  • 它更容易排序/删除/等...
  • 由于您必须通过PHP脚本提供服务,因此您可以执行其他操作,例如安全性(如果需要)或图像处理(显然您也可以使用平面文件执行此操作,但您必须确保通过保留安全性不能绕过安全性公共目录中的图像).

考虑性能方法1最好继续进行.


Joh*_*ker 1

我很想使用第一种方法,因为用图像数据弄乱数据库没有真正的价值。(从数据库获取数据也会比简单地从磁盘加载数据慢得多。)

但是,建议您可能不希望将磁盘上的完整路径存储到数据库表中的图像,以帮助将来的可移植性。(即:只需将路径和文件名的部分存储在“已知”基本文件夹中。)