Attualmente sto lavorando ad un'applicazione wiki-esque usando CouchDB e sto cercando di implementare uno schema di versioning dei documenti. Per come la vedo io ci sono due modi per farlo:
- Memorizzare ogni versione come documento separato
- Archivia le versioni precedenti come allegati a un singolo documento.
In questo momento, ho una forma di lavoro n. 1. Quando un utente modifica un documento e lo salva, il back-end prima copia la revisione precedente in un nuovo documento e quindi salva la nuova versione. Ogni documento ha un array 'history' che contiene dati su ogni versione (il documento _id della vecchia versione, un timestamp, l'editor, ecc.).
Poiché questo array di cronologia potrebbe diventare piuttosto lungo per un documento aggiornato di frequente, ho una vista che recupera un documento senza cronologia durante una lettura normale (e un'altra vista per recuperare la cronologia).
La mia domanda è questa: mi sento a disagio per il mio approccio attuale e ho pensato di cambiare il metodo dell '"attaccamento". Ma non sono sicuro. Spero che qualcuno che conosca CouchDB meglio di me (ci sono stato solo per un paio di settimane - e questo è il mio primo progetto con CouchDB ... e NoSQL) può dirmi quali sono i pro e i contro di ciascuno approccio. O c'è forse qualche altro schema di versione che sto trascurando?