Database 什么';CouchDB中的临时视图有什么问题? 背景 我有一个CouchDB集群运行一些数据库 其中一个文档包含数百条数据,结构有些复杂。(一个“人”,例如身高、体重、眼睛颜色、头发颜色、衣服、gps位置和几百个其他东西) 我想寻找两个数据点之间的交点,即蓝眼睛和黑头发 我可以搜索数百个可能的阶乘组合。 我很少做这些搜索 我经常给这个数据库写信 我想做什么

Database 什么';CouchDB中的临时视图有什么问题? 背景 我有一个CouchDB集群运行一些数据库 其中一个文档包含数百条数据,结构有些复杂。(一个“人”,例如身高、体重、眼睛颜色、头发颜色、衣服、gps位置和几百个其他东西) 我想寻找两个数据点之间的交点,即蓝眼睛和黑头发 我可以搜索数百个可能的阶乘组合。 我很少做这些搜索 我经常给这个数据库写信 我想做什么,database,lucene,couchdb,couchdb-lucene,Database,Lucene,Couchdb,Couchdb Lucene,在发生这些兴趣点查找(查询)时,使用传递map/reduce 为什么不呢? 医生告诉我这是个糟糕的主意 问题 为什么这是一个糟糕的想法? 这真的是一个糟糕的想法吗 加分 如果这是个糟糕的主意,那么什么是好主意?每个组合的视图都是愚蠢的,许多视图都是愚蠢的,因此将整堆数据加载到另一个程序中感觉太过了(我注意到lucene有一些工具可以实现这一点,如果有必要的话,我可以制作一个节点)。如果有必要,我可以使用这样的工具,我只是不明白为什么。临时视图仅用于开发,因为每次调用临时视图时,它们都会被迫重建整

在发生这些兴趣点查找(查询)时,使用传递map/reduce

为什么不呢? 医生告诉我这是个糟糕的主意

问题 为什么这是一个糟糕的想法? 这真的是一个糟糕的想法吗

加分
如果这是个糟糕的主意,那么什么是好主意?每个组合的视图都是愚蠢的,许多视图都是愚蠢的,因此将整堆数据加载到另一个程序中感觉太过了(我注意到lucene有一些工具可以实现这一点,如果有必要的话,我可以制作一个节点)。如果有必要,我可以使用这样的工具,我只是不明白为什么。

临时视图仅用于开发,因为每次调用临时视图时,它们都会被迫重建整个视图索引,并且它们的结果不会像典型视图那样保存。这将有一个更大的惩罚更多的文档在您的数据库,它会咬你很快,如果你试图使用它作为一个动态查询系统。(来源)事实上,临时视图完全从v2中删除。(来源)

我不确定您运行的是哪个版本的CouchDB,但是如果您使用的是v1,并且希望在这里执行高度动态的查询,那么最好使用某种全文索引器,例如ApacheLucene或elasticsearch。除了同时支持多个参数外,它们还将为您的搜索增加很多灵活性


如果您使用的是CouCHDB V2,您也可以考虑使用新的添加MangGDB风格的语法来查询文档。有了这个功能,您可以包含多个参数并进行更多的动态搜索。

A:感谢mango查询的观点(我将转到2.0版本!)B:为什么mango查询的性能要比临时视图好得多?C:我想要的只是直接映射/减少T\T,但我知道我很贪婪。mango视图引擎根据您查询的属性创建索引,因此它不像临时视图那样动态重建。这些索引是否会在每次写入时重新计算?他们有没有给我们滚过?也就是说,如果我一年中每天都有几个查询,那么由于我有这么多索引,我的写入速度会变慢吗?就是这样,它甚至没有索引,每次发送临时视图请求时,它都会迭代每个文档。