首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在CouchDB数据库之间批量移动文档

在CouchDB数据库之间批量移动文档
EN

Stack Overflow用户
提问于 2015-02-10 09:34:23
回答 1查看 719关注 0票数 1

我们的数据库变得太大了,我们需要基于过滤器(即创建的日期字段)将较旧的记录归档到归档数据库中。完成此任务的最快、最简单的方法是什么?只要代码易于理解和维护,大多数语言都是可以接受的。

这将需要是一个可以计划为定期运行的任务,例如每周。

EN

回答 1

Stack Overflow用户

发布于 2015-02-10 11:42:23

您可以使用此策略:

1)设置单向过滤复制,参见http://wiki.apache.org/couchdb/Replication#Filtered_Replication。您的过滤器函数必须检测并拒绝较新的文档和删除。

2)可选地在目标数据库中添加validate_doc_update函数。它还可以拒绝删除-以确保不会有del操作意外通过。就像这样

代码语言:javascript
复制
validate_doc_update: function(newDoc, oldDoc, uCtx, sec) {
  if (oldDoc && newDoc._deleted) throw ({forbidden:'Can’t delete from archive'});
}

3)在源存储桶中创建view索引,拉取每周刷新的单据列表。

4)设置重复任务,执行复制,如果成功,则批量删除文档,如果成功,则执行源DB压缩。

使用_bulk_docs可以更好地执行批量删除-您可以发布_deleted属性设置为true的文档数组。为了确保源数据库即使在压缩之后也不会隐藏已删除的文档,必须将_revs_limit设置为1 (http://docs.couchdb.org/en/latest/api/database/misc.html#db-revs-limit)。

为了确保文档在处理过程中不会丢失,您最好保持复制的日期范围比删除日期范围大得多。例如,如果您在每个星期天删除超过28天(4周)的文档,则必须首先复制超过20天(3周减去1天)的文档。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28422644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档