Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Multidimensionale Datenbanken

Ähnliche Präsentationen


Präsentation zum Thema: "Multidimensionale Datenbanken"—  Präsentation transkript:

1 Multidimensionale Datenbanken
Multidimensionale Datenbanken Teil I: Operationen in mehrdimensionalen Daten Unser Thema betrifft Multidimensionale Datenbanken. Zuerst werde ich im theoretische Teil etwas über den CUBE Operator als Erweiterung der SQL-Syntax erzählen. Danach wird euch Thomas über unsere praktische Erfahrung mit materialisierten CUBEs berichten. Insbesondere von solchen die mit dem Microsoft Decision Support Server erstellt wurden. Patrick Sager & Thomas Stocker Patrick Sager & Thomas Stocker

2 Multidimensionale Datenbanken
Übersicht Teil I: Operationen in mehrdimensionalen Daten Motivation Aggregate und GROUP BY in Standard-SQL Cross-Tables Operatoren: CUBE ROLLUP Teil II: Modellierung und Erstellung eines Data Cubes mit dem MS OLAP Manager für TPC-D Daten Aufgabe Begriffe Architektur des Servers Design unserer Cubes Verbesserungsvorschläge Kurze Motivation Aggregate / Group By in SQL (Repetition) Beiden Operatoren CUBE / ROLLUP als Erweiterung der SQL Syntax Aufgabenstellung die wir bekommen haben und die Architektur des Servers. Gedanke die wir uns beim Design unseres CUBEs machten. Verbesserungsvorschläge für den MS-Decision Support Server Patrick Sager & Thomas Stocker Patrick Sager & Thomas Stocker

3 Multidimensionale Datenbanken
Daten-Analyse Summiere Werte und extrahiere statistische Informationen Meist nach mehreren Kriterien: Tiefste Temperatur in New York an Weihnachten während den letzten 100 Jahren Durchschnittlicher Umsatz der Abteilung „Schuhe“ in Frankreich im Monat Mai Unterstützung der Entscheidungsfindung in der Betriebsführung (MIS) Ziel: Möglichst einfacher und effizienter Zugriff auf solche Informationen Sinn des Data Warehouse ist die Datenanalyse Dimensionen: Abteilung, Land, Monat Wie stelle ich mehrere Dimensionen im Relationen Modell dar? => next Patrick Sager & Thomas Stocker Patrick Sager & Thomas Stocker

4 Mehrdimensionale Daten im Relationen-Modell
Multidimensionale Datenbanken Mehrdimensionale Daten im Relationen-Modell Länge Breite Höhe (20, 1029) Einige Attribute werden als Dimensionen und andere als Masse verwendet. Man aggregiert über die Masse und gruppiert über die Dimensionen. Dimensionen alles möglich (Zeit, Abteilung, Artikel,...) Patrick Sager & Thomas Stocker Patrick Sager & Thomas Stocker

5 Multidimensionale Datenbanken
Aggregate Prinzip: Kombiniere alle Werte eines Attributes in einen einzigen skalaren Wert. Aggregatsfunktionen in Standard-SQL COUNT(), SUM(), MIN(), MAX(), AVG() Erweiterte Versionen von SQL bieten zusätzliche Aggregatsfunktionen (Statistik, Physik, ...). Einige Systeme erlauben es dem Benutzer eigene Aggregatsfunktionen hinzuzufügen. Patrick Sager & Thomas Stocker Patrick Sager & Thomas Stocker

6 Multidimensionale Datenbanken
GROUP BY Durch den Standard-SQL GROUP BY Operator wird eine Tabelle in Gruppen unterteilt. Auf jede Gruppe wird dann die Aggregatsfunktion angewendet. Das Resultat ist eine Menge von Werten. Aggregate Values Partitioned Table Grouping Values z.B. Umsatz pro Abteilung und Verkäufer Sum() Patrick Sager & Thomas Stocker Patrick Sager & Thomas Stocker

7 Multidimensionale Datenbanken
Cross-Table Darstellung einer 2-dimensionalen Aggregation erfolgt am einfachsten in einer Cross-Table (Pivottabelle): Pivottabellen sind aber keine relationalen Objekte und schwierig mit mehr Dimensionen darzustellen Darum verwende ich den „ALL Wert“ => 2. Projektor Patrick Sager & Thomas Stocker Patrick Sager & Thomas Stocker

8 Relationale Darstellung der Cross-Table
Multidimensionale Datenbanken Relationale Darstellung der Cross-Table 'ALL' wird verwendet um Mehrfach-Aggregationen auszudrücken. SELECT Modell, 'ALL', 'ALL', SUM(Stücke) FROM Verkauf WHERE Modell = 'T-Shirt' GROUP BY Modell UNION SELECT Modell, Jahr, 'ALL', SUM(Stücke) GROUP BY Modell, Jahr SELECT Modell, 'ALL', Farbe, SUM(Stücke) GROUP BY Modell, Farbe SELECT Modell, Jahr, Farbe, SUM(Stücke) GROUP BY Modell, Jahr, Farbe; Intern wird meist die Darstellung mit All bevorzugt. Dh. man erstellt intern eine Tabelle mit „All“ Werten. Diese wird für die Präsentation dann in eine Pivot-Tabelle umgewandelt. Problem in Standard SQL: z.B. 6 dimensionale CrossTable braucht 64 UNIONS => bei herkömmlicher Implementierung 64 Scans der Daten => hohe Antwortzeit Aus diesem Grund verwendet man den CUBE Operator. Patrick Sager & Thomas Stocker Patrick Sager & Thomas Stocker

