K8 Anwendungsprogrammierschnittstelle Flashcards

1
Q

GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.)

Kopplung von DB- und Programmiersprache

A

Call-Schnittstelle (prozedurale Schnittstelle, CLI)

  • DB-Funktionen werden durch Bibliothek von Prozeduren realisiert
  • Anwendung enthält lediglich Prozeduraufrufe

Einbettung von SQL (Embedded SQL, ESQL)

  • Spracherweiterung um spezielle DB-Befehle (EXEC SQL …)
  • komfortablere Programmierung als mit CLI

statische Einbettung

  • Vorübersetzer (Precompiler) wandelt DB-Aufrufe in Prozeduraufrufe um
  • Nutzung der normalen PS-Übersetzer für umgebendes Programm
  • SQL-Anweisungen müssen zur Übersetzungszeit feststehen
  • im SQL-Standard unterstützte Sprachen: C, COBOL, FORTRAN, Ada, PL1, Pascal, MUMPS, Java, …

dynamische Einbettung:

  • Konstruktion von SQL-Anweisungen zur Laufzeit

Integrationsansätze unterstützen typischerweise ‚nur‘

  • ein Typsystem
  • Navigation (satz-/objektorientierterZugriff)
  • wünschenswert sind jedoch Mehrsprachenfähigkeit und deskriptive DB-Operationen (mengenorientierter Zugriff)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.)

Relationale Anwendungsprogrammierschnittstellen (APIs)

A
  • bieten Mehrsprachenfähigkeit und deskriptive DB-Operationen,
  • erfordern jedoch Maßnahmen zur Überwindung der sog. Fehlanpassung (impedance mismatch): Satzorientierung vs. Mengenorientierung
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.)

Kernprobleme der API bei konventionellen Programmiersprachen

A
  • Konversion und Übergabe von Werten
  • Übergabe aktueller Werte von Wirtssprachenvariablen (Parametrisierung von DB-Operationen)
  • Mengenorientierung von DB-Operationen
  • Wie und in welcher Reihenfolge werden Zeilen/Sätze dem AP zur Verfügung gestellt?
  • Cursor-Konzept
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.)

Eingebettetes statisches SQL:

Anbindung einer SQL-Anweisung an die Wirtssprachen-Umgebung

A
  • eingebettete SQL-Anweisungen werden durch exec sql eingeleitet und durch spezielles Symbol (hier “;”) beendet, um dem Compiler eine Unterscheidung von anderen Anweisungen zu ermöglichen
  • Verwendung von AP-Variablen in SQL-Anweisungen verlangt Deklaration innerhalb eines ‚declare section‘-Blocks sowie Angabe des Präfix “:” innerhalb von SQL-Anweisungen
  • Kommunikationsbereich SQLCA (Rückgabe von Statusanzeigern u.ä.)
  • Übergabe der Werte einer Zeile mit Hilfe der INTO-Klausel
  • INTO target-commalist (Variablenliste des Wirtsprogramms)
  • Anpassung der Datentypen (Konversion)
  • Aufbau/Abbau einer Verbindung zu einem DBS: connect/disconnect
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.)

Cursor-Konzept: Zweck, Iterator, Cursor-Deklaration

A

Zweck

  • satz-weise Abarbeitung von Ergebnismengen
  • Trennung von Qualifikation und Bereitstellung/Verarbeitung von Zeilen

Cursor ist ein Iterator,

  • der einer Anfrage zugeordnet wird und
  • mit dessen Hilfe die Zeilen der Ergebnismenge einzeln (one tuple at a time) im Programm bereitgestellt werden
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.)

Cursor-Konzept: Cursor-Operation, Reihenfolge der Ergebniszeilen, Wann wird die Ergebnismene ermittelt?

A

Reihenfolge der Ergebniszeilen

  • systembestimmt
  • benutzerspezifiziert (ORDER BY)

Wann wird die Ergebnismenge ermittelt?

  • schritthaltende Auswertung durch das DBS? Verzicht auf eine explizite Zwischenspeicherung ist nur bei einfachen Anfragen möglich.
  • daher Kopie bei OPEN meist erforderlich (ORDER BY, Join, Aggregat-Funktionen, …)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.)

