在DB与文件夹结构中存储图像

时间:2010-03-03 12:49:13

标签: database database-design image blobstorage

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

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

何时采用哪种方式?

2 个答案:

答案 0 :(得分:11)

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

将图像存储在数据库中:

赞成

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

CONS

  • 你将对数据库造成很大压力。
  • 备份数据库可能需要很长时间。

将图像存储在磁盘上:

赞成

  • 制作备份很简单
  • 检查图像等只需要一个文件浏览器,不需要数据库客户端

CONS

  • 保持数据库的图像集视图和磁盘上的实际内容同步可能并非易事,具体取决于您将对图像执行的操作。

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

答案 1 :(得分:0)

平面文件更适合在网络上表示图像 - 它们对服务器的影响要小得多。 OTOH他们不支持交易(实际上你可能会使用异构交易)并且你的数据不再在一个地方了。