9 Multidimensionale Datenbanken
CUBE - Operator Data Cube als n-dimensionale Generalisierung von GROUP BY und Aggregaten 0D: Punkt 1D: Linie mit Punkt 2D: Pivottabelle (Fläche mit 2 Linien und einem Punkt) 3D: Würfel mit 3 sich schneidenden 2D-Cubes Vorschlag der Erweiterung des SQL GROUP BYs GROUP BY ( { ( <column name> | <expression>) [ AS <correlation name>] [ <collate clause> ] ,...} [ WITH ( CUBE | ROLLUP)] ) Gleichzeitig Bild von CUBE auflegen. Bei SQL Syntax, Beispiel zeigen (nicht erklären) Patrick Sager & Thomas Stocker Patrick Sager & Thomas Stocker

10 Multidimensionale Datenbanken
Data-CUBE 0D: Summe aller Verkauften Artikel 1D: Anzahl verkauften Artikel je Farbe, und Total 2D: Anzahl verkaufter Artikel je Farbe und Model mit Totals 3D: Zusätzlich noch Angabe des Jahres (der hellgrüne Punkt bleibt immer derselbe) Weitere Dimensionen: versch. Geschäfte, versch. Grössen Patrick Sager & Thomas Stocker Patrick Sager & Thomas Stocker

11 Beispiel eines 3D-Data-Cubes
Multidimensionale Datenbanken Beispiel eines 3D-Data-Cubes DATA CUBE Modell Jahr Farbe Total ALL 4495 T-Shirt 2875 Hosen 1620 1995 1245 1996 1470 1997 1780 rot weiss 1055 blau 1970 625 900 1350 620 570 430 1250 675 950 220 380 1020 400 295 550 200 720 520 560 700 Verkauf Modell Jahr Farbe Stücke T-Shirt 1995 rot 300 weiss 75 blau 250 1996 500 100 1997 450 400 Hosen 220 50 420 70 60 CUBE Zeigen eines konkreten Beispiels Jedes ALL repräsentiert die Menge, über welcher das Aggregat berechnet wird. z.B. Modell.All = {T-Shirt, Hosen} Farbe.ALL = {rot, blau, weiss} SELECT Modell, Jahr, Farbe, SUM(Stücke) AS Total FROM Verkauf WHERE Modell IN {‘T-Shirt‘, ‘Hosen‘} AND Jahr BETWEEN 1995 AND 1997 GROUP BY Modell, Jahr, Farbe WITH CUBE; Patrick Sager & Thomas Stocker Patrick Sager & Thomas Stocker

12 Zugriff auf Elemente des CUBEs
Multidimensionale Datenbanken Zugriff auf Elemente des CUBEs Zusätzliche Angabe des Anteils der verkauften Stücke an den total verkauften Stücken: SELECT v.Modell, v.Jahr, v.Farbe, SUM(Stücke) AS Total, SUM(Stücke) / Total(ALL, ALL, ALL) AS Verhältnis FROM Verkauf v WHERE Modell = 'T-Shirt' AND Jahr BETWEEN 1996 AND 1997 GROUB BY Modell, Jahr, Farbe WITH CUBE Patrick Sager & Thomas Stocker Patrick Sager & Thomas Stocker

13 Berechnung des Data CUBEs
Multidimensionale Datenbanken Berechnung des Data CUBEs Grösse des CUBEs: Falls Basisrelation N Attribute mit Kardinalitäten C1, C2,..., CN hat, so besitzt der CUBE Õ (Ci + 1) Tupel. Berechnung des CUBEs: Da der CUBE Operator eine Erweiterung der Aggregate und des GROUP BY's ist, verwende die dort bekannten Techniken: Berechne Aggregate auf tiefst möglichem Systemlevel Verwende bei grossen Strings Indizes Hashing Einfacher Algorithmus: Alloziere Handle für jede CUBE-Zelle Rufe für jedes Tupel alle betroffenen Handles auf (2N) Übernehme die Resultate Laufzeit: T*2N (T: Anzahl Tupel; N: Anzahl Dimensionen) Grösse des CUBES: also pro Attribut, die Anzahl verschiedener Werte plus All, also z.B. weiss, rot, blau, All Verwende Indizes um möglichst ganze Datenstruktur in den Speicher zu bekommen, damit ich Hashing verwenden kann. Sonst muss ich Daten aufteilen und sortieren. (Zeige Bild von CUBE) z.B. (T-Shirt, 1997, rot, 450) 2Nda jede Koordinate einer CUBE Zelle entweder einen Wert oder ALL ist. Patrick Sager & Thomas Stocker Patrick Sager & Thomas Stocker

