Demo · Migration

Eine Migration braucht vor allem einen sauberen Ablauf.

Konvertiert werden muss in jedem Fall: Typen übersetzen, Daten bereinigen, Werte umrechnen, die es im Ziel so nicht gibt. Die meiste Zeit kostet aber das Zusammenspiel. Es sind Hunderte Tabellen statt einer Handvoll, die Reihenfolge ergibt sich aus den Fremdschlüsseln, nach jeder Stufe wird geprüft, das Zeitfenster ist begrenzt, und um vier Uhr morgens gibt es ein paar rote Tabellen, die man ohne die anderen wiederholen will.

JOX deckt beides ab. Die Datenmanipulationen der Konvertierung laufen als SQL- und OS-Schritte in JOX, nachvollziehbar, mit Ausgabe und einzeln wiederholbar. Außerdem führt JOX alle Schritte in der richtigen Reihenfolge aus, so parallel, wie Ihre Datenbanken es vertragen, prüft nach jeder Stufe und wiederholt gezielt die gescheiterten Schritte. Diese Seite zeigt das an einem vollständigen Fall.

Varianten

Drei Arten von Migration.

Bei manchen Migrationen bleibt die Struktur gleich und nur die Datenbank wechselt, bei anderen ist das Ziel eine völlig andere Struktur. Häufig ist es auch eine neue Version der eigenen Anwendung mit ein paar geänderten Tabellen und Spalten.

Andere Datenbank

Gleiche Struktur, neues System.

Tabellen, Schlüssel und Daten ziehen um, die Typen werden übersetzt. Das ist der Fall, den diese Seite zeigt.

Andere Struktur

Ein neues Datenmodell als Ziel.

Tabellen werden zusammengeführt oder aufgeteilt, Werte umgeschlüsselt, Stammdaten bereinigt. Jede dieser Umformungen ist ein eigener Schritt mit eigener Prüfung und lässt sich wiederholen.

Neue Version

Ein neues Release der eigenen Anwendung.

Ein paar neue Spalten, eine geteilte Tabelle, geänderte Schlüssel: Der Umstieg auf die neue Version ist eine kleine Migration mit denselben Anforderungen an Reihenfolge, Prüfung und Wiederholbarkeit.

In allen drei Fällen wird die Migration in JOX zu einem wiederholbaren, deterministischen Prozess. Sie läuft so parallel, wie Ihre Systeme es tragen, und bei jedem Durchgang mit denselben Schritten in derselben Reihenfolge. Die Ergebnisse sind jederzeit nachvollziehbar: Jeder Schritt hat Status und Ausgabe, jede Tabelle ihren Abgleich.

Der Fall

Ein CRM-Schema, von MariaDB nach PostgreSQL.

Das Schema wurde eigens für die Demo erzeugt. Es ist so groß, dass niemand die Schritte von Hand schreiben will, und enthält die Fallen, an denen echte Migrationen scheitern.

Umfang

202 Tabellen und 6 Views in elf Fachbereichen.

Stammdaten, Organisation, Kunden und Kontakte, Vertrieb, Produkte, Aufträge, Rechnungen, Verträge, Service, Marketing, Aktivitäten. Dazu kommen Auto-Increment, Views und Grants an zwei Rollen, also die Objekte, die man leicht vergisst.

Reihenfolge

307 Fremdschlüssel, bis zu zehn Ebenen tief.

Eine Gutschriftsposition hängt über Gutschrift, Rechnung, Auftrag und Kunde bis an die Stammdaten. Die Reihenfolge wird aus dem Schema abgeleitet und nicht in einer Liste gepflegt.

Größe

Kleine, große und partitionierte Tabellen.

Gut die Hälfte der Tabellen ist klein, der Rest reicht bis 700.000 Zeilen, vier Bewegungstabellen sind nach Monat partitioniert. Für jede Größenklasse gibt es einen eigenen Ladeweg.

Der Lauf in JOX

Ein Migrationslauf ist eine Order.

Die Migration steht in JOX als Gruppe mit einigen hundert Job-Templates; jede Tabelle hat ihre eigenen Jobs und Abhängigkeiten. Jeder Lauf ist eine Order dieser Gruppe, und der zehnte Lauf macht nicht mehr Aufwand als der erste.

Vorher

Prüfungen vor dem Start.

Geprüft wird, ob das Exportverzeichnis existiert und das Ziel es lesen kann, ob die Partitionen noch den geplanten entsprechen und ob es die Rollen gibt, an die gegrantet wird. Reste eines früheren Laufs werden aus dem Ziel geräumt. Schlägt eine Prüfung fehl, startet nichts.

Bewegen

Drei Ladewege, abhängig von der Größe.

Kleine Tabellen gehen in einem Job direkt von Quelle zu Ziel. Große werden entladen und mit COPY geladen. Die Datei wird direkt dort erzeugt, wo das Ziel sie liest. Partitionierte Tabellen bekommen dieses Paar je Partition.

Danach

Schlüssel, Indizes und Fremdschlüssel so früh wie möglich.

Der Fremdschlüssel von Auftrag auf Kunde wartet nur auf diese beiden Tabellen und nicht auf „alle Daten“. Danach folgen Sequenzen mit dem richtigen Startwert, Views und Grants.

Abgleich

Abgleich jeder Tabelle mit Zeilenzahl und Prüfsumme.

Zeilenzahl und Prüfsumme beider Seiten werden je Tabelle und je Lauf in einer Kontrolltabelle im Ziel abgelegt. Ein SQL-Check wertet sie aus und meldet grün oder rot, mit Ausgabe und wiederholbar.

