Je travaille actuellement sur une application wiki-esque utilisant CouchDB et j'essaie d'implémenter un schéma de version de document. Pour moi, il y a deux façons de procéder:
- Stockez chaque version dans un document distinct
- Stockez les anciennes versions sous forme de pièces jointes à un seul document.
En ce moment, j'ai une forme de travail n ° 1. Lorsqu'un utilisateur modifie un document et l'enregistre, le serveur principal copie d'abord la révision précédente dans un nouveau document, puis enregistre la nouvelle version. Chaque document possède un tableau «historique» qui contient des données sur chaque version (le document _id de l'ancienne version, un horodatage, l'éditeur, etc.).
Étant donné que ce tableau d'historique peut devenir assez long pour un document fréquemment mis à jour, j'ai une vue qui récupère un document sans historique lors d'une lecture normale (et une autre vue pour récupérer l'historique).
Ma question est la suivante: je me sens mal à l'aise avec mon approche actuelle et j'ai pensé à passer à la méthode de l'attachement. Mais je ne suis pas sur. J'espère que quelqu'un qui connaît mieux CouchDB que moi (je n'y suis que depuis quelques semaines - et c'est mon premier projet utilisant CouchDB ... et NoSQL) peut me dire quels sont les avantages et les inconvénients de chacun approche. Ou existe-t-il peut-être un autre schéma de version que j'écarte?