提问



我想知道是否有人可以告诉我 MongoDB 或 CouchDB 是否已准备好用于生产环境。 [4] [5]


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


我想知道的是:



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

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

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

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

  5. 您是否有任何您喜欢分享的解决方案的好/坏经历?


最佳参考


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


businessinsider一直在使用mongo生产超过一年。他们将它用于从用户和博客帖子到网站上的每个图像的所有内容。[6]


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


如果你进入mongodb Production Deployments页面,你会看到一些人在生产中使用mongo。[8]


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

其它参考1


BBC和meebo.com在生产中使用CouchDB,我的客户也是如此。
以下列出了其他人在野外使用Couch:CouchDB [9] [10] [11]


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

其它参考2


SourceForge使用MongoDB。请参阅此演示文稿或阅读此处。[12] [13] [14]

其它参考3


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


我们的目标是:



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

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



事实:



  1. 我们的商店现在运行速度比使用MySQL快得多(而mysql数据库需要额外的1-3天预计算(因此每月更新两次),使数据为产品计数和过滤做好准备,CouchDB需要5小时,所以我们可以每晚更新产品数据)

  2. 设置(过滤)数据分发&
  3. 可以快速轻松地备份到商店节点


但是也:



  1. 了解map/reduce以及没有连接的限制非常困难

  2. 对于没有外部程序的删除位置或更新位置等数据,不执行任何操作

  3. 除非出现问题,否则复制效果很好;然后很难找出原因(初学者)

  4. 如果你不是一个Linux极客,那么没有二进制文件的CouchDB的安装(是的,有一些在野外,但不适用于每个操作系统/版本)都可能很难。但CouchDB社区很有帮助(#couchdb),幸运的是有些公司(cloudant,iriscouch)提供从免费到大型企业的服务。

  5. CouchDB正在向前发展,因此有很多变化(改进)可能会改变你的工作方式。但基本的东西保持稳定。



结果是:
MySQL作为数据创建和维护的数据库是可靠的,易于理解和处理。我想我们不会改变这一点。
但我也不想错过CouchDB视图的强大功能和复制设置的简易性。


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

其它参考4


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


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

其它参考5


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


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

其它参考6


我对MongoDB一无所知,但是从CouchDB FAQ:[17]



   CouchDB是否可以投入生产?

  
  是的,请参阅InTheWild获取使用CouchDB的部分项目列表。另一个很好的概述是CouchDB案例研究[18] [19]



还有一些链接:



  • Re:当前的CouchDB状态?

  • SimpleDB,CouchDB和其他新数据存储 - 反馈


其它参考7


我们在生产中使用couchdb,并且在项目进入Apache保护伞之前就已经使用了。[20] [21]


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


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


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

其它参考8


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

其它参考9


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

其它参考10


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

其它参考11


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

其它参考12


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


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


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


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


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


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

其它参考13


我们正在使用mongodb进行生产


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


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

其它参考14


这个问题已经接受了答案,但现在还有一天 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上探索更多信息[24]


和Couchbase服务器[25]


这将是下一件大事。

其它参考15


说到生产,无缝故障转移/恢复都需要保姆

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


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


其它参考16


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


我工作的代理商的几位客户正在大型客户的项目中使用 CouchDB


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

其它参考17


这是使用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[27]


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

其它参考18


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