MongoDB或CouchDB – 适合生产?

我想知道是否有人可以告诉我,如果MongoDBCouchDB准备好生产环境。

我现在正在研究这些存储解决scheme(我现在很青睐MongoDB),但是这些项目还相当年轻,所以我预计我将不得不非常努力地说服我的经理采用这种方式新技术。

我想知道的是:

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

  2. 你如何使用MongoDB / CouchDB?

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

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

  5. 对于这些您想分享的解决scheme,您有没有好的/不好的经验?

我是10gen(MongoDB的开发人员)的首席技术官,所以我有点偏见,但我也pipe理一些在生产中使用MongoDB的网站。

businessinsider在生产中已经使用了mongo一年多了。 他们使用它从用户和博客文章,到网站上的每一个图像。

shopwiki正在使用它的一些东西,包括实时分析和caching层。 他们每秒钟处理超过1000个写入相当大的数据库。

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

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

BBC和meebo.com在生产中使用CouchDB,我的客户也是如此。 以下是使用Couch的其他人员名单: CouchDB

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

SourceForge使用MongoDB。 看到这个演示文稿或阅读这里 。

我们正在运行CouchDB作为我们店铺的替代品(70.0000件/店铺,总共400万件属性,项目之间的交叉连接)。

我们的目标是:

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

  2. 快速预先计算的数据,如“我有多less部分与这个属性和filter,适合这些条件”

事实:

  1. 我们的商店现在运行的速度要比使用MySQL快得多(而且mysql数据库需要预先计算1-3天(所以每月更新两次),使数据准备好用于产品计数和过滤,CouchDB需要5个小时,所以我们可以每晚更新产品数据)
  2. 设置(过滤)数据分配和备份到商店节点是快速和容易的

但也:

  1. 了解地图/减less和没有连接的限制是相当困难的
  2. 没有外部程序的“删除哪里”或“更新哪里”等数据操作
  3. 除非有问题,否则复制效果不错。 那么真的很难找出是什么原因(对于初学者)
  4. 没有二进制文件的安装(如果你不是一个Linux的极客,那么安装CouchDB可能会很困难)。 但是CouchDB社区是有帮助的(#couchdb),幸运的是那里有企业(cloudant,iriscouch),提供从免费到大企业的服务。
  5. CouchDB正在向前发展,所以有很多变化(改进)可能会改变他们的工作方式。 但基本的东西保持稳定。

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

由于configuration错误和忘记logrotate(视图构build需要太长时间或挂起,复制停止),但是永远不会丢失数据,并且始终可以轻松地重置,因此生产沙发有时在数月工作后会造成麻烦。

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

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

CouchDB 0.11(3月底发布)是1.0的一个function冻结版本。 这意味着我们将保持与当前1.0版API的兼容性,所以现在是时候再看看CouchDB的好时机。

CouchDB 0.11源代码版本可在这里find。 有二进制安装程序和其他东西链接在这里。

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

CouchDB是否准备好生产?

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

另外,一些链接:

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

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

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

最难的部分是离开dbms的思维模式。 我们写了自己的迁移实用程序,当存储格式改变只是为了安全,所以这不是一个真正的问题。

我们还没有任何负面的经验,但是我们又一次没有任何负载的设置。 我认为事情会很好,因为我们有两台从一台主服务器复制的从服务器,它可以完成所有的写操作。 我敢肯定,我们不必这样做复制工作正常,但它是我们如何设置在一开始,它卡住了。

我们使用CouchDB来存储移动入站和出站消息,并通过我写的一些自定义视图来报告这个stream量。 前端是用Python编写的。 我们没有真正的技术问题,从十二月底开始运行。 我遇到的唯一障碍就是初步思考MapReduce,但是一旦我学会了如何去做,其他的一切都会顺利进行。

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

目前我们正在使用mongodb作为文件存储服务,用于通过局域网进行协作。 此外,像trello这样的项目正在使用mongodb作为后端数据存储。 我早些时候用过couchdb,但是没有生产能力。

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

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

由于我们销售的是高精度的传感器,所以我们在不同的阶段进行了大量的testing,所有这些都会被存储到CouchDB的一个文档中。

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

我的CouchDB数据库不像其他巨大的公司那么疯狂。 但到目前为止,我还是很好。 目前我在700MB有24000个文件。

我喜欢的来自CouchDB的function是“复制”,“存储文档的修订”。

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

我们在生产中使用mongodb

http://www.beachfront.io – 每秒接近5k次写请求www.beachfrontbuilder.com – 每秒500次读/写请求,保持10万用户数据和olap。

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

这个问题已经接受了答案,但是现在又有一天, NoSQL DB在其许多优秀特性中处于领先地位。 这是Couchbase ; 它在移动平台上作为CouchbaseLite运行,在服务器侧作为CouchbaseLite服务器运行。

以下是Couchbase Lite的一些主要function。

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

轻量级的意思是:

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

面向文档的手段:

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

可同步意味着:

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

您可以在Couchbase Lite上进一步探索

和Couchbase服务器

这将是下一件大事。

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

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

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

我工作的几个客户正在为大客户使用CouchDB

在我看来,这两个都是可靠的数据库。 🙂

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

  • 纽约时报 :在照片提交的formsbuild设应用程序中使用它。 Mongo缺乏架构使得生产者能够定义自定义表单字段的任意组合。
  • SourceForge :用于所有项目的SourceForge首页,项目页面和下载页面的后端存储。
  • Bit.ly
  • Etsy的
  • IGN :支持IGN的实时stream量分析和RESTful Content API。
  • Justin.tv :为Justin.tv的内部分析工具提供病毒式传播,用户保留和一般使用情况统计数据,这些数据是现成解决scheme无法提供的。
  • Posterous
  • 意会
  • Foursquare :Sharded Mongo数据库用于大多数foursquare数据。
  • 商业内幕 :从2008年开始使用它。所有网站的数据,包括post,评论,甚至图像,都存储在MongoDB上。
  • Github :用于内部报告应用程序。
  • 考官 :将他们的网站从Cold Fusion和SQL Server迁移到Drupal 7和MongoDB。
  • Grooveshark :目前每天使用Mongo来pipe理超过一百万个独特的用户会话。
  • 来自Buzzfeed
  • 铁饼
  • Evite :用于分析和快速报告。
  • Squarespace
  • Shutterfly :用于Shutterfly中的各种持久数据存储要求。 MongoDB帮助Shutterfly构build了无与伦比的服务,使客户和生命中最重要的人之间build立起更深层次,更个性化的关系。
  • 玩转
  • 分享这个
  • Mongohq :为MongoDB提供一个托pipe平台,同时也使用MongoDB作为其服务的后端。 我们的托pipe中心页面提供了关于MongoHQ和其他MongoDB托pipe选项的更多信息。

和更多…

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

您也可以检查其他数据库或工具。

MongoDB在向企业授权方面存在一些问题,我不确定细节,但是我们的法律部门毫无疑问地告诉我们,我们不允许在我们的任何产品中使用MongoDB。