{"id":516,"date":"2024-05-05T21:07:45","date_gmt":"2024-05-05T21:07:45","guid":{"rendered":"https:\/\/oberle-it-beratung.de\/?p=155"},"modified":"2024-05-05T21:07:45","modified_gmt":"2024-05-05T21:07:45","slug":"die-kraft-der-abstraktion","status":"publish","type":"post","link":"https:\/\/www.elrebo.de\/index.php\/2024\/05\/05\/die-kraft-der-abstraktion\/","title":{"rendered":"Die Kraft der Abstraktion"},"content":{"rendered":"\n<p>In den letzten Artikeln, die ich hier ver\u00f6ffentlicht habe, ging es immer auch darum, wie man die Wirklichkeit betrachtet. Welche Strukturen legt man \u00fcber die wirklichen Dinge, die man beobachtet, um Gemeinsamkeiten oder Unterschiede zwischen den beobachteten Dingen zu erkennen? Welche Muster glaubt man zu erkennen?<\/p>\n\n\n\n<p>Was ist der Vorteil davon, wenn man ein vereinfachendes Modell \u00fcber die komplexe Realit\u00e4t legt? Solch ein Modell ist doch niemals in der Lage die Realit\u00e4t &#8220;richtig&#8221; abzubilden.<\/p>\n\n\n\n<p>In diesem Artikel m\u00f6chte ich versuchen zu beschreiben, was die Vorteile davon sind, vereinfachte Modelle der komplexen Realit\u00e4t zu nutzen.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>All models are wrong, but some are useful.<\/p>\n<cite>George Box, zitiert nach <a href=\"https:\/\/en.wikipedia.org\/wiki\/All_models_are_wrong\">https:\/\/en.wikipedia.org\/wiki\/All_models_are_wrong<\/a><\/cite><\/blockquote>\n\n\n\n<p>Das ist einer meiner Lieblingss\u00e4tze. F\u00fcr mich zeigt er erstens, dass jede Beschreibung der Realit\u00e4t diese Realit\u00e4t nicht vollst\u00e4ndig richtig erfassen kann, sie ist immer eine Vereinfachung, indem sie nicht restlos alle Aspekte der Realit\u00e4t fehlerfrei abbildet. Fazit: &#8220;All models are wrong!&#8221;<\/p>\n\n\n\n<p>Das ist aber gar kein Problem, denn f\u00fcr manche Aspekte der abgebildeten Realit\u00e4t beschreibt das Modell die Realit\u00e4t gut genug, um daraus Erkenntnisse zu gewinnen &#8211; vielleicht gerade deshalb, weil man in diesem Modell die wichtigen Zusammenh\u00e4nge besser erkennen kann als in der Realit\u00e4t, wo man vielleicht &#8220;vor lauter B\u00e4umen den Wald nicht mehr sieht&#8221;. Und so zeigt der Satz zweitens, dass manche dieser (falschen) Modelle n\u00fctzlich sind. Fazit: &#8220;Some models are useful!&#8221;<\/p>\n\n\n\n<p>Ich versuche das mal mit einem Beispiel zu verdeutlichen: In meiner Doktorarbeit habe ich versucht, die Energie und die Polarisierbarkeit von kleinen Oxo-Anionen zu berechnen. Dazu verwendete ich Methoden der &#8220;Ab Initio&#8221;-Quantenchemie. Dabei nutzt man eine Berechnung, die die Realit\u00e4t m\u00f6glichst genau und detailliert als positiv geladene Atomkerne umgeben von negativ geladenen Elektronenh\u00fcllen in Orbitalen beschreibt. So kann man mit sehr gro\u00dfem Rechenaufwand die Energie und die Polarisierbarkeit des Molek\u00fcls berechnen. Dummerweise f\u00fchrt so eine &#8220;Ab Initio&#8221;-Rechnung von isolierten Oxo-Anionen zu Ergebnissen, die die Realit\u00e4t von Oxo-Anionen in w\u00e4ssriger L\u00f6sung nur sehr schlecht abbilden. D.h. obwohl die Berechnungsmethode kompliziert und schwierig anzuwenden ist, liefert sie schlechte Ergebnisse. Deshalb verwendete ich in der Arbeit ein weiteres, viel einfacheres Modell, das &#8220;Currant Bun&#8221;-Modell. Dieses &#8220;Rosinenbr\u00f6tchen-Modell&#8221; beschreibt die Molek\u00fcle als positive Ladungen, die &#8220;Rosinen&#8221;, die in einer einzigen negativ geladenen kugelf\u00f6rmigen Elektronenwolke, dem &#8220;Br\u00f6tchen&#8221; angeordnet sind. Und obwohl dieses Modell die Realit\u00e4t grotesk vereinfacht, also echt falsch ist, kann es die Polarisierbarkeit von Oxo-Anionen in w\u00e4ssriger L\u00f6sung gar nicht so schlecht und mit ganz wenig Aufwand berechnen.<\/p>\n\n\n\n<p>Die Abbildung der Realit\u00e4t in einem ganz einfachen Modell, mit ganz wenigen Parametern, erm\u00f6glicht hier die Berechnung der Polarisierbarkeit des Molek\u00fcls, obwohl ein Molek\u00fcl ganz bestimmt nicht wie ein Rosinenbr\u00f6tchen aufgebaut ist. Offensichtlich enth\u00e4lt diese Vereinfachung aber immer noch genug Informationen aus der Realit\u00e4t, dass der Aspekt der Polarisierbarkeit gut genug abgebildet ist. Das Modell l\u00e4sst damit die f\u00fcr die Fragestellung unbedeutenden Aspekte der Realit\u00e4t weg und fokussiert sich auf die wichtigen Parameter.<\/p>\n\n\n\n<p>Die Beschreibung der Realit\u00e4t durch ein vereinfachtes Modell ist also eine Form der Abstraktion, die ich als sehr n\u00fctzlich ansehe. Das Modell beschreibt nicht alle Aspekte der Realit\u00e4t vollst\u00e4ndig, aber manche doch sehr gut. Hier wird die Komplexit\u00e4t der Realit\u00e4t reduziert, indem man bestimmte Teile ausblendet, nicht mehr dar\u00fcber nachdenkt und sich auf die verbleibenden Aspekte fokussiert.<\/p>\n\n\n\n<p>Die Idee, etwas als einfacher zu betrachten, als es tats\u00e4chlich ist, ist ein guter Ansatz, um dieses &#8220;Etwas&#8221; besser zu durchschauen.<\/p>\n\n\n\n<p>So, wie im obigen Beispiel, wo ich diese Idee auf die Beschreibung von Oxo-Anionen angewandt habe, kann man auch beim Aufbau eines Data Warehouse vorgehen. <\/p>\n\n\n\n<p>Die Verwendung der Modellierungstechnik von Data Vault 2.0, die ich im Beitrag <a href=\"https:\/\/elrebo.de\/data-vault-2-0\">Data Vault 2.0<\/a> beschrieben habe, ist schon ein erster Schritt in diese Richtung. Man beschreibt die Daten immer als Hubs, Links und Satellites. Und diese Struktur erm\u00f6glicht es einem, diese einzelnen Tabellen des Data Warehouse sehr einfach zu beschreiben. So ist z.B. die Tabellenstruktur einer Hub-Tabelle immer gleich. Nur der Name des Hubs, der Name des Natural Keys und der Name der Staging-Dateien, aus denen der Hub gef\u00fcllt wird, \u00e4ndern sich von Hub zu Hub. <\/p>\n\n\n\n<p>Der zweite Schritt ist dann, dass man die SQL-Statements f\u00fcr die Hub-Tabellen nicht mehr selbst schreibt, sondern dass man sich diese generieren l\u00e4\u00dft. In AutomateDV, einem Tool zum Erstellen eines Data Warehouse nach Data Vault 2.0 sieht das dann f\u00fcr einen Hub hub_kunden z.B. so aus:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"><code>{%- set source_model = [\"stg_kunden\", \"stg_vertraege\"] -%}<br>{%- set src_pk = \"KUNDE_PK\" -%}<br>{%- set src_nk = \"KUNDE_KEY\" -%}<br>{%- set src_ldts = \"LOAD_DATE\" -%}<br>{%- set src_source = \"RECORD_SOURCE\" -%}<br><br>{{ automate_dv.hub(src_pk=src_pk, src_nk=src_nk,<br>                   src_ldts=src_ldts,<br>                   src_source=src_source,<br>                   source_model=source_model) }}<\/code><\/pre>\n\n\n\n<p>Damit nicht genug k\u00f6nnte man sich einen Generator bauen, der den AutomateDV-Code f\u00fcr einen Hub aus einer noch kleineren Steuerdatei erzeugt, die z.B. in XML so aussehen k\u00f6nnte:<\/p>\n\n\n\n<p><code>&lt;hub name=\"hub_kunde\"&gt;<br>    &lt;stages&gt;<br>        &lt;stage name=\"stg_kunden\"\/&gt;<br>        &lt;stage name=\"stg_vertraege\"\/&gt;<br>    &lt;\/stages&gt;<br>    &lt;nat_key name=\"KUNDE\"\/&gt;<br>&lt;\/hub&gt;<\/code><\/p>\n\n\n\n<p>Aus dieser kompakten Darstellung wird alles abgeleitet, was zur Definition und zum Bef\u00fcllen des Hubs hub_kunde ben\u00f6tigt wird. <\/p>\n\n\n\n<p>Analog lassen sich so auch kompaktere Darstellungen z.B. f\u00fcr die Links und die Satellites finden. In den n\u00e4chsten Beitragen m\u00f6chte ich zeigen, wie einem solche Strukturen dabei helfen k\u00f6nnen, die komplizierte Welt eines Data Warehouse zu beschreiben und verwalten zu k\u00f6nnen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In den letzten Artikeln, die ich hier ver\u00f6ffentlicht habe, ging es immer auch darum, wie man die Wirklichkeit betrachtet. Welche Strukturen legt man \u00fcber die wirklichen Dinge, die man beobachtet, um Gemeinsamkeiten oder Unterschiede zwischen den beobachteten Dingen zu erkennen? Welche Muster glaubt man zu erkennen? Was ist der Vorteil davon, wenn man ein vereinfachendes [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":405,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13,14,18],"tags":[],"class_list":["post-516","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dwh","category-dv20","category-werkzeuge"],"_links":{"self":[{"href":"https:\/\/www.elrebo.de\/index.php\/wp-json\/wp\/v2\/posts\/516","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.elrebo.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.elrebo.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.elrebo.de\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.elrebo.de\/index.php\/wp-json\/wp\/v2\/comments?post=516"}],"version-history":[{"count":0,"href":"https:\/\/www.elrebo.de\/index.php\/wp-json\/wp\/v2\/posts\/516\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.elrebo.de\/index.php\/wp-json\/wp\/v2\/media\/405"}],"wp:attachment":[{"href":"https:\/\/www.elrebo.de\/index.php\/wp-json\/wp\/v2\/media?parent=516"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.elrebo.de\/index.php\/wp-json\/wp\/v2\/categories?post=516"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.elrebo.de\/index.php\/wp-json\/wp\/v2\/tags?post=516"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}