6

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

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

何时采用哪种方法?

4

2 回答 2

12

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

在数据库中存储图像:

优点

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

缺点

  • 你会给数据库带来很大的压力。
  • 备份数据库可能需要很长时间。

将图像存储在磁盘上:

优点

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

缺点

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

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

于 2010-03-03T13:08:44.367 回答
0

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

于 2010-03-03T12:55:54.163 回答