将图像存储在数据库或文件系统中

时间:2010-12-28 22:58:07

标签: database image database-design file filesystems

  

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

将图像存储在文件系统中是否更快,更可靠?还是应该将它们存储在数据库中?

假设图像不超过200 MB。目标是快速,可靠的访问。

一般来说,人们如何决定在文件系统或数据库中存储文件(例如图像,PDF)?

4 个答案:

答案 0 :(得分:13)

个人观点:我总是将图像存储在文件系统中,并且只在数据库中存储文件路径。在许多情况下,数据库存储在快速(读取:昂贵的存储,15k RPM或SSD驱动器)存储上。图像或其他文件通常可以存储在较慢(读取:更便宜,更大的驱动器,7.2k RPM驱动器)存储上。

我发现这是最好的,因为它允许数据库保持较小的尺寸。通常,数据库很好地存储“数据”。他们可以快速搜索和检索少量数据。文件系统很好地存储“文件”,它们经过优化,可以快速查找和检索更大的数据。

显然,这两种方法都存在权衡,并且不会出现一刀切的情况;但是,可能存在一些用例,在数据库中存储图像是一件好事,如果它们都非常小,并且您没有预期很多,并且您的数据库与文件共享位于同一存储介质上,然后将图像直接放入数据库可能是有意义的。

作为旁注,SQL Server 2008R2有一个FileStream字段类型,它可以提供两全其美,我还没有使用它,所以我不能说它的工作情况。

答案 1 :(得分:4)

如果您需要以下内容,请将文件/图像存储在数据库中:

  • 访问控制
  • 版本
  • 签入/签出
  • 基于元数据搜索

这就是像SharePoint这样的主要CMS的设计。

但是,如果您的内容更加静态并且不会随着时间的推移而改变,那么您可以使用文件系统并在Web服务器上启用优化/缓存。

答案 2 :(得分:1)

使用数据库方法,您只需要连接一件事。如果您的用户是分布式的,那可能会更简单。请注意,如果不经常访问图像,效率问题可能无关紧要。

答案 3 :(得分:0)

首先你必须知道,在数据库中,你不能存储比我想象的更大的文件8 mb,leavinig,所以我认为最好在系统中存储文件,以及数据库中的小图像