SQL -

Werbung
SQL
Data Control Language
(vom Datenbankadministrator ausgeführt)
Es gibt Gefahren für die Daten: 1)
2)
3)
4)
unberechtigte Zugriffe
Mehrfachbenutzung
Irrtümer (rückgängig machen)
Technische Abbrüche (sollen keine Trümmer hinterlassen)
zu 1) Benutzerverwaltung
create user … identified by …
drop user …
grant { connect | resource | dba } to meier
grant <Tätigkeit> on <Objekt> to <Benutzer>
revoke <Tätigkeit> on <Objekt> from <Benutzer>
Ablauf: - Superuser wird bei Installation festgelegt.
- Superuser legt Datenbankadministratoren an.
- Jeder Datenbankadministrator legt seine Mitarbeiter-User an (resource, connect).
meier
Operationen (select, insert, update, delete, definieren, benutzen)
person
form1
x
x
Oberflächen werden immer "höher", d.h. entfernen sich immer mehr vom DBMS. Die Benutzer werden
immer datenbankunausgebildeter. SQL verschwindet in den Tiefen der Systeme, bleibt aber als funktionaler
Standard erhalten.
zu 2) Sperren
Bei gleichzeitiger Mehrfachbenutzung tritt evtl. lost update auf (Die spätere Änderung überschreibt die
frühere.). Abhilfe für beides ist sperren.
in der Datenbank:
meier 500
user 1
user 2
meier +100
meier -100
Ablauf: - user1 holt den Satz mit 500
- user2 holt den Satz mit 500
- user1 addiert 100: 600
- user2 subtrahiert 100: 400
- user1 schreibt zurück: 600
- user2 schreibt zurück: 400
TFH Berlin/Steyer
SQL
Die Änderung des user1 (+100) geht verloren. user1 müsste den Satz während der ganzen Zeit sperren.
Weitere Unterscheidungen: Lesesperren, Schreibsperren, gravierendes Problem: Deadlock
zu 3) Transaktionsverwaltung
Eine Transaktion ist eine benutzerdefinierte Befehlsfolge, die ganz oder garnicht ausgeführt wird, auch
wenns länger dauert.
Beginn einer Transaktion am Anfang der Sitzung
Ende einer Transaktion am Ende der Sitzung
dazwischen mit "commit" Ende und Anfang einer Transaktion zugleich (früher mal begin transaction, end
transaction)
Zweck:
Realisierungsgarantie auch längerer Abläufe
Realisierung:
Im Log-Protokoll werden alle Datenänderungen (kein Lesen) schnell parallel notiert und bei
Bedarf nachgearbeitet oder rückgängig gemacht ("rollback, undo").
SQL:
Probleme:
COMMIT, ROLLBACK
Je weiter zurück die Dinge liegen, die man ungeschehen machen will, desto mehr Platz für
das Protokoll braucht man.
ACID-Eigenschaften einer Transaktion:
A (atomicity):
C (consistency):
I (isolation):
D (durability):
Eine Transaktion ist unteilbar, wird also ganz oder gar nicht ausgeführt.
VOR und NACH der Transaktion ist der Datenbestand konsistent.
Die Einzelaktionen können ungestört durchgeführt werden.
Die Ergebnisse werden dauerhaft/permanent gespeichert.
Es gibt eine einstellbare Transaktionsschärfe (isolation level)
Isolierungsstufe 0: Es wird nichts gesperrt. (READ UNCOMMITTED) Bsp. Ist Tabelle leer ?
Isolierungsstufe 1: Es wird implizit eine Zeile gesperrt, wenn sie angefasst wird. Es ist immer nur eine Zeile
pro Tabelle gesperrt. (READ COMMITTED) Bsp. Gehaltserhöhung für alle.
Isolierungsstufe 2: Es wird eine Zeile gesperrt, wenn sie angefasst wird. Diese Sperre wird für
wiederholtes Arbeiten gehalten. (REPEATABLE READ) Bsp. Umbuchung
Isolierungsstufe 3: Es wird implizit eine ganze Ergebnismenge für wiederholtes Arbeiten gesperrt.
(CURSOR STABILITY) Bsp. Jahresabschluss u.a. Statistiken
zu 4) technische Abbrüche
werden damit auch erledigt
TFH Berlin/Steyer
Herunterladen