Hash-Keys in DV 2.0Hash Keys in DV2.0
Data Vault 2.0 führt Hash-Keys ein, um das traditionelle Data-Vault-Modell zu erweitern, was dem Data Warehousing mehrere Vorteile bringt. Hash-Keys beschleunigen nicht nur den Ladeprozess; sie stellen auch sicher, dass sich das Enterprise Data Warehouse über mehrere Umgebungen erstrecken kann: On-Premises-Datenbanken, Hadoop-Cluster und Cloud-Speicher.
Lassen Sie uns zuerst über den Performance-Gewinn sprechen: Um die Ladevorgänge zu beschleunigen, müssen Abhängigkeiten im Ladeprozess minimiert oder sogar eliminiert werden. In Data Vault 1.0 wurden Sequenznummern verwendet, um eine Business-Entity zu identifizieren, was folglich zu Abhängigkeiten während des Ladeprozesses führte.
Diese Abhängigkeiten haben den Ladeprozess verlangsamt, was insbesondere bei Echtzeit-Feeds ein Problem darstellt. Hubs mussten zuerst geladen werden, bevor der Ladeprozess von Satellites und Links starten konnte. Das Ziel ist es, diese Abhängigkeiten aufzubrechen, indem Hash-Keys anstelle von Sequenznummern als Primärschlüssel verwendet werden.
Business-Keys vs. Hash-Keys
Vorab: Business-Keys können eine von einem einzelnen Quellsystem erstellte Sequenznummer sein, z. B. die Kundennummer.
Business-Keys können jedoch auch ein zusammengesetzter Schlüssel sein, um eine Business-Entity eindeutig zu identifizieren – beispielsweise wird ein Flug in der Luftfahrtindustrie durch die Flugnummer und das Datum identifiziert, da die Flugnummer jeden Tag wiederverwendet wird.
Allgemein gilt: Ein Business-Key ist der natürliche Schlüssel, der vom Fachbereich verwendet wird, um ein Business-Object zu identifizieren.
Die Verwendung von Business-Keys im Data Vault ist zwar eine Option, aber eine langsame, die viel Speicherplatz beansprucht (sogar mehr als Hash-Keys).
Insbesondere in Links und den davon abhängigen Satellites sind viele zusammengesetzte Business-Keys erforderlich, um die Beziehung oder Transaktion bzw. das Ereignis in einem Link zu identifizieren – und im Satellite zu beschreiben.
Dies würde viel Speicherplatz erfordern und den Ladeprozess verlangsamen, da nicht alle Datenbank-Engines in der Lage sind, effiziente Joins über Business-Keys mit variabler Länge auszuführen.
Andererseits hätten wir zu viele Spalten im Link, da jeder Business-Key ein Teil des Links sein muss.
Das Problem dabei ist, dass in den Links auch unterschiedliche Datentypen mit verschiedenen Längen vorliegen. Dieses Problem verschärft sich noch, da es auch erforderlich ist, die Business-Keys in die zugehörigen Satellites zu replizieren.
Um eine konsistente Join-Performance zu garantieren, besteht die Lösung darin, die Business-Keys mithilfe von Hash-Funktionen zu einem einzigen Spaltenwert zu kombinieren, um eine eindeutige Repräsentation eines Business-Objects zu berechnen.
Massively Parallel Processing (MPP)
Da die Ladeprozesse von Hubs, Links und Satellites voneinander unabhängig sind, können diese vollständig parallel ausgeführt werden.

