Frage

würde folgende sein eine tragfähige Strategie für die Umsetzung der Versionsverwaltung ( „Beispiel“ als Probe Belegart):

Haben Sie ein Originaldokument in dem das Typenfeld example_original gestattet.

Nachträgliche Änderungen an dem Dokument haben alle Art example_change und die ID des example_original Dokument als Schlüssel. Die Änderung würde auch einen Zeitstempel tragen.

Halten Sie eine doc mit Typ example_current, die das Ergebnis example_original ist mit allen example_change „angelegt“. Ein neues example_change Dokument automatisch auf dieses Dokument angewandt werden würde.

Die Suche nach einer bestimmten Version in dem Abrufen der example_original doc und die Anwendung die gewünschten Änderungen bestehen würde (meist bis zu einem bestimmten Zeitstempel, aber es könnte auch eine Reihe von Änderungen sein).

Ich soll erwähnen, dass mein Anwendungsfall eine begrenzte Anzahl von Änderungen an den ursprünglichen beinhalten wird. Die meisten Updates werden von neuen Original-Dokumente bestehen. Während dies ist mein aktueller Anwendungsfall würde ich auch in Fragen interessiert sein, dass, wenn viele Änderungen führen würde, wo beteiligt.

Was Vor- und Nachteile haben Sie in diesem Ansatz?

War es hilfreich?

Lösung

Meine erste Sorge ist: Wenn eine bestimmte Version „bekommen“, können Sie die Änderungen an der ursprünglichen ohne Änderung der Datenbank anwenden

Werden Sie jemals zu löschen etwas aus der Geschichte brauchen? Bist du dir wirklich sicher? Wirklich, wirklich sicher? Wie wäre es Zweige?

Alles in allem sieht es wie eine komplexe Strategie. Beachten Sie, dass ich über CouchDB gehört habe, aber nie daran gewöhnt. Ich würde gehen für einen einfacheren Ansatz:

  1. Wenn Sie ein Dokument erstellen, weisen Sie eine UUID. Sie nicht den Namen verwenden, oder Sie werden in Schwierigkeiten während des Umbenennungsoperationen auszuführen. Fügen Sie ein Versionsfeld, das „1“ liest. Erstellen Sie ein zweites Dokument, das eine Liste von Dokumenten mit derselben UUID enthält oder fügen Sie ein „Eltern“ Zeiger auf das erste Dokument.

    ein „Geschichte Dokument“ pro Dokument Mit ermöglicht eine schnellere Navigation der Geschichte, sondern Abstammungszeiger sind „sicher“ (da man nicht so leicht illegale Strukturen mit ihnen schaffen).

  2. Wenn Sie eine neue Version erstellen, die UUID Wiederverwendung und eine neue, einzigartige Version zuordnen. Aktualisieren Sie die Geschichte Dokument oder die Abstammungszeiger.

Diese Strategie ist ziemlich einfach zu implementieren und alle Arten von Flexibilität ermöglicht es später. Sie können Teile der Geschichte löschen leicht, Umbenennungs einfach ist, und Sie können Zweige erstellen.

Andere Tipps

Einfaches Dokument Versioning mit CouchDB

Die Versionierung als Anhänge in diesem Artikel beschriebenen Ansatz sollte den meisten Menschen die Anforderungen passen für die Versionierung.

Was ist der Business-Status dieser Dokumente, vor allem legal? Ich habe in Situationen gearbeitet, wo Ihr Vorschlag nicht von einem Unternehmen persepctive angemessen wäre, weil die Notwendigkeit zu beweisen, dass das Dokument als v.3 präsentierte wirklich ist die Version 3 des Dokuments. Dynamisch Anwendung Deltas würden die Einhaltung Senf nicht schneiden.

Wenn, wie Sie sagen, Änderungen an Dokumenten ae selten, dann werden Sie nicht viel Speicherplatz eingespart werden werden durch Deltas statt ganzer Dokumente zu speichern. Speicher ganze Dokumente ermöglicht auch die zuverlässige Vorhersage der Abrufzeit für jedes Dokument. Es reduziert auch die Komplexität des Wiedergewinnungsprozesses.

Eine Strategie mit CouchDB für die Versionierung ist immer nicht die Datenbank zu komprimieren, die die Dokumente enthalten, für die Sie eine vollständige Geschichte zu halten. Sie könnten noch andere Datenbanken komprimieren. Diese einfache Strategie heute aus der Box mit einer Bearbeitungskonfliktlösungsstrategie funktioniert.

Löschen eines Dokuments durch das Schreiben einer neuen Version ohne Inhalt, sondern ein gelöschtes Objekt getan werden könnte.

Branchen können nicht auf diese Weise, weil die Versionierung Mechanismus bietet ein einzelner Thread von Revisionen erfolgen.

Jetzt für die mögliche Zukunft von CouchDB:

  • Heute jede Revision hält eine vollständige Kopie des Dokuments, sondern eine, die Optimierungen des CouchDB Motors einfiel könnte einen Tag speichern Deltas.
  • Es ist auch möglich, dass in Zukunft CouchDB eine API anbieten würde die Verdichtung bestimmter Dokumenttypen zu verhindern. Dies würde es ermöglichen, alle Dokumente in der gleichen Datenbank zu halten. Dies wäre eine einfache Patch CouchDB sein.
  • Diese Strategie funktioniert die Verwaltung von Dokument Zweigen ermöglichen, aber die Art von CouchDB als Dokumentendatenbank unter Berücksichtigung, das ist etwas, von einer angemessenen, aber langfristig Möglichkeit.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top