为什么不在数据库中存储文件?

时间:2013-09-24 12:27:54

标签: database heroku upload blob

在将在heroku上部署的应用程序....

我需要允许用户上传缩略图。

heroku部署的应用程序当然没有持久的本地文件存储。

这里做的典型事情是谷歌搜索,似乎是将文件存储在Amazon S3或其他AWS托管的云存储中。

但是,如果我只是将图像粘贴在postgres blob列中呢?

这样做的缺点是什么?好处是,不必为其他存储付费,不必处理额外的外部系统,有更多的机会发现错误和中断。但是,似乎没有人有这么好的理由这样做,他们是什么?

1 个答案:

答案 0 :(得分:4)

数据库和S3是两种不同的存储机制。他们有什么不同?

关于S3

Amazon S3是一个高度专业化的文件存储系统。它最大限度地减少了对基本读/写/删除文件操作的操作,并优化了存储整个文件的服务数据的缓存。

关于Postgres

Postgres是一个SQL关系数据库,具有大量灵活性,可用于存储和索引各种操作的数据。你可以很好地将二进制图像数据塞进Postgres中的一行。

比较成本/可扩展性

为什么选择S3而不是Postgres?成本和可扩展性。 Postgres是一位昂贵,技术高超的通才。在Heroku上,根据数据量和流量规模,运行Postgres数据库可能会花费数百或数千美元/月。

Amazon S3是一种价格低廉且高度可扩展的解决方案,完全符合您的需求(编写图像,在网页上下文中提供图像)。

TL; DR:Amazon S3针对图片等文件进行了高度优化,具有高度可扩展性且相对便宜。