CouchDB 我应该从我的Cloudant数据库中删除墓碑吗?

mzsu5hc0  于 2022-12-09  发布在  CouchDB
关注(0)|答案(1)|浏览(172)

我有一个Cloudant数据库,其中有400万个文档和2700万个被删除的文档(“墓碑”)。有这么多墓碑是个问题吗?如果是,我该如何删除它们?

1wnzp6jl

1wnzp6jl1#

“逻辑删除块”会占用空间,因此会增加您的账单。它们还会增加完成新复制或建立新索引的时间。因此,一般情况下,定期删除这些逻辑删除块是一个好习惯。最好的方法是使用一个过滤器复制数据库,该过滤器会留下已删除的文档。
通过在_replicator数据库中创建一个文档来启动复制,如下所示:

{
  "_id": "myfirstreplication",
  "source" : "http://<username1>:<password1>@<account1>.cloudant.com/<sourcedb>",
  "target" : "http://<username2:<password2>@<account2>.cloudant.com/<targetdb>",
  "selector": {
    "_deleted": {
      "$exists": false
    }
  }
}

其中源是原始数据库,目标是新的空数据库。选择器是在复制之前检查每个文档的过滤器-在这种情况下,我们只需要没有删除属性的文档(尚未删除的文档)。
此复制将生成一个不带逻辑删除标记的全新数据库。请将应用程序指向此新数据库,然后删除带逻辑删除标记的旧数据库。
this blog post中,您可能需要考虑其他更复杂的方案。

相关问题