Datensynchronisation

Aus GeoMediaKommunal
Zur Navigation springen Zur Suche springen


Einleitung

(Ab GMSC-K 2016)

Das Modul Datenbanksynchronisation wird verwendet, um die Sachdaten zweier unabhängiger GMSC-K-Projekte laufend abzugleichen. Unabhängig heißt, dass die Sachdaten in verschiedenen Datenbank liegen. Die jeweiligen Datenbanken können unterschiedlichen Typs sein, d.h. es ist möglich Oracle-Daten mit MS-SQL-Server-Daten abzugleichen. Die Projekte können in derselben oder aber in verschiedenen GMSC-K-Instanzen eingerichtet sein.

Im Folgenden wird die Einrichtung und Bedienung der Datenbanksynchronisation beschrieben. Dazu werden beispielhaft die Projekte A und B verwendet, wobei Projekt A das ursprüngliche Projekt ist und ggf. schon Daten enthält.

Hinweis: Es werden nur die Sachdaten synchronisiert. Änderungen der Projektstruktur, z.B. neue Sichten, IFA-Objektklassen oder Felder an Objektklassen müssen per XPMF oder manuell übertragen werden.

Projekt-Setup

Projekt A wird zunächst wie gewohnt eingerichtet bzw. hat es schon eine fertige Struktur. Projekt B muss so eingerichtet werden, dass es die gleichen Fachanwendungen wie Projekt A enthält bzw. müssen mindestens die Fachanwendungen hinzugefügt werden deren Objektklassen abgeglichen werden sollen. Projekt A und B müssen außerdem die Fachanwendung „Datenbanksynchronisation“ enthalten. Die Sachdatenbank von Projekt B bleibt zunächst leer.

Hinweis: Die Datenquellen von Projekt A und B müssen verschiedene IDs haben, da diese zum Vergleich von Objektversionen benutzt werden. Das bedeutet, dass bei der Einrichtung einer neuen GMSC-K-Instanz für das Projekt B nicht einfach das Admin-Schema von Projekt A kopiert werden darf. Entweder muss das Admin-Schema von Projekt B komplett neu aufgesetzt und die Struktur von Projekt A per XPMF-Dateien kopiert werden oder in der Kopie B des Admin-Schemas A müssen die IDs der Datenquellen geprüft werden. Sind sie schon gesetzt (Tabelle JDBCDATASOURCE, Spalte EXERNALID), müssen sie über SQL-Skripte geändert werden. Falls sie noch den Wert null haben, muss nichts getan werden. In diesem Fall wird die Spalte automatisch beim erstmaligen Abgleich gefüllt. Registrieren der Objektklassen

Im nächsten Schritt werden sowohl in Projekt A als auch B die gewünschten Objektklassen für die Synchronisation registriert. Dazu öffnet man im Kontextmenü des Projektes den Punkt „Synchronisation / Synchronisations-Verwaltung“. Hier öffnet sich ein zweigeteilter Editor. Links werden die zur Verfügung stehenden Objektklassen des Projektes angezeigt, rechts die registrierten. Durch Anhaken einzelner Objektklassen oder Fachanwendungen und Benutzen der Buttons bzw. können die Objektklassen von links nach rechts und umgekehrt geschoben werden. Bei Selektion einer Objektklasse werden automatisch auch alle von dieser Objektklasse verwendeten Stammdaten und Unterobjektklassen markiert. Ist der Button gewählt (), werden bei Selektion einer Objektklasse auch automatisch alle verknüpften Objektklassen markiert (1:n- oder n:m-Verknüpfungen). Im Feld Filter kann nach Objektklassen gesucht werden.

Hat man alle gewünschten Objektklassen auf der rechten Seite klickt man den Speichern-Button ().

Hinweis: Es ist auch möglich nachträglich Objektklassen zu registrieren, also auch wenn schon Daten mit einem anderen Projekt ausgetauscht wurden.

Export

Beim Export der Sachdaten werden immer nur die Änderungen gegenüber dem Zeitpunkt des letzten Exports ausgegeben. Findet der Export zum ersten Mal statt, werden alle Datensätze der gewünschten Objektklassen ausgegeben. Das kann je nach Projektgröße einige Zeit in Anspruch nehmen.

Für den Export öffnen Sie zunächst über das Kontextmenü des Projektes A den Punkt „Synchronisation / Differenzdaten-Export“. Hier müssen Sie eine Export-/Import-Konfiguration anlegen oder auswählen. Diese Konfiguration enthält einerseits das Datum des letzten Exports sowie welche Objektklassen exportiert werden (das kann eine Untermenge der registrierten sein). Sie sollten für jede Gegenstelle (Projekt), mit der das Projekt Daten austauschen soll, eine Konfiguration anlegen. Geben Sie der Konfiguration am besten den Namen der Gegenstelle, also z.B. Projekt B. Das Projekt A kann also mit mehreren Projekten zu unterschiedlichen Zeitpunkten Daten austauschen.

