Technical Report CS-02-21

Die Seite wird erstellt Juliane Scherer
 
WEITER LESEN
Technical Report CS-02-21
Der BACKCHASE zur Unterstützung von Data
     Provenance und Schema-Evolution
      Florian Rose und Andreas Heuer

                  Universität Rostock
      Fakultät für Informatik und Elektrotechnik
                 Institut für Informatik
  Lehrstuhl für Datenbank- und Informationssysteme

         Long version of a 6-page paper for
32nd GI-Workshop on Foundations of Databases 2021,

                  erhältlich unter:
        https://dbis.informatik.uni-rostock.de
Der BACKCHASE zur Unterstützung von Data Provenance
              und Schema-Evolution

                             Florian Rose                                            Andreas Heuer
                    Lehrstuhl für Datenbank- und                               Lehrstuhl für Datenbank- und
                        Informationssysteme                                        Informationssysteme
                        Institut für Informatik                                    Institut für Informatik
                         Universität Rostock                                        Universität Rostock
                Florian.Rose@uni-rostock.de                                 Andreas.Heuer@uni-rostock.de

ABSTRACT                                                              gesamten Datenbestandes anzulegen, ist es wünschenswert,
Der CHASE-Algorithmus ist ein Multifunktionswerkzeug der              nur genau diejenigen Tupel in der aktuellen Schemaversi-
Datenbankforschung. Ursprünglich für die Optimierung des            on aufzuheben, welche an einer Anfrage beteiligt waren, de-
Datenbankentwurfs genutzt, wird er heutzutage auch für               ren Reproduzierbarkeit vorausgesetzt wird. Weiter soll dies
den Datenaustausch und Data Cleaning verwendet und kann               auch nur passieren, falls die Schema-Evolution dafür sorgt,
ebenfalls genutzt werden, um Anfragen zu optimieren. Für             dass das entsprechende Tupel in der nächsten Version hierfür
einige Anwendungen reicht eine CHASE-Phase alleine je-                nicht ausreichend abgebildet wird.
doch nicht aus. Teilweise wird eine Nachbearbeitung, eine so-            Der CHASE-Algorithmus (siehe Abschnitt 2.1) bietet sich
genannte BACKCHASE-Phase, benötigt. Dies ist beispiels-              hier an. Der CHASE arbeitet Parameter, etwa Abhängigkei-
weise der Fall, wenn Auswertungen zum Zweck der Rück-                ten (also spezielle Integritätsbedingungen) oder Anfragen,
verfolgbarkeit (Provenance) invertiert werden sollen.                 in ein Datenbankobjekt, etwa Anfragen oder Datenbankin-
  In dieser Arbeit fassen wir zusammen, wie der Ansatz des            stanzen, ein. Er kann daher sowohl zur Transformation von
CHASE und BACKCHASE verwendet werden kann, um die                     Datenbanken mit Hilfe von Anfragen als auch zur Transfor-
Why-Provenance von Anfragen unter Schema-Evolution zu                 mation von Anfragen unter Abhängigkeiten eingesetzt wer-
gewährleisten.                                                       den. Da er direkt zur Bildung der Anfrageergebnisse und
                                                                      einer neuen Schemaversion genutzt werden kann [1], kön-
                                                                      nen andere CHASE-Schritte zur Berechnung der aufzuhe-
Keywords                                                              benden Tupel direkt dort ansetzen können. Darüber hinaus
CHASE, BACKCHASE, Data Provenance, Schema-Evolution                   sind Evolutionsschritte und Anfragen für den CHASE vom
                                                                      gleichen Parametertyp, sodass algorithmisch nicht zwischen
1.   MOTIVATION                                                       ihnen unterschieden werden muss.
                                                                         Wir werden im folgenden Abschnitt 2 den Stand der For-
   Die Rückverfolgbarkeit von Daten bei wissenschaftlichen
                                                                      schung in den Bereichen CHASE, BACKCHASE, Data Pro-
Auswertungen bietet die Grundlage der Nachvollziehbarkeit
                                                                      venance und Schema-Evolution zusammenfassen. Danach
von veröffentlichten Statistiken, ein wichtiges Qualitätsmerk-
                                                                      werden wir in Abschnitt 3 die Nutzung des BACKCHASE
mal der wissenschaftlichen Praxis. Für das Forschungsdaten-
                                                                      für die Data Provenance, speziell die Why-Provenance, und
management ist die Provenance der Auswertungsdaten da-
                                                                      der Schema-Evolutionen vorstellen. In Abschnitt 4 werden
her von großem Interesse. Allerdings unterliegen die Struk-
                                                                      wir die den vorgestellten Ansatz hinsichtlich der Terminie-
turen solcher Datenbanken ebenfalls Schema-Evolution [4].
                                                                      rung und der Erweiterung des Standard-CHASE untersu-
Dies kann die Reproduzierbarkeit von Auswertungen, die
                                                                      chen, bevor wir in Abschnitt 5 abschließend offene Frage-
unter der letzten Schemaversion durchgeführt wurden, be-
                                                                      stellungen skizzieren.
einträchtigen, z. B. falls ein Attribut entfernt wird, welches
Teil der Ergebnisrelation für diese Auswertung war. Offen-
sichtlich ist es ohne dieses Attribut nicht möglich, das voran-      2.    STAND DER FORSCHUNG
gegangene Anfrageergebnis mit den zugrundeliegenden Da-                 Wir stellen nun den CHASE-Prozess vor, motivieren eine
ten zu reproduzieren. Folglich muss vor der Überführung in          zweite CHASE-Phase, die BACKCHASE genannt wird, und
die nächste Schemaversion sichergestellt werden, dass die an         stellen den Stand der Forschung in beiden Gebieten sowie
der Anfrage beteiligten Tupel in der aktuellen Schemaversi-           in unseren grundlegenden Fragestellungen why-Provenance
on ”eingefroren” werden. Statt hierfür jedoch eine Kopie des         und Schema-Evolution vor.

                                                                      2.1    CHASE & BACKCHASE
                                                                        Der CHASE-Algorithmus ging aus der Datenbankfor-
                                                                      schung als Werkzeug zum Schlussfolgern mit Integritätsbe-
                                                                      dingungen hervor. Dabei wird eine Menge von Abhängig-
                                                                      keiten Γ, der CHASE-Parameter, auf ein CHASE-Objekt
                                                                      d angewandt und erweitert dies durch Forward-Chaining
