(1) Architektur + Entwicklung des SAP Basis Systems Prof. Dr. H. Neuendorf [email protected] 1. Klassischer SAP Abap-Applikationsserver = Basis-System Dreistufige Client-Server Architektur Workprozesse SAP-LUW Verbuchung SAP-Sperrkonzept DB-Zugriff Tabellenpuffer CAP-Theorem 2. Weiterentwicklung - NWAS SAP NetWeaver AS → System-Öffnung : Internet & neue Technologien SAP-Web-Programmierung → ICF + Business Server Pages SWE-Projekt 5.Semester ( ERP-Systeme © Dr. H.Neuendorf Prof.Dr. Palleduhn ) (2) ERP = Enterprise Resource Planing IT-System zur umfassenden, integrierten, bereichsübergreifenden, bruchfreien Abbildung und Kontrolle aller relevanten Geschäftsprozesse des Unternehmens WI-Kerngedanke → Integration + optimale Prozess-Orientierung SAP ERP-Weltmarktführer Gegründet 1972 durch fünf IBM-Mitarbeiter HQ Walldorf + St.Leon Roth > 250.000 Installationen in > 200 Ländern Leitende Fragestellungen: Warum war SAP so erfolgreich? Detail : Welche technische Maßnahmen sorgen für Performanz des geschäftskritischen Systems ? Wie hat sich das System evolutionär weiterentwickelt ? Wie korrespondieren betriebswirtschaftliche Anforderungen mit technischen Lösungen ? Wie öffenete sich das System vom monolithischen allwissenden ERP-Server zum kollaborativen System ? © Dr. H.Neuendorf Abstrakte Kriterien der Wandlungsfähigkeit von ERP-Systemen (3) Unabhängigkeit Plattformunabhängigkeit Autonome Subsysteme und Services Verfügbarkeit Flexible Zugreifbarkeit unabhängig von Ort und Zeit Kapazitätsmäßige Anpassung Eigenschaften wandlungsfähiger ERP-Systeme Interoperabilität Skalierbarkeit Kommunikationsfähigkeit mit anderen Systemen Selbstähnlichkeit Ähnliche Strukturen auf unterschiedlichen Systemebenen Modularität Wissen Struktureller Aufbau aus unabhängigen Teilsystemen Selbstauskunft des Systems Quelle: Gronau: "Enterprise Resource Planing", Oldenbourg, 2010, S.52ff [angepasst] © Dr. H.Neuendorf Transparenzleistungen Verteilter Systeme und ihrer Middleware Transparenz = Verstecken der Funktion bei Bewahren des Effekts + Einheitlichkeit der Handhabung Ortstransparenz Benutzer muss nicht wissen muss, wo sich Ressource befindet - Identifikation über Namen Zugriffstransparenz Einheitlicher Zugriff unabhängig von Lokalisation der Ressource + des Nutzers Nebenläufigkeitstransparenz Konsistenter paralleler Zugriff mehrerer User auf selbe Ressource - ohne gegenseitige Beeinflussung. Synchronisationsleistung durch das System - nicht durch User Migrationstransparenz Ressourcen können verlagert werden - ohne dass User dies bemerkt Fehlertransparenz Fehler und deren Behebung bleiben (teilweise) vor User verborgen Skalierungstransparenz Neue Ressourcen können hinzugefügt werden können - ohne negative Auswirkungen auf bestehende. Leistungstransparenz Automatische Lastverteilung (load balancing) auf einzelne Teilsysteme © Dr. H.Neuendorf (4) (5) Entwicklung des SAP-Systems Aufbrechen der monolithischen Struktur in separate Teillösungen Öffnung des Systems für neue Technologien … Entwicklung setzt sich fort : SOA, Cloud, Mobile, BigData … © Dr. H.Neuendorf (6) Selbst-Darstellung SAP-Welt Betonung Anwendungsvielfalt + Modularität SAP ERP Applikations Server : → NetWeaver 7 AS ("die Basis") aktuell NW AS 7.x Bwl. Kernkomponenten : → EnterpriseCoreComponents © Dr. H.Neuendorf Wir sprechen hier über den (ABAP-) Applikationsserver SAP Applikationsserver (11) Gemeinsame Basis + Middleware SAP Anwendungen HR, FI, SCM, CO ... ABAP (anwendungsübergreifend) SAP Applikationsserver Betriebssysteme + DB SAP AS ("Basis") Technisches Fundament aller Anwendungen auf Vielzahl verschiedener Plattformen Datenintegration über eine gemeinsame Datenbank Anwendungsübergreifende Geschäftsprozessabwicklung Laufzeitumgebung für die meisten SAP-Anwendungen Systemadministration Hardware-Plattformen Unterstützte Plattformen : BS : Unix Linux DB : Oracle MSSQLServer DB2 … GUI: SAPGUI … alle relevanten MS HTMLGUI NetWeaver Business Client via WebDynpro WebClient via BSP Netz: TCP/IP – IPv6 unterstützt © Dr. H.Neuendorf Verteilung von Ressourcen + Komponenten Mobile Lösungen via UI5 Marketing : SAP R/3, mysap.com, SAP WAS, NetWeaver, mySAP ERP, SAP ECC ... Technischer Kern des Systems war stets konstant - evolutionär erweitert um zusätzliche Komponenten (13) Client / Server Server Hardware-orientierte Sicht : Client LAN / WAN Niedrige WANTransferraten bei R/3-Etablierung: Zugriff auf Server übers WAN von Anfang an intendiert ! Software-orientierte Sicht : Client Prozess Architektur des AppServers musste dies performant zulassen ! Anforderung Dienstleistung Erbringen Server Prozess Dienstleistung Service = Komponente = Dienst, der von einer Software-Komponente angeboten wird Fachliche Komposition von Services SAP-System = Gesamtheit aller Software-Komponenten, die der selben Datenbank zugeordnet sind → Daten-Integration aller Unternehmensdaten in logisch zentraler Datenbank Konsistenter Zugriff auf zentralen Datenbestand durch alle zentralen SAP-Anwendungen © Dr. H.Neuendorf SAP Client / Server Klassische dreistufige verteilte Architektur (14) 3-Tier / - Layer Browser Mobile ? Präsentationsschicht User- Eingabe / Ausgabe SAPGUI LAN / WAN SAPGUI SAPGUI KByte Applikationsschicht Programmlogik + Application Server 1 Application Server n DB-Zugriffe LAN Persistenzschicht KByte - MByte Database Management System Zentrale DB → Alle Daten + Anwendungsprogramme + Datentypen (Dictionary) © Dr. H.Neuendorf Database Verteilte Client / Server- Konfigurationen Zweistufige Konfiguration (ca. 100 User) Skaliert nicht ! Präsentation Horizontale Verteilung Einstufige Konfiguration Regelfall : skaliert !! Dreistufige Konfiguration (Three Tier) (Two Tier) Vertikale Verteilung Kleines Kundensystem (15) Präsentation Applikation (Demo-System) DB + Appl. + Präsentation © Dr. H.Neuendorf DB + Appl. DB (17) Dreistufige Architektur - Prozesse 5 - 10 User pro DialogWorkprozess App-Server-Workprozess : Admin Spezialisiertes Programm für definierte Servives 1-n ApplikationsServer SAP GUI SAP GUI Application Server 1 BTC V SPO DIA BTC Database Management System Database © Dr. H.Neuendorf 10 - 20 Workprozesse pro ApplikationsServer Application Server n Message Server DIA SAP GUI V ENQ SAP Dispatcher : Verteilung Benutzeranfragen auf Dialog-Workprozesse 1 User ↔ 1 WP ↔ 1 DB-Prozess WP ist User nur während Verarbeitung zugeteilt ! (18) Hoher Verwaltungsaufwand - aber während langer EingabeZeiten kann WP anderen Anfragen zugeteilt werden Viel effektiver als feste WP-Zuteilung ! Präsentation SAP GUI SAP GUI SAP GUI 1 8 DIAG-Format SAP GUI via TCP/IP Dispatcher 7 3 4 Workprozess Workprozess Workprozess 9 Request Queues fifo Puffer Shared Memory Rollbereich Benutzerkontext 6 5 Relationale Datenbank kennt nur WP - nicht indiv. User © Dr. H.Neuendorf DBMS - Prozesse DB arbeitet statetful ! 2 SAP AS hält Kontext / State Applikationsserver Neuere Darstellung … Architektur ist stabil und entwickelt sich evolutionär Quelle: Bachelorarbeit Eric Egenberger, WI12A, 2015, S.10. © Dr. H.Neuendorf (19) Entkopplung User-Verhalten und Workprozess-Zuordnung (20) Typische Eingabezeit des Users ist länger als Verarbeitungszeit auf App-Server SAP-Transaktion umfasst Folge von Eingabemasken zur Darstellung des bwl. Vorgangs Oberstes Ziel : Ressource DialogWorkprozess soll nicht durch UserEingabeverhalten blockiert werden © Dr. H.Neuendorf Verteilung Benutzeranfragen auf D-Workprozesse SAP Logon SAPGUI SAPGUI SAPGUI SAPGUI (21) Abbildung zahlreicher User auf wenige DialogWorkprozesse mittels Request Queue + Zuordnung von App-ServerWPs zu DB-WPs Dispatcher Shared Memory n:1 Workprozess Workprozess Workprozess Kommunikation zwischen Dispatcher und WPs via Shared Memory Datenbank Workprozess Zahl der effektiven DBBenutzer deutlich geringer als Zahl der System-User DB entlastet ! Workprozess-Multiplexing : Transaktion durch verschiedene, jeweils nur pro Einzelschritt zugeordnete DWorkprozesse abgearbeitet SAP-Transaktion : User-Interaktion 5 -10 x länger als Bearbeitungszeit durch Workprozess 5 -10 Frontend-User im Mittel pro Dialog-Workprozess Vorraussetzung : Keine lang laufenden Programme, die DWP belegen !! © Dr. H.Neuendorf Aufeinanderfolgende, inhaltlich zusammengehörige Bildschirmbilder ≡ Teilschritte der Gesamt-Transaktion Paradigmen : Data to Code (D2C) versus Code to Data (C2D) Präsentation (22) Präsentation Präsentationsschicht Orchestrierungslogik Applikationsschicht Kalkulationslogik Orchestrierungslogik Kalkulationslogik Daten Daten Persistenzschicht (DB) Nutzung traditioneller DB-Technologie folgt D2C Nutzung IMDB (HANA) folgt C2D Code-Pushdown-Prinzip Umgang mit DB : aus black box wird white box © Dr. H.Neuendorf Verlagerung von Anwendungslogik von der Applikationsschicht in die DB-Schicht zur Nutzung IMDB bei komplexen Kalkulationen auf großen Datenmengen Dialog (25) Message-Server Workprozess-Typen Disp . Disp . Verbuchung Disp . Pro App-Server : MS Disp . 1x Dispatcher + 2x Dialog-WP SAP- Dispatcher Batch 11 12 10 1 Message Server 2 9 8 Sperrverwaltung Nur 1x pro System : Gateway - Server 3 7 6 5 4 Spool R/3 GW z.B. R /3 Enqueue Server Message Server → Komunikation zwischen Dispatchern verschiedener App-Server eines Systems Gateway Server → Kommunikation zwischen SAP-Systemen oder mit externen Systemen Dialog → Abarbeitung Dialoganfragen Spool → Verwaltung Druckaufträge Verbuchung → Verwaltung + Bündelung + transaktionale Ausführung von DB-Änderungen Sperrverwaltung → Verwaltung logischer Sperren (Enqueues) für DB-Tabellen Batch → Verwaltung dialogfreier Hintergrundprozesse (Jobs) Dispatcher + alle Workprozesse : Identische Programme ! Workprozesstyp kann durch Dispatcher umgeschaltet werden - ohne Neustart App-Server © Dr. H.Neuendorf + ABAP- und Java-Stack : (26) Dispatcher-WP- Bild bleibt gültig Browser Web Application Server JEE ABAP Java VM ABAP VM Linux Unix Windows Operating System OS/400 OS/390 DB Server Oracle Informix © Dr. H.Neuendorf MS SQL Server DBMS IBM DB2 SAP DB (27) Serverübersicht Darauf laufende Workprozess-Typen Server Aufruf : sm51 Werkzeuge → Administration → Monitor → Systemüberwachung → Server Doppelklick auf Servernamen liefert WP-Verteilung © Dr. H.Neuendorf Prozessübersicht Aufruf : sm50 Werkzeuge → Administration → Monitor → Systemüberwachung → Prozesse Doppelklick auf Listeneintrag liefert Infos zum laufenden Prozess … © Dr. H.Neuendorf (28) (29) Message-Server Instanz : Dialog-Server Instanz : Batch-Server Dispatcher D-WP ... Instanz : Administrative Einheit, die Services anbietet Dispatcher B-WP ... D-WP D-WP Message Server : Zentraler Dienst für Kommunikation zw. Dispatchern der Applikationsserver Anmeldung von Usern an Applikationsserver Zentrale Instanz : enthält MS 1 x pro System Dispatcher MS D-WP ... V-WP E-WP B-WP S-WP AppServer Info WPs + Load Skalierbarkeit Lastverteilung Logon - LoadBalancing MS : 1. Dispatcher melden sich beim MS mit ihren verfügbaren Workprozessen an 2. MS speichert Informationen über App.Server und deren Auslastung 3. Wenn Dispatcher erforderlichen WP nicht selbst hat, wird Request via MS an Dispatcher auf anderem App.Server weitergeleitet, der nötigen WP bereithält © Dr. H.Neuendorf SAPGUI (31) Dialog-Workprozess SAPGUI LAN - / WAN Der Dialog-Workprozess Dispatcher - WP 1 Maximale Dauer begrenzt ! Langlaufende Programme als Batch realisierbar ! Dynpro interner Speicher Request Request Queue Queues - WP n Prozessor ABAP- Task- Prozessor Handler Datenbankschnittstelle Roll out Puffer-Zugriffe Applikations-Puffer Shared Memory ... Dynpros ABAP-Programme Tabellen ... Roll in Roll-Bereich User-Kontext An Abarbeitung Dialogschritt sind auf Applikationsserver-Ebene beteiligt : Dispatcher als zentraler Steuerungsprozess Vom Dispatcher verwaltete Workprozess-Warteschlange für eingehende Requests Dialog-Workprozess Puffer im Shared Memory und Roll File © Dr. H.Neuendorf Roll File Roll File (32) Ausführung ABAP- Code Sourcecode ABAP Objects ( Ausgeliefert ! ) VM ABAP IL Intermediate Language Ausführung Durch ABAP VM ( Bytecode ) Interpretation Quellcode → kompilierter Bytecode (IL) Von plattformspezifischer LZ-Umgebung (VM ) ausgeführt Ausgeliefert wird kompletter ABAP-Quellcode : Liegt in Kunden-DB Bei erstmaligem Aufruf automatisch in Bytecode kompiliert Bytecode liegt dann mit Quellcode in DB VM-Architektur : Plattformunabhängigkeit Sicherheit bei Ausführung der Programme VM-Sandbox © Dr. H.Neuendorf Strukturierte Zusammenfassung von ABAP-Code in Paketen (33) Performanz-Analyse Dialog-Betrieb : Scatter-Plot = accumulierte Antwortzeit Hoher Workload bei wenig freien Ressourcen System hat genügend freie Ressourcen Geringer Workload Zu wenig freie Ressourcen / System falsch konfiguriert = durchschnittliche Antwortzeit Accumulierte Antwortzeit = durchschnittliche Antwortzeit * Anzahl der Ausführungen Hohe Accumulierte Antwortzeit bei niedriger durchschnittlicher Antwortzeit bedeutet starke Nutzung des performanten Systems durch zahlreiche User Hohe durchschnittliche Antwortzeit bedeutet stets ein schlecht laufendes System © Dr. H.Neuendorf (34) Hintergrundverarbeitung - Batch-Workprozesse Dialog-Server Hintergrundverarbeitung Hintergrundverarbeitungs-Server 3 Dispatcher ... Dispatcher D-WP ... D-WP B-WP B-WP Jobstatus B-WP geplant freigegeben 1 11 12 10 bereit 2 1 2 9 3 8 Batch Scheduler 4 7 6 5 Job rdisp/btctime aktiv 4 fertig Default = 60s abgebrochen Job1 C ... ... ↓ DB DB XXX XXX xxxx UUU xxxx xxxx xxx uuuu uuuu uuu xxx uuu uu xx UU uuuu uuu u Jobübersicht Einplanungstabelle Batch → Dialogfreie Abarbeitung lang laufender Programme - keine Benutzeraktion ! C Periodische Aufgaben - Reorganisation, Datenübernahme … Jobs in Einplanungstabelle → Name, Prio, Starttermin / Event Anstoß durch Batch-Scheduler / Event-Scheduler via Einplanungstabelle Ausgelöst zu definierter Zeit oder durch Systemereignis © Dr. H.Neuendorf Jobübersicht Aufruf : sm37 Werkzeuge → CCMS → Jobs → Pflege Doppelklick auf Listeneintrag liefert Infos zum Job … © Dr. H.Neuendorf (35) SAP-Transaktion = SAP-LUW versus DB-LUW → Mismatch !! (40) SAP-LUW Benutzerdialoge Logical Unit of Work ABAPprogramme DB-Änderungen Forderung nach Transaktionalität DB-Änderungen einer SAP-Transaktion auf eine DB-LUW bündeln DB- LUW Problem : Ohne geeignete Maßnahmen verteilt sich eine SAP-LUW auf mehrere DB-LUWs !! © Dr. H.Neuendorf Datenbank-LUW (41) (Logical Unit of Work) Datenbankoperationen Zwischenzustände insert update delete Konsistenter Konsistenter Zustand 1 Zustand 2 alle Sperren freigeben Sperren auf DB-Tabellensätze halten Physische Sperren : Nicht hintergehbar ! ROLLBACK möglich DB-COMMIT (oder DB-Rollback) DB-LUW : Unteilbare Folge von Operationen, die DB von einem konsistenten Zustand in den nächsten überführen → zwischen zwei DB-Commits oder DB-Rollbacks Entweder vollständig oder überhaupt nicht durchgeführt : Ganz oder gar nicht → Prinzip ACID Abgeschlossen durch DB-Commit : Davor kann durch DB-Rollback noch alles rückgängig gemacht werden → Durch Commit werden Änderungen insgesamt unwiderruflich festgeschrieben © Dr. H.Neuendorf Verhalten SAP DBMS : Systemarchitektur: Impliziter DB-COMMIT Bildschirm 1 (42) Automatischer DB-COMMIT Bildschirm 2 Bildschirm 3 Nach DialogschrittVerarbeitung : Neues Bild gesendet + WP wird User entzogen Ziel : Vermeiden von WPBlockaden durch UserInteraktionen DB-COMMIT DB-COMMIT Wenn App-Server-WP endet, müssen auch zugehörige DBÄnderungen erfolgen DB-COMMIT DB-Commit automatisch ausgelöst ! DB-LUW 1 DB-LUW 2 DB-LUW 3 DB-LUW 4 SAP-Transaktion : Umfasst in der Regel mehrere Dialogschritte DB-LUW : Umfasst nie mehr als einen einzigen Dialogschritt Keine Benutzer-Interaktion innerhalb DB-LUW !! © Dr. H.Neuendorf Zeit Vergleich typischer Zeitskalen : Schematische Sicht PBO User-Interaktion vs. Systemaktivität User Interaktionen Screen 100 PAI PBO Screen 200 |- Dialogverarbeitung-| Zeitlich realistische Sicht PAI Screen 300 PBO PAI |- Dialogverarbeitung-| Lange User Interaktionen Screen 100 Screen 200 Screen 300 kurze DB LUWs SAP Logical Unit of Work PBO : PAI : © Dr. H.Neuendorf Process before Output Process after Input Unvorhersagbar lange Benutzer-InteraktionsZeiten dürfen nicht in DB-LUW eingehen ! (43) (44) Direkte synchrone DB-Änderungen aus Dialog Zeit SAP Transaktion Dialogschritt 1 Dialogschritt 2 Daten Daten Letzter Dialogschritt ... Daten Anwender muss auf Durchführung der DB-Änderungen warten Synchroner Ablauf hinsichtlich Dialogschritt Schlechtere Performance bei vielen parallelen DB-Usern © Dr. H.Neuendorf UPDATE tab1. ............ Daten Dialog Workprozess wird nicht freigegeben Sichern : UPDATE tab2. Globale Daten des Programms ITABs Einfaches Konzept - aber : synchron (45) Asynchrone Verbuchung durch Verbuchungs-Workprozess Verbuchungs-Server Dialog-Server Dispatcher Dispatcher ABAP : COMMIT WORK ... D-WP ABAP : Call Function in update task ... 3 2 ... V-WP + MS 4 Bündelung von DB-Änderungen zur gemeinsamen Ausführung 5 1 Transaktionalität ! Protokolltabellen VB* Entkopplung von Dialog-WP und DB-Update DB XXX XXX xxxx UUU xxxx xxxx xxx uuuu uuuu uuu xxx uuu xx uu UU uuuu uuu u DB-Änderungen: Nicht direkt im Dialog ausgeführt - sondern in Protokolltabelle nur vorgemerkt Ausführung = Schreiben in DB → asynchron an Verbuchungs-WP delegiert © Dr. H.Neuendorf Verbuchung : Bündelung von Datenbankänderungen (46) Ziel : Trennung der Dialogschritte von vorzunehmenden DB-Änderungen SAPGUI Sammlung / Bündelung aller DB-Änderungen der SAP- LUW → Gemeinsame Ausführung am Ende der SAP-LUW in einer einzigen DB-LUW Workprozess DialogWP Protokolltabelle SQL in spez. Funktionsbausteinen Organisation der gesammelten DB-Änderungen durch Verbuchungs-Workprozess Erst protokolliert → zur späteren gemeinamen Ausführung vorgemerkt - in Protokolltabelle Ende der SAP-Transaktion → protokollierte DBÄnderungen komplett ausgeführt © Dr. H.Neuendorf asynchron Workprozess VerbucherWP Dialog-WPs führen DBÄnderungen nicht direkt aus Wäre synchron ≡ wartend auf Ende der jeweiligen DB-Änderung Übergeben Änderungsaufträge an Verbuchungs-WP Asynchron ≡ Dialog-WP wartet nicht auf Verbucher ! (48) Vormerkungen schreiben : Verbuchungsbausteine Protokolltabelle 1 Vormerkung 1 p1 = 1 Vormerkung 2 Daten q1 = 2 Vormerkung 3 Workprozess DialogWP p1 = 3 Dialogprogramm a = .1 CALL FUNCTION 'F1' IN UPDATE TASK p1 = a EXPORTING p2 = ... ... Einträge in Protokolltabelle durch Aufruf Verbuchungs-Funktionsbausteine IN UPDATE TASK Nicht direkt ausgeführt, sondern mit Parametern in Protokolltabelle vermerkt Inhalt Protokolltabelle : Funktionsbaustein mit SQL-Anweisungen für DB-Änderungen + Parameter © Dr. H.Neuendorf . . b = 2. CALL FUNCTION 'F2' IN UPDATE TASK EXPORTING . . q1 = b . ... c = 3. CALL FUNCTION 'F1' IN UPDATE TASK EXPORTING ... p1 = c Abschluss durch : COMMIT WORK Wirkung von Rollback Work ROLLBAK WORK Protokoll tabelle (49) Fehler innerhalb SAP-LUW DB-Änderungen nicht ausgeführt Protokollsätze der SAP-LUW gelöscht Vormerkung 1 Vormerkung 2 Vormerkung 3 Löschen aller bis dahin geschriebenen Vormerkungen Workprozess DialogWP Dialogprogramm PROGRAM ... . . ROLLBACK WORK. ROLLBACK WORK : Protokollsätze der SAP-LUW löschen + DB-Rollback Auch alle im aktuellen Dialog-Schritt evtl. bereits direkt vollzogenen DB-Änderungen werden rückgängig gemacht © Dr. H.Neuendorf (51) Asynchrone Verbuchung Zeit VBLOG auf DB Verb.-WP Dialog-WP Text Protokolltabelle Vormerkung 1 A ... COMMIT WORK. Vormerkung n C B A SAP-LUW 1 Dialogprogramm B SAP-LUW 1 Verbuchungsprogramm C SAP-LUW 2 Dialogprogramm © Dr. H.Neuendorf DB Dialogprozess wartet NICHT auf Ausführung der DB-Änderung ! Dialogprozess und Verbuchung sind zeitlich entkoppelt asynchron ! (53) Warum müssen Sperren gesetzt werden ? Verwaltung konkurrierenden Zugriffs auf selbe Daten Programm A Programm B Programm C Mehrere User greifen auf selbe Ressource zu Synchronisation erforderlich, um Konsistenz zu garantieren : Ausschließender Zugriff ! Datenbank Sperren nur so lange wie nötig halten ! Tab 4 Tab 1 Tab 3 Tab 6 Tab 2 Performance-Bottleneck Tab 5 Physische Sperren : durch DB selbst Sperren : Datenbankobjekt wird zeitweise für Zugriff eines Prozesses reserviert - für Zugriffe aller anderen gesperrt © Dr. H.Neuendorf Logische Sperren : durch ProgrammierKonvention (54) Datenbanksperren nicht ausreichend im SAP-Umfeld SAP-Transaktion : Datenbanksperren reichen nicht COMMIT (implizit) Ersteckt sich i.A. über mehrere Bildschirmbilder COMMIT WORK (explizit) COMMIT (implizit) UPDATE UPDATE INSERT INSERT SELECT UPDATE Sperren müssen länger gehalten werden als nur über einen Dialogschritt DELETE DELETE Sperren Bei direkter Änderungsanweisung aus Dialogprogramm setzt DB die Sperren selbst = physische Sperren Problem : Sperren werden von der DB nur bis zum Ende eines Dialogschrittes gehalten Dann wird Änderung ausgeführt und Sperre freigegeben = zu früh für SAP-Transaktion ! © Dr. H.Neuendorf SAP Sperrkonzept : Logische(!) Sperren - ENQUEUE-Workprozess SAP Sperrkonzept: logisches Sperren SAPGUI SAPGUI SAPGUI SAPGUI Dispatcher Dialog. . . WP Dialog SAPGUI SAPGUI Dispatcher Message Server ... WP (55) DB-unabhgängiger high-level SperrMechanismus Sperrtabelle Enqueue WP Enq.-WP + Sperrtabelle Auf AS ! 1 x pro System DB Management System Ziel : Sperren über Bildwechsel system-global aufrechterhalten Mittel : Globale Sperrtabelle auf App-Server - enthält Verzeichnis gesperrter Tabellen © Dr. H.Neuendorf Logische Sperren setzen + löschen Auftrag : Erzeuge Sperre (56) Anforderung Sperre + Eintrag in Sperrtabelle sowie späteres Löschen der Sperre mit speziellen ABAP-Funktionsbausteinen * Sperrtabelle Sperren zurücksetzen : durch Programm ABAP Programm Sperrbaustein oder Sperreintrag erzeugen durch Verbucher Call Function ENQUEUE_... Antwort : EXCEPTIONS Sperre erfolgreich gesetzt keine Keine Sperre gesetzt Eintrag bereits gesperrt Fehler in Sperrverwaltung *Sperrbausteine : FOREIGN_LOCK SYSTEM_FAILURE ENQUEUE-<......> + ABAP-Programm reagiert durch Auswertung Returncode Wenn Sperre bereits gesetzt ist : weitere Anforderungen abweisen DEQUEUE-<......> Durch System generiert, nachdem im Dictionary ein Sperrobjekt definiert wurde : Enthält zu sperrende Tabelle + Sperrargument (= Schlüsselfelder) + Sperrmodus (S = Shared - Lesesperre, © Dr. H.Neuendorf E = Exclusive - Schreibsperre) (58) Sperrmodi E = Exclusive → Schreibsperre Daten sollen geändert werden vom Anforderer der Sperre Andere können weder schreiben noch lesen ! Andere können keinerlei Sperren für das selbe Objekt erhalten S = Shared → Lesesperre Daten sollen während Lesen nicht von anderen geändert werden können Daten werden vom sperrenden Programm nur gelesen Daten dürfen auch von anderen Programmen gelesen werden ! Andere Programme können weitere S-Sperren für das selbe Objekt erhalten SAP Sperren vs. DB-Sperren Logische Sperren auf App-Server Vertrag zwischen Anwendungsprogrammen Automatisch durch Datenbank angewandt Am Ende der SAP LUW freigegeben Am Ende der DB LUW durch DB freigegeben Im Hauptspeicher des App-Servers in Enqueue-Tabelle verwaltet © Dr. H.Neuendorf Physische DB-Sperren In DB verwaltet (60) SAP-AS Lastverteilung SAP GUI SAP GUI SAP GUI SAP GUI App-Server 1 SAP GUI App-Server n 100 KB Gateway Dispatcher Dispatcher MB Gateway 0.1ms Table Buffers DIA WP BTC WP SPO WP MB-GB Table Buffers DIA WP ENQ WP Enqueue Table MB 1ms DBMS DBWP DBWP GB DB (disk) TB DBWP DBWP 100ms Zugriffszeit © Dr. H.Neuendorf Speicherverbrauch Data / Dialogschritt Workprozessverteilung Service Systemweit (61) Per AS-Instanz Dialog >=2 >=2 Verbuchung >=1 >=0 Enqueue 1 Batch >=1 Message 1 0 oder 1 Gateway >=1 1 Spool >=1 >=0 Systemstart : 1. Datenbank 0 oder 1 2. Zentrale Instanz >=0 3. Weitere Instanzen Instanzprofil : In Profildatei → bei Serverstart ausgewertet Art + Anzahl der vom Dispatcher gestarteten Workprozesse Größe von Puffern, Rollbereichen, Logfiles ... Rechnername Messageserver, Enqueueserver, DB-Rechner ... rdisp/ wp_no_dia = 3 rdisp/ wp_no_upd = 4 ... Automatischer Betriebsartenwechsel : Abfrage System-Werte : Report RSPFPAR Anpassung an aktuelle Anforderungen Automatische Änderung der Workprozess-Verteilung zu vordefinierten Zeitpunkten, z.B. : Tagesbetrieb → Zahlreiche Dialog-WPs (überwiegend Dialog-User, wenige Batchjobs) Nachtbetrieb → Umwandlung von Dialog-WPs in Batch-WPs (überwiegend Batch) © Dr. H.Neuendorf Betriebsarten-Konzept : Anpassung Instanzen an Lastverteilung Betriebsart Tag : Betriebsart Nacht : Primär Dialogverarbeitung Primär Hintergrundverarbeitung Dispatcher Dispatcher D D D D (63) D B D B B B Wechselnde System-Anforderungen der User Ziel : Optimale Ressourcen-Ausnutzung Art + Zahl der aktiven Workprozesse umschalten : Gesamtzahl der Workprozesse bleibt konstant, aber Verteilung auf Typen kann geändert werden Umschaltung dynamisch bei laufendem System gemäß Zeitplan Kein System-Neustart nötig © Dr. H.Neuendorf Kein Abbruch laufender Requests Umschaltplan definierbar mittels Pflege-Transaktion (64) SAP Datenbank-Schnittstelle Applikationsserver Datenbank ABAP Interpeter Die SAP Basis-Datenbankschnittstelle DB Schnitt Daten -stelle SELECT * FROM Open SQL Plattform- und DB-unabhängig Lokale Puffer OPEN-SQL Native-SQL Daten Daten Relationale Datenbank Verschalung der DB-Schnittstellen verschiedener DB-Hersteller Native-SQL Nutzt vollen Sprachumfang EXEC SQL. SELECT .... END EXEC. ABAP Open-SQL : Native -SQL Native-SQL DB - Daten In ABAP integriertes Subset von SQL Ablauffähig mit allen von SAP unterstützten DBMS - ohne Anpassung! Vermeidet herstellerspezifisches SQL + manuelles Handling von DB-Verbindungen Wird durch DB-spezifische DB-Schnittstelle des App-Servers in Native-SQL umgesetzt © Dr. H.Neuendorf aber : Code abhg. von DB-Hersteller ! Umgeht Tabellenpuffer ! (68) Exkurs : CAP-Theorem und Verteilte Systeme Consistency All clients have the same view on the data Atomic Continuous Consistency Availability Availability All clients can always read and write within some maximum latency Partition Tolerance Bei verteilten Systemen nur zwei von dreien zu haben … Partition Tolerance No set of failures less than network failure is allowed to cause the system to respond incorrectly CAP-Theorem : Systeme können nur maximal zwei der drei Forderungen erfüllen - auf Kosten der dritten ! Verteilte Systeme sind per definition partition tolerant In Verteilten Systemen hat man nur die Wahl zwischen Consistency und Availability Beide Anforderungen sind nicht simultan erfüllbar ! © Dr. H.Neuendorf (69) SAP Puffer : Tabellenpuffer der App-Server App-Server 1 App-Server 2 ABAP Programm 1 ABAP Programm 2 Open-SQL Tabellen puffer Weitere Puffer für : Programme Bildschirmdaten Dictionary-Daten DBSchnittstelle DBSchnittstelle Native SQL Tabellen puffer Tabellenpuffer sind lokal zum jeweiligen AppServer in dessen Hauptspeicher Füllen Puffer : Beim ersten Lesen DBMS 1 - 60 ms Nach Änderungen Nach Synchronisation - s.u. Datenbank CAP-Theorem Atomic Continuous Consistency Availability Ziel der Pufferung von DB-Tabellen auf App-Servern : Reduzierung Lese-Zugriffszeit → Rascher Zugriff auf App-Server Entlastung Datenbank → Reduzierung Zahl teurer DB-Zugriffe © Dr. H.Neuendorf Partition Tolerance (70) Aktualisierung + Synchronisation von SAP Puffern AS 1 AS 2 PROGRAM z... UPDATE dbtab1 ... dbtab1 Zeitverzögerte Synchronisation der Puffer der anderen App-Server ! ABAP Programm 2 DBSchnittstelle DBSchnittstelle dbtab1 Kann Systemverhalten beeinflussen ! Nicht alle Tabellen puffer-geeignet ! Nur vorwiegend gelesene Tabellen ! DBMS aktuell App-Server, der Daten auf DB ändert, aktualisiert zugleich eigenen Puffer Vorteil : verzögert dbtab1 bufreftime Datenbank dbtab1 X Synchronisations-Informationen Periodisch von App-Servern gelesen Netzlast gering – kein Broadcast Nachteil : Lokale Puffer enthalten eventuell veraltete Daten © Dr. H.Neuendorf (60 - 3600 s) Leseintervall → Profilparameter bufreftime SAP-Tabellenpuffer - Sinnvolle Pufferung von Tabellen Pufferungsfähige Tabellen : relativ kleine Tabellen, auf die überwiegend lesend zugegriffen wird Tabellen, deren Inhalt sich selten verändert z.B. Stammdaten, Customizing Parameter ... Pufferung problematisch : wenn verwendete Daten ständig aktuell sein müssen wenn Tabellen zu groß sind - so dass Neufüllen der Puffer nach Änderungen zur Synchronisation zeitaufwendig wäre Performanter Puffer-Einsatz : Wahl der richtigen Pufferungsart : bei Anlegen der Tabelle festgelegt Residente Pufferung - gesamter Tabelleninhalt komplett gepuffert Generische Pufferung - nur Bereiche der Tabelle gepuffert Partielle Pufferung - nur Einzelsätze gepuffert © Dr. H.Neuendorf (71) (72) Drei Pufferungsarten Resident Generisch Generisch Partiell 1 Schlüsselfeld 2 Schlüsselfelder Einzelsatz key1 key1 key2 key3 data key2 key3 data 001 001 001 001 002 002 002 002 002 002 003 003 003 003 003 003 003 003 key1 key2 001 001 001 001 002 002 002 002 002 002 002 002 003 003 003 003 003 003 003 003 003 003 003 A A B B A A B B B C C D A A A B B C C C D D D key3 key1 key2 key3 001 001 001 001 001 002 002 002 002 002 002 002 002 002 002 003 003 003 003 003 003 003 003 003 003 003 003 003 A A B B B A A A A B B B C C D A A A B B C C C C D D D D 2 4 1 3 5 1 3 6 8 1 2 3 0 3 5 2 3 6 2 4 2 3 5 8 1 2 3 4 data Kleine Tabellen, häufig gelesen, selten verändert Residente Pufferung Große Tabellen, Zugriff auf Einzelsätze Partielle Pufferung Gemeinsame Verarbeitung generischer Bereiche Generische Pufferung Partielle Pufferung : Hoher Verwaltungsaufwand - geringster Speicherbedarf Residente Pufferung : Geringster Verwaltungsaufwand - höchster Speicherbedarf © Dr. H.Neuendorf data SAP ERP AS : Anforderungen ↔ Technologische Lösungen Prozessorientierung Anpassbarkeit der Prozesse Plattformunabhängigkeit (73) ABAP-VM ABAP-Eigenentwicklung ABAP-Open-SQL Mehrsprachigkeit Dispatcher-WP-Mechanismus Dialog- und Batch-Betrieb MultiUser MultiTasking Logon-Load-Balancing Asynchrone Verbuchung Begrenzte Ressourcen Darstellung bwl. Transaktionen Transaktionalität Verbuchung + High-Level-Sperrkonzept Integrität der Daten Wechselnde Anforderungen Betriebsartenkonzept + Logon-Gruppen Wechselndes Userverhalten Puffermechanismen auf App-Server Anpassung an firmeninterne Auslastungssituation Hochgradige Administrierbarkeit Integrations - Aspekte : Bwl. Prozess-Integration Datenintegration Systemintegration Administrative Integration Vermeidung von System-, Medien-, Prozess- und Organisationsbrüchen © Dr. H.Neuendorf Konsistenz