Wirtschaftsinformatik II Datenorganisation – Datenbanken - Kommunikation Transaktionen: Wiederholung und Vertiefung 7. Datenbankorganisation 7.1. Architektur und Klassifizierung von Datenbanksystemen 7.2 Client/Server Datenbanken Prof. Dr. Sabine Kühn Fachbereich Informatik/Mathematik Raum Z 136e Tel. (0351) 462 2490 [email protected] www.htw-dresden.de/~skuehn Transaktionsverwaltung – Beispiel Atomarität 31.05.2007 2 Transaktionsverwaltung – Beispiel Atomarität Im vorigen Ablauf ist die Alles-oder-Nichts-Semantik der Atomarität verletzt: Ein inkonsistenter Zwischenzustand bleibt erhalten (bei der fehlgeschlagenen Überweisung ging Geld verloren!) Abhilfe: für die durch den Systemabsturz abgebrochene Überweisungstransaktion sollte das bereits erfolgte Debit automatisch durch das Datenbanksystem rückgängig gemacht werden Æ Gefragt sind also geeignete Recovery-Protokolle, die beispielsweise den Zustand einspielen, der direkt vor Beginn der Überweisungstransaktion vorlag 31.05.2007 3 Transaktionsverwaltung – Beispiel Isolation 31.05.2007 4 Transaktionsverwaltung – Beispiel Isolation Im vorigen Ablauf überschneiden sich die beiden Transaktionen in Inkorrekter Weise Die Änderungsoperation der Überweisungstransaktion geht komplett verloren (und damit auch das überwiesene Geld). Das Phänomen wird auch als „lost update“ bezeichnet Der korrekte Endzustand nach kompletter Ausführung beider Transaktionen wäre: Das System muss daher die beiden Transaktionen durch geeignete Concurrency Control-Protokolle voneinander isolieren, indem z.B. die Überweisungstransaktion den Kontostand von 4711 erst lesen und verändern kann, nachdem die ATMTransaktion beendet ist. 31.05.2007 5 Was ist eine Transaktion? Eine Transaktion ist eine Menge von logisch zusammengehörenden Operationen (zumeist in ein Programm eingebunden, aber auch interaktiv möglich) Im Fall von klassischen Datenbanktransaktionen beziehen sich alle Operationen (Lesen bzw. Schreiben von Datenobjekten) auf dasselbe Datenbanksystem Transaktionen basieren auf einem generischen Abstraktionskonzept zum Kapseln der enthaltenen Operationen, um für diese bestimmte Ausführungsgarantien durchzusetzen Ausführungsgarantien abgeleitet von ACID-Eigenschaften Diese Garantien werden vom System transparent für den Anwendungsentwickler/ Benutzer bereitgestellt Anwendungsentwickler/Benutzer muss lediglich die Transaktionsgrenzen festlegen (BOT = Begin-of-Transaction bzw. EOT = End-of-Transaction), wird aber von allen anderen Aspekten zur Realisierung der Garantien befreit 31.05.2007 6 Transaktionseigenschaften: ACID Atomicity (Atomarität) Eine Transaktion wird entweder komplett ausgeführt (“commit”) oder erscheint so, als wäre sie nie gestartet worden, d.h. sie hinterlässt keine Effekte (“rollback”). Die Semantik einer Transaktion entspricht also einem “Alles-oder-Nichts”. Consistency (Konsistenz) Eine Transaktion führt die Datenbank von einem konsistenten Zustand in einen anderen konsistenten Zustand über Isolation Transaktionen, auch wenn parallel ausgeführt, erscheinen so als ob sie isoliert voneinander (d.h. sequentiell) ausgeführt werden Durability (Dauerhaftigkeit/Persistenz) Nach dem Commit einer Transaktion sind ihre Effekte dauerhaft, d.h. überleben auch Systemabstürze 31.05.2007 7 Durchsetzen von Transaktioneigenschaften Transaktionen sind eine Art Vertrag zwischen einem Anwendungsprogramm und dem Laufzeitsystem der Datenbank Die ACID-Eigenschaften können dabei als Vertragsinhalt angesehen werden, durch welche die Aufgaben der Laufzeitumgebung festgeschrieben sind Die wichtigsten Aufgaben einer Infrastruktur zur Transaktionsverwaltung bestehen aus der korrekten Synchronisation paralleler, konkurrierender Transaktionen (Concurrency ControlÆ Isolation) sowie der korrekten Behandlung von System- und Anwendungsfehlern (Recovery Æ Atomarität, Persistenz). Diese Unterscheidung spiegelt sich auch in den Komponenten der Infrastruktur zur Transaktionsverwaltung wieder 31.05.2007 8 2 Phasen Sperrprotokoll Idee: Vor dem Zugriff (sowohl lesend als auch schreibend) auf ein Datenobjekt muss eine Sperre erworben werden. Diese Sperren müssen transparent für die Transaktionen (und damit für den Nutzer bzw. das Anwendungsprogramm) vom System gesetzt werden. Dabei werden die Sperren so gewählt, dass keine Konfliktaktionen auf demselben Objekt möglich sind, aber zugleich Aktionen die nicht in Konflikt stehen, zuzulassen. Sperrmodi: Zwei parallele Transaktionen dürfen also dasselbe Objekt lesen, wenn aber auch auf da Objekt geschrieben wird, darf dies nur eine Transaktion ( und keine andere darf lesen). S-Lock (Shared Lock) für den lesenden Zugriff E-Lock (Exclusive Lock) für den schreibenden Zugriff Der Sperrmodus für einen Zugriff wird durch das DBMS jeweils automatisch gewählt. 31.05.2007 9 2 Phasen Sperrprotokoll Für Sperrmodi gilt die folgende Verträglichkeit: Transaktion fordert: Objekt belegt mit Shared Exclusive Shared Exclusive + - - + angeforderte Sperre kann vergeben werden (Reihenfolge von Lesern vertauschbar, kein Konflikt im Lese/Lese Fall) - angeforderte Sperre kann NICHT vergeben werden ( da sonst Schreib/Lese, Lese/Schreib oder Schreib/Schreib Konflikt); die anfordernde Transaktion muss warten (dazu verwaltet das DBMS verschiedene Warteschlangen) 31.05.2007 10 7. Datenbankorganisation 7.1. Architektur und Klassifizierung von Datenbanksystemen 7.2 Client/Server Datenbanken Architektur nach 3 Ebenen Modell Grundlage für die Architektur von DBS bildet das 3-Ebenen Modell: Anwender nutzen Anwendungsprogramme über deren Benutzeroberfläche (Präsentation und Applikation) Anwendungsprogramme greifen über das DBMS auf die Datenbasis zu. Anwendungsprogramme lösen über Befehle der verwendeten Datenmanipulationssprache (allgemein DML, am meisten verwendet SQL als Vertreter dieser Sprache) Transaktionen an das DBMS aus Das DBMS formt Transaktionen in Anweisungen an das Betriebssystem um. Das Betriebssystem verwaltet die Speicher und löst Operationen für Speicherzugriffe aus. 31.05.2007 12 Architektur nach 3 Ebenen Modell 31.05.2007 13 Begriffe (Wiederholung) Eine Datenbank (im eigentlichen Wortsinn) ist nichts weiter als eine Sammlung von Daten, bei relationalen Datenbanken etwa in Form von Tabellen. Eine Datenbankanwendung ist ein Programm, mit dem Benutzer auf seine Daten zugreift, also etwa eine Literaturverwaltung oder eine Kundendatenbankapplikation. Datenbankmanagementsystem (DBMS) ist das Programm, das eine (oder mehrere) Datenbank(en) verwaltet, also beispielsweise Access oder Oracle 9i. Die Datenbankdateien sind die physischen Dateien, in denen das Datenbankmanagementsystem eine Datenbank abspeichert. 31.05.2007 14 Klassifikation von DBMS Klassifikation nach dem Datenmodell Hierarchische Datenbanken Organisatorisches Datenmodell aus der Mainframe-Ära. Heute nur noch selten zu finden. Netzwerk Datenbanken Organisiert Daten in einem Netzwerk miteinender verlinkter Einträge. Eine frühe Form der Datenbank (1971), Vorgänger der relationalen DB. Nur noch selten anzutreffen. Relationale Datenbanken Das zur Zeit meistgenutzte Modell, auf dem die meisten kommerziellen DBMS basieren. Objektrelationale Datenbanken Ursprünglich relationale Datenbanken wurden um objektorientierte Funktionalitäten erweitert, die es erlauben, Daten sowohl wie Objekte zu behandeln, als auch auf konventionelle Weise auf sie zuzugreifen. Auf dem Vormarsch. Objektorientierte Datenbanken Basieren auf der Objektorientierung . Die User erzeugen ihre eigenen Objekte und spezifizieren, wie sie sich zueinander verhalten 31.05.2007 15 Klassifikation von DBMS Klassifikation nach der Lokalisierung Desktop-Datenbank Bei einer Desktop-Datenbank läuft das Datenbankmanagementsystem, beispielsweise Access, mit der jeweiligen Datenbank und der Datenbankanwendung auf dem PC des Anwenders. Client-ServerSystem Bei Client/Server-Anwendungen verteilen sich die Aufgaben anders. Das Datenbankmanagementsystem läuft auf einem Server-Rechner im Netz und hat den exklusiven Zugriff auf die Datenbankdatei(en). Bei einem relationalen Datenbank-Server spricht man auch von einem SQL-Server, bei dem Client-Programme per Abfragesprache SQL Daten abrufen und speichern. Die Datenbankanwendung kann auf dem Client oder auf dem Server laufen oder sich auf beide verteilen Verteilte Datenbanksysteme - ClusterDatenbanken, Datenbank-Cluster Besteht aus mehreren autonomen DB-Systemen, die räumlich voneinander entfernt stehen, aber koordiniert zusammenarbeiten, oft mit aktivem Workload-Management oder im gegenseitigen Standby-Betrieb als aktive Failover-Strategie Weitere Klassifizierungen, z.B. nach unterstützten spezielle Datentypen, dem unterstützen Anwendungsgebiet, Lizenzmodell, Plattform 31.05.2007 16 Desktopdatenbank bzw. File Server Architektur Präsentation Applikation Präsentation Applikation Datenbank Access (mdb) ist eine DesktopDatenbank, d. h. es eignet sich gut für den lokalen Einsatz auf einem Rechner oder in einem kleinen Netzwerk (als File Server Architektur). Präsentation, Applikation und Datenbank auf einem Rechner Datenbank 31.05.2007 Kein Mehrnutzerbetrieb 17 File Server Architektur: ACCESS - ACCESS ACCESS: Abfragen, Formulare, Berichte ACCESS: Tabellen(Daten) File über ODBC ACCESS: Abfragen, Formulare, Berichte 31.05.2007 File über ODBC 18 File Server Architektur: ACCESS - ACCESS 31.05.2007 19 File Server Architektur: ACCESS - ACCESS Vorteile: - Zugriff von mehreren Anwendern auf Daten - ProgrammDB getrennt änderbar - Client-Programme lokal vorhanden Nachteile: - WHERE-Angabe bei SELECT wird erst auf Client realisiert - Mehrnutzbetrieb auf theoretisch 255 beschränkt, praktisch jedoch nur 5-10 Nutzer aus Performancegründen - Ungeeignet bei sehr großen Datenmengen (mehrere GB) - Nach einem Absturz von ACCESS gibt es keine Wiederherstellungsroutine 31.05.2007 20 Server Datenbanken Server Client Dienst Dienst Client Unterscheidung zwischen File-Server Datenbank und Server-Datenbank File Server Datenbank (z.B. Access): Hier kann von außen immer nur auf die Datenbankdatei zugegriffen werden. Außerdem werden hier grundsätzlich alle Daten übertragen und erst der Empfänger ist in der Lage, die Daten zu selektieren. Server Datenbank (z.B. SQL Server): Auf diesem läuft nach dem Starten ein Datenbankprozess, der Anforderungen in Empfang nehmen und den entsprechenden Dienst ausführen kann, z.B. das Ausführen eines Selects mit Where-Bedingung. Hier werden also nur die benötigten Daten übergeben. Daraus ergibt sich auch ein erheblicher Geschwindigkeitsvorteil. 31.05.2007 21 SQL Server Transaktionskonzept (Transaktionsprotokoll) 31.05.2007 22 SQL Server Trigger 31.05.2007 23 Trigger Ein Datenbanktrigger, meist nur Trigger genannt, ist eine Funktionalität von diversen Datenbankmanagementsystemen, insbesondere von großen relationalen Datenbankmanagementsystemen. Bei einer bestimmten Art der Änderungen (z. B. INSERT, UPDATE, DELETE bei SQL) von Daten in einer Tabelle wird ein gespeichertes Programm aufgerufen, das diese Änderung erlaubt, verhindert und/oder weitere Tätigkeiten vornimmt Trigger werden u. a. zur Wahrung der Datenkonsistenz (Integritätschecks) und zum Einfügen, Löschen oder Ändern von Referenzdaten eingesetzt. Der Trigger wird ausgeführt („gefeuert“), wahlweise bevor die Änderung an der referenzierten Tabelle vorgenommen wird oder danach 31.05.2007 24 SQL Server Stored Procedures 31.05.2007 25 Stored Prozedures – Gespeicherte Prozeduren Der Begriff Gespeicherte Prozedur (GP) oder englisch Stored Procedure (SP) bezeichnet eine Funktion bestimmter Datenbankmanagementsysteme. In einer Stored Procedure können ganze Abläufe von Anweisungen unter einem Namen gespeichert werden, die dann auf dem Datenbankserver zur Verfügung stehen und ausgeführt werden können. Mit anderen Worten: Eine SP ist ein eigenständiger Befehl, der eine Abfolge von gespeicherten Befehlen ausführt. Mittels Stored Procedures können häufiger verwendete Abläufe, die sonst durch viele einzelne Befehle vom Client ausgeführt werden würden, auf den Server verlagert werden, und durch einen einzigen Aufruf ausgeführt werden (siehe auch Client-Server-System). Mitunter wird dadurch die Leistung gesteigert, da weniger Daten zwischen Client und Datenbankserver ausgetauscht werden müssen und das Datenbankmanagementsystem häufig auf leistungsfähigeren Servern läuft. 31.05.2007 26 Client Server Architektur: ACCESS – SQL Server ACCESS: Formulare, Berichte Daten selektiert über OLE DB ACCESS: Formulare, Berichte 31.05.2007 SQL Server: Tabellen, Sichten, Stored procedures, Trigger Daten selektiert über OLE DB 27 Client Server Architektur: ACCESS – SQL Server 31.05.2007 28 Client Server Architektur: ACCESS – SQL Server 31.05.2007 29 Client Server Architektur: ACCESS – SQL Server 31.05.2007 30 Client Server Architektur: ACCESS – SQL Server 31.05.2007 31 Client Server Architektur: ACCESS – SQL Server 31.05.2007 32 Client Server Architektur: ACCESS – SQL Server 31.05.2007 33 Client Server Architektur: ACCESS – SQL Server Das Beispiel verwendet die Methode Requery, um die Daten erneut abzufragen, die im Formular MitarbeiterinAbt angezeigt werden. 31.05.2007 34 Client Server Architektur: ACCESS – SQL Server 31.05.2007 35