14 Multidimensionale Datenbanken
Data-CUBE Einfacher Algorithmus: Alloziere Handle für jede CUBE-Zelle Rufe für jedes Tupel alle betroffenen Handles auf (2N) z.B. (T-Shirt, 1997, rot, 450) Stift=>(Zeichne alle betroffenen Handle ein) 2Nda jede Koordinate einer CUBE Zelle entweder einen Wert oder ALL ist. Übernehme die Resultate Laufzeit: T*2N (T: Anzahl Tupel; N: Anzahl Dimensionen) Patrick Sager & Thomas Stocker Patrick Sager & Thomas Stocker

15 Berechnung eines Data-CUBEs am Beispiel
Multidimensionale Datenbanken Berechnung eines Data-CUBEs am Beispiel Wenn die Aggregatsfunktion distributiv ist, so kann man den CUBE einfacher berechnen: Baue den 2D Kern eines 2*3 CUBE auf Berechne die 1D Kanten Berechne den 0D Punkt 2D Kern z.B. durch Import der Daten aus anderen Relationen (z.B. Bestellungen) Verwende z.B. bei 0D die kleinere Reihe Distributiv: SUM(a,b,c,d,e) = SUM( SUM(a,b,c), SUM(d,e) ) ok mit MIN, MAX, SUM, geht nicht mit AVG Spezialfall COUNT Patrick Sager & Thomas Stocker Patrick Sager & Thomas Stocker

16 Multidimensionale Datenbanken
MS-SQL-Server Abweichung zur bisherigen Definition des CUBE-Operators: NULL Wert anstelle des ALL Wertes Neue Funktion GROUPING(): TRUE, falls Element ein ALL Wert FALSE sonst Überall wo vorher im Resultat der ALL-Wert erschien, kommt jetzt NULL, und das dazugehörige grouping Feld enthält TRUE. Hinzufügen des ALL in SQL bringt viele komplexe Veränderungen der Syntax neues Schlüsselwort Anpassung der relationalen Operatoren Spezialfälle ... Patrick Sager & Thomas Stocker Patrick Sager & Thomas Stocker

17 MS-SQL-Server (Beispiel)
Multidimensionale Datenbanken MS-SQL-Server (Beispiel) Select Modell, Jahr, Farbe, SUM(Stücke), GROUPING(Modell),GROUPING(Jahr),GROUPING(Farbe) FROM Verkauf WHERE Modell = 'T-Shirt' AND Jahr BETWEEN 1996 AND 1997 GROUP BY Modell, Jahr, Farbe WITH CUBE; Version des MS-SQL-Servers "original" Patrick Sager & Thomas Stocker Patrick Sager & Thomas Stocker

18 Multidimensionale Datenbanken
Drill-down / Roll-up Drill-down Roll-up Ziel des Online Browsen, dazu Thomas später asymmetrische Aggregation => fehlt z.B. alle roten T-Shirts egal in welchem Jahr Patrick Sager & Thomas Stocker Patrick Sager & Thomas Stocker

19 Symmetrische vs. Asymmetrische Aggregation
Multidimensionale Datenbanken Symmetrische vs. Asymmetrische Aggregation symmetrischen Aggregation: Berechne Resultate aller Knoten (CUBE) asymmetrische (lineare) Aggregation: Berechne nur die Resultate der Knoten entlang eines Pfades (ROLLUP) (Modell, Jahr, Farbe) (Modell, Jahr, ALL) (ALL, Jahr, Farbe) (Modell, ALL, Farbe) (Modell, ALL, ALL) (ALL, Jahr, ALL) (ALL, ALL, Farbe) (ALL, ALL, ALL) Patrick Sager & Thomas Stocker Patrick Sager & Thomas Stocker

20 Multidimensionale Datenbanken
ROLLUP (Beispiel) SELECT Modell, Jahr, Farbe, SUM(Stücke) AS Total, FROM Verkauf WHERE Jahr BETWEEN 1996 AND 1997 GROUB BY Modell, Jahr, Farbe WITH ROLLUP ROLLUP berechnet eine asymmetrische Aggregation entlang des Pfades definiert durch die Ordnung der GROUP BY Parameter ALL => Modell => (Modell, Jahr) => (Modell, Jahr, Farbe) Zeige RollUp in Syntax auf Folie mit CUBE-Operator Patrick Sager & Thomas Stocker Patrick Sager & Thomas Stocker

21 Multidimensionale Datenbanken
Ausblick Materialisierung des CUBEs Vorschlag mit neuer Arithmetik in [Agrawal 97] Hierarchische Dimensionen Zeit: Jahr, Monat, Woche, Tag Ort: Kontinent, Land, Landesteil Einfaches Browsen für Online Decision Support Materialisierung => Performance Gewinn Hierarchische Dimensionen (Roll-up / Drill-Down) vgl. MS Decision Support Server Patrick Sager & Thomas Stocker Patrick Sager & Thomas Stocker


Herunterladen ppt "Multidimensionale Datenbanken"

Ähnliche Präsentationen


Google-Anzeigen