Kap. 10 Datenbankzugriff und Pufferung 10.1 Datenbankzugriff in ERP-Systemen 10.2 Pufferung auf Anwendungsebene 10.3 Workshop: ABAP-Programmierung in SAP R/3 – Open SQL – Native SQL Objektverwaltung höherer Ordnung (OHO) – SS 2001 Kapitel 10: Datenbankzugriff & Pufferung – 1 10.1 Datenbankzugriff in ERP-Systemen G G Standard-ERP-Software deckt zwar in den meisten Fällen einen sehr grossen Teil der benötigten betriebswirtschaftlichen Funktionalität ab, erfordert aber häufig zusätzliche unternehmensspezifische Erweiterungen (Eigenentwicklungen) Die Hersteller von ERP-Systemen bauen für die Implementierung ihrer Anwendungslogik eine eigene Infrastruktur auf • • • • Werkzeuge für die Datenmodellierung Übersetzung von Anwendungsobjekten zu Datenbankobjekten Entwicklungsumgebung, Compiler, Debuggingtools – Eigene Programmiersprache, zumeist mit integriertem Datenbankzugriff (fourth generatrion language, 4GL) – Eigene Bibliotheken Laufzeitumgebung Objektverwaltung höherer Ordnung (OHO) – SS 2001 Kapitel 10: Datenbankzugriff & Pufferung – 2 Integrierte Sprachen der vierten Generation G Diese Infrastruktur steht meist auch den Entwicklern der individuellen Erweiterungen zur Verfügung • • • G z.B. Baan4GL mit BaanSQL z.B. SAP R/3 mit Open SQL z.B. PeopleCode Die integrierte 4GL-Sprache verwendet dann die in das System integrierte • • Meta-Datenverwaltung (Data Dictionary) und Setzt auf der einheitlichen Schnittstelle zur Datenbank (Datenbank-Abstraktions-Schicht) auf, so dass die Unabhängigkeit vom Datenbankprodukt gewährleistet ist Objektverwaltung höherer Ordnung (OHO) – SS 2001 Kapitel 10: Datenbankzugriff & Pufferung – 3 Erweiterung von ERP Systemen Client-GUI Client-GUI Client-GUI … Client-GUI „Standard“ Individuelle BetriebsErweiterungen wirtschaftliche Betriebswirtschaftliche Data AnwendungsAnwendungslogik Dictionary logik Datenbank-Abstraktion Objektverwaltung höherer Ordnung (OHO) – SS 2001 Kapitel 10: Datenbankzugriff & Pufferung – 4 Datenbankzugriff am Beispiel von SAP R/3 G Open SQL • • G SQL-Dialekt von SAP, datenbankunabhängig Nutzt SAP-internes Data Dictionary (zur Auflösung von Views, Überprüfung von Konsistenzbedingungen, etc.) und Tabellenpuffer (Zwischenspeichern von Datensätzen auf Anwendungsserver-Ebene) Native SQL • • • SQL-Dialekt der unterliegenden Datenbank Anfragen werden –an der DB-Schnittstelle vorbei– direkt an die Datenbank weitergeleitet Ohne Verwendung des SAP-internen Data Dictionarys – Kein Zugriff auf Pool-Tabellen und Cluster-Tabellen, da die Semantik der Abbildung nicht verfügbar ist – Nur Zugriff auf Anwendungsdaten möglich – Umgehung der anwendungsspezifischen betriebswirtschaftlichen Konsistenzprüfungen Objektverwaltung höherer Ordnung (OHO) – SS 2001 Kapitel 10: Datenbankzugriff & Pufferung – 5 Rückblick: Dialog-Workprozess & DB-Schnittstelle Dialog-Workprozess Shared Memory DynPro-Interpreter ABAP-Interpreter Native SQL Open SQL DatenbankSchnittstelle Objektverwaltung höherer Ordnung (OHO) – SS 2001 Data Dictionary Tabellenpuffer Kapitel 10: Datenbankzugriff & Pufferung – 6 DB-Zugriff mit Open SQL ... Data Dictionary Tabellen-Puffer Abbildungsregeln, Constraints, … Tabelle KNA1 3 BEGIN … SELECT … … END Tabelle KNA1 7 Native SQL 4 2 1 SELECT … 6 Datenbankschnittstelle 5 Optimierung- & Zugriffsmodul Programm-Puffer Shared Memory ABAPInterpreter Dialog-Workprozess Objektverwaltung höherer Ordnung (OHO) – SS 2001 DBMS Kapitel 10: Datenbankzugriff & Pufferung – 7 … DB-Zugriff mit Open SQL 1. 2. 3. 4. 5. 6. 7. Der ABAP-Interpreter des Workprozesses liest ein Open SQL-Statement eines ABAP-Programms Der ABAP-Prozessor reicht das Open SQL-Statement an die Datenbank-Schnittstelle weiter Falls die Daten nicht im Puffer sind, generiert die DatenbankSchnittstelle den entsprechenden Native SQL-Befehl. Ansonsten wird das Datum aus dem Puffer gelesen (Schritt 6) Die Datenbank-Schnittstelle reicht den Native SQL-Befehl an das DBMS weiter Das DBMS liefert Daten zurück Die Datenbank-Schnittstelle gibt die Daten an den ABAP-Interpreter Bei Pufferung werden die gelesenen Daten in den Puffer geschrieben Objektverwaltung höherer Ordnung (OHO) – SS 2001 Kapitel 10: Datenbankzugriff & Pufferung – 8 Übersetzung von Open SQL nach Native SQL ... Optimierungsmodul Query mit BindingVariable in Native SQL übersetzen Native SQL-Query mit Binding Variable 4 Ausführungsplan mit Binding Variable 2 1 Open SQLQuery Erste Ausführung der Query Variablen von Query trennen 7 5 7 2 Wert zur Binding Variable ABAPInterpreter 3 Datenbankschnittstelle Dialog-Workprozess Objektverwaltung höherer Ordnung (OHO) – SS 2001 Query-Puffer Ausführungsplan mit Binding Variable 6 7 Wiederholte Ausführung der Query 7 Zugriffsmodul DBMS Kapitel 10: Datenbankzugriff & Pufferung – 9 … Übersetzung Open SQL nach Native SQL 1. 2. 3. 4. 5. 6. 7. Der ABAP-Interpreter übergibt die Open SQL-Anweisung der Datenbankschnittstelle Die Datenbank-Schnittstelle ersetzt im Selektionsprädikat die aktuellen Werte durch Binding-Variablen Übersetzung des Open SQL-Statements mit Binding-Variablen in Native SQL Das DBMS erstellt einen Ausführungsplan (für Querytyp wegen der Binding-Variablen) Der Ausführungsplan wird im DBMS gepuffert Zur Ausführung der Anfrage werden die Binding-Variablen durch anfragespezifische Werte ersetzt Bei erneuter Anfrage kann auf den gepufferten Plan zurückgegriffen werden (nur neues Füllen der Binding-Variablen nötig) Objektverwaltung höherer Ordnung (OHO) – SS 2001 Kapitel 10: Datenbankzugriff & Pufferung – 10 DB-Zugriff mit Native SQL ... Data Dictionary Tabellen-Puffer Tabelle KNA1 Abbildungsregeln, Constraints, … BEGIN … EXEC SQL … ENDEXEC … END 1 EXEC SQL … ENDEXEC 3 Datenbankschnittstelle 2 Optimierung- & Zugriffsmodul Programm-Puffer Shared Memory ABAPInterpreter Dialog-Workprozess Objektverwaltung höherer Ordnung (OHO) – SS 2001 DBMS Kapitel 10: Datenbankzugriff & Pufferung – 11 … DB-Zugriff mit Native SQL 1. 2. 3. Der ABAP-Interpreter liest den EXEC SQL-Block eines ABAP-Programmes Der ABAP-Interpreter reicht den Befehlsblock direkt an das DBMS weiter, ohne das SAP Data Dictionary zu konsultieren Das DBMS optimiert den Befehlsblock, generiert einen Ausführungsplan, führt die Anfrage aus und gibt das Ergebnis an den aufrufenden ABAP-Interpreter zurück Objektverwaltung höherer Ordnung (OHO) – SS 2001 Kapitel 10: Datenbankzugriff & Pufferung – 12