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. 1890 Ca. 1950 Ca. 1970 Ca. 1975 Ca. 1985 Heute Lochkarten (batch) Computer (batch) Transaktionssysteme erste RDBMS erste OODBMS ORDBMS 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 verläßlicher Wichtige Daten (Finanzen,...) Zugriff auf Informationen Viele Datensätze 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 2000 3-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 Ti sieht das System so aus, als ob alle Tj mit i<>j entweder vor oder nach Ti 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 www.tpc.org 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 Overhead Hardware, Software, Personal Transaktionen, Abstraktion Tabellen, nicht Objekte Texte, Bilder, Videos,... IS: Datenbanken, © Till Hänisch 2000 Alternativen "Alte" Technologien OODBMS spezielle Systeme Dateien, Hierarchische DB 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) IS: Datenbanken, © Till Hänisch 2000