将文件系统中的图像存储为文件或将BLOB数据库字段存储为二进制文件

时间:2010-02-14 20:32:34

标签: mysql database image database-design

  

可能重复:
  Storing Images in DB - Yea or Nay?

哪种方法更好?有哪些优点和缺点?

在我看来,在数据库中存储图像的好处是:

  • 数据库完整性(使用外键保持所有数据库条目的有效性比监视文件系统更容易,并在数据库的每次更改期间进行必要的更改)
  • 减少工作量并简化维护(您只需要处理一个数据存储位置 - 数据库)

缺点可能是:

  • 数据库服务器上的更大负载

你同意上述观点吗?

目前我所做的是将数据库中的小图像(如头像和缩略图)存储为BLOB,并在文件系统中存储大图像,如全尺寸照片或壁纸。你认为这是一个好方法吗?如果是,是否有一些幻数(文件大小)决定它是否仍然有利于将图像存储在数据库中?如果没有,我应该将所有图像存储在一个地方(数据库或文件系统)吗?

2 个答案:

答案 0 :(得分:2)

我在尝试将图像存储在数据库中时遇到了严重的性能问题。数据库大小变得更大,对BLOB表的查询变得慢得多。它还会增加代码的复杂性,因为您必须使用非标准数据访问来检索图像,并且必须配置延迟加载。它还显着增加了备份和复制时间。

存储文件更容易处理,您可以轻松备份和仅同步已更改的文件。

基本上我从不尝试将除元数据之外的任何内容填充到数据库中。

答案 1 :(得分:1)

IMHO二进制数据无处于数据库中。 (当然这个规则可以例外)