2017-10-17 5 views
1

Ma base de données CouchDb devient plus grand et je voudrais supprimer des documents par date aussi je voudrais supprimer _deleted documents par date je sais comment reproduire mon DB supprimer des documents par date, mais:
¿Y at-il un moyen de faire de même avec _deleted documents? Je veux dire supprimer _deleted documents par dateSuppression _deleted documents sur CouchDB par date

Répondre

0

Si votre base de données prend de l'ampleur, c'est probablement dû à la version de vos documents. Une façon simple de libérer de l'espace est d'exécuter le compactage de base de données (Documentation)

En ce qui concerne les documents _deleted, vous ne pouvez vraiment les supprimer par purging

Par conséquent, il est recommandé de ne pas purger les documents _deleted. Cela ne devrait être fait que pour supprimer des fichiers très importants tels que les informations d'identification.

2

Il n'y a pas vraiment un moyen de condition la cause une suppression en utilisant la réplication filtrée, et vous ne pouvez reproduire une suppression complète d'un document.

Vous avez une variété d'options:

  • vous pouvez éviter de reproduire des mises à jour sur des documents anciens en filtrant la date, mais si elles ont déjà été reproduites, ils ne seront pas supprimés
  • vous pouvez Créez une vue pour retourner les anciens documents et utilisez un script pour les supprimer de la base de données source. Les suppressions seront répliquées vers toutes les bases de données cibles, mais toute la base de données conservera au moins une {_deleted:true} pierre tombale des documents [c'est ainsi que la suppression sera répliquée]
  • Vous pouvez trouver d'anciens documents et les _purger, mais vous aurez avoir à faire cela sur chaque réplique

Quel est votre objectif principal?

Si vous avez des centaines d'objets et que vous souhaitez masquer les anciens dans l'interface utilisateur de tous les réplicas, écrivez un script à rechercher dans une réplique source/maître et les modifications se propageront.

Si vous avez des bazillions de par ex. consigner les messages et vous devez libérer de l'espace en oubliant les anciens, écrire un script pour trouver et _purge et enfin _compact, puis l'exécuter sur chaque réplique. Mais pour un cas comme celui-ci, il pourrait être préférable de faire pivoter les bases de données à la place, par ex. manuellement "shard" ou bin dans une base de données différente chaque semaine, et chaque semaine il suffit de déposer la base de données N + 1 semaines sur chaque réplique.