Datenbanken und SQL Kapitel 1 Übersicht über Datenbanken Edwin Schicker: Datenbanken und SQL (1) Übersicht über Datenbanken Vergleich: Datenorganisation versus Datenbank Definition einer Datenbank Bierdepot: Eine Mini-Beispiel-Datenbank Anforderungen an eine Datenbank Der Datenbankadministrator Relationale Datenbanken Nicht relationale Datenbanken Transaktionen 2 Edwin Schicker: Datenbanken und SQL (1) Mehrbenutzerbetrieb mit Datenorganisation En d b e n u t ze r Anwendungsprogramm Sehr selten: Direktzugriffe kennt Dateistrukturen 3 Anwendungsprogramm 1 Zugriff über AnwendungsAnwendungsprogramm programm 2 ... Datei 1 Datei 2 Datei 3 Dateien mit komplexen Zugriffsstrukturen Anwendungsprogramm 3 ... Alle Anwendungsprogramme ... Anwendungsprogramm Datei kennen alle Dateistrukturen! kennt alle Dateistrukturen! m Anwendungsprogramm n Edwin Schicker: Datenbanken und SQL (1) Schematischer Zugriff auf Datenbanken Anwendungsprogramm En d b e n u t ze r Direktzugriffe kennt Datenbankschnittstelle Anwendungsprogramm 1 Zugriff über AnwendungsAnwendungsprogramm programm 2 ... Anwendungsprogramm 3 Datenbankverwaltungssystem Datei Datei Datei ... ... Anwendungsprogramm n Anwendungsprogramm kennt Datei nur Datenbankschnittstelle! Datenbankschnittstelle 4 Edwin Schicker: Datenbanken und SQL (1) Definition einer Datenbank Definition (Datenbank): Eine Datenbank ist eine Sammlung von Daten, die untereinander in einer logischen Beziehung stehen und die von einem eigenen Datenbankverwaltungssystem (DBMS) verwaltet werden. Database Management System 5 Edwin Schicker: Datenbanken und SQL (1) Bierdepot Nr 1 3 4 8 11 16 20 23 24 26 28 33 36 39 47 6 Sorte Hell Roggen Pils Export Weißbier Hell Hell Hell Starkbier Dunkel Märzen Pils Alkoholfreies Bier Weißbier Alkoholfreies Pils Hersteller Lammsbräu Thurn und Taxis Löwenbräu Löwenbräu Paulaner Spaten Spaten EKU Paulaner Kneitinger Hofbräu Jever Löwenbräu Erdinger Clausthaler Typ Kasten Kasten Kasten Fass Kasten 6er Pack Kasten Fass Kasten Kasten Fass 6er Pack 6er Pack Kasten Kasten Anzahl 12 10 22 6 7 5 12 4 4 8 3 6 5 9 1 Edwin Schicker: Datenbanken und SQL (1) Lesezugriff auf das Bierdepot SELECT FROM WHERE Nr 1 11 3 39 4 8 11 16 20 23 24 26 7 28 Sorte, Hersteller, Anzahl Bierdepot Sorte = 'Weißbier' ; Sorte Sorte Weißbier Hell Weißbier Weißbier Roggen Pils Weißbier Export Weißbier Hell Hell Hell Starkbier Dunkel Märzen HerstellerAnzahl Typ Hersteller Paulaner Lammsbräu Kasten Paulaner 7 Erdinger Thurn und Taxis Kasten Löwenbräu Erdinger Löwenbräu Paulaner Spaten Spaten EKU Paulaner Kneitinger Hofbräu Anzahl 7 12 9 10 Kasten 22 9 Fass 6 Kasten 7 6er Pack 5 Kasten 12 Fass 4 Kasten 4 Kasten 8 Edwin Schicker: Datenbanken und3 SQL (1) Kasten Schreibzugriffe auf das Bierdepot INSERT INTO Bierdepot VALUES (43, 'Dunkel', 'Kaltenberg', 'Kasten', 6) ; UPDATE Bierdepot SET Anzahl = Anzahl - 1 WHERE Nr = 11 ; DELETE FROM Bierdepot WHERE Nr = 47 ; 8 Fügt eine neue Zeile hinzu Reduziert die Anzahl zu Artikel 11 Löscht die Zeile zu Artikel 47 Edwin Schicker: Datenbanken und SQL (1) Datenbankhersteller Angaben zu Marktanteilen streuen (je nach Quelle) Hersteller Marktanteil geschätzt Oracle 33%-48% DB2 20%-30% Microsoft 16%-20% SAP 3%-4% Open Source Datenbanken: MySQL PostgreSQL 9 Edwin Schicker: Datenbanken und SQL (1) Anforderungen an eine Datenbank (1) Sammlung logisch verbundener Daten Speicherung der Daten mit möglichst wenig Redundanz Beispiel für Redundanz: Einkauf Lagerhaltung Verkauf da: Lager = Einkauf – Verkauf Abfragemöglichkeit und Änderbarkeit 10 Edwin Schicker: Datenbanken und SQL (1) Anforderungen an eine Datenbank (2) Logische Unabhängigkeit der Daten von der Speicherung Zugriffsschutz Integrität und Korrektheit Mehrfachzugriff (Concurrency) Zuverlässigkeit und Audit Ausfallsicherheit Funktionalität zur Kontrolle der Datenbank 11 Edwin Schicker: Datenbanken und SQL (1) Datenbankadministrator Aufgaben des Administrators: Datenbank-Schnittstellen: Einrichten einer Datenbank, Zugriffsschutz Betrieb und Kontrolle der Datenbank DDL Data Description Language Kontrollsprache (in DDL integriert) DML Data Manipulation Language Aufgabenteilung: 12 Anwender: DML (Select, Insert, Update, Delete) Administrator: DDL (Create Table, Create View, Grant, …) Edwin Schicker: Datenbanken und SQL (1) Datenbankmodelle im Überblick Relationale Datenbanken Objektorientierte und objektrelationale Datenbanken IMS Netzwerkartige Datenbanken Oracle, PostgreSQL Hierarchische Datenbanken Oracle, DB2, MS SQL Server, MySQL, PostgreSQL, Sybase IDMS, UDS Neue Datenbanksysteme 13 NOSQL: MongoDB Edwin Schicker: Datenbanken und SQL (1) Relationale Datenbanken Relationale Datenbanken Vorteile Leichte Änderbarkeit des Datenbankaufbaus, mathematisch fundiert, leicht programmierbar und zu verwalten Nachteile Häufig viele Ein-/Ausgaben notwendig, erfordert hohe Rechnerleistung, erzeugt Redundanz 14 Edwin Schicker: Datenbanken und SQL (1) Objektorientierte Datenbanken Objektorientierte und objektrelationale Datenbanken Vorteile Objektorientierter Ansatz, universell einsetzbar, noch relativ einfach programmierbar und zu verwalten, (meist) aufwärtskompatibel zu relationalen Datenbanken Nachteile Relativ viele Ein-/Ausgaben notwendig, erfordert eine relativ hohe Rechnerleistung, teilweise recht komplexer Aufbau 15 Edwin Schicker: Datenbanken und SQL (1) Hierarchische und Netzwerk-Datenbanken Hierarchische Datenbank Netzwerkartige Datenbank Jeder Zugriff beginnt hier 16 Edwin Schicker: Datenbanken und SQL (1) Hierarchische und Netzwerk-Datenbanken hierarchisch Vorteile sehr kurze Zugriffszeiten, minimale Redundanz netzwerkartig kurze Zugriffszeiten, geringe Redundanz Strukturänderung kaum Strukturänderung nicht einfach, Nachteile möglich, relativ komplexe Programmiekomplexe Programmierung rung 17 Edwin Schicker: Datenbanken und SQL (1) NoSQL Datenbanken NoSQL = Not Only SQL NoSQL Datenbanken gliedern sich in Key/Value und dokumentenbasierte Datenbanken Spaltenorientierte Datenbanken z.B. Google Big Table, Simple DB von Amazon HBase, Cassandra Graphenorientierte Datenbanken 18 z.B. CouchDB, MongoDB z.B. Sones, Neo4j Edwin Schicker: Datenbanken und SQL (1) NoSQL Datenbankmodelle Key/Value und dokumentenbasierte Modelle Spaltenorientierte Modell Schemafreie Modelle, daher sehr flexibel Seit 1979 im ersten Einsatz Lotus Notes ist dokumentenbasiert Die Daten werden spaltenweise gespeichert! Bei Anfragen nach wenigen Eigenschaften extrem performant Graphen Modelle 19 In Navigationsgeräten Wie finde ich den besten Weg von A nach B? Edwin Schicker: Datenbanken und SQL (1) Transaktionen Abfrage Mutation Lesezugriff: Select Query Retrieval Schreibzugriff: Insert, Update, Delete Transaktion 20 Konsistenzerhaltende Operation Atomare Operation Edwin Schicker: Datenbanken und SQL (1) Konsistenz und Redundanz Definition (Konsistenz): Eine Datenbank heißt in sich konsistent, wenn alle gespeicherten Daten untereinander widerspruchsfrei sind. Definition (Redundanz): Daten heißen redundant, wenn sie mehr als einmal in einer Datenbank abgespeichert werden, also an sich überflüssig sind. 21 Edwin Schicker: Datenbanken und SQL (1) Beispiel zu Redundanz und Konsistenz Es gilt: In der Datenbank: Lagertabelle + Einkaufstabelle + Verkaufstabelle Folgerung: Warenbestand = Wareneingang – Warenausgang Redundanz und Gefahr der Inkonsistenz Frage: 22 Welche der drei obigen Tabellen würden Sie entfernen? Edwin Schicker: Datenbanken und SQL (1) Beispiel: Buchung Bank speichert: Szenario: Alle Kontostände Si der n Kunden (i=1..n) Summe der Kontostände Sges aller Kunden (Redundanz!) Überweisung von 500 Euro von Kunde A nach Kunde B 1. Schritt: Abbuchung von 500 Euro von Kunde A 2. Schritt: Buchung von 500 Euro für Kunde B Nach dem 1. Schritt: Absturz des Rechners Datenbank ist nun inkonsistent ( ∑ 𝑆𝑆𝑖𝑖 ≠ 𝑆𝑆𝑔𝑔𝑔𝑔𝑔𝑔 ) und fehlerhaft! Folgerung: Transaktion muss atomar ablaufen! 23 Edwin Schicker: Datenbanken und SQL (1) Transaktionen In betriebswirtschaftlichen Anwendungen und Buchungssystemen zwingend erforderlich, da Inkonsistenzen nicht hinnehmbar sind eine Buchung immer atomar ausgeführt werden muss Atomare Ausführung heißt: Nichts oder alles wird ausgeführt Datenbanken garantieren auch im Fehlerfall die atomare Ausführung von Transaktionen Folgerung: Datenbanksystem und Transaktionssystem sind Synonyme Datenbankbetrieb 24 Transaktionsbetrieb Edwin Schicker: Datenbanken und SQL (1) ACID Ein Transaktionsbetrieb muss folgende Bedingungen erfüllen: A C I D 25 Atomarity Consistency Isolation Durability (Atomarität) (Konsistenz) (Dauerhaftigkeit) Edwin Schicker: Datenbanken und SQL (1) A = Atomarität Eine Transaktion läuft immer atomar ab Eine noch laufende Transaktion kann jederzeit, insbesondere im Fehlerfall, zurückgesetzt werden In SQL: COMMIT; Transaktion ist beendet, Daten sind gespeichert ROLLBACK; Transaktion wird komplett zurückgesetzt 26 Edwin Schicker: Datenbanken und SQL (1) C = Konsistenz (Consistency) Eine Transaktion ist konsistenzerhaltend Teiltransaktionen gibt es nicht: Eine Transaktion läuft komplett ab (Commit;) oder Eine Transaktion wird nicht wirksam (Rollback;) Folgerung: Eine Datenbank ist konsistent, wenn 27 alle Mutationen innerhalb von Transaktionen erfolgen der Transaktionsmechanismus, insbesondere der Rollback, immer und jederzeit unterstützt wird (auch im Fehlerfall!) Edwin Schicker: Datenbanken und SQL (1) I = Isolation Eine Transaktion läuft so ab, als sei sie allein im System Eine Transaktion ist vollständig isoliert von anderen parallel laufenden Transaktionen (Fast) gleichzeitige Zugriffe auf gleiche Daten müssen wegen Konsistenzverletzungen synchronisiert werden Beispiel zum Bierdepot bei 2 Verkaufsstellen: 28 2 Kunden wollen das letzte Fass Pils von Bischofshof Beide Kunden erfahren, dass noch Ware vorhanden ist Aber: Nur ein Kunde bekommt das Fass Edwin Schicker: Datenbanken und SQL (1) D = Dauerhaftigkeit Die Daten werden dauerhaft gespeichert Ein Benutzer kann sich also auf Folgendes verlassen: Er erhält die Rückmeldung, dass seine Transaktion erfolgreich abgeschlossen wurde Seine von dieser Transaktion manipulierten Daten sind daher dauerhaft und sicher gespeichert Beispiel: 29 Ein Kunde einer Versicherung verlässt sich darauf, dass seine vor 15 Jahren abgeschlossene Versicherung nicht verloren geht Edwin Schicker: Datenbanken und SQL (1)