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