在Heroku数据库和Amazon S3上保存图像:优点缺点?

时间:2012-05-28 01:45:24

标签: database image heroku amazon-s3

我已经在互联网上的所有地方搜索了Heroku PG-SQL数据库中保存图像与在Amazon S3上保存图像的比较。我目前正在尝试做出设计决定。但是,这是我第一次编写Web应用程序。到目前为止,这是我所知道的决定:

  1. 在DB上保存图像会降低应用程序的性能
  2. 在Db上保存图像比文件系统
  3. 您无法访问Heroku中的文件系统
  4. 您可以以非常便宜的价格在Amazon S3中保​​存图像
  5. 存储在Amazon S3上的图像在保存之前无法处理,如果他们没有通过Heroku上的应用程序
  6. 在Amazon S3上检索和保存图像需要为每次通话付费
  7. 如果浏览器正在检索具有图像的对象,则浏览器会为每个对象发出2个请求,1表示来自heroku的数据,另一个表示来自S3的图像。这可能会有问题,因为浏览器每单位时间只能进行一定数量的请求。
  8. 如果图像尺寸较小,则将图像保存在数据库上并不会降低性能。
  9. 从数据库中删除图像可能会导致碎片
  10. 这些是我对这个主题的了解。就目前而言,我倾向于在Heroku DB中保存图像。因为它们大多是缩略图/小图像,它们的大小小于250MB

    我想知道是否有人可以告诉我这些事实是否错误,或者在做出这个设计决定时是否需要考虑其他因素。

    另外,如果有人能指点我就网络上的这个主题进行一些讨论,我真的很感激。我在这次讨论中找不到任何确切的内容。

1 个答案:

答案 0 :(得分:6)

将它们保存在S3上。性能方面,它是存储在数据库之前的联盟 - 如果您存储在数据库中,请求必须通过您的Web应用程序,然后发出数据库请求(或立即点击清漆,但在任何情况下都是如此)。此外,除非您有很多dynos,否则这意味着用户只能一次获取一个图像(瘦是单线程,除非在长时间运行的请求的特殊配置下)。使用S3(或任何云存储解决方案),它就像对静态资源的另一个HTTP请求一样简单 - 您的应用甚至不需要了解它!