MongoDB或CouchDB - 适合生产?

时间:2009-05-21 23:22:24

标签: database mongodb couchdb

我想知道是否有人可以告诉我 MongoDB CouchDB 是否已为生产环境做好准备。

我现在正在研究这些存储解决方案(我现在很喜欢MongoDB),但是这些项目还很年轻,所以我预计我必须努力工作才能说服我的经理我们应采用这项新技术。

我想知道的是:

  1. 今天谁在生产环境中使用MongoDB或CouchDB?

  2. 您是如何使用MongoDB / CouchDB的?

  3. 采用这种新的存储机制时遇到了什么问题(如果有的话)(你是如何克服这些问题的?)

  4. 您是如何处理您必须处理的任何迁移问题的?

  5. 您对这些您想分享的解决方案有任何好/坏经历吗?

19 个答案:

答案 0 :(得分:270)

我是10gen的CTO(MongoDB的开发人员),所以我有点偏颇,但我也管理了一些在生产中使用MongoDB的网站。

businessinsider已经在生产中使用mongo超过一年了。他们将其用于从用户和博客帖子到网站上的每个图像的所有内容。

shopwiki正在将它用于一些事情,包括实时分析和缓存层。他们每秒对一个相当大的数据库进行超过1000次写入。

如果你转到mongodb Production Deployments page,你会看到一些人在生产中使用mongo。

如果您对生产部署的规模或范围有任何疑问,请在我们的用户列表中发布,我们非常乐意为您提供帮助。

答案 1 :(得分:111)

BBCmeebo.com在生产中使用CouchDB,我的一个客户也是如此。 以下是使用Couch的其他人的列表:CouchDB in the wild

主要的挑战是知道如何组织文档并停止考虑关系数据。

答案 2 :(得分:44)

SourceForge使用MongoDB。请参阅this presentationread here

答案 3 :(得分:34)

我们正在运行CouchDB作为我们商店的MySQL替代品(70.0000件商品/商店,所有商品共有400万个属性,商品之间的交叉连接)。

