Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Objekt-relationale Datenbanken Datenbanken Unit 9: OLAP, OLTP und objektrelationale Datenbanken Ronald Ortner 17. V. 2017 Ronald Ortner Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Outline 1 Organisatorisches 2 SQL 3 OLTP, OLAP, SAP, and Data Warehouse OLTP and OLAP SAP Data Warehouse & OLAP 4 Objekt-relationale Datenbanken Beispiel Objekt-relationale Datenbanken Ronald Ortner Objekt-relationale Datenbanken Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Objekt-relationale Datenbanken Organisatorisches Nächste Woche entfallen VO und UE Aktuelle ÜBeispiele bis in zwei Wochen Noch drei Wissensüberprüfungen am 17.5., 31.5. und 7.6. UE-Abschlusstest am 14. Juni (Gruppe 1: 14:45–16:00, Gruppe 2: 16:00–17:15 ) Am 21. Juni finden beide Übungsgruppen gleichzeitig statt (16–17:30 Uhr im RWZ HS). Ronald Ortner Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse SQL Heute: Nachbetrachtung Wissensüberprüfungen Datentyp Date und Regular Expressions Ronald Ortner Objekt-relationale Datenbanken Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Objekt-relationale Datenbanken Nachbetrachtung Zwischentest HAVING für Bedingungen an Aggregatfunktionen (Korrelierte Subqueries sind aufwendig, sollten also nur verwendet werden, wenn es wirklich notwendig ist!) COUNT 6= SUM Kein GROUP BY ohne Aggregatfunktion!!! Eine Subtilität: Oft sollte im GROUP BY nicht der Ausdruck im SELECT sondern entsprechende id verwendet werden. Ronald Ortner Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse OLTP and OLAP Outline 1 Organisatorisches 2 SQL 3 OLTP, OLAP, SAP, and Data Warehouse OLTP and OLAP SAP Data Warehouse & OLAP 4 Objekt-relationale Datenbanken Beispiel Objekt-relationale Datenbanken Ronald Ortner Objekt-relationale Datenbanken Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Objekt-relationale Datenbanken OLTP and OLAP OLTP vs. OLAP OLTP: online transaction processing Online-Datenbankanwendungen Beispiele: Bestellungen, Buchungen, etc. wichtig ist die Verarbeitung aktuell anfallender Daten → viele Updates und neue Einträge in der Datenbank Ronald Ortner Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Objekt-relationale Datenbanken OLTP and OLAP OLTP vs. OLAP OLTP: online transaction processing Online-Datenbankanwendungen Beispiele: Bestellungen, Buchungen, etc. wichtig ist die Verarbeitung aktuell anfallender Daten → viele Updates und neue Einträge in der Datenbank OLAP: online analytical processing Datenbankanwendungen für Analyse und Decision Support Beispiele: Trendanalyse, Big Data historische Daten sind wichtig → viele Daten, die meist in aggregierter Form benötigt werden Ronald Ortner Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse SAP Outline 1 Organisatorisches 2 SQL 3 OLTP, OLAP, SAP, and Data Warehouse OLTP and OLAP SAP Data Warehouse & OLAP 4 Objekt-relationale Datenbanken Beispiel Objekt-relationale Datenbanken Ronald Ortner Objekt-relationale Datenbanken Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Objekt-relationale Datenbanken SAP SAP SAP: Softwaresystem, hauptsächlich für OLTP SAP hat drei Ebenen: großes relationales Datenbanksystem im Hintergrund Applikationen, die auf Datenbank aufsetzen GUI Ronald Ortner Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Objekt-relationale Datenbanken SAP SAP SAP: Softwaresystem, hauptsächlich für OLTP SAP hat drei Ebenen: großes relationales Datenbanksystem im Hintergrund Applikationen, die auf Datenbank aufsetzen GUI Zugriff auf dahinterliegende Datenbanken: Auf einige Tabellen kann normal via SQL zugegriffen werden. Dabei ist meist nur lesender Zugriff sinnvoll. Auf andere Tabellen kann nur via SAP zugegriffen werden. Ronald Ortner Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Objekt-relationale Datenbanken SAP SAP SAP: Softwaresystem, hauptsächlich für OLTP SAP hat drei Ebenen: große relationales Datenbanksystem im Hintergrund Applikationen, die auf Datenbank aufsetzen GUI Eigene Applikationen könne mit ABAP/4 geschrieben werden – Datenbankzugriff mit Native SQL (mit speziellem User Interface) Open SQL (direkter Zugriff auf Datenbanken) Ronald Ortner Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Data Warehouse & OLAP Outline 1 Organisatorisches 2 SQL 3 OLTP, OLAP, SAP, and Data Warehouse OLTP and OLAP SAP Data Warehouse & OLAP 4 Objekt-relationale Datenbanken Beispiel Objekt-relationale Datenbanken Ronald Ortner Objekt-relationale Datenbanken Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Objekt-relationale Datenbanken Data Warehouse & OLAP OLTP vs. OLAP OLTP: online transaction processing Online-Datenbankanwendungen Beispiele: Bestellungen, Buchungen, etc. wichtig ist de Verarbeitung aktuell anfallender Daten → viele Updates und neue Einträge in der Datenbank OLAP: online analytical processing Datenbankanwendungen für Analyse und Decision Support Beispiele: Trendanalyse, Big Data historische Daten sind wichtig → viele Daten, die meist in aggregierter Form benötigt werden Ronald Ortner Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Objekt-relationale Datenbanken Data Warehouse & OLAP OLTP vs. OLAP OLTP: online transaction processing Online-Datenbankanwendungen Beispiele: Bestellungen, Buchungen, etc. wichtig ist de Verarbeitung aktuell anfallender Daten → viele Updates und neue Einträge in der Datenbank OLAP: online analytical processing Datenbankanwendungen für Analyse und Decision Support Beispiele: Trendanalyse, Big Data historische Daten sind wichtig → viele Daten, die meist in aggregierter Form benötigt werden → Es ist keine gute Idee, OLTP und OLAP auf derselben Datenbank auszuführen. Ronald Ortner Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Objekt-relationale Datenbanken Data Warehouse & OLAP Data Warehouse Grundidee von Data Warehouse: Operationale Datenbank für OLTP Speichere regelmäßig (aber nicht online!) Daten von operationaler Datenbank in Data Warehouse Ronald Ortner Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Objekt-relationale Datenbanken Data Warehouse & OLAP Data Warehouse Grundidee von Data Warehouse: Operationale Datenbank für OLTP Speichere regelmäßig (aber nicht online!) Daten von operationaler Datenbank in Data Warehouse Datenbankschemata für Data Warehouse: Sternschema: eine zentrale Faktentabelle andere Tabellen nicht normalisiert Ronald Ortner Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Objekt-relationale Datenbanken Data Warehouse & OLAP Data Warehouse Grundidee von Data Warehouse: Operationale Datenbank für OLTP Speichere regelmäßig (aber nicht online!) Daten von operationaler Datenbank in Data Warehouse Datenbankschemata für Data Warehouse: Sternschema: eine zentrale Faktentabelle andere Tabellen nicht normalisiert Schneeflockenschema: eine zentrale Faktentabelle andere Tabellen normalisiert (→ benötigt mehr Joins) Ronald Ortner Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Objekt-relationale Datenbanken Data Warehouse & OLAP Roll Up und Drill Down Abfragen auf Data Warehouse typischerweise in aggregierter Form (→ GROUP BY) Drill down: mehr Attribute im GROUP BY Roll up: weniger Attribute im GROUP BY Daten können in einer Tabelle bzw. allgemein im “Data cube” dargestellt werden. Ronald Ortner Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Data Warehouse & OLAP Cube Operator Data cube: Ausführung aller nötigen Abfragen aufwendig Ronald Ortner Objekt-relationale Datenbanken Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Data Warehouse & OLAP Cube Operator Data cube: Ausführung aller nötigen Abfragen aufwendig können Tabelle für Data cube speichern (mit NULL Werten, wo aggregiert wird) Ronald Ortner Objekt-relationale Datenbanken Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Data Warehouse & OLAP Cube Operator Data cube: Ausführung aller nötigen Abfragen aufwendig können Tabelle für Data cube speichern (mit NULL Werten, wo aggregiert wird) immer noch recht aufwendig und unpraktisch Ronald Ortner Objekt-relationale Datenbanken Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Objekt-relationale Datenbanken Data Warehouse & OLAP Cube Operator Data cube: Ausführung aller nötigen Abfragen aufwendig können Tabelle für Data cube speichern (mit NULL Werten, wo aggregiert wird) immer noch recht aufwendig und unpraktisch → Idee: neuer SQL Operator CUBE Verwendung: GROUP BY CUBE( attr1, attr2, . . . ) Ronald Ortner Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Objekt-relationale Datenbanken Data Warehouse & OLAP Cube Operator Data cube: Ausführung aller nötigen Abfragen aufwendig können Tabelle für Data cube speichern (mit NULL Werten, wo aggregiert wird) immer noch recht aufwendig und unpraktisch → Idee: neuer SQL Operator CUBE Verwendung: GROUP BY CUBE( attr1, attr2, . . . ) Weitere Möglichkeit: speichern Tabelle, die maximal “drilled-down” ist aggregieren diese Tabelle (weniger aufwendig als Aggregation jedesmal neu zu machen) Ronald Ortner Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Objekt-relationale Datenbanken Data Warehouse & OLAP Row Store vs. Column Store Typischerweise werden Tabellen zeilenweise gespeichert. Ronald Ortner Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Objekt-relationale Datenbanken Data Warehouse & OLAP Row Store vs. Column Store Typischerweise werden Tabellen zeilenweise gespeichert. Bei vielen Spalten, kann es aus Performancegründen u.U. auch besser sein, spaltenweise zu speichern: Ronald Ortner Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Objekt-relationale Datenbanken Data Warehouse & OLAP Row Store vs. Column Store Typischerweise werden Tabellen zeilenweise gespeichert. Bei vielen Spalten, kann es aus Performancegründen u.U. auch besser sein, spaltenweise zu speichern: Die meisten Abfragen betreffen nur wenige Spalten. Ronald Ortner Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Objekt-relationale Datenbanken Data Warehouse & OLAP Row Store vs. Column Store Typischerweise werden Tabellen zeilenweise gespeichert. Bei vielen Spalten, kann es aus Performancegründen u.U. auch besser sein, spaltenweise zu speichern: Die meisten Abfragen betreffen nur wenige Spalten. Spaltenwerte sind ähnlicher und können leichter komprimiert werden. Ronald Ortner Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Objekt-relationale Datenbanken Data Warehouse & OLAP Row Store vs. Column Store Typischerweise werden Tabellen zeilenweise gespeichert. Bei vielen Spalten, kann es aus Performancegründen u.U. auch besser sein, spaltenweise zu speichern: Die meisten Abfragen betreffen nur wenige Spalten. Spaltenwerte sind ähnlicher und können leichter komprimiert werden. Verwendung von Wörterbuch-Tabelle Ronald Ortner Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Beispiel Outline 1 Organisatorisches 2 SQL 3 OLTP, OLAP, SAP, and Data Warehouse OLTP and OLAP SAP Data Warehouse & OLAP 4 Objekt-relationale Datenbanken Beispiel Objekt-relationale Datenbanken Ronald Ortner Objekt-relationale Datenbanken Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Beispiel Beispiel: Bücherdatenbank Ronald Ortner Objekt-relationale Datenbanken Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Beispiel Beispiel: Bücherdatenbank Wir führen IDs für Autoren, Bücher und Keywords ein. Dann: eine Tabelle für jeden Entitätstyp (mit den IDs als Primärschlüssel): Autoren: {[a_id, Name]} Bücher: {[b_id, Titel, Verlag]} Keywords: {[k_id, Keyword]} eine Tabelle für jede Relation: schreibt: {[a_id, b_id]} hat_Keyword: {[b_id, k_id, Gewicht]} Ronald Ortner Objekt-relationale Datenbanken Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Beispiel Beispiel: Bücherdatenbank Wir führen IDs für Autoren, Bücher und Keywords ein. Dann: eine Tabelle für jeden Entitätstyp (mit den IDs als Primärschlüssel): Autoren: {[a_id, Name]} Bücher: {[b_id, Titel, Verlag]} Keywords: {[k_id, Keyword]} eine Tabelle für jede Relation: schreibt: {[a_id, b_id]} hat_Keyword: {[b_id, k_id, Gewicht]} → brauchen fünf (!) Tabellen für einen Entitätstyp Ronald Ortner Objekt-relationale Datenbanken Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Objekt-relationale Datenbanken Outline 1 Organisatorisches 2 SQL 3 OLTP, OLAP, SAP, and Data Warehouse OLTP and OLAP SAP Data Warehouse & OLAP 4 Objekt-relationale Datenbanken Beispiel Objekt-relationale Datenbanken Ronald Ortner Objekt-relationale Datenbanken Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Objekt-relationale Datenbanken Objekt-relationale Datenbanken Objektorientierte Erweiterungen → erweitern relationale Datenbanktheorie mit objektorientierten Ideen: Mögliche Ansätze: Ronald Ortner Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Objekt-relationale Datenbanken Objekt-relationale Datenbanken Objektorientierte Erweiterungen → erweitern relationale Datenbanktheorie mit objektorientierten Ideen: Mögliche Ansätze: zusätzliche Struktur in Datenbanken: → implizite Joins (keine Join-Bedingung nötig) Ronald Ortner Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Objekt-relationale Datenbanken Objekt-relationale Datenbanken Objektorientierte Erweiterungen → erweitern relationale Datenbanktheorie mit objektorientierten Ideen: Mögliche Ansätze: zusätzliche Struktur in Datenbanken: → implizite Joins (keine Join-Bedingung nötig) geben 1.NF auf und erlauben strukturierte Informationen: → können z.B. mehrere Autoren oder Keywords speichern Ronald Ortner Organisatorisches SQL OLTP, OLAP, SAP, and Data Warehouse Objekt-relationale Datenbanken Objekt-relationale Datenbanken Objekt-relationale Datenbanken In objekt-relationaler Datenbank gibt es weiters: Möglichkeit, Objekte mithilfe anderer Objekte zu definieren Vererbung Objektmethoden → objekt-orientierte Programmiersprachen wie etwa Java Ronald Ortner