3

在 couchdb 中,我有一个非常简单的 map 函数,这样我就可以通过 triid 有效地查找列表:

// by_tripid.js
function (doc) {

    if (doc.type == "list") {

        for (var tripid in doc.tripids) {
            emit(doc.tripids[tripid], null)
        } 
    }
}

目的是按 triid 索引列表。并且能够通过指定一个键(tripid)来通过tripid检索列表。

在 Pouchdb 中,我可以在 db.query 调用中使用大致相同的 map 函数。

但是,我不希望最终返回所有列表,然后通过 triid 过滤它们。这似乎效率很低。我不确定 Pouchdb 的视图技术。该视图是在查询时创建和使用的,所以我猜 Pouchdb 并没有真正应用地图来创建索引。我想这就像 Couchdb 中的临时视图,所以效率可能不存在。

一些专家意见将不胜感激。

谢谢,马特

4

2 回答 2

2

github上有一个open issue来实现增量视图。

你是对的——现在 PouchDB 每次调用时都会在数据库中的每个文档上运行 map-reduce query,所以性能不是很好。对于小型数据库,这很好,但显然对于较大的数据库来说这是一个问题。

于 2013-04-03T03:52:25.723 回答
1

PouchDB 的query接口支持传递options.key. 下个版本的 API 文档中会提到。

  • 如果您要连接到远程沙发,它会将参数传递给远程视图,从而由沙发本身进行优化。
  • 对于本地数据库,优化正在进行中,但在着陆时不会更改界面。道德:只要使用界面就不用担心它,除非你碰到性能墙。

量化“多大是太大”问题的另一个有趣之处是性能套件问题

于 2013-12-31T22:10:00.507 回答