32nd GI-Workshop on Foundations of Databases (Grundlagen von Daten-
banken), 25.05.2021 - 28.05.2021, Grimma, Germany.                    so, dass d dem CHASE-Parameter Γ genügt [5]. Grundle-
Copyright is held by the author/owner(s).                             gend werden zwei Arten von Abhängigkeiten, die equality-
generating dependencies (EGDs) und tuple-generating de-             • (4) Anfragen semantisch optimieren, indem man Inte-
pendencies (TGDs), unterschieden [13]. Eine EGD stellt die            gritätsbedingungen als CHASE-Parameter in die An-
Gleichheit bestimmter Werte sicher und ist eine Formel der            frage einarbeitet [15].
Form
                                                                    Die Anwendungsfälle (1) und (2) wenden also Datentrans-
                    ∀~      x) → x1 = x2 .
                     x : F (~                                    formationen (s-t-TGDs) oder Abhängigkeiten (EGDs, TGDs)
Hierbei ist ~x ein Variablenvektor mit x1 , ..., xn als Kompo-   auf Datenbankinstanzen an. Der CHASE realisiert hierbei
nenten. F ist eine Konjunktion von Prädikaten der Form          nun diese Aufgabe vollständig. Wir werden später sehen,
Ri (~x), wobei Ri Relationenschemata des Datenbankschemas        dass in unserem Fall der Bestimmung der why-Provenance
sind. TGDs hingegen rufen die Generierung neuer Tupel her-       für eine Anfrage der CHASE diese Anfrage ausdrücken kann,
vor und sind Formeln der Form                                    für die Bestimmung der why-Provenance aber eine BACK-
                                                                 CHASE-Phase angeschlossen werden muss, die die Invertie-
                 ∀~x : F1 (~
                           x) → ∃~
                                 y : F2 (~
                                         x, ~
                                            y ).                 rung der Anfrage umsetzt.
Hierbei muss in F1 jede Komponente aus ~    x mindestens ein-       Auch für die Anwendungsfälle (3) und (4) reicht eine ein-
mal vorkommen. Eine besondere Form von TGDs sind source-         zelne CHASE-Phase nicht aus. Die CHASE-Phase berechnet
to-target-TGDs (s-t-TGDs). Bei ihnen ist der Rumpf (linke        hier ein Zwischenergebnis, welches für die BACKCHASE-
Seite der Abhängigkeit) über einem Quellschema S und der       Phase, in diesem Fall eine zweite Anwendung des CHASE
Kopf (rechte Seite) über einem Zielschema S 0 definiert. Ei-    mit modifizierten Abhängigkeiten, verwendet wird [9].
ne s-t-TGD kann somit als Datenbanktransformation oder
                                                                    • Im Anwendungsfall (3) werden Sichten, etwa darge-
(falls das target aus nur einer Relation besteht) als Anfra-
                                                                      stellt durch s-t-TGDs, in Anfragen eingearbeitet. Da-
ge an eine Datenbank verstanden werden. Durch die Be-
                                                                      durch wird die Originalanfrage um nutzbare Sichten
schränkung auf Konjunktionen von Prädikaten, betrachten
                                                                      erweitert. Da die Originalanfrage aber nun durch eine
wir im Folgenden nur Anfragen und Evolutionsoperationen,
                                                                      äquivalente Anfrage, die ausschließlich Sichten nutzt,
die ausschließlich als Konjunktionen darstellbar sind. Dis-
                                                                      ersetzt werden soll, muss diese Art der Minimierung
junktionen lassen sich spätestens in der BACKCHASE-Phase
                                                                      der erweiterten Anfrage in der BACKCHASE-Phase
nach der Invertierung nicht ohne Zusatzinformationen (Zeu-
                                                                      realisiert werden.
genbasis einzelner Tupel) verarbeiten.
   Bei der Anwendung des CHASE wird dann im CHASE-
                                                                    • Im Anwendungsfall (4) werden Integritätsbedingungen
Objekt nach Mustern des Rumpfes jeder Abhängigkeit ge-
                                                                      durch den CHASE in eine Anfrage eingearbeitet. Die
sucht. Ein solcher Trigger ist aktiv, falls der Kopf seiner
                                                                      Formalisierung der Integritätsbedingungen ist somit in
entsprechenden Abhängigkeit noch nicht im CHASE-Objekt
                                                                      der Anfrage bekannt“ und kann dort genutzt wer-
erfüllt ist.                                                                      ”
                                                                      den. Um diese Kenntnis aber für die semantische An-
                                                                      frageoptimierung ausnutzen zu können, muss in einer
 Algorithm 1: Standard-CHASE auf CHASE-Objekt d                       BACKCHASE-Phase die Anfrage minimiert werden,
  forall Trigger τ für Abhängigkeit γ ∈ Γ do                        indem aufgrund der Integritätsbedingungen überflüs-
      if τ ist aktiv then                                             sig gewordene Anfrageoperatoren entfernt werden.
          if τ hat Form ∀~          x) → ∃~
                            x : F1 (~      y : F2 (~
                                                   x, ~
                                                      y ) then
              Nimm Kopf von τ in d auf                           Im Anwendungsfall (3) wird die BACKCHASE-Phase wie-
          else if τ hat Form ∀~         x) → x1 = x2 then
                                 x : F (~                        der mit dem CHASE realisiert. Die BACKCHASE-Phase
              if x1 , x2 sind Konstanten und x1 6= x2 then       muss aber nicht zwingend eine zweite CHASE-Phase sein
                  CHASE schlägt fehl                            [16]. Je nach Anwendungsfall können auch hier verschiedene
              else if x2 ist Konstante then                      Techniken Ansatz finden. Etwa werden im Anwendungsfall
                  x1 ← x2                                        (4) verschiedene Techniken zur semantischen Optimierung
              else                                               eingesetzt.
                  x2 ← x1
                                                                 Die BACKCHASE-Phase
                                                                 In Abbildung 1 zeigen wir schematisch den Einsatz des
                                                                 BACKCHASE für die Anwendungsfälle (3) und (4): Im An-
Anwendungen des CHASE                                            wendungsfall (3) wird eine Anfrage Q an Basisrelationen ei-
                                                                 ner Datenbanken um Zugriffe auf verwendbare Sichten an-
Da sich diverse Bedingungen als EGDs bzw. TGDs formulie-
                                                                 gereichert, die CHASE-Parameter enthalten dann die Sicht-
ren lassen und die Berechnung deren Implikation auf Instan-
                                                                 definitionen. Die BACKCHASE-Phase minimiert nun die-
zen oder Anfragen verschiedene Ziele erfüllen kann, ist der
                                                                 se erweiterte Anfrage und schränkt sie (falls möglich) aus-
CHASE vielseitig einsetzbar. So lassen sich unter anderem
                                                                 schließlich auf Zugriffe über die Sichtrelationen ein (Anfrage
   • (1) Datenmigrationen als s-t-TGDs für den CHASE            Q0 ). In der BACKCHASE-Phase wird der CHASE mit in-
     auf einer Datenbankinstanz formulieren [10],                versen Sichtdefinitionen angewendet [9]. Im Anwendungsfall
                                                                 4 werden Integritätsbedingungen als CHASE-Parameter in
   • (2) Data-Cleaning-Probleme durch Anwendung des
                                                                 die Anfrage Q eingearbeitet. Die BACKCHASE-Phase mini-
     CHASE auf einer Datenbankinstanz mit bestimmten
                                                                 miert dann diese Anfrage, indem sie überflüssige Operatio-
     EGDs zur Bereinigung lösen [12],
                                                                 nen (etwa Verbunde) eliminiert. In diesem Anwendungsfall
   • (3) Anfragen durch Sichten beantworten, indem man           ist die BACKCHASE-Phase ein durch homomorphe Abbil-
     den CHASE mit den Sichtdefinitionen auf der Anfrage         dungen der Anfrage gesteuerter, äquivalenzerhaltender Re-
     als CHASE-Objekt ausführt [9], sowie                       duktionsprozess [15].
neue Anforderungen an die Anwendung [17]. Deshalb rei-
                                                                chen die möglichen Operationen während einer Evolution
                                                                vom simplen Hinzufügen eines neuen Attributs bis hin zu
                                                                komplexen Berechnungen neuer Werte. Auch Evolutions-
                                                                operationen lassen sich als s-t-TGDs und EGDs darstel-
                                                                len. Hierbei ist das Quellschema die aktuelle Schemaversi-
                                                                on und das Zielschema die Folgeversion. Sowohl Anfragen
                                                                als auch Schema-Evolution liegen die Basisoperationen Se-
                                                                lektion (Attribut gleich Attribut und Attribut gleich Kon-
                                                                stante), Projektion, Verbund und die Umbenennung von Re-
                                                                lationen und Attributen zugrunde. In beiden Fällen inter-
           Figure 1: CHASE und BACKCHASE                        essieren uns die CHASE-Inversen [11]. Diese drücken den
                                                                Grad des Informationsverlustes aus, wenn wir versuchen,
                                                                die Originalinstanz aus dem CHASE-Ergebnis durch Inver-
Die BACKCHASE-Phase für die why-Provenance                      tierung der Abhängigkeiten zu rekonstruieren. Dies ist für
Die BACKCHASE-Phase wurde für die Anwendungsfälle (1)         unseren Anwendungsfall von großer Relevanz, da die Be-
und (2) bisher nicht benötigt. Wir werden sie in Abschnitt     rechnung der an der Anfrage beteiligten Tupel und ihrer
3 aber einführen. Hier wollen wir das Anfrageergebnis ei-      Attribute Grundlage des in Abschnitt 3 vorgestellten An-
ner Anfrage, verstanden als Datenbanktransformation wie         satzes ist. Dafür rekonstruieren wir die Teilinstanz unserer
in (1), mit Hilfe der Why-Provenance auf die minimale Zeu-      Originaldatenbank, müssen dabei aber darauf achten, dass
genbasis, also die relevanten Originaltupel aus der Daten-      keines der für die Anfrage bzw. Evolution relevanten Tupel
bank, zurückführen. Der Schritt der Why-Provenance wird       bei der Rekonstruktion verloren geht. Daher benötigen wir
durch eine erweiterte inverse Anfrage dargestellt, die wir      bezüglich der an einer Anfrage bzw. Evolution beteiligten
als BACKCHASE-Phase verstehen. Analog werden wir ei-            Tupel eine tupelerhaltend-relaxierte Inverse, d. h., dass die
ne Schema-Evolution als eine Datenbanktransformation wie        durch den BACKCHASE gewonnene Datenbankinstanz auf
in (1) verstehen. Um die neue Datenbank nach der Evo-           die Originalinstanz abbildbar ist und die gleiche Tupelzahl
lution in die alte Darstellung vor der Evolution rückrech-     besitzt [2].
nen zu können, müssen wir auch hier die Evolution in einer
BACKCHASE-Phase invertieren.                                    3.    NUTZUNG DES BACKCHASE
                                                                   Zunächst zeigen wir in Unterabschnitt 3.1, wie die oben
2.2   Data Provenance                                           genannten Basisoperatoren und komplexere Operationen für
   Die Provenance beschäftigt sich mit der Frage nach dem      Anfragen und Evolutionen als Abhängigkeiten (s-t-TGDs),
Ursprung von Daten. Insbesondere ist dies für die Nach-        und somit als Parameter für den CHASE-Algorithmus, for-
vollziehbarkeit von wissenschaftlichen Auswertungen inter-      muliert werden können. Wir verwenden hierbei eine Kurz-
essant. Hauptsächlich unterscheidet man drei Abstraktions-     schreibweise, bei der nur existenzquantifizierte Variablen ex-
stufen der Provenance, Where-, Why- und How-Provenance.         plizit als solche angegeben werden. Die Namen der Variablen
Diese beschreiben in unterschiedlichem Detailgrad, woher        entsprechen den Namen der Attribute.
die Ergebnisdaten stammen. Dies reicht von der Benennung           Danach werden wir in Unterabschnitt 3.2 dann die Basis
der Datenquellen (Where), also den Relationen und Daten-        für den BACKCHASE-Prozess legen, indem wir die Pro-
bankschemata [7], über die Angabe der beteiligten Tupel        venance- und Evolutionsschritte über mehrere Stufen hin
(Why), einer sogenannten Zeugenbasis [6], bis zu Provenance-    invertieren und komponieren. Hierbei müssen wir insbeson-
Polynomen (How) [14], welche aussagen, wie die beteiligten      dere berücksichtigen, dass wir bei der Komposition verschie-
Tupel kombiniert wurden.                                        dener Schritte wertvolle Zwischeninformationen nicht verlie-
   Der CHASE kann genutzt werden, um ein Anfrageergeb-          ren. Die s-t-TGDs werden hier als Transformationssprache
nis zu berechnen. Hierzu formuliert man die Anfrage als         nicht mehr ausreichen, wir müssen auf Konstrukte der Prädi-
s-t-TGD und wendet sie mittels des CHASE auf die ent-           katenlogik zweiter Ordnung (so-TGDs, second-order TGDs)
sprechende Datenbankinstanz an. Aus dem Anfrageergebnis         ausweichen [11].
lassen sich die beteiligten Tupel errechnen, indem man die
Inverse der Auswertung bildet. Hierzu führt man den CHA-       3.1   Anfragen und Schema-Evolution als s-t-
SE auf der Ergebnisrelation mit der invertierten s-t-TGD              TGDs
der Anfrage aus. Je nach Art der Anfrage können sich un-         Wir werden nun die von uns verwendeten Operatoren der
terschiedliche Arten von Inversen ergeben, welche mittels zu-   Relationenalgebra als s-t-TGDs darstellen.
sätzlicher Provenance-Annotationen noch verbessert werden
können [2, 11]. Ziel ist es, eine möglichst genaue CHASE-     Selektion.
Inverse zu erhalten, auch wenn Anfragen in der Regel ver-         Die Selektion auf Konstanten A = c lässt sich als s-t-
lustbehaftet sind und sich somit nicht jede Information re-     TGD formulieren, indem die Konstante an die entsprechende
konstruieren lässt.                                            Stelle im relationalen Atom gesetzt wird.
2.3   Schema-Evolution                                                    R(A1 , ..., An−1 , c) → R0 (A1 , ..., An−1 , c)
  Die Evolution eines Datenbankschemas ist der Übergang        Die Inverse kann hier gebildet werden, indem Kopf und
von einer Schemaversion in eine neue. Diese sind durch Än-     Rumpf der Abhängigkeit vertauscht werden.
derungen im Anwendungsgebiet begründet, z. B. neue rele-
vante Informationen, die zuvor nicht erhoben wurden, oder                    R0 (A1 , ..., An , c) → R(A1 , ..., An , c)
Bezüglich der Originalinstanz liegt hier eine tupelerhaltend-   Dabei gilt, dass der weniger genaue Inversentyp dominiert
relaxierte Inverse vor [2]. Bezüglich der an der Anfrage bzw.   [2, 11]. Hierbei muss jedoch in einem Fall besonders auf die
Evolution beteiligten Tupel liegt jedoch eine exakte Inverse     Projektion geachtet werden. Für die Auswertung relevante
vor [18]. Die Selektion Ai = Aj lässt sich analog umsetzen,     Attribute, die nicht im Kopf der TGD vorkommen, müssen
indem Ai bzw. Aj an den entsprechenden Stellen in den            besonders markiert werden. Darauf gehen wir später in die-
relationalen Atomen gleichgesetzt wird.                          sem Abschnitt genauer ein. Es können aber auch komplexe-
                                                                 re Auswertungen vorkommen, die z. B. Aggregate berechnen
Projektion.                                                      oder völlig neue Werte generieren. In diesen Fällen ist der
  Die Projektion lässt sich als s-t-TGD formulieren, indem      Standard-CHASE nicht ausreichend, um die CHASE- oder
nur die Attribute, auf welche projiziert werden soll, im Kopf    BACKCHASE-Phase abzuschließen. Solche Auswertungen,
der Abhängigkeit vorkommen, z. B.                               lassen sich jedoch mit Hilfe von second-order-Abhängigkeiten
                                                                 umsetzen [11]. Hier können Funktionen definiert werden,
            R(A1 , A2 , A3 , ..., An ) → R0 (A1 , A2 ).          welche die Generierung neuer Konstanten erlauben. Sind
Da der Standard-CHASE jedoch nur für aktive Trigger den         diese selbst nicht invertierbar, werden an den entsprechen-
Kopf der Abhängigkeit in das Ergebnis der Anfrage bzw.          den Stellen in der BACKCHASE-Phase Nullwerte generiert.
Evolution aufnimmt, wird hier eine Duplikateliminierung vor-
genommen, die nur eine relaxierte CHASE-Inverse bedeutet         3.2    Komposition von Provenance- und Evolu-
[2]. In Bezug auf die an der Anfrage beteiligten Tupel ge-              tionsschritten
nügt dies jedoch einer tupel-erhaltend relaxierten Inverse,        Im Folgenden stellen wir einen Ansatz vor, welcher die Be-
da Tupel, für die kein aktiver Trigger existiert, auch nicht    rechnung derjenigen Tupel erlaubt, welche nach einer Evolu-
im Anfrageergebnis vorkommen. Die Inverse der obigen s-t-        tion nicht mehr ausreichend in der nächsten Schemaversion
TGD lautet dann                                                  abgebildet werden, um bestimmte Anfragen zu reproduzie-
      R0 (A1 , A2 ) → ∃A3 , ...An : R(A1 , A2 , A3 , ..., An )   ren. Hierzu setzen wir voraus, dass alle Tupel eine eindeutig
                                                                 ID (TID) besitzen und die Evolutionsschritte und Anfragen,
Im Gegensatz zu Anfragen kann bei der Evolution jedoch           die reproduzierbar bleiben sollen, gespeichert werden. Beim
noch ein Spezialfall auftreten. Da bei einer Schema-Evolution    Übergang wird die Menge der Tupel berechnet, die nach der
auch neue Attribute hinzukommen können, kann dort auch          Evolution nicht mehr für die Beantwortung der ausgewähl-
auf Attribute projiziert werden, die nicht im ursprünglichen    ten Anfragen ausreichen. Diese Menge nennen wir im Folgen-
Schema vorkommen, z. B.                                          den IP rov . Diese Tupel müssen nach der Schema-Evolution
      R(A1 , ..., An ) → ∃An+1 : R0 (A1 , ..., An , An+1 ).      zusätzlich aufbewahrt werden.
                                                                 Dieser Prozess läuft in drei Teilschritten ab. Zunächst be-
Für die Invertierung sind solche neu hinzugefügten Attribute
                                                                 rechnen wir mittels des CHASE und BACKCHASE für jede
jedoch unproblematisch, da sie keinen Einfluss auf die aus
                                                                 Anfrage, jeweils durch eine s-t-TGD abgebildet, ihr Ergeb-
der Ursprungsrelation stammenden Informationen haben.
                                                                 nis und die Menge der Tupel (und Attribute), die tatsäch-
                                                                 lich an der Auswertung beteiligt waren. Diese Mengen nen-
Verbund.                                                         nen wir I 0 (S). Anschließend berechnen wir analog die Da-
  Der Verbund funktioniert grundlegend wie ein Attribut-         tenbank in der nächsten Schemaversion (I(S 0 )), basierend
vergleich. Hier sind lediglich die zu vergleichenden Attribute   auf den Evolutionsoperationen, die ebenfalls als s-t-TGDs
in unterschiedlichen Relationen. Ein Verbund R.A1 = S.B1         dargestellt werden, sowie die Menge der Tupel (und Attri-
einer Anfrage oder Evolution kann als s-t-TGD                    bute) J, die nach der Evolution durch Invertierung abbild-
       R(A1 , ..., An ) ∧ S(A1 , ..., Bn ) → RS(A1 , ...Bn )     baren abbildbar sind. Zuletzt suchen wir im finalen Teil-
                                                                 schritt Abbildungen von Tupeln aus I 0 (S) in J. Diejenigen
dargestellt werden. Der Inversentyp bezüglich der beteiligten   Tupel, für welche solche Abbildungen existieren, sind durch
Tupel ist demnach wie auch bei der Selektion exakt [18].         Tupel der nachfolgenden Schemaversion ausreichend abge-
                                                                 bildet, um für die betrachteten Anfragen verwendet zu wer-
Umbenennung.                                                     den. Existiert für ein Tupel keine solche Abbildung, muss es
   Die Umbenennung von Attributen oder Relationen wird           für die Auswertung der Anfragen aufbewahrt werden und ist
über Schemainformationen gelöst. In den Abhängigkeiten        somit Element von IP rov .
spiegelt sich dies nur bei umbenannten Relationen wieder,
z. B.                                                            Provenance der Anfragen.
               R(A1 , ..., An ) → R0 (A1 , ..., An ).               In [1] wurde vorgestellt, wie eine Anfrage Q0 auf der nächs-
                                                                 ten Schemaversion S 0 nach der Evolution E aussehen muss,
Die Inverse ist somit aber immer exakt, da Abhängigkeiten       um das Ergebnis der ursprünglichen Anfrage Q auf der alten
hier vollständig alle Informationen in die nächste Schema-     Schemaversion S zu produzieren. Hierzu muss Q0 der Aus-
version übertragen [2], und entspricht                          führung von Q auf dem alten Datenbestand entsprechen. Es
               R0 (A1 , ..., An ) → R(A1 , ..., An ).            gilt also

                                                                                     Q0 (S 0 ) = Q(E −1 (S 0 )).
Komplexe Auswertungen.
  Die obigen, grundlegenden Operatoren werden in Anfra-          Da CHASEE −1 (S 0 ) jedoch nicht zwangsläufig alle Tupel
gen und Evolutionsoperationen häufig verknüpft und bie-        ausreichend wiederherstellt, um die Anfrage Q zu beant-
ten somit die Grundlage der meisten bekannten Operatio-          worten, müssen dem Ergebnis noch die eingefrorenen Tupel
nen zur Schema-Modifikation, die in [8] vorgestellt wurden.      IP rov hinzugefügt werden. So ergibt sich für den allgemeinen
Fall                                                                      tens von Tupeln kann dies direkt über second-order-TGDs
                     0    0         −1       0                            passieren, die statt Nullwerten über eine Funktion neue, ein-
                    Q (S ) = Q(E         (S ) ∪ IP rov ).
                                                                          deutige IDs berechnen, z. B. UUIDs. Fallen jedoch auch Tu-
Die erste Phase der Berechnung von IP rov identifiziert die               pel zusammen, z. B. weil ein Attribut durch die Evolution
beteiligten Tupel (und Attribute)                                         entfernt wird, funktioniert dies nicht. Hier könnten redun-
                         n                                                dante Tupel mit unterschiedlichen IDs entstehen. Betrach-
                                                                          ten wir hierzu folgendes Beispiel der Relation R2 und der
                         [
             I 0 (S) =         CHASEQ−1 (CHASEQi (I))
                         i=1
                                         i                                Evolution E2 .
für alle ausgewählten Anfragen Qi . Da bei Anfragen oder                                           TID     X    Y
Evolutionsschritten Attribute, die für die Berechnung die-                                           1      1    1
ser relevant sind, herausprojiziert werden können, muss ab-                                          2      1    2
gesichert werden, dass diese Attribute später erkannt wer-
den können. Da Konstanten bei der Invertierung einer s-t-                                        Table 2: Relation R2
TGD weiter erhalten bleiben, ist die Selektion A = c hierbei
unproblematisch. Verbundattribute bzw. Attributvergleiche
Ai = Aj , bei denen diese Attribute jedoch nicht im Anfrage-
                                                                          E2 : R2 (tid, x, y) → ∃T id2 , T id3 : Rx (T id2 , x) ∧ Ry (T id3 , y)
bzw. Evolutionsergebnis auftauchen, beeinflussen die Aus-
wertung, werden aber nach dem BACKCHASE mit Null-                         Berechnet man nun CHASEE (I), ergeben sich die in Ta-
werten in den entsprechenden Tupeln besetzt. Um diese von                 belle 3 dargestellten Relationen Rx und Ry in der nächsten
Attributen abzuheben, die nicht für die Auswertung relevant              Schemaversion. Hier können nicht direkt neue TIDs durch
sind, markieren wir Variablen, die im Kopf der invertierten s-            die s-t-TGD der Evolution vergeben werden, da sonst ein
t-TGD mehrfach vorkommen aber existenzquantifiziert sind,                 zusätzliches Tupel in Rx generiert wird, welches jedoch den
als besondere Variablen APi
                            rov
                                . Diese generieren beim CHA-              gleichen X-Wert trägt. Solche Redundanzen sind hier nicht
SE spezielle Nullwerte (Provenance-Nullwerte) ηjP rov .                   erwünscht, sodass in einem Zwischenschritt die Nullwerte
                                                                          durch entsprechende Konstanten ersetzt werden müssen. Des
Provenance der Schema-Evolution.                                          weiteren muss diese Vergabe neuer Konstanten invertier-
   Anschließend führen wir die gleiche Berechnung für die               bar sein, damit bei der Invertierung der Evolution auch
Evolution E statt für die Anfragen Qi durch, um herauszu-                alte TIDs errechnet werden können. Daher bietet es sich
finden, welche Tupel und Attribute sich nach der Evolution                an, ein Verzeichnis über die Provenance der TIDs zu füh-
rekonstruieren lassen.                                                    ren, aus dem abgelesen werden kann, aus welchen Tupeln
                                                                          (TIDs) der vorherigen Schemaversion die Tupel der neuen
  J = CHASEE −1 (CHASEE (I)) = CHASEE −1 (I(S 0 ))
                                                                          Schemaversion gebildet wurden. Dies kann über eine Hilf-
Hierbei müssen wir nicht gesondert darauf achten, dass po-               stabelle T ID(tidS , tidS 0 ) realisiert werden, um welche die
tenziell für die Evolution relevante Attribute herausproji-              Abhängigkeiten für die Evolution erweitert werden müssen.
ziert werden, da wir uns nur dafür interessieren, welche In-             Erweitern wir E2 um die Nutzung dieser Hilfsrelation, ergibt
formationen des alten Schemas im neuen erhalten bleiben.                  sich folgende s-t-TGD, deren Invertierung auch die Wieder-
Da hier die Evolution berechnet werden soll, bedeutet dies                herstellung der ursprünglichen TIDs erlaubt.
allerdings auch die Berechnung neuer TIDs, falls Tupel nach
der Evolution zusammenfallen oder aufgesplittet werden. Im                E3 : R2 (tid, x, y) → ∃T id2 , T id3 : Rx (T id2 , x) ∧ Ry (T id3 , y)
allgemeinen Fall reicht der Standard-CHASE hier nicht aus.                                             ∧T ID(tid, T id2 ) ∧ T ID(tid, T id3 )
Betrachten wir zur Veranschaulichung folgende Beispiele.
Das Attribut Z der Relation R auf der Datenbankinstanz                    Bevor die Invertierung des Evolutionsschrittes stattfindet,
I(S) soll nach der Evolution E ebenfalls durch das Attri-                 muss nun noch die Cleaning-EGD angewandt werden. Hier-
but Y abgedeckt werden. In diesem Fall werden Tupel aus                   für verwenden wir second-order-EGDs der Form
R aufgesplittet, sodass potenziell neue TIDs nötig werden.                              T ID(tid, tid2 ) → tid2 = f (tid2 ).
Berechnet man nun CHASEE (I), ergibt sich die folgende
Relation R auf der Datenbankinstanz I(S 0 ).                              Dabei ist f eine Funktion, die bei Eingabe eines Nullwertes
                                                                          eine neue TID (z. B. eine UUID), bei Eingabe einer Konstan-
         E : R(tid, x, y, z) → ∃T id2 , T id3 : R(T id2 , x, y)
                                                                          te jedoch diese selbst zurückgibt. Dies muss für alle TIDs
                                              ∧R(T id3 , x, z)            durchgeführt werden. Besonders muss dabei darauf geachtet
                                                                          werden, dass die nummerierten Nullwerte global durch die
                                                  TID       X   Y         Konstanten überschrieben werden.
         TID    X    Y         Z                   η1       1    1
          1     1    1         11                  η2       1   11        Berechnung der zu speichernden Tupel.
          2     1    2         12                  η3       1    2
                                                   η4       1   12
       (a) Relation R auf I(S)                                                                                           TID     Y
                                             (b) Relation R auf I(S 0 )               TID     X
                                                                                                                          η2     1
                                                                                       η1     1
                                                                                                                          η3     2
Table 1: Relation R vor und nach Anwendung des CHASE                              (a) Relation Rx
                                                                                                                      (b) Relation Ry
  Diese Nullwerte müssen nun durch entsprechende Kon-
stanten für neue TIDs ersetzt werden. Im Falle des Aufsplit-                  Table 3: Relationen nach Anwendung des CHASE
Im finalen Schritt berechnen wir nun IP rov . Hierzu su-          Vorname       Name          Alter       Anschrift
chen wir die Menge derjenigen Tupel aus I 0 (S), die sich              Max       Mustermann       30        Parkstraße 3
auf Tupel in J abbilden lassen. Diese Menge nennen wir                Erika      Musterfrau       18       Schlossallee 7
JM . Das Suchen solcher Abbildungen wird uns durch die                 Paul        Müller        18       Hafenstraße 12
TIDs erleichtert, da nur Tupel mit gleichen IDs für Abbil-            Lisa       Schmidt         25       Hauptstraße 1
dungen in Frage kommen. Ein normaler Nullwert in einem
Tupel in I 0 (S) bedeutet, dass die Auswertung, aus deren                          Table 4: Person (I(S))
BACKCHASE-Phase dieses Tupel stammt, jenes Attribut
nicht benötigt. Diese Nullwerte können daher beliebig auf
Konstanten oder Nullwerte in J abgebildet werden. Anders        Namen und Anschriften der Personen liefert, die 18 Jahre
verhält sich dies jedoch bei den Provenance-Nullwerten. Da     alt sind (Tabelle 5).
sie durchaus an der Auswertung beteiligt sind und sie, z. B.
als Verbundattribut die Gleichheit der Werte auch in der                         Name            Anschrift
nächsten Schemaversion voraussetzen, dürfen diese nur auf                     Musterfrau     Schlossallee 7
Konstanten abgebildet werden. Sonst kommt es dazu, dass                          Müller       Hafenstraße 12
solche Verbundkriterien verlorengehen und bei erneuter Aus-
führung einer Anfrage Qi Kreuzprodukte gebildet werden.                        Table 5: Anfrageergebnis Q
IP rov ergibt sich dann aus denjenigen Tupeln, die an der
Anfrage beteiligt waren, aber nicht in JM sind. Diese Tu-        Anschließend führen wir den CHASE mit der invertierten
pel können dann in extra Tabellen ”eingefroren” werden, so-    Anfrage
dass sie für die entsprechenden Anfragen genutzt werden
                                                                         Q(na, an) → ∃V o : P erson(V o, na, 18, an)
können. Weiter muss dazu natürlich bekannt sein, welche
Anfragen auf welcher Schemaversion gestellt wurden, damit       auf dem Anfrageergebnis aus und erhalten somit die Menge
man weiß, auf welche Schemaversion zurückgerechnet wer-        derjenigen Tupel, die an der Anfrage beteiligt waren (abge-
den muss. Zudem müssen auch die Evolutionsschritte, also       bildet in Tabelle 6).
die entsprechenden s-t-TGDs und EGDs, die Schema S zu
S 0 transformieren, aufbewahrt werden, damit das Zurück-             Vorname     Nachname      Alter      Anschrift
rechnen auf alte Versionen gelingt. Es ist auch möglich, die            η1       Musterfrau     18      Schlossallee 7
Evolutionsschritte zu komponieren und statt mehrerer Evo-                η2        Müller       18      Hafenstraße 12
lutionen nur die Kompositionen dieser zu speichern [11]. Dies
verhindert jedoch das Berechnen der zwischenzeitigen Sche-       Table 6: Durch BACKCHASE generierte Personentabelle
maversionen. Im allgemeinen Fall kann auf jeder Schemaver-
sion Si mindestens eine Anfrage gestellt werden, für welche       Danach berechnen wir I(S 0 ). Hierfür führen wir zunächst
wir die Reproduzierbarkeit voraussetzen wollen. Speichert       den CHASE auf I(S) mit der Evolution aus. Anschließend
man lediglich die Komposition von Ei , welche die Evolution     benutzen wir analog zur Anfrage den BACKCHASE auf
von Si−1 nach Si beschreibt, und Ei+1 , so ist es nicht mehr    I(S 0 ) mit der inversen Evolution, um zu berechnen, welche
möglich Si selbst zu berechnen. Damit kann die Reprodu-        Tupel und Informationen nach der Evolution rekonstruier-
zierbarkeit der Anfrage auf ihrer ursprünglichen Schemaver-    bar sind. Da die Zuweisung eines Alters zu einem Bereich
sion nicht mehr gewährleistet werden. Kommen jedoch Fälle     durch f nicht invertierbar ist, lautet die Inverse der Evolu-
vor, bei denen zwischen zwei Schema-Evolution keine der-        tionsoperation
artigen Auswertungen stattfanden, kann die Komposition
der Evolutionsoperationen eingesetzt werden, um Zwischen-       P ersonAnon(vo, na, ab, an) → ∃Al : P erson(vo, na, Al, an).
schritte bei zukünftigen Berechnungen einzusparen.             Der BACKCHASE liefert uns damit folgende Menge der re-
                                                                konstruierbaren Tupel J, nachvollziehbar in Tabelle 7.
Beispiel.
   Betrachten wir zur Veranschaulichung folgendes Anwen-             Vorname       Name          Alter       Anschrift
dungsbeispiel. Gegeben sei die folgende Relation in Tabelle            Max       Mustermann       η1        Parkstraße 3
4, sowie die Anfrage                                                  Erika      Musterfrau       η2       Schlossallee 7
            P erson(vo, na, 18, an) → Q(na, an).                       Paul        Müller        η3       Hafenstraße 12
                                                                       Lisa       Schmidt         η4       Hauptstraße 1
Zum Zweck der Anonymisierung soll das Alter in der nächs-
ten Schemaversion in Altersbereiche eingeteilt werden. Dies                          Table 7: Person (J)
geschehe durch folgende Evolutionsoperation
 P erson(vo, na, al, an) → P ersonAnon(vo, na, f (al), an).        Nun suchen wir Abbildungen aus I 0 (S) in J. Diese Menge
                                                                JM ist in diesem Fall jedoch leer, da die Konstanten (Al-
Zusätzlich wird das Attribut ”Alter” in ”Altersbereich” um-    ter) der Tupel aus I 0 (S) nicht auf die Nullwerte in J abge-
benannt. Der Altersbereich wird durch eine Funktion f be-       bildet werden können. Daher bilden in diesem Fall alle an
stimmt, welche das Alter in den entsprechenden Bereich          der Anfrage beteiligten Tupel IP rov und müssen aufbewahrt
(0 − 5, 6 − 10, ...) einteilt.                                  werden. Hier sind das (Erika, Musterfrau, 18, Schlossallee 7)
   Wir vernachlässigen hier die TIDs, da keine der s-t-TGDs    und (Paul, Müller, 18, Hafenstraße 12). Das bedeutet, dass
zu einem Zusammenfallen oder Aufsplitten von Tupel führt       nach der Berechnung der nachfolgenden Schemaversion da-
und diese somit nie verändert werden. Zunächst berechnen      für gesorgt werden muss, dass diese Tupel im alten Schema
wir durch den CHASE das Anfrageergebnis Q, welches uns          beibehalten werden. Alle anderen werden ausreichend für
die Anfrage abgebildet, und müssen nicht in der aktuellen       Kompositionen über alle Schemaversionen und das Überprü-
Version aufgehoben werden.                                       fen für jede gewählte Anfrage vorheriger Schemaversionen
                                                                 ein großer Aufwand, welcher bei jeder Evolution betrieben
                                                                 werden muss. Wünschenswert ist eine Variante, welcher das
4.   EVALUATION                                                  aktuelle Schema genügt, um diese Überprüfung der nächs-
   Der hier vorgestellte Ansatz verwendet den CHASE-Algo-        ten Evolution durchzuführen, z. B. durch Annotation ent-
rithmus zur Sicherstellung der Reproduzierbarkeit von An-        sprechender Tupel und Attribute.
fragen unter Schema-Evolution. Bekannterweise terminiert            Eine weitergehende Fragestellung ist, wie wir den hier für
der CHASE-Algorithmus im allgemeinem Fall nicht zwin-            einen Anwendungsfall vorgestellten BACKCHASE-Prozess
gend, wird aber an zwei stellen der Berechnung eingesetzt.       für verschiedene Anwendungsfälle (in Abschnitt 2 Anwen-
Im hier gezeigten Anwendungsfall ist die Terminierung aller-     dungsfälle 1 bis 4) vereinheitlichen können, da wir alle An-
dings garantiert. Grund dafür ist, dass die erste Phase zur     wendungen mit einem einheitlichen CHASE&BACKCHASE-
Berechnung der beteiligten Tupel strikt in zwei Schritten        Tool (ChaTEAU, [3]) unterstützen wollen.
abläuft, bei denen jeweils nur mit einer einzigen Abhängig-
keit gechaset wird. Dadurch ergeben sich niemals Zyklen, die
zu einer unendlichen Generierung neuer Werte führen kön-
                                                                 6.   REFERENCES
nen. Die zweite Phase, in der die nachfolgende Schemaver-         [1] T. Auge and A. Heuer. Combining Provenance
sion berechnet wird, erzeugt hingegen potenziell neue Wer-            Management and Schema Evolution. In IPAW, volume
te, die aber ebenso niemals während der gleichen CHASE-              11017 of Lecture Notes in Computer Science, pages
Anwendung gelesen werden können, da das Quell- und Ziel-             222–225. Springer, 2018.
schema streng getrennt sind.                                      [2] T. Auge and A. Heuer. The Theory behind
Die Berechnung der nachfolgenden Schemaversion schließt               Minimizing Research Data: Result equivalent
die Berechnung neuer TIDs ein. Da diese stets eindeutig               CHASE-inverse Mappings. In LWDA, volume 2191 of
sein müssen, und nachfolgend bei der Rückrechnung in alte           CEUR Workshop Proceedings, pages 1–12.
Schemaversionen rekonstruiert werden müssen, wurde hier              CEUR-WS.org, 2018.
vorgeschlagen dies über eine s-o-Abhängigkeit zu lösen, die    [3] T. Auge and A. Heuer. ProSA - using the CHASE for
neue eindeutige Werte (z. B. in Form von UUIDs) liefert.              provenance management. In ADBIS, volume 11695 of
Diese wiederum werden in einer Hilfstabelle abgelegt, um              Lecture Notes in Computer Science, pages 357–372.
die Invertierung von Abhängigkeiten zu unterstützen. Dies           Springer, 2019.
stellt eine Erweiterung des Standard-CHASE da, welche es          [4] T. Auge, E. Manthey, S. Jürgensmann, S. Feistel, and
erlaubt zur Laufzeit neue Konstanten zu generieren. In un-            A. Heuer. Schema evolution and reproducibility of
serem Fall ist dies vergleichbar mit einer EGD, deren Kopf            long-term hydrographic data sets at the IOW. In
neben einer Variable auch eine Konstante enthält. Diese wird         LWDA, volume 2738 of CEUR Workshop Proceedings,
durch eine gesonderte Methode im Programm, welches den                pages 258–269. CEUR-WS.org, 2020.
CHASE implementiert, berechnet und überprüft die Einga-         [5] M. Benedikt, G. Konstantinidis, G. Mecca, B. Motik,
be auf ihren Typ bezüglich des CHASE. Handelt es sich um             P. Papotti, D. Santoro, and E. Tsamoura.
eine Konstante, soll diese selbst zurückgegeben werden, da           Benchmarking the Chase. In PODS, pages 37–52.
bereits eine neue ID für den ehemaligen Nullwert generiert           ACM, 2017.
wurde. Wird jedoch ein Nullwert übergeben, wird eine neue        [6] P. Buneman, S. Khanna, and W. C. Tan. Why and
TID zurückgegeben, welche fortan in allen Tupeln den ent-            Where: A Characterization of Data Provenance. In
sprechenden Nullwert ersetzt.                                         ICDT, volume 1973 of Lecture Notes in Computer
                                                                      Science, pages 316–330. Springer, 2001.
5.   AUSBLICK                                                     [7] J. Cheney, L. Chiticariu, and W. C. Tan. Provenance
                                                                      in Databases: Why, How, and Where. Found. Trends
   In diesem Beitrag haben wir einen Ansatz vorgestellt, um
                                                                      Databases, 1(4):379–474, 2009.
mit Hilfe des CHASE Daten zu identifizieren, die durch ei-
ne Schema-Evolution nicht ausreichend abgebildet werden,          [8] C. Curino, H. J. Moon, and C. Zaniolo. Graceful
um bestimmte Anfragen zu reproduzieren. Die hier gezeig-              database schema evolution: the PRISM workbench.
te Vorgehensweise ließe sich in den Evolutionsprozess ein-            Proc. VLDB Endow., 1(1):761–772, 2008.
binden, um nur diejenigen Daten aufzubewahren, welche für        [9] A. Deutsch and R. Hull. Provenance-Directed
die Reproduzierbarkeit ausgewählter Anfragen relevant sind.          Chase&Backchase. In In Search of Elegance in the
Hierbei haben wir jedoch nur die Schema- und keine Datene-            Theory and Practice of Computation, volume 8000 of
volution betrachtet, sodass der hier vorgestellte Ansatz Än-         Lecture Notes in Computer Science, pages 227–236.
derungen der Daten außerhalb von Schema-Evolution nicht               Springer, 2013.
berücksichtigt.                                                 [10] R. Fagin, P. G. Kolaitis, R. J. Miller, and L. Popa.
   Eine offene Frage ist weiter, wie mit mehreren Schema-             Data exchange: semantics and query answering.
Evolution umgegangen werden kann. Tupel der Schemaver-                Theor. Comput. Sci., 336(1):89–124, 2005.
sion Si+1 , die für eine ausgewählte Anfrage Q des Schemas     [11] R. Fagin, P. G. Kolaitis, L. Popa, and W. C. Tan.
Si relevant sind, müssen auch beim Übergang in die Schema-          Schema Mapping Evolution Through Composition and
version Si+2 ausreichend abgebildet werden, sodass Q immer            Inversion. In Schema Matching and Mapping,
noch reproduzierbar ist. Der hier vorgestellte Algorithmus            Data-Centric Systems and Applications, pages
bietet dafür keine Überprüfung. Die Komposition der Evo-           191–222. Springer, 2011.
lutionsoperationen von Schema Si zu Si+2 kann genutzt wer-       [12] F. Geerts, G. Mecca, P. Papotti, and D. Santoro.
den, um dies zu erreichen. Allerdings ist die Berechnung der          Mapping and cleaning. In ICDE, pages 232–243. IEEE
Computer Society, 2014.
[13] S. Greco, C. Molinaro, and F. Spezzano. Incomplete
     Data and Data Dependencies in Relational Databases.
     Synthesis Lectures on Data Management. Morgan &
     Claypool Publishers, 2012.
[14] T. J. Green, G. Karvounarakis, and V. Tannen.
     Provenance semirings. In PODS, pages 31–40. ACM,
     2007.
[15] A. Heuer, G. Saake, and K. Sattler. Datenbanken -
     Implementierungstechniken, 4. Auflage. MITP, 2019.
[16] M. Meier. The backchase revisited. VLDB J.,
     23(3):495–516, 2014.
[17] M. L. Möller, S. Scherzinger, M. Klettke, and U. Störl.
     Why It Is Time for Yet Another Schema Evolution
     Benchmark - Visionary Paper. In CAiSE Forum,
     volume 386 of Lecture Notes in Business Information
     Processing, pages 113–125. Springer, 2020.
[18] F. Rose. Erweiterung des CHASE-Werkzeugs
     ChaTEAU um eine BACKCHASE-Phase.
     Masterarbeit, Universität Rostock, DBIS, 2020.
Sie können auch lesen