The Doppler Quarterly (DEUTSCHE) Herbst 2017 | Page 29
Langsam wechselnde Dimensionen zu handhaben, ist
einer der wichtigsten Prozesse in einem Data-
Warehouse. Das kanonische Beispiel für eine langsam
wechselnde Dimension ist ein Kunde, der vor Kurzem
an eine neue Adresse umgezogen ist. Wir haben einen
Datensatz für den Kunden im Data-Warehouse mit
den alten Adressdaten und einen weiteren Datensatz
für denselben Kunden mit einer neuen Adresse aus
dem Transaktionssystem.
Die beiden gängigsten Ansätze zur Bewältigung einer
solchen Situation in analytischen Systemen heißen
SCD (Slow Changing Dimension) Typ I und Typ II.
Bei einer Typ-I-Strategie wird ein bestehendes
Dimensionsattribut mit neuen Informationen über-
schrieben. In unserem Beispiel werden wir die alte
Adresse mit der neuen Adresse überschreiben und
keine historischen Informationen über den Kunden
aufbewahren. Bei einer Typ-II-Strategie wird ein
Datensatz mit den neuen Attributinformationen
geschrieben und ein Datensatz mit den alten Dimen-
sionsdaten beibehalten. Also fügen wir einen Daten-
satz mit den neuen Adressinformationen ein, machen
den Datensatz zum aktiven Kundendatensatz und
inaktivieren den bisherigen Kundendatensatz. Zu
jedem Zeitpunkt haben wir also eine lückenlose His-
torie der Adressänderungen des Kunden.
Strategie zur Implementierung von SCD Typ II
in Hive
Hive und Hadoop sind für das einmalige Schreiben
und Lesen vieler Muster optimiert. Jedes Design wie
SCD II, das ein Update erfordert, ist für solche Sys-
teme in der Regel nicht besonders gut geeignet. Im
Lauf der Zeit wurden jedoch neue Funktionen hinzu-
gefügt, um auch diese Szenarien zu unterstützen.
Um SCD II zu implementieren, müssen wir
ACID-Transaktionen in Hive aktivieren. Derzeit ist
Langsam wechselnde Dimensionen in
Hive
200 MB
Wir empfehlen ORC als Ausgangspunkt für das am
besten geeignete Dateiformat für Apache Hive.
ORC-Dateien sind in so genannte Stripes (Datenblö-
cke) unterteilt, die voneinander unabhängig sind. Wir
können Indizes erstellen, um zu bestimmen, welche
Stripes in einer Datei für eine bestimmte Abfrage
gelesen werden müssen. Durch die Zeilenindizes
kann die Suche auf einen bestimmten Satz von 10.000
Zeilen für hochperformante Lesezugriffe einge-
schränkt werden. Innerhalb jedes Stripes sind die
Spalten voneinander getrennt, sodass die Lesekom-
ponente nur die benötigten Spalten lesen kann.
Spalte 1
Indexdaten
Spalte 2
Spalte 3
Zeilen-
daten
Spalte 4
Spalte 5
Stripe-Fußzeile
Spalte 6
Spalte 7
Indexdaten
Spalte 8
Zeilen-
daten Spalte 1
Stripe-Fußzeile Spalte 3
Indexdaten Spalte 4
Spalte 2
Spalte 5
Zeilen-
daten
Spalte 6
Spalte 7
Stripe-Fußzeile
Spalte 8
Dateifußzeile
PostScript
Abbildung 3: ORC-Dateistruktur
ORC das einzige Dateiformat, das ACID-Transaktio-
nen in Hive unterstützt. Da es sich bei ORC um ein
einmal beschreibbares Dateiformat handelt, werden
Änderungen anhand von Basisdateien und Deltada-
teien durchgeführt, in denen Einfüge-, Aktualisie-
rungs- und Löschvorgänge aufgezeichnet werden.
Wenn die Anzahl der Deltas einen Schwellenwert
überschreitet, wird automatisch eine kleinere Kom-
primierung durchgeführt und eine Reihe von Ände-
rungen zu einem einzigen Delta zusammengeführt.
Wenn diese komprimierten Deltas groß genug wer-
den, wird durch eine größere Komprimierung die
Basis neu geschrieben, um diese größeren Deltas
aufzunehmen.
Hive-Sicherheit und Ranger
Apache Hive bietet derzeit zwei Arten der Autorisie-
rung: die speicherbasierte Autorisierung und die
SQL-Standardautorisierung. Die SQL-Standardauto-
risierung bietet Erteilungs-/Rückruffunktionalität
auf Datenbank- und Tabellenebene mithilfe von
Befehlen, die einem Datenbankadministrator bekannt
HERBST 2017 | THE DOPPLER | 27