couchdb(CouchDb 启动失败)满满干货
MongoDB 与 CouchDB 相比如何?各自的优缺点是什么?,服务器,应用程序,理查德,mongodb,couchdb
查询理查德是对的,Mongo 将更像 MySQL,其 sql-esque 查询结构CouchDB 可以在没有任何 map-reduce 函数的情况下按 ID 进行查询,但是一旦您想要更复杂的查询,是的,您需要在存储在 CouchDB 服务器中的 JavaScript 中编写一个 map(和一个可选的 reduce)函数。
如果您对此感兴趣,这个 (http://www.slideshare.net/gabriele.lana/couchdb-vs-mongodb-2982288) 是我见过的最好的幻灯片,它描述了如何使用示例。
有些人实际上喜欢 CouchDB 的这一方面;我觉得它不必要的复杂使用上Couch 使用基于 HTTP REST 的接口非常直观,设计得非常好还允许您编写基于 JavaScript 的应用程序,这些应用程序直接从客户端的浏览器调用数据库(孩子们正在调用 CouchApps;)。
Mongo 使用二进制协议。

存储CouchDB 不会将其数据存储为 JSON;它将它存储为 Erlang 术语(自定义二进制格式)每次您对数据库进行读写时,它实际上都会对 JSON 进行序列化和反序列化在 CouchDB 1.2 中,它们包含一个新的 C 解析器,以帮助显着加快速度。
这是我创建 UBJSON 规范 (http://ubjson.org/) 的原因之一来回磁盘以响应查询如果您有兴趣,Tim Anglade 做了一些有趣的基准测试,只需更改沙发的响应格式,并看到了巨大的性能提升 -。
理查德是正确的,Mongo 专门处理 BSON 格式的内容。

性能和一致性Mongo 开箱即用,速度更快; CouchDB 开箱即用是安全的Mongo 对其磁盘上的数据进行就地更新,CouchDB 采用了写时复制/仅追加设计几乎是错误的它以fsyncing所有内容并不断重新复制文档突变(B +路径更新)的数据文件部分为代价,使其具有疯狂的弹性。
由于这种核心设计,Couch 将始终(按设计)在单服务器容量中,比 Mongo 更安全由于 Mongo 的就地编辑,您总是有可能损坏旧数据在多服务器配置中,这个问题被冲掉了,您可以只查看您需要/想要的数据库的其他方面。
使用 Mongo,您可以使用 w 参数强制它对每次写入进行 fsync,并强制它在您的复制集上复制 1+ 个已写入数据的副本(如果您的配置很大)根据您的设置,Mongo 是“最终一致”或“一致”-仅取决于您可以等待写入的 ACK 多长时间。

相反,使用 CouchDB,如果您需要在每个服务器的基础上获得更快的性能,您可以在每次写入时关闭 fsyncing,并让它在刷新之前缓存一些更改关于远程复制,因为是master-master,双向的,所以没有办法在write返回之前等待一个write复制到所有替代server,因为server无法知道有多少client在等待更改;他们只是解析更改日志并自行消化更改。
复制CouchDB 是一个分布式多主数据存储如果您需要许多独立的节点来相互协作,而没有一个是权威(例如在像 CDN 这样的地理分布式系统中),那么您需要这个Mongo 以称为“副本集”的分组进行复制;每组允许一个单一的主人。
只能写入 master在分布式系统中,您需要通过“回拨”到主节点来执行所有写入操作这通常是第一个可以帮助团队根据他们的应用程序类型决定他们需要哪种 DBMS 的项目;理查德说的其他一切都恰到好处复杂性/难度。
大型 CouchDB 部署最终几乎都使用 BigCouch(一个自动分片和复制的 CouchDB 版本,它结合了 Dynamo,将来会被结合到 CouchDB 中)您还可以创建一个完全连接的复制规则图(A 更新 B、B 更新 C、A 更新 C 并且每个人都相互更新。
Huzzah!),具体取决于问题的具体情况大型 MongoDB 部署看起来像大型 MySQL 部署,最好留给经验丰富的 Mongo 人员或来自我们维度之外的能量生物它并没有那么糟糕,但您将拥有:副本集由 2 个以上的服务器组成,每个服务器代表您数据的一个分片。
2 个以上的副本集集合,代表您的整个可操作数据集然后你有仲裁节点来帮助在主节点失败时在新的主节点中投票钍en 有新服务器启动的配置节点可以从中提取副本信息,我认为在某些地方也有代理节点很多时候,这些较小的服务可以在与数据服务器节点本身相同的硬件上运行,但关键是,有多种类型,您的网络设置并不简单。
就像我说的;扩展 Mongo 很像扩展 MySQL Scaling Couch 开箱即用要简单得多,即使您使用 BigCouch 在 Couch 中间完成分片,它仍然相对简单总结(如何选择)我在 G + (。
https://plus.google.com/107397941677313236670/posts/LFBB233PKQ1) 上面详细地写了这篇文章,但归结为以下几点: 你需要大师大师吗?然后是 CouchDB。
您需要最大 R/W 吞吐量吗?然后是 MongoDB,讨论结束(您可以像 Blitz.io 那样进行 Couch / Redis 设置,但假设我们在这里只是讨论单个数据库决策,而不是整个基础架构决策)
您是否需要终极的单服务器持久性,因为您将只拥有一台数据库服务器?然后是 CouchDB 您是否在存储需要分片的海量数据集,同时保持疯狂的吞吐量?然后是MongoDB我相信还有更多好的决定因素;如果您好奇,请留下评论,我会将它们附加到列表中。
- 标签:
- 编辑:李松一
- 相关文章
-
couchdb(CouchDb 启动失败)这都可以?
欢迎来到数据库深度挖掘,这是一系列的采访,在这里我们将与数据库世界的建设者、工程师和领导者进行交谈。…
-
gravatar(gravatar如何接入)学会了吗
聊了那么久MetaVerse,我们的数字人究竟做的怎样了?,数字人,光场,阵列,面阵
- 网速慢(网速慢是手机问题还是网络问题)深度揭秘
- avxcl(域名自动更新中)真没想到
- 无人机应用技术(无人机应用技术属于什么大类)奔走相告
- HP1008驱动(hp1008驱动无法使用)这样也行?
- usb声卡(usb声卡版的耳机是什么意思)难以置信