Cursor-Konzept: Veranschaulichung der Cursor-Schnittstelle

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.)

Cursor-Konzept: C-Beispiel

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.)

Cursor-Konzept: Aktualisierung mit Bezugnahme auf eine Position

A

Wenn die Zeilen, die ein Cursor verwaltet (active set), eindeutig den Zeilen einer Tabelle entsprechen, können sie über Bezugnahme durch den Cursor geändert werden.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.)

Cursor-Konzept: SQL-Programmiermodell

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.)

Cursor-Konzept: SQL-Programmiermodell - Beispiel: Stücklistenauflösung

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.)

Cursor-Konzept: Erweiterungen - Syntax

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.)

Cursor-Konzept: Erweiterungen - SCROLL: Erweiterte Positionierungsmöglichkeiten

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.)

Cursor-Konzept: Erweiterungen - Sichtbarkeit von Änderungen - INSENSITIVE CURSOR

A
  • T sei die Zeilenmenge, die sich für den Cursor zum OPEN-Zeitpunkt (Materialisierung) qualifiziert
  • Spezifikation von INSENSITIVE bewirkt, dass eine separate Kopie von T angelegt wird und der Cursor auf die Kopie zugreift
  • Aktualisierungen, die T betreffen, werden in der Kopie nicht sichtbar gemacht; solche Änderungen könnten z. B. direkt oder über andere Cursor erfolgen
  • Über einen insensitiven Cursor sind keine Aktualisierungsoperationen möglich (UPDATE nicht erlaubt)
  • Die Kombination mit SCROLL ist unproblematisch
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.)

Cursor-Konzept: Erweiterungen - Sichtbarkeit von Änderungen - ASENSITIVE CURSOR

A
  • Standard
  • Bei OPEN muss nicht zwingend eine Kopie von T erstellt werden: die Komplexität der Cursor-Definition verlangt jedoch oft seine Materialisierung als Kopie
  • Ob Änderungen, die T betreffen und durch andere Cursor oder direkt erfolgen, in der momentanen Cursor-Instanziierung sichtbar werden, ist implementierungsabhängig
  • Falls UPDATE deklariert wird, muss eine eindeutige Abbildung der Cursor-Zeilen auf die Tabelle möglich sein (siehe aktualisierbare Sicht); es wird definitiv keine separate Kopie von T erstellt.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.)

Wirtsspracheneinbettung und Übersetzung: Prinzipielle Möglichkeiten

A

Aufruftechnik

  • DB-Anweisung wird durch expliziten Funktionsaufruf an das Laufzeitsystem des DBS übergeben, z. B. CALL DBS (‘open C1’)
  • Es sind prinzipiell keine DBS-spezifischen Vorkehrungen bei der AP-Übersetzung erforderlich!
  • Verschiedene Formen der Standardisierung: Call-Level-Interface (CLI), JDBC

Direkte Einbettung

  • keine syntaktische Unterscheidung zwischen Programm- und DB-Anweisungen
  • DB-Anweisung wird als Zeichenkette A ins AP integriert, z. B. exec sql open C1
  • typischerweise Einsatz eines Vorübersetzers PC (Precompiler)
  • PC erzeugt für DB-Anweisungen spezielle Call-Aufrufe im AP, so dass das modifizierte AP mit dem Wirtssprachencompiler C übersetzt werden kann
17
Q

GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.)

Einbettung/Übersetzung: Von der Übersetzung bis zur Ausführung (bei Einsatz eines Vorübersetzers)

18
Q

GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.)

Einbettung/Übersetzung: Von der Übersetzung bis zur Ausführung

A

Vorübersetzung des AP

  • Entfernung aller Embedded-SQL-Anweisungen aus dem Programm (Kommentare)
  • Ersetzung durch Programmiersprachen-spezifische DBS-Aufrufe
  • Erzeugung eines „SQL-freien“ Programms in der Programmiersprache
  • DBS-seitige Vorbereitung: Analyse und Optimierung der SQL-Anweisungen und Erstellung eines Zugriffsmoduls im DB-Katalog

Übersetzung des AP

  • Umwandlung der Anweisungen der höheren Programmiersprache in Maschinencode (Objektmodul) und Abspeicherung in Objektbibliothek
  • SQL-Anweisungen für Compiler nicht mehr sichtbar

