IS: Datenbanken, © Till Hänisch 2000 Einführung Worüber reden wir hier eigentlich ?
IS: Datenbanken, © Till Hänisch 2000 Anwendungen Geldautomat Flugreservierung Bibliothekskatalog Supermarktkasse News-Ticker Web-Suchmaschine...
IS: Datenbanken, © Till Hänisch 2000 Historie Ca. 1890Lochkarten (batch) Ca. 1950Computer (batch) Ca. 1970Transaktionssysteme Ca. 1975erste RDBMS Ca. 1985erste OODBMS HeuteORDBMS
IS: Datenbanken, © Till Hänisch 2000 Ursprung Notwendigkeit zur effizienten Verarbeitung von Massendaten Kommunikation (Telefonrechnungen) Banken (Konten, Börsen) Reise (Fluglinien, Hotelketten) Produktion (Aufträge, Lagerhaltung) Verwaltung (Personal, Steuer)
IS: Datenbanken, © Till Hänisch 2000 Motivation Schneller Viele Datensätze verläßlicher Wichtige Daten (Finanzen,...) Zugriff auf Informationen Komlexe Strukturen durch viele Anwender Wenige bis zu vielen tausend
IS: Datenbanken, © Till Hänisch 2000 Die Anfänge typedef struct _Person { char *Name; char *Vorname; } PersonT; PersonT *get(char *aName, FILE *PersonFile) { PersonT *Person = (PersonT *) malloc(sizeof(PersonT)); int iPos = find(PersonFile,aName); fseek(PersonFile,iPos*sizeof(PersonT),SEEK_SET); fread(PersonFile,(void *) Person, sizeof(PersonT),1); return Person; }
IS: Datenbanken, © Till Hänisch 2000 Änderung der Datenstruktur typedef struct _Person { char *Name; char *Vorname; float Gehalt; } PersonT; PersonT *get(char *aName, FILE *PersonFile) { PersonT *Person = (PersonT *) malloc(sizeof(PersonT)); int iPos = find(PersonFile,aName); fseek(PersonFile,iPos*sizeof(PersonT),SEEK_SET); fread(PersonFile,(void *) Person, sizeof(PersonT),1); return Person; }
IS: Datenbanken, © Till Hänisch 2000 Performance typedef struct _Person { char *Name; char *Vorname; float Gehalt; } PersonT; PersonT *get(char *aName, FILE *PersonFile) { PersonT *Person = (PersonT *) malloc(sizeof(PersonT)); IdxT * Idx = OpenIndex("Person.idx"); int iPos = IndexSearch(Idx, aName); fseek(PersonFile,iPos*sizeof(PersonT),SEEK_SET); fread(PersonFile,(void *) Person, sizeof(PersonT),1); return Person; }
IS: Datenbanken, © Till Hänisch 2000 Multiuser typedef struct _Person { char *Name; char *Vorname; float Gehalt; } PersonT; PersonT *get(char *aName, FILE *PersonFile) { PersonT *Person = (PersonT *) malloc(sizeof(PersonT)); LockT Lock = CreateLock("Person"); while (!GetLock(Lock,"READ") NULL; IdxT * Idx = OpenIndex("Person.idx"); int iPos = IndexSearch(Idx, aName); fseek(PersonFile,iPos*sizeof(PersonT),SEEK_SET); fread(PersonFile,(void *) Person, sizeof(PersonT),1); ReleaseLock(Lock); return Person; }
IS: Datenbanken, © Till Hänisch 2000 Konsistenz Was passiert, wenn Anwendung abstürzt ? Bei Programmierfehlern ? Log Änderungen werden protokolliert Wiederherstellung möglich
IS: Datenbanken, © Till Hänisch 2000 Datenbank zusammenhängende Datensätze, die eine bestimmte Bedeutung haben Repräsentiert einen bestimmten Aspekt der realen Welt ("miniworld") enthält Daten für einen bestimmten Zweck für bestimmte Anwender und Applikationen
IS: Datenbanken, © Till Hänisch 2000 Datenbanksystem Daten Hardware Software DBMS Benutzer Applikationsentwickler Endanwender DBA
IS: Datenbanken, © Till Hänisch 2000 Relationale Datenbank Für den Anwender stellen sich die Daten in Form von Tabellen dar Die möglichen Operationen erzeugen neue Tabellen aus bestehenden, z.B. Untermenge der Zeilen einer Tabelle Untermenge der Spalten einer Tabelle
IS: Datenbanken, © Till Hänisch 2000 Operationen Tabellen hinzufügen Datensätze hinzufügen (insert) Datensätze holen (select) Datensätze ändern (update) Datensätze löschen (delete) Tabellen löschen
IS: Datenbanken, © Till Hänisch 2000 Eigenschaften von DBMS Persistent Datenunabhängigkeit unterschiedliche Sichten Transaktionen (ACID) schnell
IS: Datenbanken, © Till Hänisch 2000 Datenunabhängigkeit Applikationen müssen nicht geändert werden, wenn Datenstrukturen geändert werden (z.B. Feld zu Tabelle dazukommt) Speicherstrukturen geändert werden (z.B. Daten auf mehrere Platten verteilt werden) Zugriffspfade geändert werden (z.B. Index erzeugt oder gelöscht wird)
IS: Datenbanken, © Till Hänisch 2000 Datenintegration
IS: Datenbanken, © Till Hänisch 2000 Sichten
IS: Datenbanken, © Till Hänisch Schichten-Architektur external level (user) conceptual level (community) internal level (storage)
IS: Datenbanken, © Till Hänisch 2000 ANSI/SPARC Architektur
IS: Datenbanken, © Till Hänisch 2000 Atomicity Die Änderungen an den Daten durch eine Transaktion finden entweder vollständig oder gar nicht statt Beispiel: Geld wird von Konto 1 abgehoben und Konto 2 gutgeschrieben
IS: Datenbanken, © Till Hänisch 2000 Consistency Änderungen finden so statt, daß das System konsistent bleibt Beispiel: Der von Konto 1 angehobene Betrag ist der gleiche wie der Konto 2 gutgeschriebene
IS: Datenbanken, © Till Hänisch 2000 Isolation Für jede Transaktion T i sieht das System so aus, als ob alle T j mit i<>j entweder vor oder nach T i ablaufen Beispiel: Wenn jemand anderes gleichzeitig eine Buchung auf Konto1 oder Konto 2 macht, wird die Überweisung trotzdem korrekt ausgeführt
IS: Datenbanken, © Till Hänisch 2000 Durability Wenn eine Transaktion abgeschlossen ist, bleiben die Daten auch bei Abstürzen,... erhalten Beispiel Auch wenn der Geldautomat nach der Auszahlung abstürzt, taucht die Auszahlung im Konto (Auszug) auf
IS: Datenbanken, © Till Hänisch 2000 Performance Forschungsgegenstand seit mehr als 20 Jahren --> schnell typ. Zugriff auf einzelne Datensätze m< 100 ms unabhängig von Anzahl typ. mehrere Tabellen,... langsam aber: Overhead durch Transaktionen
IS: Datenbanken, © Till Hänisch 2000 Relationale Datenbanken ORACLE DB/2 Sybase ASE Microsoft SQL-Server Informix Microsoft ACCESS mySQL
IS: Datenbanken, © Till Hänisch 2000 Nachteile Teuer Resourcen Hardware, Software, Personal Overhead Transaktionen, Abstraktion Tabellen, nicht Objekte Texte, Bilder, Videos,...
IS: Datenbanken, © Till Hänisch 2000 Alternativen "Alte" Technologien Dateien, Hierarchische DB OODBMS spezielle Systeme z.B. Multimedia DBS XML
IS: Datenbanken, © Till Hänisch 2000 Aufbau der Vorlesung SQL in 21 Minuten konzeptionelle Datenmodellierung Relationenalgebra, Entwurfstheorie logische Datenmodellierung SQL (Basics, Advanced) physikalischen Datenmodellierung Projekt (Modellierung, Umsetzung)