关于数据库:MongoDB或CouchDB – 适合生产?

MongoDB or CouchDB - fit for production?

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

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

我想知道的是:

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

  • 你是如何使用MongoDB / CouchDB的?

  • 当你采用这种新的存储机制时,你遇到了什么问题(如果有的话)(你是如何克服它们的)?

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

  • 您是否对这些您想要分享的解决方案有任何好/坏经历?


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

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

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

    如果你进入mongodb生产部署页面,你会看到一些在生产中使用mongo的人。

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


    BBC和meebo.com在生产中使用CouchDB,我的一个客户也是如此。
    以下列出了其他使用Couch:CouchDB的人

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


    SourceForge使用MongoDB。请参阅此演示文稿或阅读此处。


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

    我们的目标是:

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

  • 快速预先计算的数据,例如"我对此属性和过滤器有多少部分,适合这些条件"

  • 事实:

  • 我们的商店现在运行速度比使用MySQL快得多(而mysql数据库需要额外的1-3天预计算(因此每月更新两次),使数据准备好进行产品计数和过滤,CouchDB需要5个小时,所以我们可以每晚更新产品数据)
  • 设置(过滤)数据分布&备份到商店节点快速简便
  • 但是也:

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

    由于配置错误和忘记了logrotates(查看构建需要太长时间或挂起,复制停止),生产沙发有时会在几个月的工作后造成麻烦,但从不丢失数据,并且总是可以轻松重置。


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

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


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

    CouchDB 0.11源代码版本可在此处获得。这里有二进制安装程序和其他好东西。


    我对MongoDB一无所知,但是从CouchDB常见问题解答:

    Is CouchDB Ready for Production?

    Yes, see InTheWild for a partial list of projects using CouchDB. Another good overview is CouchDB Case Studies

    还有一些链接:

    • Re:当前的CouchDB状态?
    • SimpleDB,CouchDB和其他"新"数据存储 - 反馈


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

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

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

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


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


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


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


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

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

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

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

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

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


    我们正在使用mongodb进行生产

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

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


    这个问题已经接受了答案,但现在又有一天,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服务器

    这将是下一件大事。


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

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


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

    我工作的机构的几个客户正在为大客户的项目使用CouchDB。

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


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


    以下是使用mongoDB生成部署站点的列表

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

    和更多...

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

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


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