Skip to main content
Scalefree Blog Data Vault Page Title: Multi-Active Satellites richtig nutzen – Teil 1

Multi-Active Satellites in Data Vault 2.0

Mit Multi-Active Satellites können Sie mehrere aktive Datensätze für einen Business-Key speichern. Je nach Struktur der eingehenden Quelldaten gibt es verschiedene Möglichkeiten, diese Multi-Aktivität in Data Vault 2.0 abzubilden. In diesem Beitrag stellen wir Ihnen die verschiedenen Modellierungsoptionen vor.

Was sind Multi-Active Satellites?

Multi-Active Satellites ähneln in ihrem Aufbau den Standard-Satellites. Wie bereits erwähnt, speichern sie jedoch mehrere aktive Datensätze pro Key zu einem bestimmten Zeitpunkt. Die genaue Struktur hängt dabei vom jeweiligen Anwendungsfall ab.
Ein Beispiel für ein solches Data-Vault-Modell finden Sie in Abbildung 1.

Multi-active satellites - Hub with Satellite

Abbildung 1: Data-Vault-Modell

Wann sollten Multi-Active Satellites verwendet werden?

Konstruktionsbedingt eignen sich Multi-Active Satellites hervorragend für die Abbildung mehrerer aktiver Datensätze. Sie kommen immer dann zum Einsatz, wenn das Quellsystem solche Daten liefert. Zudem ist ihre Verwendung sinnvoll, wenn der Bereitstellungsmechanismus nicht genügend Metadaten liefert, wie es beispielsweise bei der Nutzung von XML-Dateien der Fall ist.

 

Ein Beispiel

Nehmen wir an, Sie erhalten die Daten Ihrer Kunden in semistrukturierten XML-Dateien. Darin befinden sich mehrere Telefonnummern in einem Array. Die Metadaten liefern jedoch keine weiteren Details. Daher sind Anzahl, Typ und Reihenfolge der Datensätze unbekannt. Beim Auflösen (Flattening) der XML-Datei erhalten Sie so viele Datensätze, wie das Array Tupel enthält (Abbildung 2). Wenn Sie daraus einen Standard-Satellite erstellen, kann nur eine Zeile pro Customer-Business-Key gleichzeitig aktiv sein. Andernfalls würden Sie aufgrund desselben Hash-Keys und derselben ldts einen Primary-Key-Verstoß verursachen.

Multi-active satellite example

Abbildung 2 – customer.xml

Optionen zur Implementierung

Um diese Probleme zu vermeiden und die aktiven Telefonnummern zu jedem beliebigen Zeitpunkt abfragen zu können, gibt es verschiedene Optionen. Die Wahl der passenden Methode hängt davon ab, ob ein „Multi-Active Key“ verfügbar ist, sowie von Performance-Aspekten und der Benutzerfreundlichkeit bei der Datenabfrage. Im folgenden Abschnitt stellen wir diese Optionen kurz vor, bevor wir im nächsten Beitrag näher darauf eingehen.

Multi-Active-Satellite-Zeilen (Rows)

Falls kein Multi-Active Key vorhanden ist und Sie dennoch Multi-Active Satellites nutzen möchten, müssen Sie selbst einen solchen Key erstellen. Dies geschieht durch das Hinzufügen einer Sub-Sequence-Nummer pro Business-Key in der Staging Area. Zusätzlich zum Hash-Key und der ldts müssen Sie diese Nummer in den Primary Key aufnehmen (Abbildung 3). Hierbei ist jedoch Vorsicht geboten, falls sich die Daten beim nächsten Ladevorgang ändern. Wenn sich beispielsweise die Reihenfolge der Telefonnummern verschiebt, lässt sich einer bestimmten Sub-Sequence keine feste Telefonnummer mehr zuordnen.

Multi-active satellite example

Abbildung 3 – Multi-Active-Satellite mit Sub-Sequence

Typen

Wenn die Möglichkeit besteht, Type-Codes zu definieren und diese an den Source-Feed zu übergeben, ist es der beste Ansatz, diese in den Primary Key des Satellites aufzunehmen. In diesem Fall müssen Typen in der Regel nur selten geändert werden. In unserem Beispiel würden wir Typen wie „home“, „business“, „cell“ und „fax“ definieren (siehe Abbildung 4). Beachten Sie jedoch, dass diese Informationen zwingend vom Quellsystem geliefert werden müssen. Ist dies nicht der Fall, müssen Sie auf Sub-Sequences zurückgreifen.

Multi-active satellite example

Abbildung 4 – Type-Code-Lösung

Eine weitere Option zur Vermeidung von Typänderungen ist das Pivoting, bei dem Sie separate Spalten für jeden Typ erstellen. Dadurch erhalten Sie dieselbe Granularität wie beim Hub, müssen jedoch den potenziellen Aufwand für ein Reengineering berücksichtigen, falls sich die Attributtypen künftig ändern.

 

Zusätzlicher Hub (Extra Hub)

Eine weitere Möglichkeit zur Lösung von Problemen mit Multi-Active-Datensätzen besteht darin, einen zusätzlichen, schwächeren Hub (Weak Hub) für das Multi-Active-Attribut, in diesem Fall die Telefonnummer zu erstellen und diesen mit dem Haupt-Hub zu verknüpfen. Dies setzt voraus, dass sich dieses Attribut als Business-Key qualifiziert. Dabei kann sich die Anzahl der Hubs jedoch schnell erhöhen, je nachdem, wie viele Multi-Active-Datensätze pro Business-Key existieren. Zudem stellt der neue Hub unter Umständen kein echtes Business-Objekt dar. Obwohl dieser Ansatz daher meist nicht die erste Wahl ist, kann er in bestimmten Szenarien eine praktikable Lösung sein.

 

Das Multi-Active-Attribut zum Composite Key hinzufügen

Es wird dringend davon abgeraten, den Multi-Active Key einfach dem Business-Key hinzuzufügen. Dies würde die ursprüngliche Granularität (Grain) und die semantische Bedeutung verändern, wodurch die eigentliche Intention des Hubs verloren geht.
Behalten Sie für einen Raw-Data-Vault-Hub stets folgende Regeln im Hinterkopf:

  1. Kein Super- oder Subtyping innerhalb eines Hubs betreiben
  2. Keine unterschiedlichen semantischen Bedeutungen in einem Hub vermischen
  3. Keine unterschiedlichen Granularitäten in einem Hub vermischenDon’t mix granularities in a hub

 

Fazit

Der Einsatz von Multi-Active Satellites ist in vielen Data-Vault-Projekten sinnvoll, insbesondere bei der Verarbeitung semistrukturierter Daten. Die Best Practice bei Multi-Active-Datensätzen besteht darin, mit Type-Codes zu arbeiten, die direkt über den Source-Feed bereitgestellt werden. Sollten diese nicht verfügbar sein, müssen Sie auf eine Sub-Sequence ausweichen. Als letzte Option bleibt die Erstellung eines zusätzlichen Hubs.

Im nächsten Beitrag beleuchten wir die Vor- und Nachteile dieser Optionen im Detail und erklären Schritt für Schritt deren Implementierung. Dabei gehen wir auch auf Themen wie Delta-Checks, ldts und PITs ein und stellen eine spezielle Hash-Funktion zur Berechnung von Multi-Row-Hashdiffs vor.

Leave a Reply