存储上传的图像:它应该存储在服务器上还是存储在数据库中?

Ste*_*eve 3 oracle upload image

我一直在努力翻新一个非常古老的基于Java Servlet的webapp.webapp允许用户上传图像.webapp存储对数据库中图像的路径引用,但将图像上载到它们所在的服务器上的目录.

webapp的数据库已升级到Oracle 11g,我被告知可以处理二进制信息.

所以,我的问题是,哪个更聪明?

继续将图像作为文件存储在服务器上或将图像填充到Oracle 11g数据库中?

非常感谢提前

史蒂夫

Mar*_*rvo 6

是的,您可以在Oracle中将BLOB用于二进制数据.(以及许多其他数据库.)我们在这里使用它们来存储PDF文件.

我已经看到它完成了两种方式.将图像存储在数据库中,或将图像存储在文件系统中,然后将文件名保存在数据库中.

存储在数据库中的优点

它就在数据库中.你拉出一条记录,相关的图像就在那里.

您可以在文件及其关联数据之间获得数据完整性(当然,假设一个良好的模式设计.)

获取数据和图像的一种逻辑操作.

我发现扩展数据库以保存大量二进制数据比文件系统替代方案更难和更昂贵.

存储在数据库中的缺点

并非所有工具都可以轻松浏览图像.

无法轻松访问网络上的图像.

根据文件大小和数量,您可能会在某些表中获得大量原始数据.

加载和存储blob数据并不总是直截了当.(我最近为Hibernate编写了一个自定义数据类型,例如,处理我们的blob PDF.)

文件系统的优点

读取和写入文件可能更有效.

如果要在Web上提供图像,可以直接从文件系统执行此操作.

在调试过程中更容易浏览图像,以及许多免费工具.

我相信在将blob放入文件系统时缩放应用程序会更容易.

文件系统的缺点

数据完整性/一致性问题.更改有关文件结构的内容,您还需要在数据库中执行另一个步骤.

备份是另一回事.

多个逻辑操作(从数据库读取,从文件系统读取)以获取图像和数据.