SQL Data Control Language (vom Datenbankadministrator ausgeführt) Benutzerverwaltung create user … identified by … change user … drop user … grant { connect | resource | dba } to meier identified by z97d 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. Transaktionsverwaltung 1) 1.Stufe: Sperren sind nötig (Beispiel Abbuchung) 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 Die Änderung des user1 (+100) geht verloren. user1 müsste den Satz während der ganzen Zeit sperren. Weitere Unterscheidungen: Lesesperren, Schreibsperren, Deadlock 2) 2.Stufe: Transaktionen benutzerdefinierte Befehlsfolge, die ganz oder garnicht ausgeführt wird, auch wenns länger dauert impliziter Beginn am Anfang der Sitzung implizites Ende am Ende der Sitzung dazwischen mit "commit" Ende und Anfang 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: 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örte durchgeführt werden. Die Ergebnisse werden dauerhaft/permanente gespeichert. 3) 3.Stufe: Isolation levels 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 TFH Berlin/Steyer