我刚刚注意到在Couchdb 2.0的the release notes中,提到了Mango查询被推荐用于新的应用程序。还有人提到,Mango索引显然比javascript查询快2到x10,这让我感到很惊讶,因此我有很多问题:
我们建议所有新应用都默认使用Mango。
我基本上追求的是芒果的一些见解,另一方面,概述芒果和地图/减少应该如何在2.x时代共同生活。
答案 0 :(得分:9)
我最近尝试将我的应用切换到使用Mango查询,结果是完全删除它并切换回map / reduce。以下是我的一些原因:
您的里程可能会有所不同,但只是想留下一个警告,这仍然是一个非常新的功能。
答案 1 :(得分:5)
来自核心开发人员的回答:
一些好问题。我不认为芒果会取代Map / Reduce 完全。它是一种替代查询工具。有什么好处的 Mango查询语法是更容易理解和 开始吧我们可以在很多地方使用它 查询文件。它可以用于复制过滤和 更改Feed。我们希望很快能够获得验证文档的支持 更新。
Mango正在使用erlang map / reduce。这意味着它 像map / reduce一样创建B树索引。是什么让它变得更快 它正在使用erlang / native函数来创建B-Tree 的JavaScript。很久以前我写了一篇关于内部的博客文章 PouchDB-find [1]是PouchDB的芒果语法。它可能 帮助您了解内部工作原理。钥匙 要理解的是,有一个Map查询部分使用了 B-Tree和内存过滤器。理想情况下,过滤内存越少 查询的速度越快。
我想说芒果是一个非常重要的工作,但基本的 地面工作完成了。肯定有一些我们可以改进的东西。 我看到它在开发人员开始一个新项目时使用了很多 因为它可以快速简单地进行基本查询,比如通过电子邮件查找 查找或查找名为“John Rambo”的所有用户。
希望有所帮助。
[1] http://www.redcometlabs.com/blog/2015/12/1/a-look-under-the-covers-of-pouchdb-find
答案 2 :(得分:1)
我是Mango和CouchDB的新手,但我想我可以提供一些见解。一旦您的索引/视图更新,芒果就不会更快。 Mango的巨大性能提升是您第一次创建索引时因为沙发不需要为此创建单独的couchjs进程。
我发现即使你的一些文件太大,芒果也能很好地运作。目前使用CouchDB 2.0.0,至少使用Windows,大型文档会崩溃与Map / Reduce一起使用的couchjs.exe视图服务器。 CouchDB 1.6.1不是这种情况,并且已在开发版https://github.com/apache/couchdb-couch/commit/1659fda5dd1808f55946a637fc26c73913b57e96
中修复