2010-03-03 38 views
4

我知道可以将图像作为二进制大对象存储在数据库中。但我曾经在一些论坛的Web应用程序中看到,它们作为平面文件存储在Web服务器计算机中,并在需要时进行检索。在数据库中存储图像vs在文件夹结构中

这两种方法的优点和缺点是什么?

什么时候采用哪种方法?

+0

有很多关于这个问题的讨论... – Lucas 2010-03-03 12:54:07

回答

6

像往常一样,这取决于。您需要考虑图像的使用模式以及您的DBMS提供的功能。

在数据库中存储的图像:

的观光

  • 如果图像是要与数据库中的实体(比如用户)相关联,该数据库可以把保持该护理关系。另一方面,如果图像不与数据库中的任何内容相关联,则可能不希望将它们存储在数据库中。
  • 如果你的数据库支持它,你将能够在一个事务内处理文件(我相信MS SQL 2008支持这个,我不知道其他人是否会这样做)。
  • 如果您需要存储每个图像的多个版本(比如说,因为它们随时间而改变),那么在数据库中执行操作可能会比在文件系统上更容易。

缺点

  • 你会投入大量应变的数据库。
  • 备份数据库可能需要很长时间。

在磁盘上存储的图像:

的观光

  • 进行备份是微不足道
  • 检查图像等只是需要一个文件浏览器,无需数据库客户端

CONS

  • 根据您在图像上执行的操作,使数据库的图像集合视图和磁盘上的实际内容保持同步可能并不重要。

当然,如果您存储大量图像,所有这些问题都特别有效。

0

平面文件更适合于在Web上呈现图像 - 它们对服务器的影响要低得多。 OTOH他们不支持交易(实际上你可能会用异质交易来做),你的数据不再在一个地方。