Binden

  • Zusammenfügen der Objektmodule zu lauffähigem Programm
  • Hinzufügen des SQL-Laufzeitsystems

Laden und Ausführen

  • Laden des ausführbaren Programms in den Speichen
  • Anbinden des Zugriffsmoduls aus DB-Katalog und automatische Überprüfung seiner Gültigkeit
  • Programmstart
19
Q

GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.)

Einbettung/Übersetzung: Von zentraler Bedeutung

A

Anfrageauswertung/-optimierung des DBVS ist im wesentlichen für die effiziente Abarbeitung verantwortlich

20
Q

GDB K8 Anwendungsprogrammierschnittstelle

Einbettung/Übersetzung: Auswertungstechnik: Spektrum von Verfahren mit folgenden Eckpunkten

A

Maximale Vorbereitung

  • Für eine DB-Anweisung wird ein zugeschnittenes Programm (Zugriffsmodul) zur Übersetzungszeit (ÜZ) erzeugt
  • Zur Ausführung einer DB-Anweisung (Laufzeit, LZ) wird das Zugriffsmodul geladen und abgewickelt; dabei wird durch Aufrufe des DBVS (genauer: des Zugriffssystems) das Ergebnis abgeleitet
  • aufwendige Optimierung und Erstellung eines Zugriffsmoduls
  • maximale Auswirkungen von Schemaänderungen, welche die DB-Anweisung betreffen
  • Schemaänderungen nach der Übersetzung werden nicht berücksichtigt (neue Zugriffspfade, geänderte Statistiken etc.)
  • Invalidierung des Zugriffsmoduls und erneute Erstellung

Keine Vorbereitung

  • typisch für Call-Schnittstellen (dynamisches SQL)
  • Allgemeines Programm (Interpreter) akzeptiert DB-Anweisungen als Eingabe und erzeugt durch Aufrufe des Zugriffssystems das Ergebnis
  • Interpretation einer DB-Anweisung:
  • Interpreter wertet Anweisung (als Zeichenfolge) zur Laufzeit aus
  • aktueller DB-Zustand wird automatisch berücksichtigt
  • sehr hohe Ausführungskosten bei Programmschleifen sowie durch häufige Katalogzugriffe
  • interessant vor allem für Ad-hoc-Anfragen bzw. dynamisches SQL
21
Q

GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.)

Einbettung/Übersetzung: Wahl des Bindezeitpunktes

A
  • Wann werden die für die Abwicklung einer DB-Anweisung erforderlichen Operationen vom DB-Schema abhängig?
  • Übersetzungszeit vs. Laufzeit
22
Q

GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.)

SQL/PSM

A

PSM: Persistent Stored Modules

zielt auf Leistungsverbesserung vor allem in Client/Server-Umgebung ab

  • Ausführung mehrerer SQL-Anweisungen durch ein EXEC SQL
  • Entwerfen von Routinen mit mehreren SQL-Anweisungen

erhöht die Verarbeitungsmächtigkeit des DBS

  • Prozedurale Erweiterungsmöglichkeiten (der DBS-Funktionalität aus Sicht der Anwendung)
  • Einführung neuer Kontrollstrukturen

erlaubt reine SQL-Implementierungen von komplexen Funktionen

  • Sicherheitsaspekte
  • Leistungsaspekte

ermöglicht SQL-implementierte Klassenbibliotheken (SQL-only)

Vorteile

  • vorübersetzte Ausführungspläne werden gespeichert, sind wiederverwendbar
  • Anzahl der Zugriffe des Anwendungsprogramms auf die DB wird reduziert
  • als gemeinsamer Code für verschiedene Anwendungsprogramme nutzbar
  • es wird ein höherer Isolationsgrad der Anwendung von der DB erreicht
23
Q

GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.)

SQL/PSM: Prozedurale Spracherweiterungen

24
Q

GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.)

Dynamisches SQL

A

Festlegen/Übergabe von SQL-Anweisungen zur Laufzeit

  • Benutzer stellt Ad-hoc-Anfrage
  • AP berechnet dynamisch SQL-Anweisung
  • SQL-Anweisung ist aktueller Parameter von Funktionsaufrufen an das DBVS

