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 Kapitel 10: Datenbankzugriff & Pufferung 1 10.1 Datenbankzugriff in ERP-Systemen 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) G 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 Kapitel 10: Datenbankzugriff & Pufferung 2
Integrierte Sprachen der vierten Generation G Diese Infrastruktur steht meist auch den Entwicklern der individuellen Erweiterungen zur Verfügung z.b. Baan4GL mit BaanSQL z.b. SAP R/3 mit Open SQL z.b. PeopleCode G 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 Kapitel 10: Datenbankzugriff & Pufferung 3 Erweiterung von ERP Systemen Client-GUI Client-GUI Client-GUI Client-GUI Betriebswirtschaftliche Data Anwendungslogik Dictionary Standard Betriebswirtschaftliche Anwendungslogik Datenbank-Abstraktion Individuelle Erweiterungen Kapitel 10: Datenbankzugriff & Pufferung 4
Datenbankzugriff am Beispiel von SAP R/3 G Open SQL 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) G 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 Kapitel 10: Datenbankzugriff & Pufferung 5 Rückblick: & DB-Schnittstelle DynPro-Interpreter Shared Memory ABAP-Interpreter Native SQL Tabellenpuffer Datenbank- Schnittstelle Open SQL Data Dictionary Kapitel 10: Datenbankzugriff & Pufferung 6
DB-Zugriff mit Open SQL... Data Dictionary Abbildungsregeln, Constraints, 3 Tabellen-Puffer Tabelle KNA1 Tabelle KNA1 BEGIN SELECT END Programm-Puffer 1 2 SELECT ABAP- Interpreter 6 Native SQL 4 5 Optimierung- & Zugriffsmodul Shared Memory DBMS Kapitel 10: Datenbankzugriff & Pufferung DB-Zugriff mit Open SQL 1. Der ABAP-Interpreter des Workprozesses liest ein Open SQL-Statement eines ABAP-Programms 2. Der ABAP-Prozessor reicht das Open SQL-Statement an die Datenbank-Schnittstelle weiter 3. Falls die Daten nicht im Puffer sind, generiert die Datenbank- Schnittstelle den entsprechenden Native SQL-Befehl. Ansonsten wird das Datum aus dem Puffer gelesen (Schritt 6) 4. Die Datenbank-Schnittstelle reicht den Native SQL-Befehl an das DBMS weiter 5. Das DBMS liefert Daten zurück 6. Die Datenbank-Schnittstelle gibt die Daten an den ABAP-Interpreter. Bei Pufferung werden die gelesenen Daten in den Puffer geschrieben Kapitel 10: Datenbankzugriff & Pufferung 8
Übersetzung von Open SQL nach Native SQL... Optimierungsmodul Open SQL- Query 1 Query mit Binding- Variable in Native SQL übersetzen 2 Variablen von Query trennen 2 Wert zur Binding Variable 3 6 5 Native SQL-Query mit Binding Variable 4 Ausführungsplan mit Binding Variable Query-Puffer Ausführungsplan mit Binding Variable Erste Ausführung der Query Wiederholte Ausführung der Query ABAP- Interpreter Zugriffsmodul DBMS Kapitel 10: Datenbankzugriff & Pufferung 9 Übersetzung Open SQL nach Native SQL 1. Der ABAP-Interpreter übergibt die Open SQL-Anweisung der 2. Die Datenbank-Schnittstelle ersetzt im Selektionsprädikat die aktuellen Werte durch Binding-Variablen 3. Übersetzung des Open SQL-Statements mit Binding-Variablen in Native SQL 4. Das DBMS erstellt einen Ausführungsplan (für Querytyp wegen der Binding-Variablen) 5. Der Ausführungsplan wird im DBMS gepuffert 6. 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) Kapitel 10: Datenbankzugriff & Pufferung 10
DB-Zugriff mit Native SQL... Data Dictionary Tabellen-Puffer Abbildungsregeln, Constraints, Tabelle KNA1 BEGIN EXEC SQL ENDEXEC END Programm-Puffer 1 EXEC SQL ENDEXEC ABAP- Interpreter 2 3 Optimierung- & Zugriffsmodul Shared Memory DBMS Kapitel 10: Datenbankzugriff & Pufferung 11 DB-Zugriff mit Native SQL 1. Der ABAP-Interpreter liest den EXEC SQL-Block eines ABAP-Programmes 2. Der ABAP-Interpreter reicht den Befehlsblock direkt an das DBMS weiter, ohne das SAP Data Dictionary zu konsultieren 3. 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 Kapitel 10: Datenbankzugriff & Pufferung 12