首页 > 解决方案 > 从 CouchDB 数据库中清除所有非当前数据的推荐过程是什么?

问题描述

假设我有一个包含 100 条记录的数据库,每条记录有 1000 个修订版,另外还有 100,000 个已删除的文档,每个文档都有大量的修订历史。此外,我们还有一个视图文档和一些芒果索引。

对于这种假设情况,我们假设我无法删除和重建数据库。复制安全也不是问题。

如果我需要使用 curl 创建某种脚本来清除数据库中所有未使用的数据,以便运行此脚本的结果与删除和重建数据库完全相同,只有 100 条记录和一个单一的修订文件,我应该怎么做呢?

标签: couchdb

解决方案


对于您的假设情况,您可以执行以下操作:

  1. 备份 100 份所需文件
  2. 删除数据库中的所有文档
  3. 使用Purge API删除修订历史
  4. 重新创建所需的 100 个文档

在实际场景中节省磁盘空间和 BTree 大小的更安全方法是:

  1. 正确配置 CouchDB 的压缩设置以不包含太多修订
  2. 仅清除将来不会再次修改的文档。

推荐阅读