Wiederholen

Nur die fehlgeschlagenen Schritte wiederholen.

Die Schritte stehen in Subgruppen: Vorprüfung, Aufräumen, Tabellen anlegen, Bewegen, Nacharbeiten, Abgleich. Ein Lauf lässt sich auf einen Teil beschränken, einzelne Jobs lassen sich wiederholen, die Order lässt sich anhalten.

Freigabe

Abschluss mit manueller Freigabe.

Das abschließende Aufräumen läuft erst nach einer manuellen Freigabe. Nach dem Lauf zeigt die Order-Map den kritischen Pfad, also welche Tabelle die Laufzeit bestimmt hat und warum.

Eine Migration ist ein komplizierter Vorgang, und je öfter sie geprobt wurde, desto besser geht sie aus. Man plant deshalb viele Durchgänge ein und nicht nur eine Probe vor dem Ernstfall. Da jeder Durchgang eine Order ist, ist das in JOX der Normalfall und erfordert keinen Umbau.

Woher die Gruppe kommt

Die Schritte werden generiert.

Die Migrationsgruppe in der Demo hat niemand von Hand angelegt. Sie wird von einem Planer erzeugt, einem eigenen Werkzeug, mit dem wir Migrationsprojekte vorbereiten. Er liest das Data Dictionary der Quelle, ordnet die Tabellen nach Fremdschlüsseln und Größe, wählt je Tabelle den Weg und schreibt das Ergebnis als Gruppe, die JOX importiert.

Der Planer selbst ist nicht Teil der Demo; wir bringen ihn in ein Projekt mit. Für Ihr Schema braucht er weder Daten noch Zugang, nur das Ergebnis eines Leseskripts über Ihr Dictionary. Daraus erstellen wir bei uns Ihren Plan.

Nach diesem Muster haben wir über Jahre Migrationen gefahren: Ein Analysewerkzeug plant, JOX führt aus. Die Demo zeigt also ein Verfahren, das sich in der Praxis bewährt hat.

Know-how

Fachliche Fragen einer Migration.

Typen zu übersetzen und Daten zu bewegen ist lösbar. Schwierig wird es bei der Bedeutung der Daten, und dort entscheidet sich auch, ob eine Migration gelingt.

Bedeutung

Die Bedeutung der Daten.

Eine Spalte im Altsystem bedeutet oft etwas anderes, als ihr Name sagt, und im neuen Modell gibt es sie in dieser Form nicht mehr. Die Zuordnung von alt zu neu ist eine fachliche Entscheidung.

Regeln

Umschlüsseln nach Regeln, die der Fachbereich festlegt.

Für Status, Produkte, Tarife und Kategorien muss festgelegt werden, was aus jedem alten Wert im neuen System wird. Diese Regeln entstehen im Projekt und ändern sich unterwegs. Nach jeder Änderung müssen sie erneut über alle Daten laufen.

Datenqualität

Altlasten, die erst beim Umzug sichtbar werden.

Dubletten, unvollständige Sätze, Werte, die es nach den Regeln gar nicht geben dürfte. Was bereinigt, übernommen oder abgelehnt wird, entscheidet die Fachseite und nicht das Ladeprogramm.

Laufende Vorgänge

Geschäftsbetrieb während der Migration.

Offene Aufträge, laufende Verträge, Rechnungen mitten im Zyklus: Sie müssen im neuen System mit ihrer Historie ohne Bruch weiterlaufen.

Nachweis

Die Fachseite muss die Migration abnehmen können.

Dafür reicht „es lief durch“ nicht. Die Fachseite muss sehen können, was mit jedem Datensatz geschehen ist und warum. Abgleiche, Berichte und Ausgaben jedes Schritts machen das Ergebnis prüfbar.

Wiederholbarkeit

Jede Klärung führt zu einem neuen Durchgang.

Weil die Fragen fachlich sind, kommen die Antworten nach und nach. Lässt sich die Migration jederzeit vollständig und gleich wiederholen, ist jede Klärung ein kurzer Schritt und kein neues Projekt.

Dafür bringen wir neben JOX unsere Erfahrung mit. Wir begleiten die fachliche Klärung und setzen jede Entscheidung als nachvollziehbaren Schritt im Ablauf um. Technische Eigenheiten der Datenbanken wie Typen, Datumswerte und Schlüssel erledigt der Ablauf nebenbei; im Demo-Lauf sind sie als eigene Schritte zu sehen.

Andere Datenbanken

Migrationen mit anderen Datenbanken.

Wir haben Datenbank-Migrationen in vielen Konstellationen durchgeführt: zwischen unterschiedlichen Systemen, auf neue Strukturen und auf neue Versionen von Anwendungen. Die entscheidenden Fragen waren dabei fast immer fachlich: was die Daten bedeuten, nach welchen Regeln sie ins neue System übergehen und wie die Fachseite das Ergebnis abnehmen kann.

JOX steuert Migrationen zwischen allen Datenbanken, die es anbindet: Oracle, PostgreSQL, MariaDB und MySQL, DB2, Informix, Snowflake und weitere. Ablauf, Prüfungen und Stufen bleiben gleich; anders sind nur die Abfragen auf das Dictionary und das Entladeformat. Schreiben Sie uns, welche Systeme Sie einsetzen.

Selbst ansehen

Sehen Sie sich den Lauf in Ihrer eigenen Umgebung an.

Nach der Registrierung bekommen Sie eine eigene JOX-Umgebung mit diesem Fall: Quelle, Ziel und die Migrationsgruppe, bereit für die erste Order. Sie können uns auch direkt von Ihrer Migration erzählen.