Multidimensionale Datenbanken

Slides:



Advertisements
Ähnliche Präsentationen
ER-Datenmodell und Abfragen in SQL
Advertisements

Data Cubes PG Wissensmangement Seminarphase Hanna Köpcke Lehrstuhl für Künstliche Intelligenz Universität Dortmund.
System J – Compiler – Praktikum: Datenbanksystementwicklung Knut Stolze
Systemüberblick Beispiele: Microsoft Access Oracle Ingres Informix
SQL als Abfragesprache
Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme
Beispielrelation Buchbestellungen H = Menge der bedeutenden Ziele = {a, d} Schwelle T = 4 Stichprobe S = {a, b, a, a, a, a} mit s = |S| = 6 N = Anzahl.
Abfragen – Tipps und Tricks Buch S102ff (Informatik I, Oldenbourg-Verlag) Nach einer Vorlage von Dieter Bergmann.
Übung 1: SQL Übungen finden bei Bedarf anstelle der Vorlesungen statt
Sistema GeoDAT, S.L. GeoBIS, GeoEIS, GIS-Komponente … 2005.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
SS 2004 Datenbanken 4W Mi 13:30 – 15:00 G 2.30 Vorlesung #7 SQL (Teil 2)
WS 2011/12 Datenbanksysteme Mi 15:15 – 16:45 R Vorlesung #9 Physische Datenorganisation.
Datenbanksysteme für hörer anderer Fachrichtungen
Speichern und Lesen von Daten im Data Warehouse
Einführung in Datenbankmodellierung und SQL
Freiwillige Feuerwehr der Stadt Perg
Aggregatsfunktion SQL = Structured Query Language.
SQL - Structured Query Language AIFB SS (1/9) Join-Operationen in SQL-92(1/9) Syntax einer Join-Operation: join-op := CROSS JOIN | [NATURAL]
Aggregatsfunktion mit Group by und having SQL = Structured Query Language.
Verdichten von Daten mit Gruppenfunktionen
Structured Query Language
Vorlesung #5 SQL (Teil 2).
WS 2004/2005 Datenbanken II - 5W Mi 17:00 – 18:30 G 3.18 Vorlesung #10 RDBMS Erweiterungen.
WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
Anfragen an multidimensonale Daten
Microsoft Praxistag für die Öffentliche Verwaltung 2010 Praxistag für die Öffentliche Verwaltung 2010 Management-Informationssystem in Öffentlichen Verwaltung.
Bereit, wenn Sie es sind Gute Neuigkeiten. Noch während die Installation im Hintergrund fortgesetzt wird, können Sie Office 2010 bereits verwenden. Sehen.
IS: Datenbanken, © Till Hänisch 2000 Relationenalgebra Die mathematische Grundlage von relationalen Datenbanken.
Kapitel 2: Testtheorie / Testmodelle  Multivariate (p-variate) Normalverteil- ung :  Mittelwertstruktur: p Mittelwerte  Kovarianzstruktur: p·(p+1)/2.
SQL Structured Query Language Enzio Thiem. INHALT CREATE TABLE Anweisung Gängige Datentypen Beispiel CREATE TABLE Beispiel CREATE TABLE - erweitert Beispiel.
Diagramme erstellen mit MS Excel
Abfragen Wiederholung Manuel Friedrich Schiller-Gymnasium Hof.
Schlange und Stapel.
Vorlesung #4 Relationales Kalkül und SQL (Teil 1)
Data Warehousing für TPC-D Daten
Lösung der Aufgabe 1: Die Erweiterung des Diagramms auf „Winged Egde“ besteht in zwei Beziehungen, nr-Kante und vl-Kante, zwischen der Klasse Kante. Jede.
Darstellung der Relationenalgebra als Programmiersprache
Vorlesung #5 SQL (Teil 2).
Das Problem des Handlungsreisenden
Geometrisch-topologische Konsistenz in Geo-Informationssystemen
Logisches Datenmodell
Vorlesung #6 SQL (Teil 3).
Wirtschaftsinformatik
Non-Standard-Datenbanken
Beispiele zur Datenänderung
Allgemeine Befehle für die allgemeine Liste
Funktionen, GROUP BY, HAVING Views anlegen und verwenden
Vorlesung #5 Überführung (Fortsetzung) / Normalformen
Indexierung Oracle: indexes Indexierung.
Vorlesung #4 Überführung des ER-Modells in das relationale Modell
Peppex shirts Modell Farbe Layout für druck – peppex Contrast weiss-blau.
Peppex shirts Modell Farbe Layout für druck – peppex performance weiss-rot.
Peppex shirts Modell Farbe Layout für druck – peppex raglan one blau-weiss.
SS 04 Christiane Rauh Christian Hellinger
Algorithmen und Datenstrukturen
Kap. 12 R-Bäume GB B31 B245 Box 1: Box 2: Box 3: Box 4: Box 5:
1. Die rekursive Datenstruktur Liste 1.3 Rekursive Funktionen
1. Die rekursive Datenstruktur Liste 1
Peppex shirts Modell Farbe Layout für druck – peppex Contrast weiss-blau.
Google-Kalender Präsentation:
Übung 01 Erstellen Sie eine neue Tabelle TBL_Lieferanten
Von Wietlisbach, Lenzin und Winter
Nutzung und Modellierung von Datenbanken
Übersicht Etwas Mathematik (ganz ohne geht es nicht).
Aggregations in Power BI
2.3 Gruppierte Datensätze
Schmock Mutter nicht ausreichend versorgt  fast verhungert Mutter bei Geburt verstorben Schmock mit Flasche aufgezogen.
(Structured Query Language)
 Präsentation transkript:

Multidimensionale Datenbanken 09.02.2018 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

Multidimensionale Datenbanken 09.02.2018 Ü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

Multidimensionale Datenbanken 09.02.2018 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

Mehrdimensionale Daten im Relationen-Modell Multidimensionale Datenbanken 09.02.2018 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

Multidimensionale Datenbanken 09.02.2018 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

Multidimensionale Datenbanken 09.02.2018 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

Multidimensionale Datenbanken 09.02.2018 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

Relationale Darstellung der Cross-Table Multidimensionale Datenbanken 09.02.2018 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

Multidimensionale Datenbanken 09.02.2018 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

Multidimensionale Datenbanken 09.02.2018 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

Beispiel eines 3D-Data-Cubes Multidimensionale Datenbanken 09.02.2018 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

Zugriff auf Elemente des CUBEs Multidimensionale Datenbanken 09.02.2018 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

Berechnung des Data CUBEs Multidimensionale Datenbanken 09.02.2018 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

Multidimensionale Datenbanken 09.02.2018 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

Berechnung eines Data-CUBEs am Beispiel Multidimensionale Datenbanken 09.02.2018 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

Multidimensionale Datenbanken 09.02.2018 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

MS-SQL-Server (Beispiel) Multidimensionale Datenbanken 09.02.2018 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

Multidimensionale Datenbanken 09.02.2018 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

Symmetrische vs. Asymmetrische Aggregation Multidimensionale Datenbanken 09.02.2018 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

Multidimensionale Datenbanken 09.02.2018 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

Multidimensionale Datenbanken 09.02.2018 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