使用Couchbase作为应用服务器时提供图像?

使用Couchbase作为应用服务器时提供图像?,couchbase,Couchbase,我正在开发一个小的express应用程序,目前允许用户登录(通过passport)并查看有关他们朋友的信息,即购买历史记录、喜好等。理想情况下,我希望每个用户都有一张附带的个人资料照片,并且他们购买历史记录中的物品都有附带的产品照片。简化的用户模型如下所示 { "name": "Homer Simpson", "purchases": "Duff" } 如果我想要一张个人资料照片,有没有一种简单的方法可以在couchbase中完成,或者我应该将它存储在S3之类的东西中,然后保存下来 {

我正在开发一个小的express应用程序,目前允许用户登录(通过passport)并查看有关他们朋友的信息,即购买历史记录、喜好等。理想情况下,我希望每个用户都有一张附带的个人资料照片,并且他们购买历史记录中的物品都有附带的产品照片。简化的用户模型如下所示

{
  "name": "Homer Simpson",
  "purchases": "Duff"
}
如果我想要一张个人资料照片,有没有一种简单的方法可以在couchbase中完成,或者我应该将它存储在S3之类的东西中,然后保存下来

{
  "name": "Homer Simpson",
  "profile_pic" : "http://s3.something.com/profilepics/homer.jpg",
  "purchases": "Duff"
}

我可以给出两个参数,说明为什么我不将它们存储在数据库中(Couchbase或其他)

1) 使用每一种工具,使其达到最佳效果。Couchbase可以从RAM中的托管缓存提供您提供的示例文档。您将获得亚毫秒的响应时间。S3非常擅长提供静态内容,比如图像。Couchbase也能很快从RAM中恢复图像吗?当然可以,但是你要用更多的资源来做这件事,这就引出了我的#2论点

2) 通过将图像存储在DB、Couchbase或其他方式中,您将使用最昂贵和性能最好的资源来实现一些静态和不经常更改的功能。想想EC2实例与S3相比的存储成本。如果要将其存储在数据库中,则必须将其存储、复制、备份,等等,以及关键数据。S3非常擅长以非常合理的价格提供高耐久性。数据库中的图像听起来是个不错的主意,但随着时间的推移,它们会成为你脖子上的锁链。除非您现在就开始使用用户帐户过期策略,否则您可能需要2年的时间来存储、备份和复制1.5年前退出使用您的服务并多次支付每KB费用的用户的图像。再说一次,这并不是Couchbase所独有的

我的观点是,使用S3中有图像指针的文档。你将得到最好的两个世界。性能和成本效益不需要太多额外工作