Multi-Active Satellites in Data Vault 2.0
Mit multi-aktiven Satelliten sind Sie in der Lage, mehrere aktive Datensätze für einen Geschäftsschlüssel zu speichern. Je nachdem, wie die Daten von Ihrer Quelle ankommen, gibt es verschiedene Möglichkeiten, mit multiaktiven Datensätzen in Data Vault 2.0, umzugehen. In diesem Beitrag zeigen wir Ihnen, welche Möglichkeiten Sie bei der Modellierung haben.
Was sind Multi-Active Satellites?
Multi-active satellites sind vergleichbar mit Standard Satelliten und ihrer Struktur. Wie bereits erwähnt, speichern sie mehrere gleichzeitig aktive Datensätze pro Schlüssel zu einem bestimmten Zeitpunkt. Die genaue Struktur richtet sich jedoch nach dem jeweiligen Anwendungsfall.
Beispielhaftes Data Vault Modell – siehe Abbildung 1.
Abbildung 1: Data Vault Modell
Wann sollte man Multi-Active Satellites verwenden?
Aus diesem Grund eignen sich Multi-Active Satellites für Szenarien mit multiaktiven Datensätzen. Wir setzen sie ein, wenn das Quellsystem solche Datensätze liefert. Darüber hinaus sind sie auch dann sinnvoll, wenn der Liefermechanismus nicht genügend Metadaten bereitstellt – etwa bei der Verwendung von XML.
Ein Beispiel
Angenommen, Sie erhalten die Kundendaten in semi-strukturierten XML-Dateien. Darin befinden sich mehrere Telefonnummern in einem Array. Die Metadaten liefern jedoch keine weiteren Informationen – weder zur Anzahl noch zum Typ oder zur Reihenfolge der enthaltenen Datensätze. Beim Flattening der XML-Datei entstehen so viele Datensätze, wie das Array Tupel enthält (siehe Abbildung 2). Wenn Sie daraus einen Standard-Satelliten erstellen, kann jedoch nur eine Zeile pro Customer Business Key gleichzeitig aktiv sein. Andernfalls würde ein Verstoß gegen den Primärschlüssel auftreten, da Hash Key und ldts (Load Date Timestamp) identisch wären.
Abbildung 2 - customer.xml
Verschiedene Optionen für die Umsetzung
Um diese Probleme zu vermeiden und gleichzeitig die aktiven Telefonnummern zu jedem beliebigen Zeitpunkt abfragen zu können, gibt es mehrere Möglichkeiten. Diese hängen jedoch davon ab, ob ein „Multi-Active Key“ verfügbar ist – sowie von Performance-Aspekten und der Nutzbarkeit bei der Abfrage der Daten. Im folgenden Abschnitt stellen wir diese Optionen kurz vor. Im nächsten Beitrag gehen wir dann näher auf die Details ein.
Zeilen in Multi-Active Satellites
Wenn Sie keinen Multi-Active Key haben, aber Multi-Active Satellites verwenden möchten, müssen Sie einen eigenen Schlüssel erzeugen – indem Sie in der Staging-Layer pro Business Key eine Untersequenznummer hinzufügen.Diese muss zusätzlich zum Hash Key und zum LDTS in den Primärschlüssel aufgenommen werden (siehe Abbildung 3). Dabei ist jedoch besondere Vorsicht geboten, falls sich die Daten bei einem späteren Ladevorgang ändern. Ändert sich zum Beispiel die Reihenfolge der Telefonnummern, lässt sich keine bestimmte Nummer mehr eindeutig einer bestimmten Untersequenz zuordnen.
Abbildung 3 – Multi-active satellite mit Untersequenznummer
Typen und Typecodes
Wenn es möglich ist, Typecodes zu definieren und sie dem Quellfeed hinzuzufügen, ist es am besten, diese als Teil des Primärschlüssels im Satelliten zu verwenden. In der Regel müssen diese Kategorien nur selten geändert werden. In unserem Beispiel würden wir Kategorien wie „home“, „business“, „cell“ und „fax“ definieren – wie in Abbildung 4 dargestellt. Aber denken Sie daran: Diese Informationen müssen vom Quellsystem geliefert werden. Ist das nicht der Fall, müssen stattdessen Teilsequenzen verwendet werden.
Abbildung 4 - Typecode-Lösung
Eine weitere Möglichkeit, Typänderungen zu vermeiden, besteht im Pivoting, bei dem für jeden Typ eine eigene Spalte erstellt wird. Dadurch erhalten Sie die gleiche Granularität wie im Hub. Allerdings muss auch der potenzielle Aufwand für ein Reengineering berücksichtigt werden, falls sich die Typen der Attribute ändern.
Extra Hub
Die letzte Möglichkeit, Probleme mit multiaktiven Datensätzen zu lösen, besteht darin, einen zusätzliches, "weak Hub" für das mehrfach aktive Attribut – in diesem Fall die Telefonnummer – zu erstellen und es mit dem "main Hub" zu verknüpfen. Voraussetzung dafür ist, dass dieses Attribut als Business Key qualifiziert.Dabei kann die Anzahl der Hubs erheblich steigen – je nachdem, wie viele multiaktive Datensätze pro Business Key vorhanden sind. Außerdem stellt das neue Hub möglicherweise kein eigenständiges Geschäftsobjekt dar. Diese Lösung ist zwar nicht der bevorzugte Ansatz, kann jedoch in bestimmten Fällen praktikabel sein.
Hinzufügen des Multi-Active-Attributs zum zusammengesetzten Schlüssel
Es ist nicht empfehlenswert, den Multi-Active Key einfach zum Business Key hinzuzufügen. Dadurch verändern sich sowohl die ursprüngliche Granularität als auch die semantische Bedeutung. In der Folge geht die ursprüngliche Intention des Hubs verloren.
Beachten Sie diese Grundregeln für einen Raw Data Vault Hub:
- Keine Super- oder Subtypen innerhalb eines Hubs
- Keine Vermischung unterschiedlicher semantischer Bedeutungen
- Keine Vermischung verschiedener Granularitäten in einem Hub
Fazit
Die Implementierung von Multi-Active Satellites kann in vielen Data Vault Projekten sinnvoll sein – insbesondere bei der Arbeit mit semistrukturierte Daten. Bei multiaktiven Datensätzen ist es jedoch in der Regel am besten, mit Typcodes zu arbeiten, die dem Quellfeed hinzugefügt werden. Stehen diese nicht zur Verfügung, sollte auf Untersequenzen zurückgegriffen werden. Als letzte Möglichkeit kann ein zusätzlicher Hub erstellt werden – auch wenn dieses möglicherweise kein echtes Geschäftsobjekt darstellt.
Im nächsten Beitrag befassen wir uns ausführlicher mit den Vor- und Nachteilen der einzelnen Optionen sowie deren konkreter Umsetzung. Dabei geht es unter anderem um Delta-Checks, LDTS, PITs und eine spezielle Hash-Funktion zur Berechnung mehrzeiliger Hashdiffs.
- von Marvin Geerken (Scalefree)