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

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

我想知道的是:

现在谁在生产环境中使用MongoDB或CouchDB ? 你如何使用MongoDB/CouchDB? 当你采用这种新的存储机制时,你遇到了什么问题(如果有的话)(你是如何克服它们的)? 你是如何处理你不得不面对的移民问题的? 你有任何好的或坏的经验,这些解决方案,你想分享吗?


当前回答

这个问题已经有了答案,但现在又有了一个NoSQL DB,它的许多伟大的特性正在成为趋势。它是Couchbase;它在移动平台上作为CouchbaseLite运行,在服务器端作为Couchbase Server运行。

下面是Couchbase Lite的一些主要特性。

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

轻量级的意思是:

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

面向文档的意思是:

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

Syncable的意思是:

Any two copies of a database can be brought into sync via an efficient, reliable, proven replication algorithm. Sync can be on-demand or continuous (with a latency of a few seconds). Devices can sync with a subset of a large database on a remote server. The sync engine supports intermittent and unreliable network connections. Conflicts can be detected and resolved, with app logic in full control of merging. Revision trees allow for complex replication topologies, including server-to-server (for multiple data centers) and peer-to-peer, without data loss or false conflicts. Couchbase Lite provides native APIs for seamless iOS (Objective-C) and Android (Java) development. In addition, it includes the Couchbase Lite Plug-in for PhoneGap, which enables you to build iOS and Android apps that you develop by using familiar web-application programming techniques and the PhoneGap mobile development framework.

你可以在Couchbase Lite上探索更多

和Couchbase服务器

这将成为下一个大事件。

其他回答

我们目前使用mongodb作为局域网协作的文件存储服务。 此外,像trello这样的项目使用mongodb作为后端数据存储。 我以前使用过couchdb,但没有用于生产能力。

这个问题已经有了答案,但现在又有了一个NoSQL DB,它的许多伟大的特性正在成为趋势。它是Couchbase;它在移动平台上作为CouchbaseLite运行,在服务器端作为Couchbase Server运行。

下面是Couchbase Lite的一些主要特性。

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

轻量级的意思是:

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

面向文档的意思是:

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

Syncable的意思是:

Any two copies of a database can be brought into sync via an efficient, reliable, proven replication algorithm. Sync can be on-demand or continuous (with a latency of a few seconds). Devices can sync with a subset of a large database on a remote server. The sync engine supports intermittent and unreliable network connections. Conflicts can be detected and resolved, with app logic in full control of merging. Revision trees allow for complex replication topologies, including server-to-server (for multiple data centers) and peer-to-peer, without data loss or false conflicts. Couchbase Lite provides native APIs for seamless iOS (Objective-C) and Android (Java) development. In addition, it includes the Couchbase Lite Plug-in for PhoneGap, which enables you to build iOS and Android apps that you develop by using familiar web-application programming techniques and the PhoneGap mobile development framework.

你可以在Couchbase Lite上探索更多

和Couchbase服务器

这将成为下一个大事件。

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

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

CouchDB准备好投入生产了吗? 是的,请参阅InTheWild以获得使用CouchDB的部分项目列表。另一个很好的概述是CouchDB案例研究

还有一些链接:

回复:当前CouchDB状态? SimpleDB, CouchDB和其他“新”数据存储-反馈

我们在生产环境中使用couchdb,就在项目被纳入Apache保护伞之前。

我们用它来存储所有可能使用dbms的数据,以及各种非结构化数据。就我个人而言,我非常喜欢这样一种方式:您可以将各种数据放入其中,并使用视图根据情况剔除不需要的数据。

最难的部分是摆脱dbms的思维模式。为了安全起见,当存储格式改变时,我们编写了自己的迁移utils,所以这并不是真正的问题。

我们还没有任何负面的经历,但我们也没有在任何巨大的负载下进行设置。我认为事情会运行得很好,因为我们有两个从服务器,从一个主服务器复制所有的写操作。我很确定我们不需要这样做才能正确地进行复制,但这就是我们一开始设置的方式,它一直存在。