当涉及到NoSQL运动时,我完全是个新手。我听说过许多关于MongoDB和CouchDB的事情。我知道这两者之间存在差异。您建议我学习哪一个作为进入NoSQL世界的第一步?
请查看以下链接
更新:我找到了一篇很好的NoSQL数据库比较文章。
MongoDB(3.2)
最佳使用场景:如果需要动态查询。如果您更喜欢定义索引而不是Map/Reduce函数。如果您需要对大型数据库进行良好的性能表现。如果您想使用CouchDB,但是数据变化太大,导致磁盘空间被填满。
例如:对于大多数MySQL或PostgreSQL可以处理的事情,但是预定义列真的阻碍了您的工作。
CouchDB (1.2)
最适用于: 累积、偶尔更改的数据,并在其中运行预定义的查询。版本控制很重要的场景。
例如: 客户关系管理系统 (CRM)、内容管理系统 (CMS)。主-主复制是一个特别有趣的功能,允许轻松的多站点部署。
如果你来自MySQL的世界,由于MongoDB支持类似查询语言,它会给你更加自然的感觉。
我认为这是让MongoDB变得友好的原因之一。
如果你想要利用非常棒的主-主复制支持,在多节点设置中使用CouchDB可能会很不错,比如在不同的数据中心中等等。
MongoDB的复制(副本集)是一个主-从-从-从-*的设置,你只能向副本集中的主写入并从任何一个读取。
对于标准的网站配置,这很好。它非常适合映射到MySQL的使用。
但是,如果你试图创建像CDN这样的全球服务,需要保持所有全局节点同步并实现读/写,那么像CouchDB中的复制就会对你有很大的帮助。
虽然MongoDB有一个类似查询语言的东西,而且感觉非常直观,但是CouchDB采用了“map-reduce”方法和视图的概念。起初感觉有些奇怪,但是当你掌握它之后,它真的很直观。
这里是一个快速概述,以便让它有些意义:
所以这两个数据存储都使用JSON文档,但CouchDB采用的是“每个服务器都是主服务器,可以与全球同步”的方法,如果需要这种方式,则非常棒,而MongoDB则真正成为了NoSQL世界中的MySQL。
因此如果这听起来更像你需要/想要的,请选择MongoDB。
像Mongo的二进制协议与CouchDB的RESTful接口之类的小差异都是次要细节。
如果你想追求原始速度并且不在乎数据安全,你可以让Mongo比CouchDB更快,因为你可以告诉它在内存中运行,并且除了稀疏时间点外不会将数据写入磁盘。
你也可以对Couch做同样的事情,但在这种“速度至上!”的场景中,它基于HTTP的通信协议将比Mongo中的原始二进制通信慢2-4倍。
请记住,即使您在执行实时交易系统(此时请参考Redis),原始疯狂的速度如果服务器崩溃或磁盘故障导致数据库损坏,那么这个数据点也不像它看起来那么惊人。
希望这些都能帮助到你!
现在市场上有比以往更多的NoSQL数据库。如果您正在寻找一个适合企业应用的数据库,建议查看Gartner魔力象限,考虑支持、可扩展性、管理和成本等因素。
http://www.gartner.com/technology/reprints.do?id=1-23A415Q&ct=141020&st=sb
我建议任何未尝试过Couchbase的人使用它,但不建议使用报告中显示的版本(2.5.1),因为它几乎比CB服务器今天的版本落后了两个修订版本,并且在2015年下半年即将发布4.0版本。http://www.couchbase.com/coming-in-couchbase-server-4-0
作为供应商/产品的另一个方面是,Couchbase是一种多用途的数据库。它可以作为纯K/V存储、支持多维缩放的文档导向数据库、Memcached、带有持久性的缓存以及支持符合ANSI 92标准的SQL自动连接,只需按下一个按钮即可复制到DR集群,并且甚至还具有内置于生态系统中的移动组件。http://info.couchbase.com/Benchmark_MongoDB_VS_CouchbaseServer_HPW_BM.html http://info.couchbase.com/NoSQL-Technical-Comparison-Report.html