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