Datenbanken

Werbung
Datenbanken
Skript zur Vorlesung
On-/Offline-Produktion/Netze OPN
Prof. Dr. Nils Martini
Hochschule für Angewandte Wissenschaften Hamburg, 12.2001
INHALTSVERZEICHNIS
1
Inhaltsverzeichnis
10 Datenbanken
10.1 Grundlagen . . . . . . . . . . . . . . .
10.2 Theorie relationaler Datenbanken . . .
10.2.1 Tabellen und ihre Beziehungen
10.2.2 Normalformen . . . . . . . . . .
10.2.3 Datenbank-Entwurf . . . . . . .
10.3 SQL . . . . . . . . . . . . . . . . . . .
10.3.1 Data Definition Language . . .
10.3.2 Data Manipulation Language .
10.3.3 Data Control Language . . . . .
10.4 Transaktionen . . . . . . . . . . . . . .
10.5 MySQL . . . . . . . . . . . . . . . . .
10.6 Datenbank-Backup . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
2
3
3
4
4
5
5
7
9
10
11
12
10 DATENBANKEN
10
10.1
2
Datenbanken
Grundlagen
– Datenbanken dienen zur Verwaltung und Speicherung von Informationen in geordneten Datenstrukturen
– der Datenzugriff erfolgt anwendungsunabhängig, d.h. unterschiedliche Applikationen können mittels einer standardisierten Schnittstelle auf gemeinsame Datenbestände zugreifen
– Schwächen herkömmlicher (anwendungsspezifischer) Datenspeicherung sind
◦ evtl. mehrfache Speicherung derselben Information (schädliche Redundanz)
◦ inkonsistente Datensätze
◦ aufwändige Programmpflege
◦ Erweiterungen schwer realisierbar
◦ Inkonsistenzen bei zeitgleichen Datenzugriffen mehrerer Anwendungen
– durch den Einsatz von Datenbanken lassen sich diese Nachteile vermeiden
– Ziele von Datenbanken:
◦ Unabhängigkeit der Anwendungen von der Datenstruktur
◦ Unabhängigkeit der Anwendungsentwicklung von der Datenstruktur und
den Zugriffsmethoden
◦ Erhalt der Datenkonsistenz
– die Kommunikation zwischen dem Datenbestand und Anwendung wird durch das
DataBase Management System (DBMS) geregelt
– DBMS und Datenbestand werden als Datenbanksystem (DBS) bezeichnet
– in einem DBS werden reale Objekte mittels ihrer Eigenschaften (z.B. Zahlen,
Worte, Bilder, Töne) beschrieben
– die Gesamtheit dieser Eigenschaften wird Tupel (Zeile, Datensatz) einer Relation
genannt
– die Gesamtheit aller Tupel bildet eine Relation (Tabelle)
– die Menge von Tabellen bildet letztlich eine Relationale Datenbank
– Hersteller u.a.: Oracle, Informix, Sybase, IBM, Microsoft, CA usw.
– viele Hersteller verwenden eine Client-Server-Architektur (die idealerweise heterogene Systeme unterstützen sollte)
◦ Server: Verwaltung der Datenbank
◦ Clients: Benutzeroberfläche, Anzeige von Daten, Validierung von Eingaben
usw.
◦ Clients können als Thick- oder Thin-Client ausgeführt sein
– Begriffsdefinitionen (Datenbank-Theoretiker, -Analytiker und -Entwickler benutzen unterschiedliche Begriffe für die wesentlichen Elemente einer Datenbank):
10 DATENBANKEN
3
◦ Relation = Entität = Tabelle
◦ Attribut = Spalte
◦ Tupel = Zeile = Datensatz
10.2
Theorie relationaler Datenbanken
10.2.1
Tabellen und ihre Beziehungen
– Eine Tabelle besteht aus Zeilen und Spalten:
◦ eine Zeile enthält eine Gruppe von Tabellenattributen
◦ eine Spalte enthält eine Sorte“ von Attributen
”
◦ die Reihenfolge der Zeilen und Spalten ist beliebig (Vorteil: Anwendungen
müssen nicht auf starre Datenstrukturen zugreifen)
– für die Datenintegrität ist es wichtig, dass keine Zeile in einer Tabelle mehrfach vorhanden ist (sie wird eindeutig durch einen so genannten Primärschlüssel
identifiziert)
– Primärschlüssel (Primary Key, PK): eine Tabelle verfügt über ein oder mehrere
Attribute, die einen Datensatz eindeutig definieren
– Fremdschlüssel (Foreign Key): hierbei handelt es sich um eine oder mehrere
Spalten, die mit bestimmten Attributen (Primärschlüssel) anderer Tabellen zusammengehören
– zwei Tabellen können über Beziehungen miteinander verbunden sein
– Merkmale von Tabellen-Beziehungen:
◦ identifizierend: der PK der übergeordneten Tabelle ist ein Teil des PK der
untergeordneten Tabelle
◦ nicht-identifizierend
◦ Kardinalität: Anzahl der Zeilen in der untergeordneten Tabelle, über die
die übergeordnete verfügen muss
◦ optional oder erforderlich: eine Zeile kann ohne die Informationen der untergeordneten Tabelle auskommen oder nicht
◦ Integritätsregeln: damit wird definiert was geschehen soll, wenn eine Zeile
in der über - bzw. untergeordneten Tabelle gelöscht wird
– Nullwert: für jede Spalte wird festgelegt, ob ein Wert vorhanden sein muss oder
nicht
– Lösch- und Update-Regeln:
◦ bedingtes Löschen: nur Löschen, wenn keine Fremdschlüssel existieren
◦ kaskadierendes Löschen: es werden nicht nur die Datensätze in der ZielTabelle gelöscht, sondern auch alle Beziehungen
◦ Löschen mit NULL-Setzung
10 DATENBANKEN
10.2.2
4
Normalformen
– die Normalisierungstheorie definiert Kriterien, denen eine Datenbank entsprechen
muss, um unnötige Redundanzen oder Widersprüche zu vermeiden
– entsprechen die Tabellen einer Datenbank nicht den Normalformen, so können
Anomalien entstehen, die die Integrität der Daten gefährden
– Anomalien:
◦ Einfüge-Anomalie
◦ Lösch-Anomalie
◦ Update-Anomalie
– zum Verständnis der Normalformen sind die folgenden Abhängigkeiten von Attributen wichtig:
◦ funktionale Abhängigkeit: Attribut 2 in einer Tabelle T(1,2) ist von Attribut
1 funktional abhängig, wenn zu jedem Wert von 1 genau ein Wert von 2
gehört
◦ volle funktionale Abhängigkeit: Attribut 3 ist von den Attributen 1 und 2
in T(1,2,3) voll funktional abhängig, wenn 3 von den zusammengesetzten
Attributen 1 und 2 abhängig ist, nicht aber von den einzelnen Attributen
◦ transitive Abhängigkeit: in T(1,2,3) ist 3 von 1 transitiv abhängig, wenn 2
von 1 funktional abhängig ist, 1 aber nicht von 2 und 3 von 2 funktional
abhängig ist
◦ mehrwertige Abhängigkeit (in der Praxis von untergeordneter Bedeutung):
in T(1,2,3) ist 3 von 1 mehrwertig abhängig, wenn zu jedem 1-Wert für jede
Kombination dieses 1-Wertes mit einem 2-Wert, eine identische Menge von
3-Werten gehört
– erste Normalform (1NF): eine Tabelle befindet sich in 1NF, wenn alle Attribute
atomare Werte (Einzelwerte) enthalten
– zweite Normalform (2NF): eine Tabelle befindet sich in 2NF, wenn sie sich in
1NF befindet und jedes Nicht-Schlüssel-Attribut voll funktional abhängig ist vom
Schlüssel
– dritte Normalform (3NF): eine Tabelle befindet sich in 3NF, wenn sie sich in 1NF
und 2NF befindet und sie keine transitiven Abhängigkeiten enthält
– für einen praxisgerechten DB-Entwurf ist die 3NF ausreichend
– in der Theorie existieren zusätzlich: 4NF, 5NF, Boyce/Codd NF
10.2.3
Datenbank-Entwurf
– zur Entwicklung eines Datenbank-Modells müssen die Beziehungen der Attribute
bekannt sein
– diese Bestandsaufnahme sollte sehr sorgfältig durchgeführt werden, da nachträgliche Änderungen am Modell mit einem hohen Aufwand verbunden sind
10 DATENBANKEN
5
– da diese Beziehungen bei einer großen Anzahl von Attributen sehr komplex sein
können, stellen professionelle Datenbank-Systeme hierfür grafische EntwicklungsTools bereit
– Schritte zu einem logischen Datenbank-Modell:
◦ 1.Schritt: Aufnahme aller Anforderungen
◦ 2.Schritt: Formalisierung (Objektklassen, Eigenschaften, Beziehungen) und
Strukturierung eines Entwurfs (Entity Relationship Diagram)
◦ 3.Schritt: Normalisierung
◦ 4.Schritt: Erstellen der Tabellen
– auch für das Erstellen der Tabellen stellen Datenbanksysteme oft (grafische) Hilfswerkzeuge zur Verfügung, deren Grundlage jedoch immer eine standardisierte
Datenbank-Beschreibungssprache ist: SQL
10.3
SQL
– bei der Structured Query Language (SQL) handelt es sich um eine DatenbankBeschreibungssprache
– SQL beschreibt die logischen Zusammenhänge in einer DB
– Bestandteile von SQL sind
◦ Data Definition Language DDL
◦ Data Manipulation Language DML
◦ Data Control Language DCL
10.3.1
Data Definition Language
– Erstellen einer Tabelle mit DDL-Kommandos:
CREATE TABLE name (
spaltenname1 datentyp [NOT NULL],
spaltenname2 datentyp [NULL], ....
[Tabelleneinschränkungen]) ;
◦ der Tabellenname muss eindeutig sein (max. 30 Zeichen, darf kein SQLWort enthalten)
◦ SQL ist case-insensitive“
”
◦ Spaltennamen in einer Tabelle müssen eindeutig sein
◦ es sind (abhängig vom Datenbank-Typ) bis zu 254 Spalten pro Tabelle erlaubt
– ähnlich wie jede Programmiersprache kennt auch SQL unterschiedliche Datentypen:
◦ INT positive oder negative Ganzzahl
◦ SMALLINT
◦ DEC[p,q] Dezimalzahl (optional: mit p Stellen, davon q Nachkommastellen)
10 DATENBANKEN
6
◦ FLOAT, REAL Gleitkommazahl
◦ DOUBLE PRECISION höhere Genauigkeit
◦ CHARACTER[(n)] Zeichenkette (optional: Länge n)
◦ VARCHAR(n) Zeichenkette mit variabler Länge
◦ DATE, TIME Datum-/Zeitangaben
◦ spezielle Datentypen z.T. herstellerabhängig (VARCHAR2, RAW, LONG)
– Operatoren für numerische Daten: +, -, *, /, **
– Einschränkungen (Constraints) für Tabellen (bzw. Spalten):
◦ PRIMARY KEY Spalte, die den Primärschlüssel bildet
◦ UNIQUE Nicht-Wiederholbarkeit von Werten in einer Spalte
◦ FOREIGN KEY Referenz auf Spalten einer anderen Tabelle (nicht bei allen
DB möglich)
– Beispiel (Groß-/Kleinschreibung hier nur zur deutlicheren Unterscheidung von
Werten und SQL-Kommandos):
CREATE TABLE student (
Stud ID VARCHAR(5) NOT NULL,
Nachname VARCHAR(30) NOT NULL,
Vorname VARCHAR(25) NOT NULL,
Geburtstag DATE NULL ,
Ort VARCHAR(30) NULL,
plz INT(5) NULL );
– mit dem Kommando DESCRIBE student; wird die Tabellenstruktur angezeigt
– Festlegen des Primärschlüssels einer Tabelle
◦ der Primärschlüssel einer Tabelle kann aus einer oder mehreren Spalten
bestehen:
Primary Key (spaltenname1, spaltenname2,...)
◦ Beispiel:
CREATE TABLE abteilung (
abt nr VARCHAR(5) NOT NULL,
abt name VARCHAR(30) NOT NULL,
PRIMARY KEY (abt nr));
◦ maximale Anzahl von Spalten im PK: 16
◦ mindestens eine Spalte im PK darf keinen NULL-Wert haben
◦ LONG- oder RAW-Spalten können nicht Teil eines PK sein
– Festlegen von Fremdschlüsseln
FOREIGN KEY (spaltenname F1, ...)
...)
REFERENCES tabellenname (spaltenname P1,
– CHECK-Bedingung: Festlegen zusätzlicher Integritätsbedingungen
CREATE TABLE lehrende (
Name VARCHAR(30) NOT NULL,
10 DATENBANKEN
7
position VARCHAR(25) NOT NULL,
CHECK (position IN(’professor’,’lehrbeauftragter’)) ;
– Angabe eines Standardwertes (Default)
ort VARCHAR(35) DEFAULT ’hamburg’
10.3.2
Data Manipulation Language
– mit DML-Kommandos lassen sich vorhandene Datensätze lesen und verändern
– die SELECT-Anweisung enthält hierzu zwei Elemente:
◦ die Liste der abzurufenden Daten
◦ die Tabelle, aus der Daten abgefragt werden
– Beispiel: SELECT nachname, vorname FROM student;
– es sind auch Wildcards (*) zulässig oder die mehrfache Abfrage desselben Attributs
– arithmetische und logische Ausdrücke in select-Listen:
SELECT produkt nr, preis * 1,16 FROM produkte;
– Verkettung mit Zeichenfolgen mit || oder Komma:
SELECT nachname, ’:’ , tel nr FROM mitarbeiter;
– Festlegen von Suchkriterien mit WHERE:
SELECT nachname, vorname FROM student WHERE ort=’hamburg’;
– Kombinieren von Kriterien mit AND und OR:
SELECT kunden nr FROM kunden WHERE produkt=’monitor’ AND preis>500 ;
– Suchen von Teilzeichenketten mit LIKE:
SELECT plz FROM kunden WHERE plz LIKE ’2%’ ;
SELECT preis, prodname FROM produkte WHERE preis BETWEEN ’1000’ AND
’2000’;
SELECT vorlesungsname, lehrender FROM vorlesungen
WHERE UPPER(beschreibung) LIKE ’%VIDEO%’;
– Daten sortieren mit ORDER BY
– Anzahl der Zeilen in einer Tabelle: COUNT
– Zeilen mit Spaltenwert null:
SELECT nachname FROM mitarbeiter WHERE fax nr IS NOT NULL;
– Mittelwert von Spalten AVG():
SELECT AVG(alter) FROM student;
– das Verschachteln mehrerer SELECT-Anweisungen ist möglich
– Vergleich eines Spaltenwertes mit vorgegebenen Werten mit IN bzw. NOT IN:
SELECT name FROM student WHERE pruefung IN (’opn’,’avpk’,’pc’);
– die Lesekonsistenz bei SELECT-Anweisungen ist gewährleistet
– neue Datensätze in vorhandene Tabellen einfügen: INSERT
INSERT INTO mitarbeiter (abt nr,vorname,nachname)
10 DATENBANKEN
8
VALUES (’3’,’herbert’,’schulz’);
– vorhandene Datensätze ändern: UPDATE
UPDATE mitarbeiter SET gehalt=gehalt+100 WHERE gehalt<5000;
– Datensätze löschen: DELETE
DELETE FROM student WHERE matrikel nr=’1234567’;
– SQL enthält viele Funktionen zur Bearbeitung von Zeichenketten
◦ LENGTH Länge einer Zeichenkette
SELECT vorname, LENGTH(vorname) ...
◦ SUBSTR(String, Start, Anzahl) Teilkette
SELECT name, SUBSTR(name,1,3) FROM ...
◦ Mustersuche mit dem LIKE-Operator
◦ REPLACE(Tabelle, suche, ersetze)
◦ LTRIM und RTRIM Entfernen von Leerzeichen
UPDATE student SET vorname=RTRIM(vorname);
◦ LPAD und RPAD Auffüllen einer Zeichenfolge
◦ LOWER und UPPER Ändern der Groß- bzw. Kleinschreibung
◦ DECODE Umwandeln z.B. von kryptischen Codes in lesbarere Zeichen
◦ ASCII Ausgabe des ascii-Wertes
– Join-Operator
◦ oftmals sollen Informationen aus mehreren Tabellen verknüpft werden
◦ dies ist mit dem join-Operator möglich
◦ Beispiel:
SELECT spalte1,spalte2 FROM tabelle1,tabelle2
WHERE tabelle1.spalteN = tabelle2.spalteM ;
– Mengen-Operatoren
◦ INTERSECT gibt Zeilen aus, die zwei Tabellen gemeinsam haben
SELECT name FROM student INTERSECT SELECT name FROM vordiplom;
◦ UNION Kombination von Spalten
SELECT name FROM student UNION SELECT name FROM prof;
◦ MINUS Verneinung von intersect
◦ Erstellen einer Tabelle aus einer anderen
CREATE TABLE xyz AS SELECT * FROM abc WHERE zahl=’123’;
– Datensicht (View)
◦ eine Datensicht ist eine gespeicherte Abfrage von einer oder mehreren Tabellen
◦ eine Datensicht ist eine virtuelle Tabelle“, die eine ausgewählte Sicht auf
”
den Datenbestand bietet
◦ reale Tabellen werden nicht verändert
◦ eine Datensicht ist nur eine Berechnungsregel zur Darstellung bestimmter
10 DATENBANKEN
9
Daten
◦ Vorteile:
∗ jeder Benutzer erhält nur die für ihn relevanten Daten
∗ interne Zusammenhänge bzw. komplexe Datenstrukturen werden verborgen
∗ sensible Informationen werden nur bestimmten Benutzern zugänglich
gemacht
◦ jede Änderung an Views wirkt sich auch auf die realen Tabellen aus
◦ Tabellenänderungen durch Views sind nur unter bestimmten Bedingungen
möglich
◦ Views können wie normale Tabellen abgefragt werden
◦ Views werden nicht von allen Datenbanken unterstützt
10.3.3
Data Control Language
– es lassen sich für Datenbanken bzw. Tabellen differenzierte Zugriffsmöglichkeiten
einrichten, um unterschiedlichen Benutzern verschiedene Rechte zuzuordnen
– Rechte sind einstellbar mit den Kommandos der Data Control Language (DCL)
– Benutzerrechte in Tabellen
◦ die höchsten Rechte hat der Ersteller
◦ alle Rechte hat der DB-Administrator (DBA)
◦ Benutzer-Rechte werden vom DBA festgelegt
– Benutzerrechte (Privilegien) auf drei Ebenen:
◦ Systemebene (z.B. Erzeugen ganzer DB)
◦ Datenbankebene (Anlegen von Tabellen)
◦ Tabellenebene (DML-Operationen)
– Tabellenrechte werden mit der GRANT-Anweisung gesetzt:
GRANT <operation> ON <tabelle> TO <benutzer>
– wobei die Operation z.B. folgende Befehle umfassen kann: SELECT, INSERT,
DELETE, UPDATE
– Beispiele:
GRANT ALL ON tabelle TO PUBLIC;
GRANT SELECT,INSERT ON mitarbeiter TO claudia,heinz;
– Nicht-Ersteller-Benutzer können Rechte nur eingeschränkt weitergeben
– Benutzer können keine Rechte weitergeben, über die sie nicht selbst verfügen
– Ersteller-Benutzer haben alle Rechte an einer Tabelle
– Entziehen von Rechten mit REVOKE
– GRANT und REVOKE beziehen sich immer auf alle Spalten und Zeilen einer Tabelle
– eine differenziertere Rechtevergabe ist nur mittels Views zu erreichen
10 DATENBANKEN
10.4
10
Transaktionen
– Ein fehlerfreier Betrieb einer Datenbank ist nur dann möglich, wenn parallele
Zugriffe verschiedenener Anwendungen auf denselben Datensatz vom DBMS erkannt und geregelt werden
– insbesondere ist auf den Erhalt der Datenkonsistenz bei gleichzeitigen UpdateAktionen zu achten
– Lese- und Schreiboperationen sollten nach dem Alles-oder-Nichts-Prinzip durchgeführt werden, d.h. eine Aktion wird entweder vollständig oder gar nicht durchgeführt
– die Transaktionsverwaltung ermöglicht einen Mehrbenutzerbetrieb ohne Gefährdung der Datenkonsistenz
– nach Fehlern oder Unterbrechungen muss der ursprüngliche Zustand wiederherstellbar sein
– eine Voraussetzung hierfür ist die ausführliche Protokollierung von Änderungen
(Logging), einschließlich Zeitpunkt, Benutzername und Datensatz
– eine Transaktion ist eine Einheit von Datenbank-Änderungen, die nur komplett
oder gar nicht in die DB übernommen werden darf
– bei Störungen muss die DB auf den Stand vor der Änderung zurückzusetzen sein
(COMMIT, ROLLBACK)
– nach einem Transaktionsstart sind alle Anweisungen nur vorläufig und werden
erst beim Transaktionsende dauerhaft in die Datenbank eingetragen
– das Transaktionsende wird gekennzeichnet durch:
◦ die explizite Anweisung COMMIT
◦ das reguläre Beenden einer Anwendung
◦ das Beenden einer DB-Sitzung
– Ursachen für einen Transaktionsabbruch können sein:
◦ Systemfehler (Hardware, Platten-Crash, Stromausfall usw.)
◦ Programmfehler (Arithmetik, Programmabbruch, Deadlock, Laufzeitfehler
usw.)
◦ die explizite Anweisung ROLLBACK (Rückwärts-Lesen der LOG-Datei)
– die Transaktionsverwaltung garantiert jedoch nur die korrekte Ausführung einzelner Aktionen, parallel verarbeitete Transaktionen können sich trotzdem überlagern
– gleichzeitig ausgeführte Updates können sich gegenseitig überschreiben ( verlo”
rene Updates“) und führen somit zum Datenverlust
– die Sicherheit von Transaktionen wird durch Synchronisation erreicht, d.h. jede
Transaktion muss einen Datensatz für andere Transaktionen sperren: LOCK
– das Sperren (Locking) kann auf unterschiedlichen Ebenen erfolgen
◦ sperren der gesamten Datenbank
10 DATENBANKEN
11
◦ sperren einer Tabelle
◦ sperren einer Spalte/Zeile
◦ sperren eines Feldes
– die Verwaltung übernimmt ein Lock-Manager, der einen gesperrten Datensatz
erst nach einem COMMIT oder ROLLBACK der aktuellen Transaktion freigibt
10.5
MySQL
– Datenbanken wurden bis vor einigen Jahren fast ausschließlich im kommerziellen
Umfeld für die Speicherung und Verwaltung sehr großer Datenmengen eingesetzt
– in Projekten mit kleineren Datenmengen wurden meistens proprietäre oder software-spezifische Speicherformate verwendet
– durch die Verbreitung von OpenSource-Software und -Betriebssystemen wurden
auch nicht-kommerzielle Datenbanksysteme entwickelt
– diese Datenbanken können im Rahmen der Public Licenses im nicht-kommerziellen
Umfeld frei betrieben werden
– vor allem im Bereich von Web-Diensten können solche Datenbanken für die immer
weiter anwachsenden Datenbestände sinnvoll eingesetzt werden
– eine verbreitete Datenbank ist MySQL“
”
– MySQL bietet eine hohe Konformität zu SQL und ist ein schneller DatenbankServer, da viele (wenig benutzte) Spezialfunktionen kommerzieller Produkte fehlen
– da die Programmierung eines Datenbanksystems eine aufwändige, lang andauernde Entwicklung darstellt, gelten zum gegenwärtigen Zeitpunkt einige Einschränkungen:
◦ es sind keine sicheren Transaktionen gewährleistet (in der Praxis ist das aber
nur bei hoch belasteten Systemen problematisch, zudem lassen sich sicherere
Transaktionen in SQL-Kommandos hineinprogrammieren“)
”
◦ Locks einzelner Datensätze sind nicht möglich (nur ganze Tabellen)
◦ es gibt keine Views
◦ keine Fremdschlüssel
◦ keine referentielle Integrität (automatisches Löschen verbundener redundater Datensätze)
– weitere Vorteile von MySQL sind u.a.:
◦ einfache Realisierung von Anbindungen an z.B. Perl, PHP, C, C++, JDBC
(Java)
◦ Unterstützung diverser Datentypen (auch Binärdaten)
◦ zusätzliche Abfragekriterien (außer LIKE)
◦ schneller Datenzugriff
10 DATENBANKEN
10.6
12
Datenbank-Backup
– für den Betrieb einer Datenbank ist die Sicherung (Backup) der Daten unerlässlich
– beliebige Fehler im Gesamtsystem können bis zum Totalverlust der Daten führen,
mit schwerwiegenden Folgen für ein Projekt oder ein ganzes Unternehmen
– oftmals sind die Daten einer Datenbank nur mit hohem Aufwand oder im ungünstigsten Fall gar nicht mehr rekonstruierbar
– Warum Sicherung einer Datenbank?
◦ SQL-Fehler
◦ Prozess-Fehler
◦ Tabellen-Fehler
◦ Benutzer-Fehler
◦ System- und Hardware-Fehler
– da es sich bei einer Datenbank um ein komplexes System handelt, genügt es nicht,
lediglich die Datenfiles oder Tabellen auf ein Backup-Medium zu kopieren
– die physikalische Struktur einer Datenbank (am Beispiel Oracle) enthält folgende
für eine Wiederherstellung wichtige Komponenten:
◦ Datenfiles (Tabellen)
◦ Transaction-Logs (Online-Redo-Logs)
◦ Archive-Logs (zur Wiederherstellung älterer Zustände)
◦ Control-File (enthält z.B. die Verzeichnis-Struktur)
◦ Rollback-Segmente
– die Offline-Sicherung:
◦ Datenbank-Prozesse herunterfahren
◦ Datenfiles einschließlich der Verzeichnis-Struktur sichern
◦ die Offline-Sicherung ist nur dann möglich, wenn kein 7×24-Betrieb erforderlich ist
– die Online-Sicherung:
◦ die Datenbank bleibt während der Sicherung in Betrieb
◦ sehr wichtig ist die Sicherung des Control-Files, ohne das die Datenbank
nicht wiederherstellbar ist
◦ das Backup der Transaction-Logs ist wenig sinnvoll, da es sich hierbei um
ständig geöffnete Dateien handelt, die nicht konsistent zu sichern sind
◦ aber: Transaction-Logs sind zwingend für die Wiederherstellung des aktuellen Status erforderlich und sollten daher gemultiplexed werden
◦ Archive-Logs (geschlossene Transaction-Logs) müssen erstellt und gesichert
werden, da nur so im Fall eines Recoverys eine Verbindung“ zum letzten
”
Backup hergestellt werden kann
◦ läuft eine Datenbank im NOARCHIVELOG-Modus ist nur ein Offline-Backup
10 DATENBANKEN
13
möglich
◦ letztlich sind natürlich auch die Datenfiles zu sichern, wobei beim OnlineBackup zu berücksichtigen ist, dass es sich um ein nicht-konsistentes Backup
handelt, das alleine ohne Archive- und Online-Redo-Logs nicht brauchbar
ist
– Typen von Datenbank-Backups:
◦ konsistentes Backup der gesamten DB
◦ inkonsistentes Backup der gesamten DB
◦ Sicherung einer Tabelle
◦ Sicherung eines Datenfiles
◦ Archive-Log Backups
Index
Database Management System, 2
Datenbank-System, 2
Datenbanken, 2
Backup, 12
Locking, 10
Offline-Sicherung, 12
Online-Sicherung, 12
Transaction-Logs, 12
Transaktionen, 10
DBMS, siehe Database Management System
DBS, siehe Datenbank-System
Entitat, siehe Relation
MySQL, 11
Normalformen, 4
Primarschlussel, 3
Primary Key, siehe Primarschlussel
Redundanz, schadliche, 2
Relation, 3
Tupel, 2, 3
14
Herunterladen