Multi-Active Satellites in Data Vault 2.0
In unserem ersten Beitrag über multiaktive Satellitenhaben wir kurz verschiedene Implementierungen erläutert, die zur Lösung der Mehrfachtätigkeit verwendet werden können. Nun werden wir die Vor- und Nachteile dieser Ansätze mit ein- oder ausgeschalteten Delta-Prüfungen näher erläutern.
In diesem Artikel:
Kurze Zusammenfassung der Multi-Active-Satelliten
Multiaktive Satelliten ermöglichen Ihnen die Implementierung mehrerer aktiver Datensätze pro Geschäftsschlüssel in Data Vault 2.0. Um die Notwendigkeit der Lösung zu verdeutlichen, betrachten wir das häufige Auftreten eines Quellsystems, das nicht die erforderlichen Metadaten bereitstellt, wie z. B. bei der Arbeit mit XML-Dateien.
Eine Lösung für die obigen Probleme besteht darin, einen mehrfach aktiven Satelliten zu erstellen, indem eine Teilnummer pro Business Key hinzugefügt wird. Auf diese Weise wird allen Fällen Rechnung getragen, in denen von der Quelle selbst kein multiaktives Attribut geliefert wird. In Bezug auf Telefonnummern könnte diese Information ein Tag für eine Geschäfts-, Privat- oder Mobiltelefonnummer sein. Eine weitere Möglichkeit ist die Schaffung eines zusätzlichen Hubs für das multiaktive Attribut. Da es sich dabei jedoch nicht um ein echtes Geschäftsobjekt handelt, kann die erste Lösung effektiver sein.
Delta Check OFF
Es gibt zwei Möglichkeiten, neue Datensätze in einen mehrfach aktiven Satelliten einzufügen - mit aktiven oder inaktiven Delta-Prüfungen. Wenn die Delta-Prüfungen deaktiviert sind, werden alle Datensätze eines Geschäftsschlüssels aus Ihrer Quelllieferung in den Satelliten eingefügt.
Dies hat den Vorteil, dass das Laden schneller geht und ein einheitlicher Zeitstempel für das Ladedatum des übergeordneten hash key verwendet wird, unabhängig vom Attribut "mehrfach aktiv".
Später vereinfacht es die Abfrage auf der Grundlage der multiaktiven Daten (siehe Abbildung 1). Ein entscheidender Nachteil ist, dass die aufgenommene Datenmenge stark ansteigen kann, wenn volle Datenmengen empfangen werden.
In diesem Fall sollten Sie Ihre Daten nach dem Zeitstempel des Ladedatums aufteilen.
Abbildung 1: Verknüpfung von Datensätzen mit einer PIT-Tabelle, wenn eine LDTS für alle aktiven Datensätze pro Schlüssel vorhanden ist.
Delta Check ON
Um die Datenmenge zu reduzieren, verwenden Sie einfach Deltaprüfungen. Dabei gleichen Sie die eingehenden Daten mit dem neuesten LDTS pro Hash-Schlüssel ab.
Eine nützliche Funktion zur Nutzung der Deltaprüfung ist LISTAGG(). Diese Funktion wandelt Werte aus einer Gruppe von Zeilen in eine Liste von Werten um. Als Ergebnis können Sie eine Hash-Differenz von mehrfach aktiven Attributen pro Geschäftsschlüssel erstellen (siehe Abbildung 2).
Abbildung 2. Mehrzeilige Hash-Differenz unter Verwendung der LISTAGG()-Funktion
Wenn neue Daten eintreffen, können sie mit der mehrzeiligen Hash-Differenz verglichen werden. Auf diese Weise kann ein großer Teil der Daten ignoriert werden. Wenn ein Delta erkannt wird, werden alle Datensätze per Hash Key auch wenn sich der Inhalt der Daten für nur eine Teilsequenz ändert. Das Ergebnis ist ein einheitlicher Zeitstempel des Ladedatums pro Hash-Schlüssel. Außerdem wird ein Delta festgestellt, wenn sich die Reihenfolge der Datensätze ebenfalls ändert. Dieser Ansatz ist ein Kompromiss, um die Anzahl der Datensätze zu reduzieren und gleichzeitig einen konsistenten Zeitstempel für das Ladedatum pro Hash-Schlüssel zu erhalten, so dass nur ein PIT-Tabelle notwendig ist.
Typ-Codes verwenden
Eine andere Methode zur Bewältigung der Mehrfachtätigkeit ist die Verwendung von Attributstypen, sofern diese vorhanden sind, wie im vorherigen Beitrag erläutert.
Wenn Sie über Typcodes verfügen, können Sie Zeile für Zeile vergleichen und nur diese spezifischen Daten laden. Aber folglich erhalten Sie unterschiedliche LDTS pro multiaktivem Attribut. Die Verwendung von PIT-Tabellen in der business vaultbenötigen Sie daher eine zusätzliche multi-aktive PIT-Tabelle. Dieses Szenario ist in Abbildung 3 dargestellt.
Abbildung 3. Die Notwendigkeit eines MA-PIT mit verschiedenen LDTS aktiver Datensätze pro Schlüssel
Wenn Sie die mehrfach aktive Spalte in mehrere Spalten, eine Spalte pro Merkmal, aufteilen können, brauchen Sie keinen der oben genannten Vor- oder Nachteile zu berücksichtigen. In diesem Fall verwandeln Sie den Satelliten in einen Standardsatelliten. Bezogen auf unser Beispiel mit den Telefonnummern würden Sie mehrere neue Spalten pro Telefontyp erstellen.
Diese Lösung ist anwendbar, wenn Sie sicher sein können, dass sich die Merkmale der Telefontypen in Zukunft nicht ändern werden. Andernfalls müssen Sie Ihren Prozess umgestalten, um alle gelieferten Daten zu erfassen!
Fazit
In unserem zweiten Beitrag über multiaktive Satelliten haben wir uns mit den Hintergründen der verschiedenen Methoden beschäftigt. Sie können diese Informationen nutzen, um Ihre eigene multiaktive Lösung in Abhängigkeit von Ihren vorhandenen Daten zu implementieren.
Beachten Sie jedoch, dass es oft empfehlenswert ist, die zu ladenden Daten einzuschränken. Zu diesem Zweck wird die LISTAGG()-Funktion nützlich. Wenn Sie eine Lösung mit potenziell unterschiedlichen LDST verwenden, denken Sie daran, diese bei der Abfrage der Daten zu berücksichtigen.
- von Marvin Geerken (Scalefree)
Hello,
On my actual project, we need to use a multi-active satellite and we checked this article. We are using SQL SERVER where we have the function STRING_AGG, but the fact is, the function accepts only one column. And we have more than 100 columns in the table. So is it possible to add to this article example’s queries to show HOW you use LISTAGG, STRING_AGG or other db functions to calculate your hash diff, because in your example it’s easy, you have just one column with a phone number. How do you manage the case where the number of column could make a concatenation over the max size of a nvarchar for example.
Hi Julien,
If the concatenation for the hashdiff calculation exceeds the maximum possible size you should consider splitting your attributes into multiple (multi-active) satellites (e.g. by splitting by rate of change). Also may not all attributes are multi-active and you could split the descriptive attributes into one or more standard satellites and one multi-active satellite. I would not recommend to put that high amount of columns into a single satellite table.
I hope that helped.
– Ole