Das Stichdatum wird automatisch ausgefüllt. Es entspricht dem Datum des letzten Exports. Legen Sie im Feld „Exportdatei“ fest, wo die Austauschdatei abgelegt werden soll. Im unteren Bereich wählen Sie aus, welche Objektklassen exportiert werden sollen. Wenn Sie nach der Auswahl oben den Speichern-Button ( ) klicken, werden die gewählten Objektklassen der Konfiguration zugeordnet und müssen beim nächsten Export nicht nochmal extra ausgewählt werden.

Schließen Sie den Dialog mit OK. Die Job-Anzeige wird geöffnet und wenn der Export-Vorgang erfolgreich beendet wurde, ist rechts neben der Fortschrittsanzeige der Button „Ergebnis“ freigeschaltet. Wenn Sie diesen klicken, wird die Datei auf dem lokalen Rechner am gewünschten Ort abgelegt.

Hinweis: Es ist auch möglich zusätzliche Objektklassen an Projekt B zu exportieren auch wenn schon einmal ein Datenaustausch stattgefunden hat.


Import

In der Gegenstelle Projekt B werden die exportieren Daten eingelesen. Dazu öffnen Sie den Import-Dialog über das Projekt-Kontextmenü „Synchronisation / Differenzdaten-Import“. Hier wählen Sie zuerst die Export-Datei aus. GMSC-K liest zunächst das Inhaltsverzeichnis aus, welches Angaben darüber enthält, wie viele Datensätze von welcher Objektklasse exportiert wurden. Falls die Datei Objektklassen enthält, welche im Projekt B entweder nicht bekannt oder nicht registriert sind, werden diese im oberen Bereich des Dialogs angezeigt. In diesem Fall können die Daten nicht importiert werden.

Im unteren Bereich werden alle bekannten Objektklassen angezeigt sowie Angaben darüber, wie viele Datensätze angelegt, geändert oder gelöscht werden. Des weiteren müssen Sie wiederum eine Export-/Import-Konfiguration anlegen oder auswählen:

Sind alle Objektklassen vorhanden, klicken Sie auf „Weiter“ und im folgenden Dialog auf „Import starten“. Die Daten werden eingelesen und es werden ggf. Meldungen ausgegeben. Falls es beim Import zu einem Fehler kommt, wird der gesamte Vorgang abgebrochen und bis dahin schon importierte Daten wieder entfernt. Läuft der Import fehlerfrei, erscheint am Ende eine Übersicht wie viele Datensätze eingelesen wurden. Dabei gibt die Zahl vor dem Schrägstrich den tatsächlichen Wert an und die Zahl danach den erwartetet Wert.

Konfliktbehandlung

Ein Konflikt tritt beim Importieren dann auf wenn ein Datensatz X sowohl in Projekt A als auch Projekt B geändert wurde ohne das zwischen den Änderungen ein Abgleich von A nach B oder umgekehrt gemacht wurde. Konflikte werden beim Import zunächst gesammelt und müssen am Ende gelöst werden. Es kann auch kein neuer Import gemacht werden solange es noch ungelöste Konflikte gibt.

Zur Konfliktlösung wird am Ende des Imports automatisch ein Dialog geöffnet. Dieser Dialog kann aber auch über das Projekt-Kontextmenü „Synchronisation / Konflikte anzeigen“ aufgerufen werden.

Im oberen Teil des Dialogs befindet sich ein Liste der Konflikte mit Angabe der Objektklasse, der ID des Datensatzes und ob der Konflikt durch Änderung oder Löschen des Datensatzes entstand. Wenn man auf einen Konflikt doppelt klickt, werden im unteren Teil die Unterschiede zwischen der lokalen Version des Datensatzes und der Version die importiert werden soll angezeigt. Um den Konflikt zu lösen hat man drei Möglichkeiten:

  1. Grundsätzlich die lokale Version beibehalten. Dazu gibt es in der oberen Toolbar den Button „lokale Version verwenden“. Wenn man diesen klickt, wird für alle markierten Konflikte die Version der lokalen Datenbank beibehalten und die importierte Version wird verworfen.
  2. Grundsätzlich die importierte Version verwenden. Dazu gibt es in der oberen Toolbar den Button „importierte Version verwenden“. Wenn man diesen klickt, wird für alle markierten Konflikte die Version des Imports übernommen.
  3. Manueller Abgleich. Hierbei kann pro Datensatz jedes einzelne Attribut, welches unterschiedlich ist einzeln übernommen oder verworfen werden. Dazu klickt man einen Konflikt doppelt an und kann in der unteren Tabelle mit Hilfe des Buttons den Wert des importierten Attributes übernehmen. Wenn alle Attribute abgeglichen sind, kann der Datensatz mit „Speichern“ übernommen werden und der Konflikt ist gelöst.