对于集群CouchDB设置,我是否应该继续使用BigCoach?

对于集群CouchDB设置,我是否应该继续使用BigCoach?,couchdb,cluster-computing,bigcouch,Couchdb,Cluster Computing,Bigcouch,我一直在研究CouchDB的附件功能。基本上,CouchDB允许您在数据库记录中存储二进制文件数据。类似于MongoDB的GridFS。我想要构建的项目主要围绕文件上传,我计划将其存储在CouchDB中。因此,这让我开始研究CouchDB如何对数据进行集群,以便随着数据库的增长,由于文件附件的原因,我可以跨多个服务器进行集群。我很失望地发现CouchDB没有能力做到这一点,开箱即用。CouchDB指南说要使用一种叫做CouchDB lounge的东西,但该项目在Github上已经有两年多没有被开

我一直在研究CouchDB的附件功能。基本上,CouchDB允许您在数据库记录中存储二进制文件数据。类似于MongoDB的GridFS。我想要构建的项目主要围绕文件上传,我计划将其存储在CouchDB中。因此,这让我开始研究CouchDB如何对数据进行集群,以便随着数据库的增长,由于文件附件的原因,我可以跨多个服务器进行集群。我很失望地发现CouchDB没有能力做到这一点,开箱即用。CouchDB指南说要使用一种叫做
CouchDB lounge
的东西,但该项目在Github上已经有两年多没有被开发过了。我觉得在这上面建房子我不会感到舒服

我发现了
bigcooch
,它似乎是一个经过修改的CouchDB,具有我需要包含的确切集群功能,只是它看起来落后于当前稳定的CouchDB版本。我确实在一年前的一份新闻稿中读到,他们正在努力将BigCoach合并到官方CouchDB中,但我不知道这方面的时间表是什么样的

作为第三种选择,Couchbase Server 2似乎也基于CouchDB,但除了其他功能外,它还构建了集群。我也认为这是一个可行的选择。不过,它不支持文件附件

BigCoach最终将登陆CouchDB,这一事实让我有信心继续使用BigCoach


我应该用大沙发吗?如果只是CouchDB+集群,为什么每个人都不使用BigCoach?一定有一些不利因素,对吧?

不是每个人都需要集群。CouchDB团队打算在几乎准备就绪的1.3版本发布后不久合并BigCoach,因此开始研究BigCoach肯定是有意义的(我个人肯定会选择BigCoach而不是CouchBase或CouchDB lounge——无论如何,许多BigCoach贡献者都是CouchDB提交者).

集群的缺点是它的额外复杂性。我想说,除非你已经是一个有经验的CouchDB用户,否则从第一天开始使用BigCoach可能有点太远了

作为学习如何设置和维护BigCoach部署的另一种选择,您可以选择像Cloudant这样的在线CouchDB主机,让他们处理管理一个计算机集群的复杂性。您所要处理的是看起来仍然像本地CouchDB实例的东西


关于在CouchDB中存储文件,为什么不将它们存储在S3中?(顺便说一句,比Cloudant便宜得多)

我的工作需求与你的有所不同,但我曾与Couchbase、CouchDB和BigCoach合作过。我发现在云中安装BigCoach非常容易,只花了一天就成功创建了一个集群。我们正在投资BigCoach,并在完成尽职调查后,致力于一项重大移动计划

原因:

  • 在云环境中设置BigCoach相当容易。文档很简单,但是我能够快速地建立并运行一个简单的集群。我建议注意云环境中机器的私有主机名。(如果有帮助的话,我可以发送关于在云中创建机器的详细说明。)

  • BigCoach由Cloudant维护,当然它是开源的,这很好。Cloudant的CTO告诉我,他们已经将相当多的代码合并到ApacheCouchDB项目中。而且Cloudant看起来相当稳定,所以我们指望他们保持项目的最新状态。它似乎是一个很好的社区(不像TouchDB)

  • 据我所知,BigCoach主要围绕核心CouchDB代码/API进行包装。这很好,因为这让我觉得他们是以CouchDB为基础的,并没有试图做太多的事情。例如,CouchDB的复制已经非常好了,而BigCoach并没有试图重新发明轮子。他们只是添加了一些沙发上缺少的东西

  • 与Cloudant相比,运行BigCoach“原始”的一个缺点是Cloudant维护自己的具有更多功能的内部分叉。我们的评估发现,这些功能并不需要。他们对我们来说有点过分了

  • Couchbase似乎特别落后。到Couchbase 2.0花了很长时间,我对Couchbase 2.0之前的版本很失望。我听说2.0很棒,但还没有机会使用它。由于各种原因,我觉得2.0之前的版本有点烧焦了


  • 我目前确实将它们存储在S3中,但与将它们与所有其他数据存储在同一数据库中相比,这增加了很多额外的复杂性。对于S3,我必须创建数据库记录、上传到S3、使用URL更新记录、在需要公开访问URL时对其进行签名,等等。这些都是额外的工作。我只是在寻找替代方案。值得一提的是:我们做了一件与CouchDB+S3类似的事情,只是我们不公开S3,而是代理它以允许我们以后更改存储。最初我们使用CouchDB附件,但在Cloudant和S3中它们太贵了。在我们的案例中没有太多的复杂性差异。(多个附件文档链接到一个主控文档)。我对这两种方法都感兴趣。我目前向最终用户公开S3的原因是为了上传和下载,这样带宽就可以通过S3设置的任何负载平衡和东西来实现。如果我先通过一个EC2实例代理它,那可能只是在那里制造了一个瓶颈。尽管如此,能够在最终用户不知道的情况下无缝地更改文件的服务位置还是有好处的。