我必须提供一个解决方案,用户可以上传文件并且它们必须与一些元数据
一起存储,这可能会变得非常大。
必须控制对这些文件的访问,所以他们希望我将它们存储在数据库 BLOB
中,但我担心 PostgreSQL
不会随着时间的推移正确处理它.
我的第一个想法是使用一些 NoSQL
数据库解决方案,但我找不到任何可以替代好的 RDBMS 并优雅地将文件存储在一起的解决方案。然后我想将这些文件以高清格式保存在 WebServer 无法提供它们的地方,将它们命名为表 ID,然后将它们加载到 RAM 上并使用适当的内容类型打印它们。
谁能建议我更好的解决方案?
最佳答案
我需要存储许多图像(带有一些元数据)并允许对它们进行受控访问,这就是我所做的。
我将图像文件保存在 Amazon S3 中。我的本地数据库将元数据与文件的 S3 位置作为一列。当经过身份验证和授权的用户需要查看文件时,他们会在我的系统中访问一个 URL(进行身份验证和授权检查),然后系统会为图像生成一个预签名的过期 URL,并将重定向发送回浏览器。然后,浏览器能够在给定的时间内加载图像(如 URL 中签名中指定的那样)。
有了这个解决方案,我就拥有了对资源的用户级访问权限,而且我不必将它们存储为 BLOB 或任何可能随着时间的推移变得笨拙的东西。我也不使用我的带宽将文件流式传输到客户端并为它们获得廉价的冗余存储。显然,此解决方案的适用性取决于您要存储的二进制文件的性质以及您对亚马逊的信任程度。如果出现失误并且有人从我的系统中看到了他们不应该看到的图像,世界就不会结束。 YMMV.
关于postgresql - 存储大文件的最佳数据库解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15558709/