6

我们在 Heroku 上有一个 RoR 3.2 站点,使用他们的生产层 PostgreSQL 数据库。

我们的网站用户偶尔会上传 0.5 - 2MB 大小的图片。出于不同的原因,我们希望将这些图像存储在数据库中,而不是作为 S3 或类似文件中的文件。

如果我们的网站是图像重的,即 Facebook 的克隆,那么将图像存储在数据库中肯定不是一件好事。

无论如何,它不是,所以这里有一些想要在数据库中存储用户图像的原因:

  • 控制一切:S3 停机时间和第三方 gem 不能中断图像处理/对图像的访问。
  • 轻松删除:如果用户取消了他的帐户,我们可以通过我们的 rails 模型(关系依赖项)轻松删除与该帐户相关的所有图像。
  • 更轻松的用户数据导出:当用户想要离开我们的站点并随身携带他的数据时,我们可以更轻松地导出他的图像,而不必从 S3 导出
  • 成本:不是一个重要的论点,但由于我们已经为数据库付费,所以它比使用 S3 更便宜,后者需要花费(少量)金钱。
  • 备份:不是一个重要的论点,但我们的数据库的备份将包括与我们网站相关的所有内容(当然,除了 RoR 代码)。

在 Heroku PostgreSQL 数据库中存储图像的最简单方法是什么?示例代码或演练链接将是最受欢迎的。

谢谢 :)

4

2 回答 2

9

我鼓励您不要使用数据库来存储这种大小的图像。

S3可以非常有效地备份,并且非常坚固。从数据丢失的角度来看,它实际上比使用 Heroku开发 postgres 数据库计划更安全。

在此示例中,成本方面也不是真正的最佳实践。虽然你是对的,他们只强制执行行限制,但我认为在开发数据库计划中存储大图像(0.5 - 2mb)会令人不悦。

最后,由于亚马逊的内部网络,从 EC2(Heroku 托管的地方)传输到 S3 的速度非常快。

知道了这一点,我会敦促您重新考虑将这种大小的图像存储在数据库中的愿望。有关利弊的更深入分析,请参阅此问题。

There's also a dev center article about using S3 and Heroku.

于 2012-08-26T02:07:24.017 回答
4

As mentioned by others the better option would be storing images in S3 or something.

Still Check out following link for storing image in Heroku PostgreSQL database

Upload images in database

于 2012-09-04T21:25:54.347 回答