高效批量删除 couchDB 中的文档

Posted

技术标签:

【中文标题】高效批量删除 couchDB 中的文档【英文标题】:Efficient bulk deletion of documents in couch DB 【发布时间】:2013-10-29 16:23:47 【问题描述】:

我有一个需要定期删除文档的数据库。它将在每批 100k 个文档的范围内。

截至今天,这是通过首先向视图发出请求来实现的,该视图返回要删除的文档的 _id:s 和 _rev:s 列表。

然后我对这些文档中的每一个都向 hostname/database/_id?=_rev 发出 http DELETE 请求。

对我来说,这似乎效率低得离谱,因为我必须对这 100k 个文档中的每一个进行 http 请求。

有没有更有效的方法来删除沙发上的大量文档?我一直在寻找类似于 POST 的命令来创建新文档,您可以在其中发送 http 正文中的数据。或者在 mapreduce 中执行此操作的方式。但到目前为止还没有运气。

【问题讨论】:

【参考方案1】:

您可以将所有删除操作捆绑到一个bulk_docs update。

对于 100k 的文档,您会注意到该操作需要一点时间,但比单独的 DELETE 更新要快得多。

【讨论】:

我已经准备好手术需要一些时间了。这仍然比我所拥有的要好得多。我一定忘记了您可以从该更新中设置 _deleted 标志。不过有一个问题,当compact 运行时,这是否会导致从数据库中真正删除文档,还是只会使其不可见?

以上是关于高效批量删除 couchDB 中的文档的主要内容,如果未能解决你的问题,请参考以下文章

C#使用SQLBulkCopy或等效库高效批量删除50000条记录

Entity Framework Core 7中高效地进行批量数据插入

批量删除ElasticSearch 6+中文档的属性

删除 CouchDB 中的过期文档

Word批量删除所有书签

使用shell巧妙高效的批量删除历史文件或目录