Ein Zweig ist ein Zeiger
Ein Zweig ist ein benannter Zeiger auf einen Stand von Ontologie, Abbildungen, Transformationen und Daten. Er entsteht im Augenblick, weil nichts kopiert wird: Er teilt alles mit der Hauptlinie, bis er etwas ändert.
Geschrieben wird nach dem Prinzip Copy-on-Write. Ändert der Zweig ein Objekt oder eine Datei, entsteht nur die geänderte Fassung, alles andere bleibt Verweis auf die Hauptlinie. Das ist der Gedanke von Git, und Tabellenformate wie Apache Iceberg führen Schnappschüsse und benannte Zweige nach demselben Prinzip.
Auch die Hauptlinie ist ein Zeiger, und zwar auf den Stand, den der Betrieb liest. Zusammenführen heißt, diesen Zeiger auf einen geprüften neuen Stand zu setzen, Zurücknehmen heißt, ihn auf den vorigen zu setzen. Beides sind Einträge im Verlauf und keine Eingriffe in Daten.
Hauptlinie und Zweig
Der Zweig geht von einer Version der Hauptlinie aus und wird dort gerechnet. Der Vergleich geht zur Freigabe; erst sie führt den Stand als neue Version in die Hauptlinie.
- Knoten: Version, Version, Zweig, Vergleich, Freigabe.
- Version Hauptlinie Version.
- Version verzweigt Zweig.
- Zweig gegen Hauptlinie Vergleich.
- Vergleich legt vor Freigabe.
- Freigabe führt zusammen Version.
Was ein Zweig ändern darf
Auf einem Zweig lassen sich Objekttypen und Eigenschaften ändern, Verknüpfungstypen, Abbildungen von Quellen, Transformationen, Regeln und Handlungstypen. Daten, die dadurch neu entstehen, etwa weil eine Abbildung anders rechnet, werden auf dem Zweig berechnet und dort abgelegt. Die Rohzone und die Quellen bleiben, wie sie sind: Der Zweig liest die Rohzone der Hauptlinie und schreibt sie nicht.
Ein Zweig schreibt nie in eine Quelle. Handlungen, die auf einem Zweig laufen, gehen an eine dafür eingerichtete Übungsumgebung der Quelle oder werden nur als Plan berechnet. Das Rückschreiben in den Betrieb bleibt der Hauptlinie vorbehalten; der Zweig hat dafür kein Recht.
Neue Daten aus den Quellen können dem Zweig weiter zufließen, solange er besteht. Damit der Vergleich nicht unter zwei verschiedenen Datenständen leidet, lässt sich ein Zweig auf einen Stichtag der Rohzone festlegen. Dann ist jeder Unterschied im Vergleich eine Wirkung der Änderung.
Vergleichen vor dem Zusammenführen
FORGE vergleicht Zweig und Hauptlinie auf drei Ebenen. Schema: welche Typen, Eigenschaften und Verknüpfungen sich ändern und ob die Änderung verträglich ist oder eine Migration braucht. Daten: welche Objekte hinzukommen, wegfallen oder in welchen Eigenschaften sich Werte unterscheiden, gezählt und mit Beispielen. Auswirkung: welche Anwendungen, Regeln, Handlungen, Rechte und Abnehmer auf die geänderten Typen verweisen.
Die Auswirkung folgt dem Abhängigkeitsgraphen der Ontologie. Wer eine Eigenschaft entfernt, sieht, welche Regel, die sie liest, ungültig würde, bevor sie es im Betrieb wird. Eine Änderung mit unverträglichen Wirkungen lässt sich nicht freigeben, solange diese Wirkung nicht behandelt ist.
Drei Ebenen des Vergleichs
Unten das Schema mit Typen und Verknüpfungen, darüber die Daten, oben die Auswirkung auf alles, was auf die Typen verweist.
- Auswirkung (was darauf verweist): Regel, Handlung, Abnehmer.
- Daten (hinzu · weg · anders): Objekt, Eigenschaft.
- Schema (verträglich oder Migration): Typ, Verknüpfung.
- folgt dem Graphen: fließt von schema nach auswirkung.
Zusammenführen und Konflikte
Hat sich die Hauptlinie seit der Verzweigung ebenfalls geändert, rechnet FORGE eine Dreiwegezusammenführung gegen den gemeinsamen Ausgangsstand. Änderungen an verschiedenen Teilen fügen sich von selbst. Ändern beide Seiten dieselbe Eigenschaft, denselben Typ oder dieselbe Abbildung unterschiedlich, ist das ein Konflikt, der mit beiden Fassungen vorgelegt wird. Kein Konflikt wird still zugunsten einer Seite entschieden.
Die Freigabe zum Zusammenführen ist ein eigenes Recht und folgt dem Muster der Freigabe: ein signiertes Ja für genau diesen Stand des Zweigs. Ändert sich der Zweig danach, ist das Ja verbraucht, und es braucht ein neues. Beim Zusammenführen laufen die Migrationen, dann steht die neue Version der Ontologie. Die vorige bleibt lesbar, solange Abnehmer sie nennen.
Rechte und Lebensdauer
Ein Zweig erweitert keinen Zugriff. Markierungen und Rechte an Typen und Eigenschaften gelten auf dem Zweig wie in der Hauptlinie; wer ein Feld dort nicht lesen darf, liest es auch im Vergleich nicht. Zweig anlegen, Zweig lesen und Zweig zusammenführen sind drei verschiedene Rechte. Wer ändert, gibt nicht frei.
Zweige haben ein Ablaufdatum. Ein abgelaufener Zweig wird archiviert, bis seine Aufbewahrungsfrist endet. Was nur auf ihm geschrieben wurde, verschwindet dann mit ihm, nie aber Daten der Hauptlinie. So sammeln sich keine vergessenen Zweige an, die Speicher binden und alte Daten mit alten Rechten festhalten.
Eckdaten
- Zweig
- benannter Zeiger auf Ontologie, Abbildungen, Transformationen und Daten
- Schreiben
- Copy-on-Write; unveränderte Teile bleiben Verweis auf die Hauptlinie
- Rohzone
- nur lesend; Stichtag festlegbar
- Quellen
- werden nie beschrieben; Handlungen nur in einer Übungsumgebung oder als Plan
- Vergleich
- Schema, Daten, Auswirkung entlang des Abhängigkeitsgraphen
- Zusammenführen
- Dreiwegezusammenführung, Konflikte mit beiden Fassungen, Freigabe für genau diesen Stand
- Zurücknehmen
- Zeiger auf die vorige Version, Eintrag im Verlauf
- Rechte
- anlegen, lesen und zusammenführen getrennt; Markierungen gelten auf dem Zweig wie in der Hauptlinie
Weiter
- FORGE · TechnikAnbindungWie FORGE Datenbanken, SAP, Dateien und Ereignisströme anbindet, Änderungen aus dem Log der Quelle liest und jedem Feld seine Herkunft mitgibt.
- FORGE · TechnikOntologieWie FORGE Zeilen auf Objekttypen abbildet, dasselbe Objekt über Quellen hinweg erkennt und zu jedem Wert Gültigkeitszeit und Erfassungszeit führt.
- FORGE · TechnikRückschreibenWie eine Handlung geprüft, über die Schnittstelle der Quelle geschrieben, gegen doppelte Ausführung gesichert und bei Teilfehlern ausgeglichen wird.
- FORGE · TechnikPipelinesWie FORGE Transformationen als Quelltext mit Version und Tests führt, Abhängigkeiten als Graph baut und jede Ausgabe bis zur Rohzeile zurückverfolgt.
- FORGE · TechnikStreamingWie FORGE Ereignisströme aus einem Log liest, die Ordnung je Schlüssel hält, Doppel über Nummern verwirft und Verspätete als Korrektur ablegt.
- ProduktFORGEBetrieb und Daten einer Organisation an einem Ort
Welche Änderung an Ihren Datenstrukturen schieben Sie heute auf, weil sie den Betrieb berühren würde? Die spielen wir mit Ihnen auf einem Zweig durch.