Client/Server-Systeme Prof. Dr.-Ing. Wilhelm Spruth WS 2003/04 Teil 9 Transaktionsverarbeitung cs 0800 ww6 sch 02-97 Transaktionsverarbeitungssystem Transaction Processing System, TP-System besteht aus: • • • • • Anwendungen Datenbank(en) Netzwerksteuerung Entwicklungswerkzeuge Transaktionsmonitor (TP Monitor) Ein Transaktionsmonitor ist eine Softwarekomponente, welche den atomaren Charakter vieler gleichzeitig ablaufender Transaktionen sicherstellt. Der TP Monitor stellt die Kernfunktionen für ein Transaktionsverarbeitungssysten bereit. Hierzu gehören: • • • • • • Message Queuing Lock Verwaltung Log Verwaltung 2-Phase Commit Synchronisation Rollback Funktion Laststeuerung (Load Balancing) cs 0823 ww6 rahm 02-99 Stored Procedures vs. TP Monitor 2 Phase Commit Es können mehrere TP Monitore involviert sein Heterogene Datenbanken Leistung De facto alle TP Benchmarks werden mit TP Monitoren gefahren cs 0857 ww wgs 03-99 Beispiel für Transaktionsmonitore BEA Tuxedo (AT&T→ →Novell → BEA) DEC ACMS für VMS, Ultrix IBM CICS IBM IMS-DB/DC IBM TPF SAP R/3 Siemens UTM Tandem NonStop Kernel (NSK) / Guardian /Pathway Microsoft Transaction Server (MTS) Corba OTS (Object Transaction Service) EJB JTS (Java Transaction Service) Eigenschaften eines Transaktionsmonitors: hohe Verfügbarkeit kurze Antwortzeit (< 0.3 Sek. erwünscht) geeignet für hohes Verkehrsaufkommen niedrige Kosten pro Transaktion Integrität beim Zugriff auf gemeinsam genutzte Ressourcen cs 0824 ww6 wgs 02-99 Einordnung des TP Monitors Klienten TP Anwendungen Daten haltung Middleware, hier TP Monitor Betriebssystem, einschließlichTransport Dienste, z.B. TCP/IP Es wäre denkbar, die TP Monitor Funktion in das Betriebssystem einzubauen. Dies ist z.B. beim Compaq/Tandem „Guardian“ und beim IBM „TPF“ Betriebssystem der Fall. Ein normales Betriebssystem ist jedoch strukturiert, vor allem Stapelverarbeitung und lang dauernde interaktive Time-Sharing Sitzungen zu unterstützen. Deshalb setzt im Regelfall der TP Monitor als ein einziger Anwendungsprozess auf dem Betriebssystem auf. Hierbei vermeidet der TP Monitor nach Möglichkeit die Nutzung der Betriebssystem Funktionen. Um Leistung und Durchsatz zu optimieren hat er z.B. eigene Message Handling und Queuing Einrichtungen und evtl. (z.B. bei CICS) sein eigenes File System. cs 0829 ww6 wgs 02-99 Stored Procedures vs. TP Monitor 2 Phase Commit Es können mehrere TP Monitore involviert sein Heterogene Datenbanken Leistung De facto alle TP Benchmarks werden mit TP Monitoren gefahren cs 0857 ww wgs 03-99 cs 0826a ww6 wgs 09-00 Eingabe Queue enqueue dequeue Queue Manager Transaktions Verarbeitung Klient dequeue enqueue Ausgabe Queue Server Queue Manager Jede einzelne Transaktion wird in 3 Subtransaktionen aufgelöst, die alle eigene ACID Eigenschaften haben. Subtransaktion 1 nimmt die Eingabenachricht entgegen, stellt sie in die Eingabe Queue, und commits. Subtransaktion 2 dequeues die Nachricht, verarbeitet sie, stellt das Ergebnis in die Ausgabequeue, löscht den Eintrag in der Eingabequeue und commits. Subtransaktion 3 übernimmt das Ergebnis von der Ausgabequeue, übergibt das Ergebnis an den Klienten, löscht den Eintrag in der Ausgabequeue und commits. Ein separater Queue Manager ist optimiert für diese Aufgabe. es 1159 wgs 08-00 Komponenten eines TP Monitors Endbenutzer kommunizieren mit dem TP Monitor mit Hilfe von Nachrichten. Presentation Services bilden die Datenausgabe auf die GUI des Benutzers ab. Eingabe-Nachrichten werden mit einer trid (Transaktions ID) versehen und in einer Warteschlange gepuffert. Aus Zuverlässigkeitsgründen muß diese einen Systemabsturz überleben. Eine ähnliche Warteschlange existiert für die Ausgabe von Nachrichten. Der Scheduler verteilt eingehende Bearbeitungsanforderungen auf die einzelnen Server Prozesse. Ein TP Monitor bezeichnet seine Server Prozesse als Ressource Manager. Es existiert ein Ressource Manager pro (aktive) Anwendung. Ressource Manager sind multithreaded; ein spezifischer Ressource Manager für eine bestimmte Anwendung ist in der Lage, mehrere Transaktionen gleichzeitig zu verarbeiten. Der Lock Manager blockiert einen Teil einer Datenbanktabelle. In Zusammenarbeit mit dem Datenbanksystem stellt er die „Isolation“ der ACID Eigenschaft sicher. Der LOG Manager hält alle Änderungen gegen die Datenbank fest. Mit Hilfe der Log Datenbank kann der Recovery Manager im Fehlerfall den ursprünglichen Zustand der Datenbank wiederherstellen (Atomizität der ACID Eigenschaft). In dem Repository verwaltet der TP Monitor Benutzerdaten und -rechte, Screens, Datenbanktabellen, Anwendungen sowie zurückliegende Versionen von Anwendungen und Prozeduren. cs 0827 ww6 wgs 02-99 cs 0922 ww6 wgs 0923 07-00 Backward Recovery Der Transaktionsmonitor stellt sicher, daß im Fehlerfall der teilweise Ablauf einer Transaktion rückgängig gemacht wird, und daß alle abgeänderten Felder einer Datenbank wieder in ihren ursprünglichen Zustand zurückbersetzt werden. cs1026 ww6 wgs 02-97 Plattenspeicher Zwischenpuffer 5 Löschen 1 1 4 3 2 ack 2 commit abzuändernde Datensätze zu schreibende Daten Hauptspeicher Backward Recovery Andere Bezeichnungen: backout, roll back abort 1. abzuändernde Information in Puffer zwischenspeichern 2. Datensätze überschreiben 3. Commit Status festhalten. Damit ist es geschehen 4. erfolgreiches Commit dem Benutzer mitteilen 5. Zwischenpuffer löschen css1010 ww6 wgs 02-97 Flat Transaction start_transaction { beginwork ( ); ..... ..... ..... ..... ..... ..... ..... ..... if no_error commit ( ) else rollback ( ) ; } cs 0822 ww6 rahm 02-99 Transaction #1 Begin Trans. Transaction #2 Begin Trans. Commit Transaction #3 Begin Trans. Commit Commit Flat Transaction Alle Arbeit innerhalb einer Flat Transaction findet auf der gleichen Ebene statt. Die Transaktion überlebt entweder mit allen Teilfunktionen (commit) oder es erfolgt ein rollback einschließlich aller Teilfunktion (abort). cs 0855 ww wgs 12-99 Logical Unit of Work LUW Aktion 1 Aktion 2 Aktion 3 Aktion 4 Aktion 5 Aktion 6 Start Transaktion Ende Transaktion LUW 4 LUW 3 LUW 2 LUW 1 Aktionen sind Bausteine, aus denen der (zeitliche) Arbeitsablauf eines Resource Managers (Server) besteht. Nicht geschützte (unprotected) Aktionen haben keine ACID Eigenschaften. Geschützte (protected) Aktionen haben ACID Eigenschaften und werden als „Logical Unit of Work“ (LUW) bezeichnet. Teilweise abgeschlossene LUW´s können rückgängig gemacht werden. Reale (real) Aktionen beeinflussen die physikalische Umwelt auf eine Art, die nur schwer oder garnicht rückgängig zu machen ist (roll back). Beispiele: Ein Loch bohren, Geldausgabe am Automaten, vertrauliche Daten an den falschen Empfänger senden. ACID Eigenschaften für reale Aktionen mögen schwierig oder unmöglich zu implementieren sein. cs 0842 ww6 wgs 05-97 „Logical Units of Work „ (LUW) und Sync Punkte Andere Bezeichnungen: Aktionen und Save Points Sync Punkte bewirken, daß ROLLBACK WORK nur bis zu dem angegebenen sync Punkt zurücksetzt. cs 0903 ww wgs 02-97 LUW Backout cs 0905 ww wgs 02-97 1. Darlehnskonto abrechnen, Saldo um Tilgungsrate verändern 2. Tilgung und Zinsen im laufenden Konto (Kontokorrent) auf der Sollseite buchen 3. Globales Limit überprüfen 4. Bilanzpositionen (Konten) 5. G+V Positionen (Gewinn- und Verlust Konten) 6. Zinsabgrenzung monatlich für jährliche Zinszahlung 7. Bankmeldewesen (ein Kunde nimmt je 90 000.- DM bei 10 Banken auf, läuft am Stichtag) 6 7 1 2 3 4 5 6 7 1 2 3 Zeit Abarbeitung in Reihenfolge evt. keine Sync Points erforderlich cs 0898 ww6 wgs 12-99 Buchungsvorgänge, monatliche Kreditabrechnung 1. Darlehnskonto abrechnen, Saldo um Tilgungsrate verändern 2. Tilgung und Zinsen im laufenden Konto (Kontokorrent) auf der Sollseite buchen 3. Globales Limit überprüfen 4. Bilanzpositionen (Konten) 5. G+V Positionen (Gewinn- und Verlust Konten) 6. Zinsabgrenzung monatlich für jährliche Zinszahlung 7. Bankmeldewesen (ein Kunde nimmt je 90 000.- DM bei 10 Banken auf, läuft am Stichtag) Buchungsvorgang 1 2 3 4 5 6 7 Kunde Nr 1 2 3 . Beispiel: Schritte 1 - 3 als 1 Transaktion Schritte 4 - 7 : Zwischenergebnisse persistent speichern . 99999 cs 0879 ww6 wgs 12-99 Main Transaction von Konto 1 abbuchen auf Konto 2 zubuchen Zeit update history start transaction 2 phase commit TP Monitor Oracle Database TP Monitor DB2 Database TP Monitor Sybase Database Distributed Flat Transaction cs 0853 ww6 wgs 12-99 Zwei-Phasen-Festübergabe Two-phase Commit Erforderlich bei der gleichzeitigen Änderung mehrerer Datenbanken, z.B. Banküberweisung von Bank A nach Bank B Elektronisches Clearinghaus sendet Nachrichten an beide Banken Problem, wenn entweder Abbuchung oder Gutschrift nicht erfolgt Daher atomare Transaktionen erforderlich Konsistenz wird erreicht durch einen „Master“ (CommitKoordinator), der die Arbeit von „Slaves“ überwacht Clearinghaus übernimmt Rolle des Master, die beiden Banken sind Slaves. Two-phase-Commit-Protokoll stellt sicher, daß Abbuchung und Gutschrift entweder beide erfolgen, oder beide nicht erfolgen Slave #1 Slave #2 Datenbank A Abbuchung Konto Nr. xxx Datenbank B Gutschrift Konto Nr. yyy Commit Coordinator Master css1011 ww6 wgs 02-97 Master Slave Begin atomic action Send Request 1 ............. Send Request n Send „ Prepare to commit“ if action can be performed then begin Lock data Store initial state on disk Store requests on disk Send „OK“ end else Send „Failure“ if all slaves said „OK“ then send „Commit“ else send „Rollback“ Wait for acknowledgements if master said commt then begin Do work Unlock data end Send „Acknowledgement“ 2-Phase Commit Protokoll cs 0938 ww6 nach Tanenbaum wgs 12-01 CICS Customer Information Control System IBM Transaction Processing Facility TPF Eigenständiges Betriebssystem, erlaubt nur eine einzige Anwendung: Transaktionsverarbeitung Hervorgegangen aus dem SABER (SABRE) Flugplatzreservierungssystem (American Airlines, 1959). Später umbenannt in SABRE → ACP → TPF Keine Einrichtungen für Softwareentwicklung (erfolgt auf einem anderen Rechner) Run-to-Completion (non-preemptive) Scheduler/Dispatcher Betriebssystem Aufruf erfordert ca. 500 Maschinenbefehle E/A Operation erfordert etwa 500 - 800 Maschinenbefehle > 10000 Transaktionen/s Anwendungen: Flugplatzreservierung (Amadeus) Geldausgabeautomaten Kreditkartenverifizierung cs 0819 ww6 wgs 02-99 CICS Customer Information Control System Der am weitesten verbreitete, IBM proprietäre Transaktionsmonitor. Verfügbar unter den S/390-Betriebssystemen OS/390 und VSE, sowie in modifizierter Form (als Encina Erweiterung) unter OS/400, OS/2, Windows, AIX, HPUX, Sinix, Solaris, Digital Unix sowie Linux. Unter OS/390 (und VSE) laufen alle Anwendungen und Dienste im Problemstatus, ungeschützt voneinander innerhalb eines einzigen virtuellen Adressenraums. Anwendungen und Ressource Manager laufen als Threads innerhalb dieses Adressenraums. Spitzenposition bezüglich Durchsatz, Zuverlässigkeit und Verfügbarkeit. Es wird angenommen, daß bei 490 der weltweit 500 größten Unternehmen CICS eingesetzt wird. Eine detaillierte CICS Beschreibung ist zu finden unter http://www-ti.informatik.unituebingen.de/os390/foils/content.htm im Unterverzeichnis Transaction Processing / CICS / Einführung cs 0832 ww6 wgs 02-97 In 1999 war die Anzahl der weltweit ausgeführten CICS Transaktionen etwa so groß wie die Anzahl der Hits auf Seiten des WorldWide Web. In 1999 setzen weltweit etwa 15 000 Unternehmen CICS ein. Von den 2000 größten Unternehmen setzen > 90% CICS ein. Sie generierten etwa 20 Milliarden Transaktionen pro Tag. Es existieren etwa 30 Mill. CICS Terminals weltweit. Zum Vergleich existierten weltweit 379 Mill. Internet Anschlüsse im März 2001, die meisten davon in Privathaushalten. Durchschnittliche CICS Terminal Benutzungsdauer 4 - 6 Stunden / Tag. Durchschnittliche Internet Benutzungsdauer etwa 10 Stunden / Monat. http://www.hursley.ibm.com/infopack/A33578.pdf J. Gray: How High is High Performance Transaction Processing? http://research.Microsoft.com/~Gray/Talks/ R. Fox: „Net Population Newest Numbers“. Comm. ACM, Vol. 44, No.7, July 2001, P.9 . cs 0888 ww 6 wgs 08-00 Investition in Anwendungen 16 000 Unternehmen weltweit (darunter 490 of the Fortune 500 Companies) setzen CICS ein. Es sind 30 Millionen CICS Terminals installiert. Hiermit werden 20 Milliarden Transaktionen/Tag ausgeführt. Das ist mehr, als das World Wide Web im gleichen Zeitraum an Hits erzeugt. Mit CICS Transaktionen werden täglich 64 Billionen (10 12) $ transferiert oder abgerechnet. Eine Überschlagsrechnung mit den folgenden Annahmen: • 20 000 S/390 Servers haben durchschnittlich 1 Mill. Zeilen aktiven Anwendungscode (zwischen 200 000 und 50 Millionen pro Server), kumulativ 20 Milliarden LOC. • Produktivität von 2 000 LOC/Mannjahr, Investition von 10 Millionen Mannjahren. • 100 000 $/Mannjahr, Investition von 1 Billion $ (1012) in S/390 Anwendungssoftware Zum Vergleich, das USA 1999 GNP war 9 Billion $. http://www-3.ibm.com/developer/solutionsevent/pdfs/spector_lunchtime_keynote.pdf es 0228 ww6 wgs 06-01 Beispiel für ein CICS-Statement innerhalb eines C++-Programms: EXEC CICS SEND MAP("label04") MAPSET("s04set") ERASE; Neue CICS Anwendungen werden häufig in C oder Java geschrieben. Daneben hat Cobol nach wie vor eine überragende Bedeutung. Beispiel für ein CICS-Statement innerhalb eines COBOL-Programms EXEC CICS WRITEQ TS QUEUE(‘ACCTLOG’) FROM(ACCTDTLO) LENGTH(DTL-LNG) END EXEC Ein existierender Datensatz „ACCTDTLO“ wird in eine temporäre Warteschlange ACCTLOG geschrieben, die als Log zur Datensicherung dient Die existierende Menge an Cobol Programmen besteht aus etwa 180 Milliarden Zeilen Cobol Code, mit einer jährlichen Zuwachsrate von 5 Milliarden Lines of Code (LOC). Etwa 35 % von allen neuen Business Anwendungen LOC werden derzeitig in Cobol geschrieben. (Für weitere 35% wird Visual Basic benutzt, der Rest verteilt sich auf C++, Java, PL/1, RPG und andere). css1013 ww6 wgs 02-97 main() { EXEC SQL DECLARE C1 CURSOR FOR SELECT VNAME,NNAME FROM ZEYPRAK.TABPRAK; EXEC SQL OPEN C1; EXEC SQL FETCH C1 INTO :vname, :nname; memcpy(liste.listei.vnam1i,vname,20); memcpy(liste.listei.nnam1i,nname,20); EXEC SQL FETCH C1 INTO :vname, :nname; memcpy(liste.listei.vnam2i,vname,20); memcpy(liste.listei.nnam2i,nname,20); EXEC SQL FETCH C1 INTO :vname, :nname; memcpy(liste.listei.vnam3i,vname,20); memcpy(liste.listei.nnam3i,nname,20); EXEC SQL FETCH C1 INTO :vname, :nname; memcpy(liste.listei.vnam4i,vname,20); memcpy(liste.listei.nnam4i,nname,20); EXEC SQL CLOSE C1; EXEC CICS SEND MAP("liste") MAPSET("prakset") ERASE; } Beispiel für Embedded SQL cs 2820 ww6 wgs 02-01 Quellprogramm SQL Precompiler Programm mit native DB2 API CICS Precompiler Programm mit native CICS API C Compiler Object Programm Link Ausführbares Maschinenprogramm Erstellen einer CICS - DB2 Anwendung cs 0931 ww wgs 06-01 Cobol COBOL is for morons. (Edsger Dijkstra) The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offence. (Edsger Dijkstra) With respect to COBOL you can really do only one of two things: fight the disease or pretend that it does not exist. (Edsger Dijkstra) Cobol has almost no fervent enthusiasts. As a programming tool, it has roughly the sex appeal of a wrench. (Charles Petzold) COBOL: (Synonymous with evil.) A weak, verbose, and flabby language used by card wallopers to do boring mindless things on dinosaur mainframes. -----------------------------------------------------------------------------------------------http://www.cs.virginia.edu/~evans/cs655/readings/ewd498.html http://www.sysprog.net/quotcob.html es0905 ww6 wgs 10.02 The Significance of COBOL 75% of all business data is processed in COBOL. - Gartner Group There are between 180 billion and 200 billion lines of COBOL code in use worldwide. - Gartner Group This represents over 60 percent of the world’s computer code. Existing legacy systems are predominantly written in COBOL. 15% of all new applications (5 billion lines) through 2005 will be in COBOL. - Gartner Group CICS transaction volume (such as COBOL-based ATM transactions) grew from 20 billion per day in 1998 to 30 billion per day in 2002. The Cobol Report Replacement costs for COBOL systems, estimated at $25 per line, are in the hundreds of billions of dollars. - Tactical Strategy Group "Integration with Legacies" is the number one concern of IT managers in 2003. - Gartner Group There are over 90,000 COBOL programmers in North America in 2002. Over the next four years there will be a 13% decrease in their number due to retirement and death. - Gartner Group The most highly paid programmers in the next ten years are going to be COBOL programmers who know the Internet. - GIGA Group http://www.cobolwebler.com/cobolfacts.htm Gartner Inc., From the Dustbin, Cobol Rises, 2001 Reprinted in Microfocus Outlook, COBOL Technology and Contemporary Business Systems, May 2002 http://www.eweek.com/article2/0,3959,25993,00.asp http://www.info.uni-karlsruhe.de/lehre/2002WS/hps/Cobol-X1.pdf cs 0944 ww6 wgs 03-03 Informatik Spektrum Band 26, Heft 2, April 2003 cs 1029 ww6 wgs 05 - 03