我们在 Heroku 上有一个 RoR 3.2 站点,使用他们的生产层 PostgreSQL 数据库。
我们的网站用户偶尔会上传 0.5 - 2MB 大小的图像。出于不同的原因,我们希望将这些图像存储在数据库中,而不是作为 S3 或类似文件上的文件。
如果我们的网站图像较多,即 Facebook 克隆,那么将图像存储在数据库中肯定不是一件好事。
无论如何,事实并非如此,因此以下是想要将用户图像存储在数据库中的一些原因:
- 控制一切:S3 停机和第三方 gem 不能破坏图像处理/图像访问。
- 轻松删除:如果用户取消了他的帐户,我们可以通过我们的rails模型(关系依赖)轻松删除与该帐户相关的所有图像。
- 更轻松的用户数据导出:当用户想要离开我们的网站并带走他的数据时,我们可以更轻松地导出他的图像,而不必从 S3 导出
- 成本:这不是一个重要的论点,但由于我们已经支付了数据库费用,因此它比使用 S3 便宜,而 S3 需要花费(少量)资金。
- 备份:这不是一个重要的论点,但我们数据库的备份将包括与我们站点相关的所有内容(当然,RoR 代码除外)。
在 Heroku PostgreSQL 数据库中存储图像的最简单方法是什么?示例代码或演练链接将是最受欢迎的。
谢谢 :)
我鼓励您不要使用数据库来存储该大小的图像。
S3 可以非常有效地进行备份,并且极其坚硬 http://aws.amazon.com/s3/#protecting。从数据丢失的角度来看,它实际上比开发postgres数据库 https://postgres.heroku.com/blog/past/2012/4/26/heroku_postgres_development_plan/与 Heroku 一起计划。
在这个例子中,成本方面也不是真正的最佳实践。虽然你是对的,他们只强制执行行限制,但我认为在开发数据库计划中存储大图像(0.5 - 2mb)会让人皱眉。
最后,由于 Amazon 的内部网络,从 EC2(托管 Heroku 的地方)到 S3 的传输速度非常快。
知道了这一点,我敦促您重新考虑将这种大小的图像存储在数据库中的愿望。看这个问题 https://stackoverflow.com/questions/3748/storing-images-in-db-yea-or-nay对利弊进行更深入的分析。
还有一个开发中心文章 https://devcenter.heroku.com/articles/s3关于使用 S3 和 Heroku。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)