Nach meiner Frage hier I Ich möchte Ideen für einen generischen Ansatz zur Versionskontrolle von Dokumenten in CouchDB vorschlagen. Während ich mir vorstelle, dass es vielleicht keinen kanonischen Ansatz gibt, hatte ich die folgende Idee und suche nach Feedback.
Ich möchte lesbare Dokument-IDs so gut wie möglich beibehalten, damit ein Dokument, das in document1
existiert, ein Zeiger Dokument für alle vorhandenen Versionen auf dem System enthält . Die eigentlichen Revision Dokumente wären etwas wie document1/308ef032a3801a
wo
308ef032a3801a
ist eine Zufallszahl oder ein Hash.
Das Zeigerdokument
%Vor%Das Versionsdokument
%Vor%Es ist typischer, ältere Versionen Ihres Dokuments in Ihrer aktuellen Revision zu behalten (entweder als JSON oder oft als Anhang). Für den JSON-Fall;
%Vor% Offensichtlich werden dadurch die Dinge etwas durcheinander gebracht, weshalb es oft einfacher ist, die vollständige alte Version des Dokuments in einen Anhang zu schieben. Dieses Muster ist häufig genug, dass CouchDB mit einer Bibliothek, jquery.couch.js
, ausgeliefert wird, die es implementiert (in der Funktion saveDoc(doc)
).
Hier finden Sie eine Diskussion über Ansätze zur Versionierung von Dokumenten:
Der eine vorgeschlagene Ansatz besteht darin, ältere Versionen als Anhänge an das aktuelle Dokument anzuhängen. Wie das Dokument erwähnt, ist es einfach, skalierbar und repliziert. Die jquery couchdb-Bibliothek hat dies gebacken in dem ist nett.