3

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

必须控制对这些文件的访问,因此他们希望我将它们存储在 DB 中BLOB,但我担心PostgreSQL随着时间的推移无法正确处理它。

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

任何人都可以为此建议我任何更好的解决方案吗?

4

1 回答 1

1

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

到云端™</p>

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

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

于 2013-03-21T21:53:57.260 回答