我应该将附件存储在 CouchDB 还是 S3 中?

Rya*_*yan 6 couchdb attachment amazon-s3

我正在编写一个完全围绕文件上传的简单 Web API。用户可以通过基于HTTP的API将文件上传到服务,该服务将生成文件供用户访问,并且还需要将它们与上传的文件一起存储。所以会有很多文件在起作用。

基本上,我试图在将它们存储在 CouchDB 中和将它们存储在 Amazon S3 等中之间做出决定。

使用 CouchDB,我可能会为用户初始上传的文件提供一个文档,并将附件数据内嵌在 _attachments 集合中。系统创建的其他文件将添加到该文档中。(该服务进行文档转换,因此他们上传 Excel XLS,系统生成 PDF、TXT 等)我认为这很好,因为对上传的文档记录进行一次删除也会删除生成的 PDF、TXT 或任何其他附件。

借助 S3,我感受到了它的安全性,因为我知道我正在使用完全专用于个人文件存储的托管解决方案。它还将该带宽专门用于这些文件,并且不会来自我的 API Web 服务器。缺点是它为我的 API 代码添加了很多额外的逻辑,现在我必须使大量远程文件与我的本地 CouchDB 数据库所了解的内容保持同步。另外,如果我希望最终用户直接从 S3 访问文件,我就必须处理请求签名等问题。文档都是单独存储的,因此从 CouchDB 删除用户上传的附件将需要我对 S3 进行多次删除查询以查找其他文件。

我熟悉 S3,并在当前项目中使用它,但 CouchDB 在允许附件方面看起来非常出色。我很想使用它,但是有什么问题或缺点吗?在我上面描述的存储大量上传文件的场景中,CouchDB 附件是否比 S3 更有意义?

tha*_*nos 0

我已经在许多项目和几个类似的项目中成功使用了 couchdb。使用 couchdb,您可以在盒子里得到很多东西。我的问题是您的文件的平均大小是多少,您认为您的数据库会有多大?