Sternschema

Das Sternschema ist keine Erfindung von SAP und kann auch über eine relationale Datenbank realisiert werden. Ich fresse mich aktuell durch William H. Inmon / Building the Data Warehouse, fourth Edition. Der Stoff ist zwar schon über drei Jahrzehnte alt, ist aber auch heute noch Basis für das Verständniss eines Data Warehouses.

Es geht bei dem Sternschema um einen optimierten Zugriff auf die Daten. Ziel ist die Verringerung des während einer Abfrage zu durchsuchenden Datenvolumens und damit eine Beschleunigung der Abfrage


Das Problem

Auf einer Datenbank bestimmen Teilmengen der Daten eine Zentrale Rolle, Datensätze auf die ein oder eine Reihe von Kriterien passt. Auf einer normalen SQL-Datenbank werden zusammenhängende Daten innerhalb einer Tabelle und innerhalb dieser Tabelle als Datensatz gespeicher. Innerhalb eines Datensatzes sind die Informationen als sequentielle Folge von Zeichen gespeichert, die über ein Schema interpretiert werden müssen. Um auf ein Feld innerhalb eines Datensatzes zugreifen zu können, muss auf er untersten Ebene die gesamte Zeichenfolge eines Datensatzes zunächst gelesen werden. Bei einer Speicherung auf Festplatten bedeutet dieses jede Menge mechanischer Arbeit.

Wo liegt nun die Relevanz: Diese kommt aus der WHERE-Klausel einer SELECT Anweisung über die eine Teilmenge bestimmt wird. Im einfachsten Fall lautet diese:

WHERE feldname operator wert.

Um diejenigen Datensätze herauszusuchen, welche die Bedinung erfüllen, muss auf der Datenbank innerhalb der Tabelle jeder Datensatz in seiner vollen Länge durchsucht werden, um den Wert des Feldes mit dem Namen feldname auf die Erfüllung des Kriteriums hin abzugleichen. Bereits in diesem einfachen Fall sehr viel Traffic auf den Festplatten.

Zum echte Problem kann dieses werden, wenn verkettete Bedingungen notwendig sind oder z. B. ein JOIN Statement existiert, wo für jeden Datensatz der Tabelle aus einer weiteren ein Datensatz bedingt hinzugelesen werden muss.

Entscheidend für die Zeit für einen SELECT ist entspechend neben der Anzahl die Breite des Datensatzes, also wieviele Zeichen und damit Felder er beinhaltet. Um das zu erreichen können verschiedene Maßnahmen getroffen werden:

  • Nicht für die WHERE – Klausel benötigte Spalten müssen auch nicht durchsucht werden.
  • Die Anzahl der Felder kann auf mehrere Tabellen aufgeteilt werden.

Sternschema

Um ein Resultat zu erhalten, muss nicht der gesamte Datenbestand in einer Abfrage durchsucht werden

Ich halte diese Erkenntniss, so trivial sie auch erscheint, für den Kern einer beschleunigten Abfrage. Je schneller eine kleinere Teilmenge bestimmt werden kann, desto weniger Zeit benötige ich. Grade bei dem Hintergrund, das in der Zeit, in der Datenzugriff auch mechanische Arbeit auf den Drehorgeln des Speichers bedeutete, war diese Erkenntniss fundamental.

Unterscheidung zwischen beschreibenden und quantifizierenden Daten

Ist die Grundlage für die Trennung im SAP – Raum nach Merkmalen und Fakten. Im SQL ist diese Trennung nicht vorhanden, hier besteht ein Datensatz aus Feldern. Fakten als rein quantitative Werte müssen nicht durchsucht werden.

Bildung von Dimensionen

Die Idee zu den Dimensionen basisert auf der Annahme / Vermutung / Erkenntnis, dass nicht jeder Datennutzer interesse an allen Daten hat, sondern eine fachspezifische Sicht auf sie hat. Viele Werte interessieren ihn nicht. Das lässt zu, dass die Menge der beschreibenden Werte in Benutzerspezifische Segmente unterteilt werden kann.

Trennung von Bewegungs- und Stammdaten

Bestimmung von Data Marts


Erweitertet Sternschema (Snowflakes)

Indizierung

Gehört jetzt nicht mehr zum Kern des allgemeinen Sternschemas (?). Texte sind nur zeitaufwendig zu Vergleichen. Eine Möglichkeit, diesen Vorgang zu beschleunigen ist es, anstatt des Textes direkt auf eine Tabelle mit eindeutigen Textwerten zu referenzieren, bei der Abfrage wird nicht nach dem Text direkt gefragt, sondern es wird lediglich der Indexwert als Surrogat numerisch verglichen

Close Menu
error: Content is protected !!