我搜索了这个,但只找到了将图像作为blob保存到数据库的方法。 我想要做的是将图像位置保存在数据库中,然后从该位置自动检索文件,而不是将其保存为数据库中的blob。 这有什么意义吗?或者将图像文件作为blob保存到数据库中更好,更快,更便宜? 根据区域设置,我可能需要获得不同的图片。
感谢您的帮助!
答案 0 :(得分:3)
我有两种经验(在RDBMS中将图像保存为blob)并且只以文件系统/ url方式存储链接。我已经意识到,第一种方法显然是不可扩展的。
以下是关于每种方法的相当偏颇的列表。
方法1.将图像保存为blob:
<强>缺点:强>
当图像数量增加时,您的数据库大小也会增加 您仅限于运行RDBMS引擎的文件系统。
当您想要检索大量这些blob时,以及它们是否存在 体积很大,你浪费了IO / bandwdith并给你带来压力 RDBMS引擎。理想情况下,您希望它具有执行的短查询 快速并移动一点点字节。你无法得到 如果您将数据保存为关系数据库中的BLOB。 虽然有些人可能认为对于可重复的查询缓存会 帮助,我会争辩说,如果那些巨大的数据块不在那里 首先,我不必把它们放在缓存中。
数据库管理员/内容管理员没有可靠的方法 例如,检索db中的内容以进行验证 如果图像坏了。他必须连接到db和 以某种格式提取BLOB字节然后查看它。要么 或者你可以建立一些页面来为他做那件事 在我的诚实意见中,这将是一个非常糟糕的噱头。
优点:
方法2.将图像保存为文件系统/网址的链接
优点:
大大减轻了RDBMS引擎的性能压力。
如果将图像存储为链接,则为系统管理员/内容管理员 只需在浏览器中复制链接即可轻松检查它们 验证它是否正确呈现。
如果您不使用外部图片托管服务,而是使用 在内部,你仍然保持着很大的控制力 未来可能添加更多图像托管服务器/ 文件系统。
如果你有大量的图片正在被检索,那么它们就是 不是由您托管,您可以分发大量的网络负载 使加载时间变得更快。
缺点:
总之,我全心全意地建议使用第二种方法。
答案 1 :(得分:0)
总的来说,我同意@ baba的回答。
然而,这实际上取决于图像的数量和大小。如果所有图像都是小缩略图,那么我会将它们存储在数据库中,这样一切都在一个地方。
只要存储空间可用于数据库和文件系统,也可以执行两者 ....这为您提供了两全其美的内置备份。