MongoDB或CouchDB-适合生产吗?[关闭]


485

我想知道是否有人可以告诉我MongoDBCouchDB是否已准备好用于生产环境。

我现在正在研究这些存储解决方案(目前我偏爱MongoDB),但是这些项目还很年轻,因此我可以预见,我将不得不非常努力地说服我的经理我们应该采用这种方法。新技术。

我想知道的是:

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

  2. 您如何使用MongoDB / CouchDB?

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

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

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


2
浏览答案,我并没有真正找到想要的东西。由于这两个数据库是如此相似,我应该选择哪个数据库?其中任何一个的好处是什么?我应该选择哪种应用程序?如果有人可以回答这些问题,那就太好了。
polemon

这实际上取决于如何使用它们。缺少事务对于许多环境而言都是令人不安的,但对其他环境而言却完全可以解决。同样,从根本上来说,“备份”分布式数据库是困难的,尽管争论是通过跨多个分片的复制来确保数据持久性。
塞缪尔·奥马利

2
@ pauluss86我想您应该在pauluss86的链接中添加免责声明,即作者(Emin)实际上是来自竞争对手到MongoDB(Hyperdex)的链接-因此,这里存在一些偏见。为了真正的公平,有从MongoDB的相关的相应的响应在这里- infoq.com/news/2013/02/MongoDB-Fault-Tolerance-Broken
victorhooi

@victorhooi是的,但我认为这仍然是一个令人担忧的问题。InfoQ响应也有后续内容:link。就个人而言,我对蒙戈的防守不太相信。无论如何,我建议任何人在选择数据库之前都要仔细阅读有关问题(双方)。
pauluss86

这表示db-engines.com/zh/ranking MongoDB的所有方面都在日渐普及,并且是Web上最受欢迎的Document Store
arkoak 2014年

Answers:


268

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

businessinsider已经在生产中使用mongo一年多了。他们正在使用它来处理从用户和博客文章到网站上每张图片的所有内容。

shopwiki正在使用它做一些事情,包括实时分析和缓存层。他们每秒对一个相当大的数据库执行1000次以上的写操作。

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

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



1
您介意让mongodb默认使用v8运行。对于使用512M内存的VPS的穷人来说,mongodb和mongodb会吃掉太多的内存。
桂林桂林

至少可以拥有AC(i)D-原子性,因为单个主作者,一致性,因为您具有每个文档的一致性,持久性,因为您可以指定在ACK写入之前需要进行多少次写入,例如,需要多少其他节点才能获得数据确认。
亨里克(Henrik)

+1的链接。令人惊讶的是有多少人在生产中使用mongodb
Michael Malura 2013年

在过去的5年中,似乎发生了很多变化。那个清单很大!:)
2014年

110

BBCmeebo.com使用CouchDB的生产也是如此我的一个客户。这是其他使用Couch的人的列表:狂野的CouchDB

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


7
实际上,对我而言,如果需要的话,最大的挑战就是回头。一旦从头脑中消除了“关系约束”,就很难回头。:)
johndodo


34

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

我们的目标是:

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

  2. 快速预先计算的数据,例如“我拥有多少个具有此属性的零件和那个过滤器,适合那些条件”

事实:

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

但是也:

  1. 了解map / reduce和没有联接的限制非常困难
  2. 如果没有外部程序,则无法对“删除位置”或“更新位置”等数据进行操作
  3. 除非有问题,否则复制效果很好。那么真的很难找出原因(对于初学者)
  4. 如果您不是Linux极客,那么没有二进制文件的CouchDB的安装(是的,有些地方是疯狂的,但不是针对每个OS /版本)可能会很难。但是CouchDB社区是有用的(#couchdb),幸运的是,那里有一些公司(云服务,iriscouch)提供从免费到大型企业的服务。
  5. CouchDB正在向前发展,因此正在进行许多更改(改进),这些更改可能会改变您的工作方式。但是基本情况保持稳定。

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

经过数月的工作后,生产沙发有时会因配置错误和忘记的日志旋转而引起麻烦(视图构建时间过长或挂起,复制停止),但从未丢失数据,并且始终可以轻松重置。


每个商店7万或70万件商品?另外,自您撰写该帖子以来,有什么变化吗?实施一些缺少的功能?
埃里克·卡普伦

27

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

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


1
好吧,它根本没有用。几个月后,我摆脱了沙发床。
塞尔吉奥·图伦采夫2014年

@aetheria:它没有处理负载。另外,我们撰写了很多文章,因此我们需要每小时大约压缩一次。CouchDB不适用于繁重的应用程序。
塞尔吉奥·图伦采夫2014年

谢谢。我对吗,这是对现有文档的更新吗?即写新文档是可以的,但是更新会在文件中留下未使用的垃圾。那是对的吗?
ᴇʟᴇvᴀтᴇ

IIRC,即使是新的写入也不是很出色。这种双头方法需要太多磁盘。
塞尔吉奥·图伦采夫2014年

2
@aetheria:回到mysql,然后回到mongo。到处都有很多问题。:)
Sergio Tulentsev 2014年


