2017-10-17 1 views
1

Meine CouchDb Datenbank wird immer größer, und ich mag Dokumente nach Datum entfernen würde auch ich gerne _deleted Dokumente nach Datum entfernen Ich weiß, wie meine DB nach Datum Entfernen Dokumente zu replizieren, aber:
¿Gibt es eine Möglichkeit, das gleiche mit _deleted Dokumenten zu tun? Ich meine entfernen _deleted Dokumente nach DatumLöschen _deleted Dokumente auf CouchDB nach Datum

Antwort

0

Wenn Ihre Datenbank größer wird, ist dies wahrscheinlich auf die Versionierung Ihrer Dokumente zurückzuführen. Ein einfacher Weg, um Platz zu schaffen ist (Documentation)

Wie für _deleted Dokumente Datenbank-Komprimierung ausführen können, können Sie nur wirklich sie

Deshalb von purging löschen, wird es nicht zu spülen _deleted Dokumente empfohlen. Es sollte nur durchgeführt werden, um sehr wichtige Dateien wie Anmeldeinformationen zu entfernen.

2

Es gibt nicht wirklich eine Möglichkeit, bedingt Ursache eine Deletion gefilterte Replikation, noch können Sie eine vollständige Entfernung eines Dokuments zu replizieren.

Sie haben eine Vielzahl von Optionen:

  • Sie vermeiden können, durch Filtern auf Datum Updates auf alte Dokumente zu replizieren, aber wenn sie bereits repliziert wurden, werden sie nicht
  • Sie
  • gelöscht werden können Erstellen Sie eine Ansicht, um alte Dokumente zurückzugeben, und verwenden Sie ein Skript, um sie in der Quelldatenbank zu löschen. Die Löschungen werden auf alle Zieldatenbanken repliziert, aber alle Datenbanken behalten mindestens einen {_deleted:true} Tombstone der Dokumente bei [das ist, wie die Löschung an erster Stelle repliziert wird]
  • Sie können alte Dokumente finden und _purge sie, aber Sie werden muss das auf jedem Replikat tun

Was ist Ihr Hauptziel?

Wenn Sie Hunderte von Objekten haben und die alten von der Benutzeroberfläche aller Replikate ausblenden möchten, schreiben Sie ein Skript zum Suchen und DELETE/_delete:true aus einer Quellen-/Masterreplik und die Änderungen werden weitergegeben.

Wenn Sie Baillionen von z.B. Log-Nachrichten und Sie müssen Speicherplatz freigeben, indem Sie alte vergessen, schreiben Sie ein Skript zu finden und _purge und schließlich _compact, dann führen Sie es auf jede Replik. Aber für einen Fall wie diesen könnte es besser sein, stattdessen Datenbanken zu rotieren, z. manuell "shard" oder bin in eine andere Datenbank jede Woche, und jede Woche einfach die N + 1 Wochen alte Datenbank auf jedem Replikat fallen lassen.

Verwandte Themen