我刚刚注意到,在Couchdb 2.0的发行说明中,提到 Mango 查询推荐用于新应用程序。还提到 Mango 索引显然比 javascript 查询快 2 倍到 x10 倍,这让我很惊讶,因此我有很多问题:
- Map/Reduce 视图是否正在逐步淘汰?我希望答案是否定的,因为在我看来 Mango 并没有涵盖 Map/Reduce 的所有用例(最简单的例子是 Reduce 本身),而且这种查询风格的灵活性似乎也受到了更多限制。但由于推荐,我更喜欢问:
我们建议所有新应用开始默认使用 Mango。
- 我们知道 Map/Reduce 视图依赖于 B 树,但我在文档或邮件列表中找不到任何关于 Mango 背后的魔力的见解。芒果对我来说基本上是白魔法。然而,我可以说,深入了解如何在幕后对 javascript 视图进行索引非常有助于避免陷阱、幼稚的实现以及优化性能。有人对 Mango 的工作原理有任何见解吗?索引B树也是吗?由于不再有设计文档,索引何时更新?性能提升从何而来?(这些收益对我来说是违反直觉的,因为在我的理解中,javascript 查询的性能来自于 Map 函数的预计算性质)
我所追求的一方面是对 Mango 的一些见解,另一方面是对 Mango 和 Map/Reduce 在 2.x 时代应该如何共存的概述。