17

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

CouchDB准备好投入生产了吗?

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

另外,一些链接:


这是旧消息:现在,链接显示“是的,请参阅InTheWild以获取使用CouchDB的部分项目列表。另一个不错的概述是CouchDB案例研究”
J Chris A

14
@J克里斯-答:当然是旧的,我一年半前发布了。:)
Sasha Chedygov

16

我们在生产中使用了ouchdb,从此项目就在Apache的保护之下。

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

最困难的部分是远离dbms思维方式。当存储格式更改只是为了安全起见,我们编写了自己的迁移实用程序,因此这并不是真正的问题。

我们还没有任何负面经验,但是再一次,我们也没有承受任何巨大的负担。我认为事情会很好地进行,因为我们有两个从属类型的服务器,它们从单个主服务器复制并获得所有写入。我很确定我们不必那样做就可以使复制正常工作,但这是我们从一开始就对其进行设置并卡住的方式。


13

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


9

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


2
mongoDB被证明对您有多可靠?+复制在现实生活中的运作情况如何?
工业

4
我们实现了运行1.6的副本集拓扑(不确定次要版本是什么)。到目前为止,我们遇到的唯一问题显然是磁盘空间不足时,即使启用了保存写入功能,也不会引发任何标志。因此,请确保您有足够的空间!
约书亚伯恩斯

1
然而,可靠性是惊人的,出乎我们的意料。到目前为止,崩溃没有任何问题-尽管这是新的实现。
约书亚伯恩斯

1

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



0

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

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

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

我的CouchDB数据库没有其他巨型公司那么疯狂。但是到目前为止,我还不错。目前,我有700个MB上的24000个文档。

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

我在MongoDB上阅读了很多不错的评论,如果有机会,我将尝试尝试。


0

我们正在生产中使用mongodb

www.beachfront.io-每秒接近5k的写请求www.beachfrontbuilder.com-每秒500个读/写请求,维护1000万用户数据和olap。

围绕数据归档面临的唯一挑战是,我们可以通过实现自定义组件来克服。


0

这个问题已经接受了答案,但是如今,由于其许多强大功能,又有一个NoSQL DB成为趋势。是Couchbase; 它可以CouchbaseLite在移动平台和Couchbase Server服务器端上运行。

这是Couchbase Lite的一些主要功能。

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

轻量意味着:

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

面向文档的手段:

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

可同步意味着:

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

您可以在Couchbase Lite上探索更多内容

Couchbase服务器

这将是下一件大事。


0

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

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


0

AdobeMongoDB用于即将发布的Adobe Experience Manager(以前称为Day CQ)作为核心数据库引擎。

我工作的机构中的几个客户正在针对大型客户的项目使用CouchDB

我认为,两者都是出色且可行的数据库。:)


-2

这是mongoDB的生产部署站点的列表

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

和更多...

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

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


在帖子中添加了列表的很大一部分
fernandopasik

-6

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


1
尽管您没有指定许可的确切问题,但是MongoDB许可没有任何问题mongodb.org/about/licensing它使用AGPL许可,这可能是您法务部门担心的原因,但是他们声明任何数据库客户端都是单独的工作。“我们保证使用数据库的客户端应用程序是一项单独的工作。为此,mongodb.org支持的驱动程序(与应用程序链接的部分)已根据Apache许可发布,该许可无版权保护。”
马雷克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.