gpt4 book ai didi

javascript - 为本地开发采样大型 CouchDB 数据库,避免长 View 构建

转载 作者:行者123 更新时间:2023-11-29 22:39:47 26 4
gpt4 key购买 nike

CouchDB 便于在本地开发 (CouchApps),然后插入远程生产。不幸的是,对于生产规模的数据集,处理 View 可能很麻烦。

获取 CouchDB 数据库样本以用于本地开发的好方法是什么?

最佳答案

答案是过滤复制。我喜欢分两部分进行:

  1. 将生产数据库 example_db 作为 example_db_full 复制到我的本地服务器
  2. 执行从 example_db_fullexample_db 的过滤复制,其中过滤器截取了足够的数据,因此构建速度很快,但保留了足够的数据,以便我可以确认我的代码是否有效。

选择哪些文档可以是特定于应用程序的。此时,我对一个简单的随机通过/失败以及我可以指定的百分比感到满意。随机性是一致的(即,同一个文档总是通过或总是失败。)

我的技术是将文档 _rev 字段中的内容校验和规范化到 [0.0, 1.0) 范围内。然后我简单地指定一些分数(例如 0.01),如果规范化校验和值 <= 我的分数,文档通过。

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);
}

关于javascript - 为本地开发采样大型 CouchDB 数据库,避免长 View 构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3604158/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com