Transition
siehe auch Replikation
das Ziel der Transition ist nicht der Gegenseitige Abgleich von zwei OrgaMon-Datenbanken, sondern der Übergang von Daten aus einer Quell-datenbank in eine Ziel- Datenbank. Da die Referenz-Identitäten deckungsgleich sein könnten ist die Datenübernahme nicht 1:1 möglich. Im Rahmen des Übergangs von Daten werden alle RIDs aus der Quelldatenbank so "verfälscht" dass das Bild in der Zieldatenbank wiederum passt.
Liegt z.B. der RID "1" in Quelle und Ziel vor, und soll aber RID 1 der Quelle als neuer Datensatz in das Ziel übernommen werden, so wird im Rahmen der Transition automatisch ein neuer RID für den Datensatz ermittelt z.B. "2". Beim Übergang von abhängigen Tabellen werden auch alle Referenzen auf "1" auf den neuen RID "2" umgesetzt, aufgrund der durchgängigen Namenskonventionen im OrgaMon erfolgt dieser Vorgang automatisch.
Die theoretische Grundlage dieser Vorgehensweise ist die, dass inerhalb einer OrgaMon-Datenbank der konkrete Wert eines RIDs unerheblich ist, würde man also einen RID selbst umstellen und dabei alle Referenzen auch auf diesen neuen Wert umstellen, wäre die Datenbank inhaltlich zur unmodifizierten Datenbank identisch.
In ausnahme-Fällen ist eine Sortierreihenfolge abhängig vom RID.
Transitions-Tabellen
damit die Transition wiederaufsetzbar ist (z.B. nach einem Datenbank-Fehler oder nach einem Benutzer-Abbruch) werden im Rahmen des Abgleiches .csv - Tabellen geschrieben in der "Alter RID" neben "Neuem RID" aufgezeichnet wird.
Abhängigkeitsbaum
Ich gehe davon aus, dass man die Generations-Zähler hirarchisch anordnen kann, mit der Semantik dass Änderungen an einem Knoten eine Änderung an den Blättern implizieren aber nicht umgekehrt.
Generations-Zähler
Statements
Aufgabe eines Statement klassifizierenden Algorithmus wäre es, zu bestimmen von welchen Generations-Zählern ein Q-Statement abhängig ist. Es kann sein, dass die Kette durch Meta-Datenänderungen kürzer oder länger wird.
- Ist das resultierende Element (noch) gar nicht im Cache vertreten ist das Ergebnis "Fail"
Ein Cache-Element dürfte wiederverwendet werden sobald die Kette des Cache-Elements gleich ist mit der Kette