Mit Reconcile (Abgleichen) und Post (Zurückschreiben) werden Versionen in einer Enterprise-Geodatabase zusammengeführt. Was dabei in der Geodatabase passiert, wird in diesem Blogbeitrag beschrieben.

Wenn in einer Enterprise-Geodatabase Feature-Classes für die traditionelle Versionierung registriert werden, können Editiersitzungen in Versionen voneinander isoliert werden, weil die Veränderungen an den Daten versionsbezogen in den sog. Delta-Tabellen gespeichert werden. Das spätere Zusammenführen von Versionen erfolgt über Reconcile (Abgleichen) und Post (Zurückschreiben).

Begriffsbestimmung

traditionelle Versionierung:Konzept, das die Isolierung von Bearbeitungsprozessen ermöglicht.
Version:Filter, der nur diejenigen Veränderungen anzeigt, die über diese Version vorgenommen wurden.
Delta-Tabellen:Tabellen, die beim Registrieren eines Datasets als versioniert erstellt werden und die Veränderungen speichern, die über Versionen vorgenommen werden.
States:Einzelne Bearbeitungsschritte, die mit eindeutigen IDs in den Delta-Tabellen gespeichert werden.
Lineage:Abfolge von Bearbeitungsschritten, die einer Version zugeordnet sind.
Reconcile (Abgleichen):Erster Schritt beim Zusammenführen von Versionen, bei dem die States der Edit-Version in die Lineage einer Ziel-Version kopiert werden und diese fortschreiben.
Post (Zurückschreiben):Zweiter Schritt beim Zusammenführen von Versionen, bei dem auch die Zielversion verändert wird, indem sie den letzten State der fortgeschriebenen Lineage referenziert und somit mit der Edit-Version identisch ist.


Abb. 1: Allgemeinen Überblick über den Workflow der traditionellen Versionierung (ArcGIS Pro-Hilfe)

Ausgangssituation

Eine Enterprise-Geodatabase wird erstellt. Mit ihr wird auch die DEFAULT-Version erstellt, die State 0 referenziert. State 0 ist der Lineage 0 zugeordnet. Jede Enterprise-Geodatabase enthält diese Version unabhängig davon, ob Datasets als versioniert registriert werden.

Abb. 2: Jede Enterprise-Geodatabase enthält eine DEFAULT-Version.

Eine weitere Version wird erstellt

Die Version 1 wird als Nachfolgeversion von DEFAULT erstellt. Beide Versionen referenzieren State 0 und sind identisch.

Abb. 3: Eine zweite Version wird erstellt.

Bearbeitung in der DEFAULT-Version

Mit dem ersten Bearbeitungsschritt wird State 1 erstellt. Mit dem State 1 wird auch die neue Lineage 1 erstellt, die den Namen des States erhält, bei dem sie erstellt wurde. Der State 1 ist der Lineage 1 zugeordnet. Dann wird eine weitere Veränderung vorgenommen, bei der State 2 erstellt wird. Bei jeder Veränderung wird ein neuer State erstellt.

Die Bearbeitung wird gespeichert. Dadurch referenziert die Version DEFAULT nicht mehr State 0, sondern State 2. Über Version 1 wurden die Daten noch nicht bearbeitet. Version 1 referenziert also noch immer State 0. Die Veränderungen der DEFAULT-Version werden in Version 1 nicht angezeigt.

Abb. 4: Über die DEFAULT-Version werden Datasets bearbeitet.

Bearbeitung in Version 1

Nun werden auch über die Version 1 die Daten bearbeitet. State 3 wird erstellt und damit auch die neue Lineage 3, die nach dem State benannt wird, bei dem sie erstellt wurde. Dem nächsten Bearbeitungsschritt wird der State 4 zugeordnet, der auch zur Lineage 3 gehört.

Nach dem Speichern referenziert Version 1 State 4. State 0 wird nicht mehr referenziert, bildet aber den Ausgangspunkt für alle Lineages. Die Veränderungen von Version 1 werden in der DEFAULT-Version nicht angezeigt.

Abb. 5: Auch über Version 1 werden Datasets bearbeitet.

Abgleich von Versionen (Reconcile)

