- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直致力于改造一个非常古老的基于 Java Servlet 的 web 应用程序。 webapp 允许用户上传图片。 webapp 会在数据库中存储对图像的路径引用,但会将图像上传到它们所在的服务器上的目录。
webapp 的数据库已升级到 Oracle 11g,据说可以处理二进制信息。
那么,我的问题是,哪种做法更明智?
继续将图像作为文件存储在服务器上还是将图像填充到 Oracle 11g 数据库中?
非常感谢
史蒂夫
最佳答案
是的,您可以在 Oracle 中将 BLOB 用于二进制数据。 (以及许多其他数据库。)我们在这里使用它们来存储 PDF 文件。
我已经看到它以任何一种/两种方式完成。将图片存入数据库,或者将图片存入文件系统,然后将文件名存入数据库。
存储在数据库中的优势
在数据库中一切正常。你拿出一个记录,相关的图像就在那里。
您可以在文件及其关联数据之间获得数据完整性(当然,假设架构设计良好。)
获取数据和图像的一个逻辑操作。
我发现扩展数据库以容纳大量二进制数据比文件系统替代方案更难且更昂贵。
存储在数据库中的缺点
并非所有工具都能轻松浏览图片。
无法轻松访问网络上的图像。
根据文件大小和数量,您的某些表中可能会包含大量原始数据。
加载和存储 blob 数据并不总是一帆风顺。 (例如,我最近为 Hibernate 编写了一个自定义数据类型来处理我们的 blobbed PDF。)
文件系统的优势
读取和写入文件可能更有效。
如果您想在网络上提供图片,您可以直接从文件系统中执行此操作。
在调试期间更容易浏览图像,并且有很多免费工具可以做到这一点。
我相信将 blob 放入文件系统时更容易扩展应用程序。
文件系统的缺点
数据完整性/一致性问题。改变一些文件结构,你在数据库中还有一个步骤要做。
备份是另一回事。
多种逻辑操作(从数据库读取,从文件系统读取)获取图像和数据。
关于image - 存储上传图片 : Should it be stored on the server or in the database?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11268675/
我是一名优秀的程序员,十分优秀!