Die Idee basiert auf der Tatsache, dass ein Hash-Key von einem Business-Key oder einer Kombination von Business-Keys abgeleitet wird, ohne dass eine Abfrage (Lookup) in der übergeordneten Tabelle erforderlich ist.
Anstatt also die Sequenz eines Business-Keys in einem Hub nachzuschlagen, bevor der Business-Key im Satellite beschrieben wird, lässt sich einfach der Hash-Key des Business-Keys berechnen.
Die korrekte Implementierung der Hash-Funktion stellt sicher, dass derselbe semantische Business-Key zu exakt demselben Hash-Key führt, unabhängig von der geladenen Ziel-Entity.
Hash-Keys zur Verknüpfung von Apache™ Hadoop®-Datensätzen
Ohne Hashing erfordert das Laden in Hadoop® oder NoSQL eine Abfrage (Lookup) der Hub- oder Link-Sequenz im relationalen System, bevor die Daten eingefügt oder angehängt werden können.
Hashing anstelle von Sequenzierung bedeutet, dass Ladevorgänge in alle Hubs, Links und Satellites in absolut zu 100 % parallelen Operationen erfolgen können. Gleichzeitig lassen sich alle Hadoop®- oder NoSQL-basierten Dokumente parallel anreichern.
Dies ermöglicht es dann auch, plattformübergreifende Joins über mehrere heterogene Plattformen hinweg durchzuführen – beispielsweise von einer Teradata-Datenbank zu Apache™ Hadoop®.
Hash-Difference
Die Hash-Difference-Spalte wird auf die Satellites angewendet. Der Ansatz ist derselbe wie bei den Business-Keys, nur dass hier alle beschreibenden Daten gehasht werden.
Das reduziert den Aufwand während eines Ladeprozesses, da nur eine einzige Spalte nachgeschlagen werden muss. Der Satellite-Ladeprozess prüft zuerst, ob der Hash-Key bereits im Satellite vorhanden ist, und zweitens, ob es Unterschiede zwischen den Hash-Difference-Werten gibt.
Die obige Abbildung zeigt den Prozess, wenn das Quellsystem Ihnen eine vollständige Datenlieferung sendet.
Der Zeitpunkt, an dem die Werte gehasht werden, sollte auf dem Weg in die Staging-Area liegen, da zu diesem Zeitpunkt genügend Zeit vorhanden ist, um auf Hash-Kollisionen zu prüfen und Hashing-Probleme zu behandeln, bevor die Daten in den Data Vault geladen werden.
Welche Hash-Funktion sollte verwendet werden?
Es stehen viele Hash-Funktionen zur Auswahl: MD5, MD6, SHA-1, SHA-2 und einige mehr.
Wir empfehlen in den meisten Fällen die Verwendung des MD5-Algorithmus mit einer Länge von 128 Bit, da dieser auf den meisten Plattformen allgegenwärtig verfügbar ist und eine angemessen geringe Wahrscheinlichkeit für eine Hash-Kollision bei akzeptablem Speicherplatzbedarf aufweist.
Ein zusätzlicher Vorteil des Hashings besteht darin, dass die Hashes dieselbe Länge haben und vom selben Datentyp sind, woraus sich eine Performance-Steigerung ergibt.
Darüber hinaus sind generierte Hash-Werte deterministisch, sodass sie nie verloren gehen und sich jederzeit reproduzieren lassen.
Kollisionen
Hashing birgt ein sehr geringes Risiko: die Kollision. Das bedeutet, dass zwei unterschiedliche Datenwerte denselben Hash-Wert erhalten.
Dieses Risiko ist jedoch extrem gering. Ein Beispiel: In einer Datenbank mit mehr als einer Billion Hash-Werten ist die Wahrscheinlichkeit, dass Sie eine Kollision erhalten, in etwa so hoch wie die Wahrscheinlichkeit, dass ein Meteorit auf Ihrem Rechenzentrum einschlägt.
Zusammenfassung
Hash-Keys sind im Data Vault nicht zwingend erforderlich, werden aber dringend empfohlen. Die Vorteile von
- Massively Parallel Processing (MPP),
- Data-Load-Performance,
- Konsistenz und
- Auditierbarkeit
sind unverzichtbar und können mit Sequenzen oder Business-Keys nicht erreicht werden.
Hash-Keys sind kein Allheilmittel… aber sie bieten weitaus mehr Vorteile, als sie Nachteile (wie erhöhten Speicherplatzbedarf) mit sich bringen.