Eigenschaften

  • Vorbereitung einer SQL-Anweisung kann erst zur Laufzeit beginnen
  • Bindung an das DB-Schema erfolgt zum spätest möglichen Zeitpunkt
    • DB-Operationen beziehen sich stets auf den aktuellen DB-Zustand
    • größte Flexibilität und Unabhängigkeit vom DB-Schema
  • Vorbereitung und Ausführung einer SQL-Anweisung
    • erfolgt typischerweise durch Interpretation
    • Leistungsproblem: wiederholte Ausführung derselben Anweisung (DB2 UDB bewahrt Zugriffspläne zur Wiederverwendung im Cache auf)
    • Übersetzung und Code-Generierung ist jedoch prinzipiell möglich!
25
# GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.) Dynamisches SQL: **Mehrere Sprachansätze (ähnlicher Funktionalität)**
* Eingebettetes dynamisches SQL * Call-Level-Interface (CLI) * kann ODBC (Open Database Connectivity) implementieren * Java Database Connectivity (JDBC) * dynamische SQL-Schnittstelle zur Verwendung mit Java * ‘de facto’-Standard für den Zugriff auf relationale Daten von Java-Programmen aus; * JDBC ist gut in Java integriert und ermöglicht einen Zugriff auf relationale Datenbanken in einem objektorientierten Programmierstil * JDBC ermöglicht das Schreiben von Java-Applets, die von einem Web-Browser auf eine DB zugreifen können **Gemeinsame Anforderungen (LZ)** * Zugriff auf Metadaten * Übergabe und Abwicklung dynamisch berechneter SQL-Anweisungen * Optionale Trennung von Vorbereitung und Ausführung * einmalige Vorbereitung mit Platzhalter (?) für Parameter * n-malige Ausführung * Explizite Bindung von Platzhaltern (?) an Wirtsvariable * Variable sind zur ÜZ nicht bekannt! * Variablenwert wird zur Ausführungszeit vom Parameter übernommen
26
# GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.) Eingebettetes Dynamisches SQL
**Eigenschaften** * Abkürzung: EDSQL * unterstützt mehrere Wirtssprachen * ist im Stil statischem SQL ähnlich; wird oft von Anwendungen gewählt, die dynamische und statische SQL-Anweisungen mischen * Programme mit EDSQL sind kompakter und besser lesbar als solche mit CLI oder JDBC * SQL-Anweisungen werden vom Compiler wie Zeichenketten behandelt; Anweisungen enthalten Platzhalter für Parameter (?) statt Programmvariablen
27
# GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.) Call-Level-Interface
Spezielle Form von dynamischem SQL * Schnittstelle ist als Sammlung von Prozeduren/Funktionen realisiert * Direkte Aufrufe der Routinen einer standardisierten Bibliothek * Keine Vorübersetzung (Behandlung der DB-Anweisungen) von Anwendungen * Vorbereitung der DB-Anweisung geschieht erst beim Aufruf zur LZ * Anwendungen brauchen nicht im Source-Code bereitgestellt werden * Wichtig zur Realisierung von kommerzieller AW-Software bzw. Tools wird sehr häufig in der Praxis eingesetzt! **Vorteile von CLI** * Schreiben portabler Anwendungen * Systemunabhängigkeit * Mehrfache Verbindungen zur selben DB * Verbindungen zu mehreren DBS * Optimierung des Zugriffs (durch Prepare) Kooperation von AP und DBS * maximale gegenseitige Kapselung * Zusammenspiel AP/CLI und DBVS ist nicht durch Übersetzungsphase vorbereitet * Wahl des DBS zur Laufzeit * vielfältige LZ-Abstimmungen erforderlich
28
# GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.) Call-Level-Interface: **Wesentlich: Konzept der Handle-Variablen**
Handle (internes Kennzeichen) ist letztlich eine Programmvariable, die Informationen repräsentiert, die für ein AP durch die CLI-Implementierung verwaltet wird gestattet Austausch von Verarbeitungsinformationen Arten: * **Umgebungskennung** repräsentiert den globalen Zustand der Applikation * **Verbindungskennung** * separate Kennung: n Verbindungen zu einem oder mehreren DBS * Freigabe/Rücksetzen von Transaktionen, Isolationsgrad * **Anweisungskennung** * mehrfache Definition, auch mehrfache Nutzung * Ausführungszustand einer SQL-Anweisung; sie fasst Informationen zusammen, die bei statischem SQL in SQLCA, SQLDA und Cursorn stehen * **Deskriptorkennung** enthält Informationen, wie Daten einer SQL-Anweisung zwischen DBS und CLI-Programm ausgetauscht werden
29
# GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.) SQL-Injection
* Sicherheitslücke bei dynamischem SQL * Bösartiges Einschleusen von ungewollten SQL-Statments * Verhinderung durch Prepared Statements * Statement bereits vorkompiliert * Nutzereingabe wird vollständig als Abeilungsnummer (Parameter) gewertet (und aufgrund des unpassenden Typs ein Fehler geworfen)
30
# GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.) Zusammenfassung: **Cursor-Konzept**
**Cursor-Konzept zur satz-weisen Verarbeitung von Datenmengen** * Anpassung von mengenorientierter Bereitstellung und satz-weiser Verarbeitung von DBS-Ergebnissen * Operationen: DECLARE CURSOR, OPEN, FETCH, CLOSE * Erweiterungen: Scroll-Cursor, Sichtbarkeit von Änderungen
31
# GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.) Zusammenfassung: **Statisches (eingebettetes) SQL**
* hohe Effizienz, gesamte Typprüfung und Konvertierung erfolgen durch Precompiler * relativ einfache Programmierung * Aufbau aller SQL-Befehle muss zur Übersetzungszeit feststehen * es können zur Laufzeit nicht verschiedene Datenbanken dynamisch angesprochen werden
32
# GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.) Zusammenfassung: **Interpretation einer DB-Anweisung**
* allgemeines Programm (Interpreter) akzeptiert Anweisungen der DB-Sprache als Eingabe und erzeugt mit Hilfe von Aufrufen des Zugriffssystems Ergebnis * hoher Aufwand zur Laufzeit (v.a. bei wiederholter Ausführung einer Anweisung)
33
# GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.) Zusammenfassung: **Übersetzung, Code-Erzeugung und Ausführung einer DB-Anweisung**
* für jede DB-Anweisung wird ein zugeschnittenes Programm erzeugt (Übersetzungszeit), das zur Laufzeit abgewickelt wird und dabei mit Hilfe von Aufrufen des Zugriffssystems das Ergebnis ableitet * Übersetzungsaufwand wird zur Laufzeit soweit wie möglich vermieden
34
# GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.) Zusammenfassung: **PSM**
* zielt ab auf Leistungsverbesserung, vor allem in Client/Server-Umgebung * erhöht die Verarbeitungsmächtigkeit des DBS
35
# GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.) Zusammenfassung: **Dynamisches SQL**
* Festlegung/Übergabe von SQL-Anweisungen zur Laufzeit * hohe Flexibilität, schwierige(re) Programmierung * Unterschiede zu statischem, eingebettetem SQL * explizite Anweisungen zur Datenabbildung zwischen DBS und Programmvariablen * klare Trennung zwischen Anwendungsprogramm und SQL (→ einfacheres Debugging)
36
# GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.) Zusammenfassung: **CLI**
* Schnittstelle ist als Sammlung von Prozeduren/Funktionen realisiert * Keine Vorübersetzung oder Vorbereitung * Anwendungen brauchen nicht im Source-Code bereitgestellt werden * Wichtig zur Realisierung von kommerzieller AW-Software bzw. Tools
37
# GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.) Zusammenfassung: **JDBC (ergänzende Information)**
bietet Schnittstelle für den Zugriff auf (objekt-) relationale DBS aus Java-Anwendungen vermeidet einige syntaktischen Mängel (Lesbarkeit, Fehleranfälligkeit) von CLI
38
# GDB K8 Anwendungsprogrammierschnittstelle (keine Berechnugen oder Code in K.) Zusammenfassung: **SQLJ (ergänzende Information)**
* eingebettete Sprache für „statische” Java-Programme * zielt auf verbesserte Laufzeiteffizienz im Vergleich zu JDBC ab, Syntax- und Semantikprüfung zur Übersetzungszeit * größere Unabhängigkeit von verschiedenen SQL-Dialekten