Mit Reconcile (Abgleichen) wird Version 1 (Edit-Version) mit der Vorgängerversion DEFAULT (Ziel-Version) abgeglichen. Bei diesem Vorgang werden zwei neue States erstellt. Bei State 5, der zur Lineage 3 gehört, werden die Veränderungen von Version 1 in die Lineage von DEFAULT kopiert. Die Lineage 1 von DEFAULT wird mit dem State 6 fortgeschrieben. Version 1 springt dabei von Lineage 3 auf Lineage 1 (lineage jumping). In Version 1 sind jetzt die Veränderungen sichtbar, die in der DEFAULT-Version vorgenommen wurden. DEFAULT referenziert aber immer noch State 2, so dass in DEFAULT die Veränderungen von Version 1 nicht angezeigt werden.

Abb. 6: Version 1 wird mit DEFAULT abgeglichen.

In Version 1 könnten jetzt weitere Bearbeitungsschritte durchgeführt und die Lineage 1 fortgeschrieben werden. Wenn auch in der DEFAULT-Version weitergearbeitet wird, muss eine neue Lineage (Lineage 7) erstellt werden. Alle States von 2 bis 0 werden von der Lineage 1 in die neue Lineage kopiert. Die neue Lineage wird mit den nachfolgenden Bearbeitungsschritten fortgeschrieben.

Ein Reconcile kann nicht rückgängig gemacht werden. Da Reconcile aber während der Datenbearbeitung ausgeführt wird, kann diese beendet werden, ohne die Veränderungen zu speichern. Die Edit-Version referenziert dann in seiner Lineage den letzten State, bei dem gespeichert wurde. Ein Speichern vor einem Reconcile ist also ratsam.

Zurückschreiben der Veränderungen (Post)

In diesem Beispiel werden in der DEFAULT-Version keine weiteren Veränderungen vorgenommen. Version 1 (Edit-Version) soll vollständig mit DEFAULT (Ziel-Version) abgeglichen werden. Dazu muss unmittelbar nach dem Reconcile von Version 1 auch ein Post (Zurückschreiben) ausgeführt werden. Beim Post rutscht die Version DEFAULT in der Lineage 1, die von Version 1 fortgeschrieben wurde, auf den letzten State 6. Version 1 und DEFAULT sind nun wieder identisch. Die States 3 bis 4 von Lineage 2 werden nicht mehr referenziert. Sie werden beim nächsten Compress (Komprimieren) entfernt.

Abb. 7: Nach dem Zurückschreiben sind beide Versionen identisch.

Dadurch, dass erst beim Post die Ziel-Version verändert wird, sie referenziert dann einen neuen State, kann eine Version jederzeit mit einer anderen übergeordneten Ziel-Version abgeglichen werden, auch wenn diese den Status geschützt aufweist. Ein Post ist aber nicht möglich, wenn keine entsprechenden Berechtigungen für die Ziel-Version vorliegen.

Nach dem Post kann die Edit-Version ohne Datenverlust gelöscht werden, weil beide Versionen identisch sind.

Zusammenfassung

Der Abgleich von Versionen wird mit Reconcile eingeleitet. Es werden dabei die Veränderungen der Ziel-Version nicht in die Lineage der Quellversion kopiert, was vielfach angenommen wird. Das Gegenteil ist der Fall. Die States der Edit-Version werden in die Lineage der Zielversion kopiert. Außerdem springt die Edit-Version beim sog. „lineage jumping“ auf die Lineage der Ziel-Version, wodurch die dort vorgenommenen Veränderungen auch in der Edit-Version sichtbar sind. Ein vollständiger Abgleich wird mit Post durchgeführt. Da erst beim Post die Ziel-Version verändert wird, müssen für diesen Vorgang die erforderlichen Berechtigungen vorliegen.

Kurse zur Enterprise-Geodatabase und traditionellen Versionierung

In den Kursen „Konfiguration und Verwaltung einer Mulitiuser-Geodatabase“, „Arbeitsabläufe in einer versionierten Multiuser-Geodatabase einrichten“ und „Geodatabase-Replikation – Daten verteilen und nutzen“ wird vorgestellt, wie Enterprise-Geodatabases erstellt und verwaltet werden. Es wird im Detail gezeigt, welche Möglichkeiten die traditionelle Versionierung bietet, wie das Arbeiten mit traditionellen Versionen funktioniert und was dabei in den Tabellen einer Geodatabase passiert.

Besuchen Sie unsere Kursseiten von Esri