2017-10-17 268 views
1

CouchDb數據庫越來越大,我想刪除日期文件還我想刪除_deleted文件按日期 我知道如何複製我的DB除去日期的引用文件,但是:
¿是否有與_deleted文檔相同的方法?我的意思是按日期刪除_deleted文檔刪除_deleted文件上CouchDB的日期

回答

0

如果數據庫越來越大,這可能是由於您的文檔版本化。以釋放空間,一個簡單的方法是運行數據庫壓縮(Documentation)

至於_deleted文件,你只真的可以通過purging

因此刪除它們,但不建議清除_deleted文件。只能刪除非常重要的文件,例如憑證。

2

有沒有真正的方式有條件地原因使用過濾的複製刪除,也無法將複製完整去除文檔。

你有多種選擇:

  • 你能避免通過日期過濾複製舊文件更新,但如果他們已經被複制,他們將不會被刪除
  • 可以使視圖返回舊文檔,並使用腳本在源數據庫中刪除它們。刪除將複製到任何目標數據庫,但是所有數據庫將保留至少一個{_deleted:true}文檔的邏輯刪除[這就是刪除得到首先複製的方式]
  • 您可以找到舊文檔並清除它們,但是您會必須在每個副本上做到這一點

您的主要目標是什麼?

如果您有數百個對象,並且想要從所有副本的UI中隱藏舊對象,請編寫腳本以從源/主副本中查找它們,並且這些更改將會傳播。

如果您有bazillions例如日誌消息,你需要通過忘記舊的空間釋放空間,編寫一個腳本來尋找和_purge,最後是_compact,然後在上運行它,每副本。但是對於這種情況,可能會更好地旋轉數據庫,例如每週手動「碎片」或bin到不同的數據庫中,並且每週只需在每個副本上放置N + 1周的舊數據庫。