Ich arbeite derzeit an einer Wiki-ähnlichen Anwendung mit CouchDB und versuche, ein Dokumentversionsschema zu implementieren. So wie ich es sehe, gibt es zwei Möglichkeiten, dies zu tun:
- Speichern Sie jede Version als separates Dokument
- Speichern Sie ältere Versionen als Anhänge an ein einzelnes Dokument.
Im Moment arbeite ich in der ersten Form. Wenn ein Benutzer ein Dokument bearbeitet und speichert, kopiert das Back-End zuerst die vorherige Revision in ein neues Dokument und speichert dann die neue Version. Jedes Dokument hat ein 'history'-Array, das Daten zu jeder Version enthält (die Dokument-ID der alten Version, einen Zeitstempel, den Editor usw.).
Da dieses Verlaufsarray für ein häufig aktualisiertes Dokument sehr lang werden kann, wird in einer Ansicht beim normalen Lesen ein Dokument ohne Verlauf abgerufen (und in einer anderen Ansicht wird der Verlauf abgerufen).
Meine Frage lautet: Ich bin mir nicht sicher, was ich derzeit tue, und habe darüber nachgedacht, auf die Methode des „Anhaftens“ umzusteigen. Aber ich bin mir nicht sicher. Ich hoffe, dass jemand, der CouchDB besser kennt als ich (ich bin erst seit ein paar Wochen dabei - und dies ist mein erstes Projekt, das CouchDB ... und NoSQL verwendet), mir die Vor- und Nachteile jedes einzelnen Projekts erklären kann Ansatz. Oder gibt es vielleicht ein anderes Versionsschema, das ich übersehen habe?