在将在heroku上部署的应用程序....
我需要允许用户上传缩略图。
heroku部署的应用程序当然没有持久的本地文件存储。
这里做的典型事情是谷歌搜索,似乎是将文件存储在Amazon S3或其他AWS托管的云存储中。
但是,如果我只是将图像粘贴在postgres blob列中呢?
这样做的缺点是什么?好处是,不必为其他存储付费,不必处理额外的外部系统,有更多的机会发现错误和中断。但是,似乎没有人有这么好的理由这样做,他们是什么?
答案 0 :(得分:4)
数据库和S3是两种不同的存储机制。他们有什么不同?
关于S3
Amazon S3是一个高度专业化的文件存储系统。它最大限度地减少了对基本读/写/删除文件操作的操作,并优化了存储整个文件的服务数据的缓存。
关于Postgres
Postgres是一个SQL关系数据库,具有大量灵活性,可用于存储和索引各种操作的数据。你可以很好地将二进制图像数据塞进Postgres中的一行。
比较成本/可扩展性
为什么选择S3而不是Postgres?成本和可扩展性。 Postgres是一位昂贵,技术高超的通才。在Heroku上,根据数据量和流量规模,运行Postgres数据库可能会花费数百或数千美元/月。
Amazon S3是一种价格低廉且高度可扩展的解决方案,完全符合您的需求(编写图像,在网页上下文中提供图像)。
TL; DR:Amazon S3针对图片等文件进行了高度优化,具有高度可扩展性且相对便宜。