2017-10-17 266 views
1

CouchDb数据库越来越大,我想删除日期文件还我想删除_deleted文件按日期 我知道如何复制我的DB除去日期的引用文件,但是:
¿是否有与_deleted文档相同的方法?我的意思是按日期删除_deleted文档删除_deleted文件上CouchDB的日期

回答

0

如果数据库越来越大,这可能是由于您的文档版本化。以释放空间,一个简单的方法是运行数据库压缩(Documentation)

至于_deleted文件,你只真的可以通过purging

因此删除它们,但不建议清除_deleted文件。只能删除非常重要的文件,例如凭证。

2

有没有真正的方式有条件地原因使用过滤的复制删除,也无法将复制完整去除文档。

你有多种选择:

  • 你能避免通过日期过滤复制旧文件更新,但如果他们已经被复制,他们将不会被删除
  • 可以使视图返回旧文档,并使用脚本在源数据库中删除它们。删除将复制到任何目标数据库,但是所有数据库将保留至少一个{_deleted:true}文档的逻辑删除[这就是删除得到首先复制的方式]
  • 您可以找到旧文档并清除它们,但是您会必须在每个副本上做到这一点

您的主要目标是什么?

如果您有数百个对象,并且想要从所有副本的UI中隐藏旧对象,请编写脚本以从源/主副本中查找它们,并且这些更改将会传播。

如果您有bazillions例如日志消息,你需要通过忘记旧的空间释放空间,编写一个脚本来寻找和_purge,最后是_compact,然后在上运行它,每副本。但是对于这种情况,可能会更好地旋转数据库,例如每周手动“碎片”或bin到不同的数据库中,并且每周只需在每个副本上放置N + 1周的旧数据库。