我们的目标是:

  1. 从master-db轻松复制到具有不同文档的多个客户端。

  2. 快速预先计算的数据,例如“我对此属性和该过滤器有多少部分,符合这些条件”

  3. 事实:

    1. 我们的商店现在运行速度比使用MySQL快得多(并且mysql数据库需要额外的1-3天预计算(因此每月更新两次),使数据准备好进行产品计数和过滤,CouchDB需要5小时,所以我们可以每晚更新产品数据)
    2. 设置(过滤)数据分发&
    3. 可以快速轻松地备份到商店节点

      但也是:

      1. 了解map / reduce以及没有连接的限制非常困难
      2. 对于没有外部程序的“删除位置”或“更新位置”等数据,不执行任何操作
      3. 复制效果很好,除非出现问题;然后很难找出原因(初学者)
      4. 如果你不是Linux爱好者,那么没有二进制文件的CouchDB的安装(是的,有一些是野外的,但不适用于每个操作系统/版本)可能很难。但CouchDB社区很有帮助(#couchdb),幸运的是有些公司(cloudant,iriscouch)提供从免费到大型企业的服务。
      5. CouchDB正在向前发展,因此有很多变化(改进)可能会改变你的工作方式。但基本的东西保持稳定。
      6. 结果: MySQL作为数据创建和维护的数据库是可靠的,易于理解和处理。我想我们不会改变这一点。 但我也不想错过CouchDB视图的强大功能和复制设置的简易性。

        由于配置错误和忘记了logrotates(查看构建时间过长或挂起,复制停止),生产沙发有时会导致数月工作后出现问题,但数据永远不会丢失,并且始终可以轻松重置。

答案 4 :(得分:27)

我在生产中使用CouchDB。目前,它存储了原始数据库模式中不存在的所有“可选”字段。现在我正考虑将所有数据移到CouchDB。

我承认,这是一个非常冒险的步骤。首先,因为它还不是v1.0。其次,因为它是驱动器空间的饥饿。通过我的计算,CouchDB文件(带索引)比具有相同行的MySQL数据库大约30倍。 但我很确定它会很好用。

答案 5 :(得分:18)

CouchDB 0.11(3月底发布)是1.0的功能冻结版本。这意味着我们将保持与1.0的当前API的兼容性,所以现在是时候再看看CouchDB,如果你有一段时间没有。

CouchDB 0.11 source code release is available here.binary installers and other goodies linked here.

答案 6 :(得分:17)

我对MongoDB一无所知,但是从CouchDB FAQ

  

CouchDB是否可以投入生产?

     

是的,请参阅InTheWild了解使用CouchDB的部分项目列表。另一个很好的概述是CouchDB Case Studies

另外,有些链接:

答案 7 :(得分:16)

我们在生产中使用couchdb,并且就在项目进入Apache之前。

我们使用它来存储我们可能使用dbms的所有内容,以及各种非结构化数据。就个人而言,我真的很喜欢你可以把各种数据扔进去,并根据情况使用视图来剔除你不需要的东西。

最困难的部分是远离dbms思维模式。当存储格式改变为安全时,我们编写了自己的迁移工具,因此这不是一个真正的问题。

我们还没有任何负面的经历,但是我们还没有在任何巨大的负载下进行设置。我认为事情会很好用,因为我们有两个从属服务器从一个获取所有写入的主服务器复制。我很确定我们不必这样做,以便复制正常工作,但这是我们在开始时设置它并且它卡住的方式。

答案 8 :(得分:13)

我们使用CouchDB存储移动入站和出站邮件,并通过我编写的一些自定义视图报告此流量。前端是用Python编写的。我们没有任何真正的技术问题,并且自12月底以来一直在运行。我遇到的唯一障碍是最初考虑使用MapReduce,但是一旦我学会了如何做到这一点,其他一切都顺利进行。

答案 9 :(得分:9)

我们目前正在生产中使用MongoDB作为缓存层以及用于产品导入和操作产品数据的存储引擎。我们是一家电子商务公司,管理着超过200万种产品(超过1亿个属性),跨越10多个分销商而没有MongoDB,这项任务几乎是不可能完成的。

答案 10 :(得分:1)

我们目前正在使用mongodb作为我们通过LAN协作的文件存储服务。 此外,像trello这样的项目正在使用mongodb作为其后端数据存储区。 我之前使用过couchdb,但没有使用过生产能力。

答案 11 :(得分:0)

我们正在移动后端服务中使用MongoDB,即Netmera.我们正在使用它来存储所有用户和内容数据。

答案 12 :(得分:0)

我已经在生产中使用CouchDB将近2年了。由于项目直接启动CouchDB实施,因此没有迁移工作。它作为一个数据库,存储从开始到打包的单个电子产品的数据。

由于我们销售的传感器具有高精度的要求,我们在不同阶段进行了大量测试,所有这些都将存储在CouchDB上的一个文档中。

我从经验中学到了一些学习曲线,即充分利用视图(或者也称为永久视图)。视图应该是经常调用的数据库的一小部分的“小过滤器”。

我的CouchDB数据库并不像其他巨型公司那样疯狂。但到目前为止,我仍然做得很好。目前我有400MB的24000个文件。

我喜欢CouchDB的功能是'复制','存储文档的修订'。

我在MongoDB上阅读了很多好评,如果有机会的话,我会想尝试一下。

答案 13 :(得分:0)

我们正在制作mongodb

www.beachfront.io - 每秒接近5k写入请求 www.beachfrontbuilder.com - 每秒500次读/写请求,维护10m用户数据& OLAP。

数据归档面临的唯一挑战是,我们通过实施自定义组件来克服这些挑战。

答案 14 :(得分:0)

这个问题已经接受了答案,但现在还有一天 NoSQL DB 正处于许多强大功能的趋势中。它是Couchbase;在移动平台上以CouchbaseLite运行,在服务器端以Couchbase Server运行。

以下是Couchbase Lite的一些主要功能。

Couchbase Lite是一款轻量级,面向文档(NoSQL),可同步的数据库引擎,适合嵌入到移动应用中。

轻量级意味着:

嵌入式 - 数据库引擎是链接到应用程序的库,而不是单独的服务器进程。 小代码大小 - 对于移动应用程序很重要,通常通过单元网络下载。 快速启动时间非常重要,因为移动设备的CPU速度相对较慢。 内存使用率低 - 典型的移动数据集相对较小,但某些文档可能具有大型多媒体附件。 当然,良好的性能 - 确切的数字取决于您的数据和应用程序。

面向文档意味着:

以灵活的JSON格式存储记录,而不是需要预定义的模式或规范化。 文档可以具有任意大小的二进制附件,例如多媒体内容。 应用程序数据格式可以随着时间的推移而发展,而无需显式迁移。 MapReduce索引提供快速查找,无需使用特殊查询语言。

可同步意味着:

数据库的任何两个副本都可以通过高效,可靠,经过验证的复制算法实现同步。 同步可以是按需或连续的(延迟几秒)。 设备可以与远程服务器上的大型数据库的子集同步。 同步引擎支持间歇性和不可靠的网络连接。 通过app逻辑完全控制合并,可以检测和解决冲突。 修订树允许复杂的复制拓扑,包括服务器到服务器(用于多个数据中心)和点对点,无数据丢失或错误冲突。 Couchbase Lite为无缝iOS(Objective-C)和Android(Java)开发提供本机API。此外,它还包括用于PhoneGap的Couchbase Lite插件,它使您能够使用熟悉的Web应用程序编程技术和PhoneGap移动开发框架构建您开发的iOS和Android应用程序。

您可以在Couchbase Lite

上详细了解

Couchbase Server

这将是下一件大事。

答案 15 :(得分:0)

说到生产,无缝故障转移/恢复都需要保姆 1- Couchbase,没有无缝的故障转移/恢复,需要手动干预。如果多个节点丢失,重新平衡需要花费太多时间,风险太大。

2- Mongo带有分片,从丢失配置服务器恢复数据,这不是一件容易的事情

答案 16 :(得分:0)

Adobe正在使用 MongoDB 为即将发布的 Adob​​e Experience Manager (以前称为 Day CQ )作为核心数据库引擎

我所在的代理机构的几个客户正在为大客户的项目使用 CouchDB

在我看来,两者都是伟大而可行的数据库。 :)

