Wirtschaftsinformatik: Komplexe Datenbankanwendungen 2
Sie sind hier: Startseite › Wirtschaftsinformatik › Komplexe Datenbankanwendungen 2 (Technische Realisierung)
IC / CM, Kurs vom 01.04.2006 - 30.09.2006
Technische Realisierung
Anfragebearbeitung
Anfragebearbeitungsschritte:
- Interndarstellung
- Syntaktische Analyse, Kontextanalyse (Syntaxbaum)
- Zugriffs- und Integritätskontrolle
- Einfügen von Prüfoperatoren
- Anfrageoptimierung / Codeerzeugung
- Transformation auf logischer Ebene (Relationenalgebra)
- Abbildung auf physische Operatoren (Anfrageplan)
- Ausführung
- Überwachung der Anfrageabarbeitung
- Pipelining
- Ergebnisbereitstellung (Cursor)
Statistische Information zur Anfrageoptimierung:
- Anzahl der Seiten pro Tabelle, Anzahl der nichtleeren Seiten
- Verhältnis von Überlaufzeilen zu Gesamtzahl der Zeilen pro Tabelle
- Gesamtzahl der Zeilen pro Tabelle
- Anzahl der verschiedenen Werte in einer Spalte
- Verteilung von Spaltenwerten
- Clustereigenschaft eines Indexes, d.h. Ausmaß der Übereinstimmung von Indexsortierung und physischer Zeilenreihenfolge
- Indexhöhe und Anzahl der Blattseiten
Operatoren
- Operatoren zum Durchwandern von Datensätzen (Scan-Operatoren)
- Tabellen-Scan
- Index-Scan
- Verbundoperatoren
- Geschachtelte Schleifen (nested loop join)
- Durchlauf (scan) durch die Zeilen t1 von Äußere Tabelle T1
- Für jede Zeile t1
- Durchlauf (scan) durch die Zeilen t2 von Innere Tabelle T2
- Übernahme von (t1,t2) in das Ergebnis wenn t1.A = t2.A
- Mischverknüpfung (merge join)
- Voraussetzung: Sortierung auf Spalte A liegt vor
- Lies erste Zeile t1 von T1
- (*) Lies Zeilen von T2 bis eine Zeile t2 mit t1.A = t2.A gefunden wird
- Übernahme von (t1,t2) in das Ergebnis
- Lies Zeilen von T2 bis eine Zeile tx mit t1.A ≠ tx.A gefunden wird oder keine Zeile in T2 mehr
vorhanden ist
- Übernahme aller bis dahin gelesenen T2-Zeilen in das Ergebnis
- Gehe auf Zeile t2 zurück
- Solange noch Zeilen in T1 vorhanden sind: Lies nächste Zeile von T1 und verfahre wie bei (*)
- Hash-Verknüpfung
(hash join)
- Erzeugung einer Hash-Tabelle für T2
- Durchlauf (scan) durch die Zeilen t1 von T1
- Für jede Zeile t1
- Berechnung des Hash-Wertes von t1.A
- Ermittlung der passenden t2 aus T2 über die Hash-Tabelle
- Übernahme von (t1,t2) in das Ergebnis
- Geschachtelte Schleifen (nested loop join)
- Sonstige
- Extrahieren von Datensätzen über TID/RID
- Anwendung von zusätzlichen Prädikaten über die im Tabellen- bzw. Index-Scan hinaus
- Sortierung (mit oder ohne Gruppierung)
- Gruppierungen
- Operatoren auf TID/RID: Und/Oder-Verknüpfung von Indizes
- Erstellung temporärer Tabellen
Star-Join-Verbundstrategie: Kartesisches Produkt (mit Vorselektion) der Dimensionentabellen bilden. Danach Verbund mit Faktentabelle.
Summierbarkeit von Kennzahlen
Summationstyp Flow
Gilt für Fakten, die in allen Dimensionen summierbar sind. Beispiele: Bestellmengen, Anzahl Neuabschlüsse von Versicherungen, Anzahl neuer Kunden
Konkretes Beispiel: Verkauf mit Filiale, Produkt, Datum, Menge
- Summation entlang Filiale: Ergibt Verkaufsmengen z.B. pro Stadt, pro Bundesland usw.
- Summation entlang Produkt: Ergibt Verkaufsmengen z.B. pro Produktkategorie, Produktgruppe usw.
- Summation entlang Datum: Ergibt Verkaufsmengen z.B. pro Monat, Quartal, Jahr
Summationstyp Stock
Gilt für Fakten, die in allen Dimensionen außer der temporalen summierbar sind. Beispiele: Lagerbestand, Kundenbestand, Kontostand
Konkretes Beispiel: Lagerbestand mit Lager, Produkt, Datum, Menge
- Summation entlang Lager: Ergibt Lagerbestand z.B. pro Stadt, pro Bundesland usw.
- Summation entlang Produkt: Ergibt Lagerbestand z.B. pro Produktkategorie, Produktgruppe usw.
- Summation entlang Datum: Nicht sinnvoll: Die Summation aller Tages-Lagerbestände eines Monats ergibt keine verwertbare Information. Durchschnittswerte, Minimum und Maximum pro Monat machen dagegen Sinn.
Summationstyp Value-Per-Unit
Gilt für Fakten, die grundsätzlich nicht summierbar
sind. Auf diesen können nur die Aggregationsfunktionen
min()
, max()
und avg()
angewendet werden. Beispiele: Verkaufspreis, Wechselkurs, Steuersatz
Konkretes Beispiel: Verkaufspreis mit Kundenkategorie, Produkt, Datum, Menge
- Summation entlang Kundenkategorie, Produkt oder Datum: Nicht sinnvoll: Es macht nur Sinn, Durchschnittswerte, Minimum und Maximum entlang jeder Dimension zu bilden.
Klassifikation von Aggregationsfunktionen
- Hintergrund dieser Klassifikation
- Möglichkeiten der inkrementellen Aktualisierung materialisierter Sichten
- Keine einheitlichen Definitionen in der Literatur
- Additiv
- Inkrementelle Aktualisierung möglich sowohl in Bezug auf Ergänzungen des Datenbestands als auch in Bezug auf Löschungen von Datensätzen
- Semi-additiv
- Inkrementelle Aktualisierung nur in Bezug auf Ergänzungen möglich
- Additiv berechenbar
- Inkrementelle Aktualisierung indirekt und nur in Bezug auf Ergänzungen möglich
- Nicht additiv
- Inkrementelle Aktualisierung nicht möglich
Art | Funktion | Ergänzung von Datenbeständen | Löschung von Daten | |
---|---|---|---|---|
additiv | sum | sum | Subtraktion | |
count | sum | Subtraktion | ||
semi-additiv | min | min | ||
max | max | |||
additiv berechenbar | avg | sum/count | Voraussetzung: Summen- und Anzahl-Kennzahl sind vorhanden | |
nicht additiv | distinct count | |||
median |
Partitionierung
- Zerlegung einer logischen Einheit in mehrere physische
- Verwaltung sehr großer Relationen
- Effizientes Einfügen/Löschen ganzer Teile einer Datenbasis
- Effizienzsteigerung bei der Anfragebearbeitung
- Überspringen von Partitionen
- Parallele Bearbeitung von Partitionen
Beispiel: Aus einer Tabelle "Bestellungen" werden die Daten jahresweise herausgefiltert. Dadurch entstehen jahresabhängige Einzeltabellen, z.B. Tabelle "Bestellungen 2005" und Tabelle "Bestellungen 2006".
Materialisierung
- Vorberechnung von Verbunden
Beispiel: Durch den Verbund der zwei Tabellen "Bestellung" (mit den Spalten Bestellnummer, Datum) und "Kunde" (mit den Spalten Kundennummer, Name) wird die Tabelle "BestellungKundenSicht" (mit den Spalten Bestellnummer, Datum, Kundennummer, Name) erzeugt. - Vorberechnung von Aggregationen
Beispiel: Durch Aggregation wird aus der Tabelle "Bestellung" (mit den Spalten Bestellnummer, Datum und Bestellwert) die Tabelle "BestellwertProJahrSicht" (mit den Spalten Jahr, Bestellwert) erzeugt. Pro Zeile steht dann ein Jahr und dier entsprechende Gesamtbestellwert in diesem. - Kombinierte Vorberechnung von Verbunden und Aggregationen