2

Dans CouchDB, il est parfois possible que vous ayez plus de documents supprimés dans une base de données que de documents actifs. Après un certain temps, cela devient un peu non optimal, car vous synchronisez plus de données de documents supprimées qu'autre chose. Mais j'ai remarqué que tout ce qui se passe en faisant ceci est un client avec une copie locale de la base de données (par exemple si vous avez une base de données nommée "username" qui est conçue pour être répliquée sur un périphérique client via Pouch).), lorsqu'il voit la base de données vide, la recharge, les enregistrements de documents supprimés et tous. À moins de changer le nom de la base de données à chaque fois, est-il possible de signaler aux autres instances Couch qu'ils ne devraient pas repeupler la nouvelle base de données fraîche et propre, et la prendre comme une nouvelle base de données entièrement? Ou, en fait, toute autre solution?Comment gérer la suppression de bases de données dans Couch sur plusieurs clients?

Répondre

0

Oui, si vous avez une réplication bidirectionnelle alors le « autre côté » reproduira tous les documents supprimés en arrière à la nouvelle DB. Les deux seules options auxquelles je peux penser sont d'avoir une nouvelle base de données (avec un nouveau nom, ce que les documents auxquels vous avez probablement lié), ou d'utiliser filtered replication pour que le client ne fasse pas monter de docs supprimés (ou doesn ' t augmenter les documents supprimés plus d'un certain point).

La dernière de ces options est significativement plus complexe que la première.

+0

Avoir une nouvelle base de données avec un nouveau nom était quelque chose que j'essayais d'éviter, car je devais alors obtenir le nom de la base de données à chaque fois. Pas que ce soit difficile, mais pas idéal. La réplication filtrée peut être utile, mais sans les documents supprimés, un client plus ancien qui a des copies non supprimées des documents supprimés remettrait simplement les documents complets dans la base de données (c'est un peu difficile à suivre mais sens dans ma tête!). – MetaPyroxia

+0

Oui, votre filtrage devrait inclure une logique de sorte qu'il ne filtre que les documents supprimés qui ont été supprimés suffisamment longtemps pour être sûr qu'ils ont été supprimés partout. Le renommage de la base de données, oui, vous obligerait à paramétrer votre nom de DB dans tous les clients et de les mettre à jour - comme vous l'avez identifié, c'est assez simple à faire. – smathy