答案 17 :(得分:-2)

以下是使用mongoDB

生成部署站点的列表
  • 纽约时报:在照片提交的表单构建应用程序中使用它。 Mongo缺乏模式使生产者能够定义任何自定义表单字段的组合。
  • SourceForge :用于所有项目的SourceForge首页,项目页面和下载页面的后端存储。
  • Bit.ly
  • Etsy的
  • IGN :为IGN的实时流量分析和RESTful内容API提供支持。
  • Justin.tv :掌握Justin.tv的内部分析工具,用于提供开箱即用的解决方案无法提供的病毒式传播,用户保留和一般使用情况统计信息。
  • Posterous
  • Foursquare :Sharours Mongo数据库用于foursquare上的大多数数据。
  • Business Insider :自2008年初开始使用。所有网站的数据,包括帖子,评论,甚至图片,都存储在MongoDB上。
  • Github :用于内部报告应用程序。
  • 审核员:将他们的网站从Cold Fusion和SQL Server迁移到Drupal 7和MongoDB。
  • Grooveshark :目前使用Mongo每天管理超过一百万个唯一身份用户会话。
  • 来自Buzzfeed
  • 铁饼
  • Evite :用于分析和快速报告。
  • Squarespace
  • Shutterfly :用于Shutterfly中的各种持久数据存储要求。 MongoDB帮助Shutterfly构建无与伦比的服务,使客户与他们生活中最重要的人之间建立更深入,更私密的关系。
  • 托普西
  • Sharethis
  • Mongohq :为MongoDB提供托管平台,并使用MongoDB作为其服务的后端。我们的托管中心页面提供了有关MongoHQ和其他MongoDB托管选项的更多信息。

以及更多......

摘自: http://lineofthought.com/tools/mongodb

您也可以在那里查看其他数据库或工具。

答案 18 :(得分:-6)

MongoDB在向企业发放许可方面存在一些问题,我不确定细节,但我们的法律部门没有明确表示我们不允许在任何产品中使用MongoDB。