verteilte Transaktionssysteme Wolfgang Bartels Bedürfnisse von E-Commerce-Systemen Verwaltung großer Datenmengen Sicherheit und Konsistenz Bank Bankkonto Bezahlung Rech nung Buchhaltung Kunde Vertrag Lieferschein Lage r Zulieferer Spediteure Was sollte man nach diesem Vortrag gelernt haben ? Was sind Transaktionen und warum sind sie wichtig ? Welche Probleme entstehen in diesem Kontext und wie werden sie gelöst ? Wo werden Transaktionen eingesetzt ? Welche Produkte arbeiten mit diesem Konzept ? Tagesordnung Grundlagen – Transaktionen Grundbegriffe Concurrency Control – Probleme – Sperrprotokolle – Transaktionen in verteilten Systemen verteilte Transaktionssysteme Das 2-Phasen-Commit-Protokoll Produkte – Datenbanksysteme unter Linux Transaktion Eine Transaktion ist eine Menge von Operationen (z.B. DBOperationen oder Nachrichten), die folgende Eigenschaften erfüllt : – Atomicity (Atomarität) – Consistency (Konsistenz) – Isolation – Durability (Dauerhaftigkeit) Eine Transaktion wird mit einem BeginTransaction (BeginTA) eingeleitet. Eine erfolgreiche Beendigung einer Transaktion wird mit einem COMMIT abgeschlossen Eine fehlerhafte Beendigung wird mit einem ROLLBACK abgeschlossen Atomicity Es werden entweder alle Operationen der Transaktion ausgeführt oder keine von ihnen („Alles oder Nichts“-Prinzip) Consistency (Konsistenz) Die Transaktion ist die Einheit der Datenbankkonsistenz. Nach Beendigung der Transaktion sind alle physischen und logischen Integritätsbedingungen erfüllt. D.h. nach Beendigung der Transaktion befindet sich das System in einem konsistenten Zustand Isolation Die Transaktion wird auch in einem Mehrbenutzerbetrieb so ausgeführt, als würde sie im Einbenutzerbetrieb arbeiten (logischer Einbenutzerbetrieb). Dadurch wird das Ausbleiben unerwünschter Nebeneffekte garantiert ! Durability (Dauerhaftigkeit) Die von einer erfolgreich abgeschlossenen Transaktion getätigten Änderungen sind persistent und überleben jeden danach auftretenden Hard- und Softwarefehler. Beispiel für Transaktionen Eine Banküberweisung von Konto1 auf Konto2: BeginTA Wenn Kontostand1 >= Überweisungsbetrag erhöhe Kontostand1 um den Überweisungsbetrag Wenn Konto2 existiert vermindere Kontostand2 um den Überweisungsbetrag Sonst ROLLBACK COMMIT Probleme mit Transaktionen Transaktion1 read(Kontostand) Kontostand += 100 Transaktion2 read(Kontostand) Kontostand += 1.000.000 write Kontostand write Kontostand „Lost-Update-Problem“ Concurreny Control durch Sperrprotokolle Problem : – überlappende Transaktionen arbeiten auf den gleichen Datensätzen mit Lese- und Schreiboperationen Lösungen – Zeitstempelverfahren – Sperrprotokolle (z.B. 2 Phase Locking Protocol) Sperrprotokolle Eine Sperre ist ein (zeitlich begrenztes) „Zugriffsprivileg“ auf ein Datenobjekt. Es existieren 2 Arten von Sperren Lese- und Schreibsperren. Es sind nur Lesesperren miteinander verträglich Ein Sperrprotokoll beschreibt die Reihenfolge der Sperraktionen, d.h. der Sperranfragen und – freigaben Ein Sperrverwalter ist eine Komponente, die Sperren gemäß dem Sperrprotokoll gewährt, verweigert bzw. aufhebt Das 2-Phasen-Sperrprotokoll Regeln – Ehe eine TA ein Objekt liest, muss es eine Lesesperre darauf besitzen – Ehe eine TA ein Objekt schreibt, muss es eine Schreibsperre besitzen – Fängt eine TA an seine Sperren aufzugeben, kann es keine neuen erhalten (d.h. eine TA hält ihre Sperren bis zu ihrem Ende) – 2 TA‘s können nicht gleichzeitig unverträgliche Sperren auf demselben Objekt halten Tagesordnung Grundlagen – Transaktionen Grundbegriffe Concurrency Control – Probleme – Sperrprotokolle – Transaktionen in verteilten Systemen verteilte Transaktionssysteme Das 2-Phasen-Commit-Protokoll Produkte – Datenbanksysteme unter Linux verteilte Transaktionssysteme (vTS) In einem vTS erfolgt die Verarbeitung von verteilten Transaktionen unter Kontrolle von TP-Monitoren. Ein TP-Monitor ist eine Komponente eines Transaktionssystems, welche folgende Aufgaben übernimmt: 1. 2. 3. 4. 5. die Ausführung von Transaktionsprogrammen Nachrichtenverwaltung Transaktionsverwaltung Authentifikation und Authorisierung Kommunikation von Programmen und Terminals Punkt 3. wird durch eine Teilkomponente – den Transaktionsmanager (TM) – realisiert. Transaktionsverarbeitung in Client/Server-Systemen Client/Server Cut End-user interface Client TP-Monitor Server Server TP-Monitor TP-Monitor DBMS DBMS Distributed Presentation Remote Presentation Functional Logic Distributed Logic Remote Data DB DB Abb.1: Client/Server-Konfiguration Data Access Abb.2: Client/Server-Topologien Distributed Data verteilte Transaktionen Ausführung der Transaktion auf einem oder mehreren Knoten (Rechnern). Der Knoten, auf dem die Transaktion begonnen wurde heißt Heimatknoten bzw. Koordinator (-Knoten). Annahme : Jeder Knoten besitzt einen Transaktionsmanager An jedem beteiligten Knoten wird eine Teil- bzw. Subtransaktion ausgeführt. Probleme bei verteilten Transaktionen Work TM1 BeginTA Doing Commit TM2 BeginTA Doing Rollback Done BeginTA Doing Rollback Koordinator Abort Work Das 2-Phasen-Commit Protokoll (2PC) 1. Phase a) Bei Transaktionsende schickt Koordinator ein PREAPRE-Nachricht gleichzeitig an alle Agenten, um deren lokales Commit-Ergebnis in Erfahrung zu bringen. b) Erhalt der PREPARE-Nachricht beim Agenten: i. erfolgreiche Ausführung der Subtransaktion Sicherung des Ergebnisses (KEIN lokales Commit!) Antwort: READY-Nachricht ii. fehlgeschlagene Ausführung der Subtransaktion Abbrechen der Subtransaktion (Rollback) Antwort: FAILED-Nachricht 2PC – 2.Phase Alle Nachrichten sind beim Koordinator eingetroffen: c) i. ii. d) Alle Nachrichten lauten READY Der Koordinator sendet an alle Agenten gleichzeitig eine COMMIT-Nachricht Mindestens eine Nachricht lautet FAILED Der Koordinator sendet an alle Agenten gleichzeitig eine ABORT-Nachricht Verarbeitung des COMMIT / ABORT auf lokaler Ebene. Antwort: ACK Eine gescheiterte verteilte Transaktion im 2PC Work PREPARE ABORT TM1 BeginTA Doing Done Rollback READY Done FAILED ACK BeginTA Doing Done Rollback Koordinator Done READY ACK TM2 Work PREPARE ABORT BeginTA Doing Done Rollback Tagesordnung Grundlagen – Transaktionen Grundbegriffe Concurrency Control – Probleme – Sperrprotokolle – Transaktionen in verteilten Systemen verteilte Transaktionssysteme Das 2-Phasen-Commit-Protokoll Produkte – Datenbanksysteme unter Linux Datenbanksysteme unter Linux Adabas D Ovrimos mySQL Ovrimos Sybase Adaptive Server Enterprise SynchroNet Sonstige Adabas D Hersteller : SAG Systemhaus aktuelle Version: 11.01 Verfügbarkeit / Kosten : S.u.S.e / unbekannt Features: verteiltes DBS Hohe Verfügbarkeit 1. 7 x 24h-Betrieb 2. Spiegelplattenbetrieb Interfaces 1. JDBC (Version 1.2) 2. ODBC WebDB 1. Internet und Intranetintegration 2. virtuelles File-System 3. dynamisches HTML SQL 1. ANSI-92, ADABAS, ORACLE DBMaker Hersteller : CaseMaker Inc. aktuelle Version: ? Verfügbarkeit / Kosten : ? Features: Portierbar Skalierbar Robust 1. Recovery 2. Auto-Backup 3. Konsistenzprüfung Multimedia Unterstützung Interfaces 1. ODBC 2.1 SQL 1. ANSI-92 verteiltes DBS ? mySQL Hersteller : aktuelle Version: Verfügbarkeit / Kosten : Features: verteiltes DBS ? verwaltet große Datenmengen Probleme 1. Linux Threads Gamma 2. Locking (Linux) Gamma T.c.X. 3.22 (?); 3.23alpha ? viel Literatur Referenzliste Interfaces 1. ODBC 2.5 (Win95) 2. MS Access SQL-Standard (?) Ovrimos Hersteller : aktuelle Version: Verfügbarkeit / Kosten : Features: Nested Transactions BLOB Web 1. HTTP-persistente Sessions ohne Cookies 2. dynam. Content durch SchemeScripting (Interpreter in Ovrimos Ovrimos S.A. 2.6 s.o. / $79 - $20.000 Interfaces 1. JDBC (Version 1.1) 2. ODBC (2.0) SQL 1. ANSI (92 ?) Entry-Level Sybase Adabtive Server Enterprise Hersteller : aktuelle Version: Verfügbarkeit / Kosten : Features: verteiltes DBS Skalierbar Replikation read-write bidirektional 1. Sybase 2. DB2 3. Oracle Sybase Inc. 11.9.2 ? Queryoptimierung Interfaces 1. ODBC (?) SQL 1. ANSI-89 2. ANSI-92 (Entry) SynchroNet Hersteller : aktuelle Version: Verfügbarkeit / Kosten : Features: verteiltes DBS Einbindung von Geschäftsprozessen in Transaktionen Portable Anwendungsentwicklung Solid Information Technology 2.0 ? Interfaces 1. JDBC (Version 2) 2. Native ODBC (3.51) SQL 1. ANSI-92 Entry-Level Sonstige Linuxdatenbanken GNU SQL-Server (OS) – akt. Version 0.7b (Sept. 1998) Informix – keine nennenswerten Internetinfos Infoflex – Informix-Derivat – Kosten : $995 – $20.000 InterBase (Borland / OS) PostgreSQL (OS) – Objektrelational Sonstige Linuxdatenbanken (2) Berkley DB Data Store (Sleepy Cat Software) – drei Ausbaustufen – dritte Stufe beinhaltet (möglicherweise) verteiltes DBS Yard – Single Server – ODBC, JDBC – Lizenzschema ungünstig Sonstige Linuxdatenbanken (3) DB2 – – – – verteilt objektrelational ODBC, JDBC hochverfügbar, skalierbar Oracle 8i – – – – – verteilt hochverfügbar clusterskalierbar integrierte Java VM objektrelational Zusammenfassung Eine Transaktion ist eine Menge von Operationen, welche die ACIDEigenschaften erfüllt. In einem Sperrprotokoll wird der Ablauf der Sperrvergabe und –freigabe geregelt verteilte Transaktionen benötigen zusätzlichen Kommunkationsaufwand vor Ihrer Beendigung (2PC) Quellen (1) Bücher – Vossen G. / Groß-Hardt M. : Grundlagen der Transaktionsverarbeitung , Bonn,Paris: Addison-Wesley, 1993 – Rahm Erhard : Mehrrechner-Datenbanksysteme , Bonn,Paris: Addison-Wesley, 1994 – Leymann, F. / Roller, D. : Production Workflow, Concepts and Techniques Upper Saddle River: Prentice-Hall, 2000 Quellen (2) Links – http://www.adabas.com/sqlindex.html (Adabas D) – http://www.softwareag.com/adabas/ (Adabas) – http://www.dbmaker.com/prodinfo/index.html (DBMaker) – http://www.mysql.com/ (mySQL) – http://www.ovrimos.com/ (Ovrimos) – http://www.sybase.com/products/databaseservers/linux/ind ex.htmlSynchroNet (Sybase Adaptive Server Enterprise) – http://www.solidtech.com/products/synchronet.html (SynchroNet) Quellen (3) Links (Fortsetzung) http://www.ispras.ru/~kml/gss/ (GNU SQL-Server) http://www.postgresql.org (PostgreSQL) http://www.sleepcat.com (Berkley DB Data Store) http://www.interbase.com (Interbase) http://www.infoflex.com/sqlinfo.htm (Infoflex) http://www.yard.de (YARD) http://www-4.ibm.com/software/data/db2/ (DB2 UDB) http://platforms.oracle.com/linux/ (Oracle 8i) Quellen (4) Vorlesungen – Prof. Freytag Ph.D., J.C. : Grundlagen con Datenbanksystemen, HU-Berlin