NoSQL – MongoDB与CouchDB

当谈到NoSQL运动时,我是一个完整的noob。 我听说过很多关于MongoDB和CouchDB的信息。 我知道这两者之间有区别。 你推荐学习哪一个作为NoSQL世界的第一步?

请参阅以下链接

  • CouchDB与MongoDB
  • MongoDB,CouchDB,MySQL比较网格
  • MongoDB或CouchDB – 适合生产?

更新 :我发现了NoSQL数据库的很好的比较 。

MongoDB(3.2)

  • 写在:C ++
  • 主要观点:JSON文档商店
  • 许可证:AGPL(驱动程序:Apache)
  • 协议:自定义,二进制(BSON)
  • 主/从复制(带有副本集的自动故障切换)
  • 内置分片
  • 查询是JavaScriptexpression式
  • 在服务器端运行任意的javascript函数
  • 具有地理空间索引和查询
  • 多个存储引擎具有不同的性能特点
  • 性能超过function
  • 文件validation
  • 日记
  • 强大的聚合框架
  • 在32位系统上,限制在〜2.5Gb
  • 文本search集成
  • GridFS存储大数据+元数据(实际上不是FS)
  • 数据中心意识到

最好使用 :如果你需要dynamic查询。 如果你喜欢定义索引,而不是map / reduce函数。 如果你需要在一个大的数据库上performance出色。 如果你想要CouchDB,但你的数据变化太大,填满磁盘。

例如 :对于大多数你会用MySQL或PostgreSQL做的事情,但是有预定义的列确实阻碍了你。

CouchDB(1.2)

  • 写在:Erlang
  • 要点:数据库一致性,易用性
  • 许可证:Apache
  • 协议:HTTP / REST
  • 双向(!)复制,
  • 连续的或临时的,
  • 与冲突检测,
  • 因此,主 – 主复制。 (!)
  • MVCC – 写入操作不会阻止读取
  • 先前版本的文件是可用的
  • 只有碰撞(可靠)的devise
  • 需要时不时的压缩
  • 视图:embedded式地图/缩小
  • 格式化视图:列表和显示
  • 服务器端文件validation可能
  • 可能的validation
  • 通过“_changes”(!)实时更新
  • 附件处理
  • 因此,CouchApps(独立的js应用程序)

最佳使用 :用于累积,偶尔更改的数据,在其上运行预定义的查询。 版本控制的地方很重要。

例如 :CRM,CMS系统。 主 – 主复制是一个特别有趣的function,允许轻松进行多站点部署。

如果你来自MySQL世界,MongoDB会因为它的查询语言支持而“感觉”更加自然。

我认为这对很多人来说是如此的友善。

如果您想通过多节点设置(可能位于不同的数据中心或类似的地方)利用真正出色的主 – 主复制支持,CouchDB是非常棒的。

MongoDB的复制(副本集)是一个主 – 从 – 从 – 从设置,你只能写入副本集中的主文件并从其中读取。

对于标准的站点configuration,这很好。 它很好地映射到MySQL的使用。

但是,如果您正在尝试创build像CDN这样的全局服务,即使对所有节点都进行读/写操作,也需要保持所有全局节点同步,类似于CouchDB中的复制对您来说将是一个巨大的福音。

尽pipeMongoDB具有可以使用的查询式语言,而且感觉非常直观,但CouchDB采用“map-reduce”方法和这些视图的概念。 起初感觉很奇怪,但是当你掌握它的时候,它确实开始感觉到直觉。

这是一个快速的概述,所以它是有道理的:

  • CouchDB将所有数据存储在B树中
  • 你不能用“SELECT * FROM user WHERE …”来dynamic“查询”它。
  • 相反,您可以定义数据的离散“视图”…“这是所有用户的视图”,“这里是所有超过10岁的用户的视图”,“这是所有年龄大于30岁的用户的视图”,等等。
  • 这些视图是使用map-reduce方法定义的,并被定义为JavaScript函数。
  • 当你定义一个视图时,数据库开始将你分配给视图的数据库的所有文档通过它logging下来,并logging你的函数的结果作为该数据的“索引”。
  • 您可以对视图执行一些基本查询,例如要求特定的键(ID)或ID范围,而不pipemap / reduce函数的作用。
  • 通读这些幻灯片 ,这是我见过的沙发中的地图/缩小的最佳说明。

所以这两个源代码都使用JSON文档,但是CouchDB遵循这一点,“每个服务器都是主人,可以与世界同步”,如果您需要的话,这是非常棒的,而MongoDB真的是NoSQL世界的MySQL。

所以,如果这听起来更像你所需要/想要的,那就去做吧。

像Mongo的二进制协议和CouchDB的RESTful接口的细微差别都是次要的细节。

如果你想要数据安全的原始速度和地狱,你可以让Mongo运行速度比CouchDB快,你可以告诉它运行内存不足,除了稀疏的间隔之外,不要提交到磁盘。

你可以用Couch做同样的事情,但是这个基于HTTP的通信协议将比在Mongo上的原始二进制通信速度慢2-4倍。 场景。

请记住,疯狂的疯狂速度是没有用的,如果一个服务器崩溃或磁盘故障腐败和遗忘您的数据库被遗忘,以便数据点不像看起来那么神奇(除非你在墙上做实时交易系统街,在这种情况下看Redis)。

希望大家帮忙!

看看这些链接:

  1. MongoDB与CouchDB(来自MongoDB端)

  2. CouchDB与MongoDB:尝试进行更多信息比较

  3. CouchDB与MongoDB基准testing(性能对比)

现在市场上的NoSQL数据库比以前更多了。 如果您正在寻找一个基于支持,可扩展性,pipe理和成本的企业应用程序的数据库,那么我们甚至可以看看Gartner Magic Quadrant。

http://www.gartner.com/technology/reprints.do?id=1-23A415Q&ct=141020&st=sb

我想build议Couchbase给那些还没有尝试过的人,但不是基于报告(2.5.1)中显示的版本,因为在今天的CB服务器上有将近2次修订,接近2H15的4.0版本。

http://www.couchbase.com/coming-in-couchbase-server-4-0

关于Couchbase作为供应商/产品的另一部分是它是一种多用途types的数据库。 它可以作为一个纯粹的K / V存储,具有多维扩展的面向文档的数据库,Memcached,带有持久性的caching,并支持符合ANSI 92的自动连接的SQL,按下button复制到DR群集,甚至还有一个内置于生态系统的移动组件。

如果没有别的,值得看看最新的基准:

http://info.couchbase.com/Benchmark_MongoDB_VS_CouchbaseServer_HPW_BM.html http://info.couchbase.com/NoSQL-Technical-Comparison-Report.html

youtube上关于NoSQL的Edurekavideo是一些最好的video教程。 观看这些video之后,我开始使用MongoDb和Cassandra。

https://www.youtube.com/watch?v=gJFG04Sy6NY https://www.youtube.com/watch?v=KSq6tMMXZ8s https://www.youtube.com/watch?v=3z1KFA2qcSo 

良好的演示文稿可在slideshare.net

 http://www.slideshare.net/quipo/nosql-databases-why-what-and-when?qid=3bb9f7f6-a53d-41b1-8403-cd6f181d0ca7&v=qf1&b=&from_search=1 http://www.slideshare.net/EdurekaIN/no-sql-databases-35591065?qid=f1b9c095-6d70-4d0a-91da-1df664c4f389&v=qf1&b=&from_search=3 

幻灯片中的Edureka演示文稿是YouTube中video的扩展。 您可以将此演示文稿作为YouTubevideo的摘要。