postgresql - 存储大文件的最佳数据库解决方案

标签 postgresql jakarta-ee nosql

我必须提供一个解决方案,用户可以上传文件并且它们必须与一些元数据一起存储,这可能会变得非常大。

必须控制对这些文件的访问,所以他们希望我将它们存储在数据库 BLOB 中,但我担心 PostgreSQL 不会随着时间的推移正确处理它.

我的第一个想法是使用一些 NoSQL 数据库解决方案,但我找不到任何可以替代好的 RDBMS 并优雅地将文件存储在一起的解决方案。然后我想将这些文件以高清格式保存在 WebServer 无法提供它们的地方,将它们命名为表 ID,然后将它们加载到 RAM 上并使用适当的内容类型打印它们。

谁能建议我更好的解决方案?

最佳答案

我需要存储许多图像(带有一些元数据)并允许对它们进行受控访问,这就是我所做的。

To the cloud

我将图像文件保存在 Amazon S3 中。我的本地数据库将元数据与文件的 S3 位置作为一列。当经过身份验证和授权的用户需要查看文件时,他们会在我的系统中访问一个 URL(进行身份验证和授权检查),然后系统会为图像生成一个预签名的过期 URL,并将重定向发送回浏览器。然后,浏览器能够在给定的时间内加载图像(如 URL 中签名中指定的那样)。

有了这个解决方案,我就拥有了对资源的用户级访问权限,而且我不必将它们存储为 BLOB 或任何可能随着时间的推移变得笨拙的东西。我也不使用我的带宽将文件流式传输到客户端并为它们获得廉价的冗余存储。显然,此解决方案的适用性取决于您要存储的二进制文件的性质以及您对亚马逊的信任程度。如果出现失误并且有人从我的系统中看到了他们不应该看到的图像,世界就不会结束。 YMMV.

关于postgresql - 存储大文件的最佳数据库解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15558709/

相关文章:

sql - 当我在所有对象中添加架构名称时出现错误 : Relation "abc.emp_audit" does not exist.。没有架构就可以正常工作

postgresql - 如何通过 HDBC 将二进制数据放入 postgres?

java - 可以从命令行在 Eclipse 中启动 Java EE 服务器吗?

java - 为什么 f :validateDoubleRange only work for @SessionScoped?

database - 内存数据库的推荐

python - pynamodb last_evaluated_key 始终返回 null

algorithm - 存储用于流式传输的仅附加系列文件的最佳实践方法是什么?

sql - Active Record 查询中基于时间的优先级

java - 为什么我在 web.xml 中列出安全角色,而它们在 jdbcRealm 数据库中?

c# - Command.Prepare() 导致内存泄漏?