{"id":456,"date":"2014-07-13T17:35:33","date_gmt":"2014-07-13T15:35:33","guid":{"rendered":"http:\/\/konsilium.de\/blog\/?p=456"},"modified":"2022-07-06T22:01:17","modified_gmt":"2022-07-06T20:01:17","slug":"data-vault-buch-von-hans-hultgren-review","status":"publish","type":"post","link":"https:\/\/konsilium.de\/blog\/2014\/07\/13\/data-vault-buch-von-hans-hultgren-review\/","title":{"rendered":"Rezension: Hans Hultgren, &#8222;Modeling the agile Data Warehouse with Data Vault&#8220;"},"content":{"rendered":"\n<p><br>Es gibt wenig Literatur zum Thema &#8222;Data Vault&#8220; &#8211; und noch weniger von der Art, die das Thema im Ganzen und in sich schl\u00fcssig darstellt. Daher bin ich vor ein paar Jahren mit gro\u00dfem Interesse auf dieses Buch von Herrn Hultgren gesto\u00dfen. &#8222;Endlich mal ein komplettes Buch zum Thema&#8220;, dachte ich. Ich wurde nicht entt\u00e4uscht, wenn auch Fragen offen blieben &#8211; so viel vorab. Aber nun zum Buch im Detail.<\/p>\n\n\n\n<p>Hultgren unterscheidet sich in angenehmerweise von den sehr technisch orientierten Ausf\u00fchrungen, die es bis dato von Dan Linstedt gab. Mein Einstieg in die Data Vault Thematik waren die &#8222;Series 1 &#8211; 5&#8220;, die Dan damals im Web ver\u00f6ffentlichte. Das Buch von Hultgren erl\u00e4utert in den ersten Kapiteln, was ein Data-Vault (DV) ausmacht, die drei Kern-Entit\u00e4tstypen werden erkl\u00e4rt &#8211; das sind nat\u00fcrlich die Grundlagen, die in ein solches Buch geh\u00f6ren. Insbesondere f\u00fcr Data-Vault-Beginners wird im Kapitel &#8222;The colours of Data-Vault&#8220; das Prinzip der De-Komposition erkl\u00e4rt &#8211; von Hultgren auch &#8222;Ensemble Modeling&#8220; genannt. Mit Hilfe von 3-farbig eingef\u00e4rbten Entit\u00e4ten wird anschaulich der Zerlegungsprozess erkl\u00e4rt. Somit erschlie\u00dfen sich dem Leser schnell die Unterschiede zur 3NF-Modellierung.<\/p>\n\n\n\n<p>Hultgren erkl\u00e4rt weniger mit welcher SQL-Syntax welcher Entit\u00e4tstyp beladen wird. Er erl\u00e4utert vielmehr die grunds\u00e4tzliche Herangehensweise der Enterprise-Data-Warehouse-Modellierung. Mir hat das Buch damals geholfen, auf meine Frage, &#8222;wie fange ich es grunds\u00e4tzlich an?&#8220;. Als Beispiel nenne ich die HUB-Modellierung. Man k\u00f6nnte denken, dies sei die am einfachsten zu modellierende DV-Komponente. Hultgren erkl\u00e4rt, warum oftmals genau das Gegenteil der Fall ist. Was genau ist ein &#8222;natural&#8220; (ein echter) Business-Key? Wie finde ich dies heraus? Gut gefallen haben mir dabei klare Statements zu den Fragen, ob bzw. wie weit man in der Modellierung von Hubs Super-Typing betreiben sollte oder nicht.<\/p>\n\n\n\n<p>Analog stellt sich gleiche Frage f\u00fcr die Link-Modellierung. Hultgren erkl\u00e4rt das Prinzip der &#8222;Unit-of-work&#8220; zur Validierung von &#8222;natural relationships&#8220;. Erkl\u00e4rt werden auch der &#8222;Same-As-Link&#8220; und der &#8222;Hierachical-Link&#8220;, beides rekursive Beziehungen. Zum Thema LINK gibt es mehrere Anwendungsbeispiele, erstmalig habe ich hier den Terminus &#8222;Unit-of-work&#8220; kennengelernt. Es geht darum, die &#8222;korrekten&#8220; (natural) Links zu modellieren. Er empfiehlt auf rawVault Ebene alle Links der Sourcen aufzunehmen (Auditierbarkeit) und f\u00fcr das businessVault die &#8222;nat\u00fcrlichen&#8220; Beziehungen im Kontext eines unternehmensweiten Zielbildes f\u00fcr die Datenintegration vorzugeben. Er pl\u00e4diert daf\u00fcr, sich an den betrieblichen Prozessen zu orientieren, um die &#8222;echten&#8220;, &#8222;nat\u00fcrlichen&#8220; Beziehungen zu identifizieren.<\/p>\n\n\n\n<p>Ebenfalls anschaulich erkl\u00e4rt &#8211; die korrekte Modellierung von transaktionalen Events: &#8222;An Event always requires a Hub&#8220;. Die Erkl\u00e4rung hierzu hat mich sehr an die Ausf\u00fchrungen von Kimble (&#8222;The Data Warehouse Toolkit&#8220;) erinnert, in dem er erkl\u00e4rt, dass der Bon-Key einer Sales-Transaction als De-Generated-Key in die Faktentabelle mit aufzunehmen ist.<\/p>\n\n\n\n<p>Ein weiteres Kapitel lautet &#8222;Key-Alignment&#8220;. Ziemlich spannendes Thema, leider nur ein paar kurze Erl\u00e4uterungen. Diese gaben mir in einem Projekt jedoch entscheidene Impulse, bestimmte Modellierungsgrunds\u00e4tze nochmal zu \u00fcberdenken und entsprechende Richtlinien f\u00fcr die Modellierung abzuleiten. Das Bespiel Person (im rawVault) und Customer (im busVault) erkl\u00e4rt die Problematik sehr anschaulich &#8211; und passte zuf\u00e4llig gerade zum aktuellen Projekt. Auch gut, die Idee, einen &#8222;Layer-Connecting-Link&#8220; zu erzeugen zwecks Data-Lineage-Analysen.<\/p>\n\n\n\n<p>Im Kapitel &#8222;Reference-Tables&#8220; erl\u00e4utert der Autor seine Definition von Reference-Tables. Sehr gut gefallen hat mir dabei der Design-Ansatz der &#8222;Hub-based&#8220;-Reference-Tables. D.h. auch f\u00fcr Lookup-Tables werden Data-Vault-Standard-Kostrukte verwendet, um einheitliche Ladeprozesse verwenden zu k\u00f6nnen und das Modell konsistent zu halten im Sinne der &#8222;Lesbarkeit&#8220;. Im rawVault wird Redundanz vermieden und die Dimensionen k\u00f6nnen unterschiedliche zeitliche Sichtweisen abbilden (AS-WAS, AS-OF).<br>Hultgren erkl\u00e4rt, warum den Relationships im Data Vault grunds\u00e4tzlich eine m:n Kardinalit\u00e4t zugrunde liegt. Auch dies ist ein Effekt der Dekomposition &#8211; jenes Grundprinzip des Data Vault, das urs\u00e4chlich ist f\u00fcr die Robustheit des Datenmodells gegen\u00fcber Re-Engineering-Anf\u00e4lligkeiten.<\/p>\n\n\n\n<p>In den &#8222;Special Topics&#8220; widmet sich Hultgren typischen Fragestellungen der Modellierung f\u00fcr den jeweiligen Entit\u00e4tstyp. Diese Kapitel empfand ich damals als sehr hilfreich. Als Beispiel nenne ich die HUB-Modellierung. Im Modellierungsprozess steht die Identifizierung von &#8222;Core-Business-Concepts&#8220;, wie Hans Hultgren die fachlichen Gesch\u00e4ftsobjekte der realen Welt nennt, an erster Stelle. Werden diese &#8222;falsch&#8220; modelliert, so ist der Rest des Modells in Folge nat\u00fcrlich auch nicht zu gebrauchen oder muss bald einem Re-Engineering unterworfen werden. Ein Beispiel f\u00fcr die Schwierigkeiten der HUB-Modellierung: Angenommen ein unternehmensweit akzeptierter Business-Key, der einen &#8222;Kunden&#8220; repr\u00e4sentiert, wird ben\u00f6tigt f\u00fcr die Modellierung des HUBs &#8222;KUNDE&#8220;. Was, wenn \u00fcber diesen Key im Unternehmen kein Konsens besteht? M\u00f6glicherweise verwenden verschiedene Abteilungen unterschiedliche Keys, um einen Kunden (in der jeweiligen Abteilungssicht) zu identifizieren. Fachanwender m\u00fcssen Ihre fachlichen Objekte mit &#8222;Ihren&#8220; Keys identifizieren k\u00f6nnen, sonst sind die Daten f\u00fcr sie nicht auswertbar. Hultgren beschreibt hierf\u00fcr verschiedene L\u00f6sungsans\u00e4tze, drei davon m\u00f6chte ich kurz vorstellen.<\/p>\n\n\n\n<p>L\u00f6sung 1): Ein Business-Key wird als &#8222;Central-Business-Key&#8220; bestimmt und ein entsprechender Hub nach &#8222;Schema F&#8220; modelliert. Die &#8222;alternativen Business-Keys&#8220; werden in einem separaten SAT modelliert, der keine Historie speichert (Type-1). Historie wird hier nicht ben\u00f6tigt. Ein Business-Key ist unver\u00e4nderlich &#8211; sonst ist er als solcher nicht zu gebrauchen.<\/p>\n\n\n\n<p>L\u00f6sung 2): Alle Business-Keys werden in der einen Business-Key-Spalte eines HUBs als eigene Instanzen gespeichert. Es wird einmalig festgelegt, dass alle Kontext-Informationen der SATs nur auf einen Typ der Business-Keys referenzieren (&#8222;Central-Business-Key&#8220;). Die logische Verbindung dieses Business-Keys zu den alternativ gespeicherten Business-Keys erfolgt \u00fcber einen Same-As-Link.<\/p>\n\n\n\n<p>L\u00f6sung 3): F\u00fcr jeden alternativen Business-Key werden separate HUBs und LINKs modelliert. Diese Hubs sind &#8222;weak&#8220;, sie haben keinerlei Kontext-Information. Die zus\u00e4tzlichen Enit\u00e4ten erzeugen einen gewissen Overhead (zus\u00e4tzliche Tabellen und Beladeprozesse und verl\u00e4ngerte Join-Pfade) und z\u00e4hlt daher nicht zu Hultgren&#8217;s pr\u00e4ferierten L\u00f6sungen.<\/p>\n\n\n\n<p>Wie eine Data-Mart-Schicht vom Data-Vault aus beladen wird, ist aus meiner Sicht, eine sehr spannende Frage, \u00fcber die ich bisher noch \u00fcberhaupt keine Lekt\u00fcre irgendwo gefunden habe. Leider behandelt auch Hultgren diesen Thema nur oberfl\u00e4chlich. In meinem aktuellen Data-Vault-Projekt setzen wir eine bi-temporale Historisierung im businessVault um. Die &#8222;Best\u00fcckung&#8220; der historisierten Dimensionen muss unterschiedlichen Anforderungen des Business gen\u00fcgen. Ich habe hierzu Use-Cases definiert f\u00fcr die zeitlichen Sichtweisen auf Fakten im multidimensionalen Kontext, also AS-WAS, AS-IS, AS-OF. Einen \u00e4hnlichen &#8222;Input&#8220; w\u00fcrde ich in jedem Buch, das Data Vault im Detail erkl\u00e4ren will, erwarten.<br>Bez\u00fcglich Didaktik, Layout und Schreibstil gibt es sicherlich bessere B\u00fccher &#8211; nicht aber im Themenbereich Data Vault. Insgesamt empfehle ich dieses Buch f\u00fcr jeden, der einen Einstieg in das Thema &#8222;Data Vault&#8220; sucht. Der Leser erh\u00e4lt viele Antworten auf typische Fragen, die sich w\u00e4hrend des Modellierungsprozesses stellen. Prima!<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"256\" height=\"354\" src=\"https:\/\/konsilium.de\/blog\/wp-content\/uploads\/2014\/07\/20140713-173049-63049369.jpg\" alt=\"\" class=\"wp-image-879\" srcset=\"https:\/\/konsilium.de\/blog\/wp-content\/uploads\/2014\/07\/20140713-173049-63049369.jpg 256w, https:\/\/konsilium.de\/blog\/wp-content\/uploads\/2014\/07\/20140713-173049-63049369-216x300.jpg 216w\" sizes=\"(max-width: 256px) 100vw, 256px\" \/><figcaption>Hans Hultgren<\/figcaption><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Es gibt wenig Literatur zum Thema &#8222;Data Vault&#8220; &#8211; und noch weniger von der Art, die das Thema im Ganzen und in sich schl\u00fcssig darstellt. Daher bin ich vor ein paar Jahren mit gro\u00dfem Interesse auf dieses Buch von Herrn Hultgren gesto\u00dfen. &#8222;Endlich mal ein komplettes Buch zum Thema&#8220;, dachte ich. Ich wurde nicht entt\u00e4uscht,&hellip;&nbsp;<a href=\"https:\/\/konsilium.de\/blog\/2014\/07\/13\/data-vault-buch-von-hans-hultgren-review\/\" class=\"\" rel=\"bookmark\">Weiterlesen &raquo;<span class=\"screen-reader-text\">Rezension: Hans Hultgren, &#8222;Modeling the agile Data Warehouse with Data Vault&#8220;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":842,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","footnotes":""},"categories":[8,3,4,123],"tags":[37,93,36,122],"_links":{"self":[{"href":"https:\/\/konsilium.de\/blog\/wp-json\/wp\/v2\/posts\/456"}],"collection":[{"href":"https:\/\/konsilium.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/konsilium.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/konsilium.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/konsilium.de\/blog\/wp-json\/wp\/v2\/comments?post=456"}],"version-history":[{"count":12,"href":"https:\/\/konsilium.de\/blog\/wp-json\/wp\/v2\/posts\/456\/revisions"}],"predecessor-version":[{"id":2578,"href":"https:\/\/konsilium.de\/blog\/wp-json\/wp\/v2\/posts\/456\/revisions\/2578"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/konsilium.de\/blog\/wp-json\/wp\/v2\/media\/842"}],"wp:attachment":[{"href":"https:\/\/konsilium.de\/blog\/wp-json\/wp\/v2\/media?parent=456"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/konsilium.de\/blog\/wp-json\/wp\/v2\/categories?post=456"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/konsilium.de\/blog\/wp-json\/wp\/v2\/tags?post=456"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}