Datenbanken
Gliederung ● Einsatz und Verwendung ● Historische Entwicklung ● Datenbankmodelle ● (Codd'sche) Prinzipien ● Datenbankoperatoren ● Beispielcode SQL ● Vergleich freier Datenbanken ● Fazit
Einsatz und Verwendung ● Collision Monitoring System am CERN – 15 PByte/Jahr (15 Millionen GByte) ● Internet-Portal (reichweitestark) – 6 GByte/Tag ● Verzeichnisdienste (Telefonbücher) – x 500 Byte = 21 GByte ● Sequenzdatenbanken des Genom-Projekts – 3 GByte DNA Daten ● ERP-Datenbanken (~ 500 MByte – 1 GByte)
Einsatz und Verwendung
Komponenten d. Datenbanksystems ● DB – Logisch zusammenhängender Datenbestand auf – (meist) nichtflüchtigem Speicher ● DBMS – Definiert Datenbankmodell – Realisiert wesentliche Anforderungen
Einsatz und Verwendung
Historische Entwicklung
Datenbankmodelle ● Hierarchisch – Eltern-Kind-Beziehungen – 1:1, 1:n Beziehungen ● Netzwerkartig – Abbildung von m:n-Beziehungen, ein Datensatz kann mehrere Vorgänger haben – Flexibel, aber schnell unübersichtlich ● Relational – Zeilenweise Verwaltung in normalisierten Tabellen – Beliebige Beziehungen durch Werte bestimmter Tabellenspalten (Schlüssel) ● Objektorientiert – Modellierung der Objekte mit Attributen und Methoden und Speicherung in Klassenhierarchien
RDB
Codd'sche Prinzipien ● Integration – Einheitliche, nichtredundante Datenverwaltung ● Operationen – Speichern, Suchen, Ändern ● Katalog (DataDictionary) ● Benutzersichten ● Konsistenzüberwachung ● Datenschutz / Datensicherung
Anforderungen ● Sprachen – Datenabfrage (DML) ● z.B. Einfügen, Ändern, Filterung, Sortierung – DB-Verwaltung und Strukturdefinition (DDL) ● z.B. XML-Schema, DTD – Berechtigungssteuerung (DCL) ● z.B. GRANT ● Mehrbenutzerfähigkeit – Transaktionen / Synchronisation – Locks und Logs
Anforderungen ● Betrieb – Datensicherung und Wiederherstellung – Im- und Exportierung der Daten – Verbindung mit anderen DBS, verteilte Datenbanksysteme – Hoher Durchsatz und akzeptable Antwortzeiten bei großen Datenmengen – Verwaltung d. Metadaten ● z.B. Liste aller Tabellennamen -> DataDictionary
Datensicherheit ● Sicherung des Speichermediums – Relationale Daten (bei RDBMS) – Datenschemata und Zugriffsrechte – Performance-Problem bei Backups ● Nur eingeschränkte Modifizierbarkeit ● Transaktionen – Schutz vor Race-Conditions durch parallelen Zugriff – BEGIN sperrt Daten vor anderen Benutzern / COMMIT beendet Bearbeitung
Datensicherheit BEGIN TRANSACTION USE pubs GO UPDATE titles SET advance = advance * 1.25 WHERE ytd_sales > 8000 GO COMMIT GO
Datenintegrität ● Sicherstellung durch Constraints – FOREIGN KEY ● Verhindert Entfernen noch benötigter Daten – CHECK ● Definiert zu erfüllenden Ausdruck (z.B. Preis>0) – NOT NULL – UNIQUE ● Werteunterscheidung innerhalb einer Spalte muss erfolgen
Datenintegrität CREATE TABLE Customer (SID integer Unique, Last_Name varchar (30) NOT NULL, First_Name varchar(30));
Anfrageoptimierung ● Logische Optimierung – Mathematische Vereinfachung der Anfrage – Eliminierung mehrfacher Selektionsoperatoren ● Physische Optimierung – Wahl d. besten Algorithmus ● z.B. nach Kardinalität (Elementanzahl Quelle) ● Minimierung der Kosten
Datenbankoperatoren ● Vereinigung ● Differenz / Symmetrische Differenz ● Durchschnitt ● Kreuzprodukt ● Projektion ● Selektion ● Joins (Semi, Equi, Natural) ● Umbennenung ● Division
Datenbankoperatoren ● Vereinigung ● Differenz / Symmetrische Differenz
Datenbankoperatoren ● Durchschnitt ● Kartesisches- / Kreuzprodukt
Datenbankoperatoren ● Projektion ● Selektion
Datenbankoperatoren ● Joins (Equi, Natural, Semi, Left Outer)
Datenbankoperatoren ● Division ● Umbenennung
Beispielcode-SQL Data Query Language: SELECT * FROM meineTabelle WHERE feldName1 = 'xy' AND feldName2 < 100 AND feldName3 BETWEEN 1 AND 10; SELECT ZahlungsEmpfaenger, SUM(Betrag) FROM Rechnungen GROUP BY ZahlungsEmpfaenger;
Beispielcode-SQL Data Manipulation Language INSERT INTO tabelleAutor ( Nr, NachName, VorName, GebJahr ) VALUES ( 1, 'Böll', 'Heinrich', 1917 ); UPDATE tabelleAutor SET Name = Otto, GebJahr = 1954, Beruf = NULL WHERE Nr = 10; DELETE FROM tabelleAutor WHERE Datum < (SYSDATE );
Beispielcode-SQL Data Definition Language: CREATE TABLE Autor ( Nr INT CONSTRAINT Pk_Autor PRIMARY KEY, Name VARCHAR(80) CONSTRAINT Nn_Autor_Name NOT NULL, VorName VARCHAR(80) CONSTRAINT Nn_Autor_VorName NOT NULL, GebJahr INT, Geschl CHAR(1) CONSTRAINT Ch_Autor_Geschl CHECK ( TYP IN ('m','w') ), UNIQUE( Nr ), UNIQUE( Name, VorName ) );
Beispielcode-SQL Data Control Language: GRANT SELECT, DELETE, UPDATE, REFERENCES(Nr) ON meineTabelle TO Mueller; REVOKE DELETE ON meineTabelle FROM Mueller;
Freie DB's im Vergleich
Ende ● Noch Fragen? ● Quellen und weiterführende Informationen: ● ● DBING_SS04/1_einfuehrung_in_db.pdf ● ● ● muenchen.de/services/datenhaltung/datenbanken/intro/