Javascript 使用大型CouchDB数据库进行本地开发,避免长视图构建

Javascript 使用大型CouchDB数据库进行本地开发,避免长视图构建,javascript,couchdb,couchapp,Javascript,Couchdb,Couchapp,CouchDB便于本地开发(CouchApps),然后推进远程生产。不幸的是,对于生产规模的数据集,处理视图可能会很麻烦 获取CouchDB数据库样本用于本地开发的好方法有哪些?答案是过滤复制。我喜欢分两部分来做: 将生产数据库,example\u db作为example\u db\u full 执行从example\u db\u full到example\u db的过滤复制,在该复制中,过滤器会剪切足够的数据,以便快速生成,但保留足够的数据,以便我可以确认代码是否正常工作 要选择的文档可以是特

CouchDB便于本地开发(CouchApps),然后推进远程生产。不幸的是,对于生产规模的数据集,处理视图可能会很麻烦


获取CouchDB数据库样本用于本地开发的好方法有哪些?

答案是过滤复制。我喜欢分两部分来做:

  • 将生产数据库,
    example\u db
    作为
    example\u db\u full
  • 执行从
    example\u db\u full
    example\u db
    的过滤复制,在该复制中,过滤器会剪切足够的数据,以便快速生成,但保留足够的数据,以便我可以确认代码是否正常工作
  • 要选择的文档可以是特定于应用程序的。此时,我对一个简单的随机通过/失败感到满意,我可以指定一个百分比。随机性是一致的(即,同一文档总是通过或失败。)


    我的技术是在[0.0,1.0]范围内规范化文档
    \u rev
    字段中的内容校验和。然后我只需指定一些分数(例如
    0.01
    ),如果规范化的校验和值为=0.0&&p,我会意识到我的最终实现没有我最初想法的0.0,1.0属性。实际上它是00…-ff…十六进制整数。但原理是一样的。
    function(doc, req) {
      if(/^_design\//.test(doc._id))
        return true;
    
      if(!req.query.p)
        throw {error: "Must supply a 'p' parameter with the fraction"
                      + " of documents to pass [0.0-1.0]"};
    
      var p = parseFloat(req.query.p);
      if(!(p >= 0.0 && p <= 1.0)) // Also catches NaN
        throw {error: "Must supply a 'p' parameter with the fraction of documents"
                      + " to pass [0.0-1.0]"};
    
      // Consider the first 8 characters of the doc checksum (for now, taken
      // from _rev) as a real number on the range [0.0, 1.0), i.e.
      // ["00000000", "ffffffff").
      var ONE = 4294967295; // parseInt("ffffffff", 16);
      var doc_val = parseInt(doc._rev.match(/^\d+-([0-9a-f]{8})/)[1], 16);
    
      return doc_val <= (ONE * p);
    }