说到 NoSQL 运动,我就是个彻头彻尾的菜鸟。我听说过很多 MongoDB 和 CouchDB 的事情。我知道这两者之间有区别。作为进入 NoSQL 世界的第一步,您推荐学习哪些内容?
请参阅以下链接
更新 : 我发现了很棒的 NoSQL 的比较数据库。
MongoDB (3.2)
最佳使用 : 如果需要动态查询。如果您更喜欢定义索引,而不是 map/reduce 函数。如果您需要在大型数据库上有良好的性能。如果您想要 CouchDB,但是您的数据变化太多,填满了磁盘。
例如 : 对于大多数使用 MySQL 或 PostgreSQL 可以做的事情,但是预定义的列确实会阻碍你。
CouchDB (1.2)
最佳使用 : 用于累积、偶尔更改数据,在这些数据上运行预定义的查询。版本控制非常重要的地方。
例如 : CRM,CMS 系统。
看看这些链接:
MongoDB 与 CouchDB (来自 MongoDB 方)
CouchDB VS MongoDB: 一种更为知情的比较尝试
CouchDB 与 MongoDB 基准(性能比较)
如果您来自 MySQL 世界,MongoDB 将“感觉”更自然,因为它提供了类似查询的语言支持。
我想这就是为什么它对很多人来说如此友好。
如果您希望在多节点设置(可能是在不同的数据中心或类似的地方)中利用真正优秀的主-主复制支持,CouchDB 是非常棒的。
MongoDB 的复制(副本集)是一个主-从-从-从-* 设置,您只能写入副本集中的主服务器并从它们中的任何一个读取。
对于一个标准的站点配置来说,这很好,它很好地映射了 MySQL 的使用情况。
但是,如果您试图创建一个像 CDN 这样的全局服务,即使对所有全局节点都进行读/写操作,它也需要保持所有全局节点的同步,那么 CouchDB 中的复制对您来说将是一个巨大的好处。
MongoDB 有一种类似查询的语言,您可以使用它,并且感觉非常直观,而 CouchDB 采用“ map-reduce”方法和视图概念。一开始感觉很奇怪,但是当你掌握了窍门,你就会真正感觉到直觉。
下面是一个简短的概述,以便更好地理解:
所以这两个源都使用 JSON 文档,但 CouchDB 更遵循这种“每个服务器都是主服务器,可以与世界同步”的方法,如果你需要的话,这种方法非常棒,而 MongoDB 实际上是 NoSQL 世界中的 MySQL。
所以,如果这听起来更像是你需要/想要的,那就去做吧。
诸如 Mongo 的二进制协议与 CouchDB 的 RESTful 接口之类的小差异都是次要的细节。
如果你想要原始速度,让数据安全见鬼去吧,你可以用 可以让 Mongo 比 CouchDB 运行得更快,因为你可以告诉它操作超出内存,除了稀疏的间隔,不要把东西提交到磁盘。
你可以对 Couch 做同样的事情,但是它的基于 HTTP 的通信协议将会比 Mongo 的原始二进制通信速度慢2-4倍场景。
请记住,如果服务器崩溃或磁盘故障导致数据库损坏并被遗忘,那么原始疯狂的速度是无用的,因此数据点并不像看起来那么惊人(除非你在华尔街做实时交易系统,在这种情况下看看 Redis)。
希望能有所帮助!
现在市场上的 NoSQL 数据库比以往任何时候都多。我建议,如果你正在寻找一个基于支持、可扩展性、管理和成本的适合企业应用程序的数据库,那么你甚至可以看看 Gartner Magic Quadrant。
Http://www.gartner.com/technology/reprints.do?id=1-23a415q&ct=141020&st=sb
我想向所有还没有尝试过 Couchbase 的人推荐它,但不是基于报告中所显示的版本(2.5.1) ,因为它比 CB Server 现在的版本晚了近两个版本,在2H15接近4.0版本。
Http://www.couchbase.com/coming-in-couchbase-server-4-0
Couchbase 作为供应商/产品的另一个特点是它是一种多用途的 DB 类型。它可以作为一个纯粹的 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