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

时间:2013-03-21 21:39:41

标签: postgresql java-ee nosql

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

必须控制对这些文件的访问,因此他们希望我将它们存储在数据库BLOB中,但我担心PostgreSQL将无法正常处理它。

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

有人能建议我为此提出更好的解决方案吗?

1 个答案:

答案 0 :(得分:1)

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

To the cloud

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

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