2 Erweiterbarkeit von Datenbanksystemen

Werbung
2. Erweiterbarkeit von Datenbanksystemen
Allgemeine Aspekte der Erweiterbarkeit
2 Erweiterbarkeit von Datenbanksystemen
Kritik an traditionellen DB-Systemen: Armut an Datentypen und
Funktionen
Datenbankanwendungen verlangen in zunehmendem Maße nach
der Möglichkeit des Speicherns und Verarbeitens von Objekten, die
– sehr groß sind (Texte, Bilder, Videos) oder
– ein komplexes Verhalten haben (Komponenten im Entwurf).
Die hierzu notwendigen Konzepte sind nicht im voraus absehbar und
schwierig in ein einheitliches Datenmodell integrierbar.
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
2. Erweiterbarkeit von Datenbanksystemen
45
Allgemeine Aspekte der Erweiterbarkeit
☞ Erweiterbare Datenbanksysteme bieten die Möglichkeit, spezifische
zusätzliche Datentypen mit zugehörigen Funktionen in ein DBSystem zu integrieren.
Die traditionellen Vorteile relationaler Systeme sind nicht inkompatibel mit einem reichhaltigen und erweiterbarem System von Datentypen und Funktionen.
Objektrelationale Systeme kombinieren
– deklarative Anfragesprachen wie SQL und multiple Sichten auf die
Daten mit
– der Fähigkeit, neue Datentypen und Funktionen zum Speichern
und Manipulieren von Objekten zu definieren.
☞ In objektrelationalen DB-Systemen wird mehr von der Semantik der
gespeicherten Daten erfaßt.
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
46
2. Erweiterbarkeit von Datenbanksystemen
Allgemeine Aspekte der Erweiterbarkeit
Ebenen der Erweiterbarkeit
Neue Typen und Funktionen sollen auf jeder Ebene unterstützt werden
können:
Von der Bereitstellung neuer Typen auf der konzeptuellen Ebene
über die Integration zugehöriger Funktionen in SQL (externe Ebene)
über die Bereitstellung spezieller Speicherstrukturen
bis zur Optimierung von Zugriffen (interne Ebene).
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
2. Erweiterbarkeit von Datenbanksystemen
47
Allgemeine Aspekte der Erweiterbarkeit
Beispiel: Datentyp zur Repräsentation von Polygonen
Auf der konzeptuellen Ebene muß der Datentyp definierbar sein, so
daß er z.B. als Attributstyp in einer Relation verwendbar ist.
Funktionen bzw. Prädikate für Polygone (z.B. “Punkt liegt in Polygon”) müssen definierbar und in SQL integrierbar sein, so daß sie für
Anfragen nutzbar sind.
Spezielle Speicher- und Zugriffsstrukturen müssen die effiziente Auswertung einer Funktion wie “Punkt liegt in Polygon” unterstützen.
☞ Die Erweiterbarkeit der internen Ebene ist der schwierigste Teil.
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
48
2. Erweiterbarkeit von Datenbanksystemen
Allgemeine Aspekte der Erweiterbarkeit
Wir betrachten zunächst die Erweiterung auf konzeptioneller und externer Ebene:
☞ Benutzerdefinierte Funktionen
☞ Benutzerdefinierte Aggregatfunktionen
☞ Tabellenfunktionen
☞ Benutzerdefinierte Typen
Im nächsten Kapitel werden wir die Voraussetzungen für die Erweiterbarkeit auf der internen Ebene kennenlernen.
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
2. Erweiterbarkeit von Datenbanksystemen
49
Benutzerdefinierte Funktionen
Benutzerdefinierte Funktionen (UDF)
Hierbei handelt es sich um Funktionen,
die vom Benutzer erzeugt und
unter Verwendung einer speziellen Anweisung (create function) in
eine Datenbank integriert werden.
Für die Programmierung von UDFs wird üblicherweise C eingesetzt.
Die UDFs erweitern den Vorrat an SQL-Funktionen.
Es kann sich hierbei um eine skalare Funktion, eine Aggregatsfunktion oder eine Tabellenfunktion handeln.
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
50
2. Erweiterbarkeit von Datenbanksystemen
Benutzerdefinierte Funktionen
Integration von benutzerdefinierten Funktionen in eine DB:
DBS−Kern
Aufruf
Funktions−API
Built−In Funktionen
Benutzerdef. Funkt.
dynamisches Binden
Deklaration der
Funktion
Dyn. Bibliothek
Compilierung/
Erzeugung dyn. Bibliothek
Create Function Anw.
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
2. Erweiterbarkeit von Datenbanksystemen
C Quelle
51
Benutzerdefinierte Funktionen
Die Integration besteht aus zwei Schritten:
1. Implementierung
Auf Basis eines standardisierten APIs wird eine C-Funktion erstellt,
übersetzt und in einer dynamischen Bibliothek (shared object) abgelegt.
2. Deklaration
Mit Hilfe einer create function Anweisung wird die UDF dem Datenbanksystem bekannt gemacht. Hierdurch steht eine entsprechende
SQL-Funktion zur Verfügung.
Bei erstmaliger Benutzung der UDF/SQL-Funktion wird die dynamische Bibliothek an den DB-Kern gebunden und die betreffende CFunktion aufgerufen.
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
52
2. Erweiterbarkeit von Datenbanksystemen
Benutzerdefinierte Funktionen
UDF-Implementierung für skalare Funktionen
In DB2 gelten folgende Konventionen für eine C-Funktion, die als Implementierung einer skalaren UDF dienen soll:
"! #$%&' ! #'(% &) ))*%
+! ,-.%-/012 0! +
!*354
3678
9:%
+!<;=1 !+
> 29?34 ! #@% > 29?34 ! 1 '(% ))&)*%A+! ,-.%-/012 0! +
> 29?34 !B
988 #7?403C%
+!<;=1 !+
#29?3 ! >D 8 > 44:%
+!<;=1 !+
#29?3 !"
E-E9:%
+! ,- !0+
#29?3 ! >#F 1E-E9:%
+! ,- !0+
#29?3 !G9 >&> H
+!<;=1 !+
IKJ
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
2. Erweiterbarkeit von Datenbanksystemen
53
Benutzerdefinierte Funktionen
Erläuterungen zu den Parametern:
1. Die ersten L Parameter der C-Funktion entsprechen den L Parametern der zugehörigen SQL-Funktion. Die Werte sind in entsprechende C-Typen konvertiert. Es werden grundsätzlich Zeiger übergeben.
2. Zeiger auf den Rückgabewert
3. Indikatorvariablen für die L
Eingabeparameter
4. Indikatorvariable für den Rückgabewert
5. 203NMPO0Q , null-terminiert, zur Rückgabe von SQLSTATE, ist initialisiert
mit RS&SS&SST&SR .
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
54
2. Erweiterbarkeit von Datenbanksystemen
Benutzerdefinierte Funktionen
6. Voller qualifizierter Name der aufgerufenen SQL-Funktion. Dies
macht es möglich, daß mehrere UDFs durch die gleiche C-Funktion
implementiert werden.
7. spezifischer Name zur Unterscheidung bei der Überladung von Funktionsnamen;
macht es ebenfalls möglich, daß mehrere UDFs durch die gleiche
C-Funktion implementiert werden.
8. 203NMVU S Q , null-terminiert zur Übergabe einer Fehlermeldung an die
SQLCA (Feld >5D 8&?335 ).
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
2. Erweiterbarkeit von Datenbanksystemen
55
Benutzerdefinierte Funktionen
Zuordnung zwischen SQL- und C-Datentypen für UDFs (DB2):
SQL-Datentyp
Smallint
Integer
Decimal(p,s)
Real
Double
Char(n)
Varchar(n)
Date
Time
Timestamp
Blob(n), Clob(n)
Lokator für Blob, Clob
C-Datentyp
short
long
—
float
double
char[n+1], null-terminiert
char[n+1], null-termiert
char[11], null-terminiert, yyyy-mm-dd
char[9], null-terminiert, hh.mm.ss
char[27], null-terminiert, yyyy-mm-dd-hh.mm.ss.nnnnnn
struct W unsigned long length; char data[n]; X
unsigned long
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
56
2. Erweiterbarkeit von Datenbanksystemen
Benutzerdefinierte Funktionen
Beispiel: UDF in DB2 zur Berechnung des Quadrats einer Zahl, siehe
auch Home-Page (Datei >D 031Y)Z ).
[\^]5_a`cbdfehg#ikj#`liZmEicnpoKqsrEt
uv \cdxwlypz#{p|a}5~k{pf€ikjkb‚pƒle1„…` v ]†ˆ‡\^]‰Š` v ]#†ˆ‡‹ƒfepn u ‚f`‰
iŒr v ƒnˆ‡\^]d\_‚Zn v ƒ‰ŠiŽr v ƒpn‡‹ƒfepn\^]d‰
_Œr‚ƒ‡hikj`fi‘n‚kn#e‰’_ŽrE‚ƒ‡”“k]f]E‚coe‰
_Œr‚ƒ‡hiŽ•Ee#_Ž]‚coEe‰’_ŽrE‚ƒ‡–oeiai‚p†#e—
˜
‡kƒlepn u ‚l`‹™‡#\^]š‡x‡l\^]›
œ
Erzeugung der dynamischen Bibliothek:
H"/*/0 F "/,?+E
> 3+,E?žŸ'+6U )aE+108
1 >5D 9?3C)k
H"/ > 29?3?/ >D 0 31Y) > >5D 9?3C)c
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
2. Erweiterbarkeit von Datenbanksystemen
57
Benutzerdefinierte Funktionen
PostgreSQL:
[\^]5_a`cbdfehg‘• v i‘nl†lƒfeiqsrEt
[\^]5_a`cbdfehg“Zo†lƒ9qsrEt
}#¡#{kp¢€#£p¤5~k¥p€#{~c€f#¥f{k¦0§5„Šikjkb‚pƒleˆ—›
¨E‚knpbaoAiZjkb‚ƒfe1„©}#¡l{pp¢€l£¤5~k¥k€{p|aªl¡lw—
˜
\^]#nx« ™¬}#¡#{¡p­l¤f|aªl¡#{~c€a¤#®f¯1„±°ˆ—›
\^]#nƒ_”™²«‡³«7›
œ
}#¡#{kªa­l¤p¢#ªf€{~c€a¤#®f¯1„©ƒ_—›
Erzeugung der dynamischen Bibliothek:
´ H9&*/"/0 F "/,?+E
> 3 +8&108&+ > 7
3 ?+ F > 4H31 E> D ?8 /U )Œ'Y)a+ > 37?+18
1&+ > D 031Y)Z
´ H9&*/ > 29?310µ/ >5D 0 31Y) > >5D 9? 3C)c
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
58
2. Erweiterbarkeit von Datenbanksystemen
Benutzerdefinierte Funktionen
UDF-Deklaration (skalar)
Typischerweise werden die folgenden Dinge für eine skalare UDF in
deren Deklaration festgelegt:
Name und Signatur
Typ des Rückgabewertes
Externer Name, d.h. Pfad der dynamischen Bibliothek und Funktionsname
Implementierungssprache
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
2. Erweiterbarkeit von Datenbanksystemen
59
Benutzerdefinierte Funktionen
Behandlung von Null-Werten
Ist das Ergebnis 988 falls einer der Parameter den Wert &
8&8 hat?
abgeschirmte Ausführung
Soll die Ausführung der Funktion im gleichen Adressraum wie der
Datenbankprozess stattfinden?
deterministische Ausführung
Ist garantiert, ob die Funktion bei identischen Parameterwerten identische Ergebnisse liefert?
weitere Dinge sind DBS-spezifisch
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
60
2. Erweiterbarkeit von Datenbanksystemen
?3 in DB2:
Deklaration der UDF >5D 9
3&4*
E490E >5D 9?3ˆ1
&Ÿ8 I
3140
3? > 1
&Ÿ8
»&4?3?8¼9 ½ >D 9?3C) > ¾ >5D 9?3:½
14?3@ > 4&
?»47?398<1E490E
4 10?
4<&
8&8 088
81H?
9H
>5D 8
F 031547?3 > 4¸78&"?Ÿ7' >D 8
88Ã F 0318&8&8 J
Benutzerdefinierte Funktionen
/&/*-7¶
& ·H?954
3
/&/*¸ F ¹ º1HŸ
/&/*¿»47?3?03*-E9
/&/ ¹ > 98544 > 4 ?
&º490E98
/&/ Ÿ&29&1H9EH<E 1 031E9403
/&/"º1 ,#47?3º490E
/&/À 4 ?3ÂÁ0
>> Ã854
/&/"º1µŸ1H > #2@3147¶Á0
> 9E23
&H
/&/"º1 Á?
&3?
*Ã7& 7?3547?3Ä
988
/&/*7?30Ã754 ,f F 8&E1490?3?
&H >>lF 3#2
/&/ ŝ'EŸ8H4037 > 2
/&/ Ÿ981EH547?37 > 2 9?3Ä=ÅÆ > # Ç
/&/ F ?3888ÄÁ?
> 9E23
1HÄ9H78#2
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
2. Erweiterbarkeit von Datenbanksystemen
Deklaration der UDF >5D 9?3 in PostgreSQL:
61
Benutzerdefinierte Funktionen
3&4*
E490E >5D 9?3ˆ318 I
3140
3? > 318
> ½k+E299&'+ F Ÿ91º7&'E9+ F > 4&H31 > + >5D ?31&+ >ED 7031C) > (½&%"½ >5D 9?3:½
81H?
9H ½aȽ
I J
ÃE402 É >&> 43&E4.%A > ?#2Ÿ98& È
Beispiel: Nutzung der UDF >D 031 :
·¿Ê¿1Ç0 1'(% >5D 9?3xŸ7Ë181H42 I
Æ ¹ ;ž
Ã1? ŸÌ)k?
&14370 >
ÍÎ ¿ ¹ ¿ @
GÏ ½ŽÐ?žÑ½
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
62
2. Erweiterbarkeit von Datenbanksystemen
Benutzerdefinierte Funktionen
Funktionsresolution
Der Name der UDF kann ein Schema enthalten. Ebenso kann beim
Aufruf ein Schemaname angegeben werden (qualifizierter Funktionsname).
Nachteile der Verwendung qualifizierter Funktionsnamen:
– lang, umständlich
– Anwendungen sollten nicht von einem speziellen Schema, in dem
die Funktionen liegen, abhängig sein.
Fehlt der Schemanamen, dann werden die Schemata des sogenannten Funktionspfades nach einer anwendbaren Funktionen durchsucht.
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
2. Erweiterbarkeit von Datenbanksystemen
63
Benutzerdefinierte Funktionen
Vorbelegung des Funktionspfades: ·57·,0žÑ%·57·?Æ?=1- %¬=9·¿ ¹
Änderung: ·?¿&
Ç= ¹¹ ¿&-µÆ?=1-1Ç0,5;?-<Á Î
Eine Funktion ist auf einen gegebenen Aufruf anwendbar, falls:
– der Funktionsname mit dem im Aufruf genannten übereinstimmt
und
– die Argumente des Aufrufs in die Parameter dieser Funktion propagierbar sind.
Propagierbar bedeutet, daß
– der Datentyp jedes Funktionsparameters entweder mit dem Datentyp des entsprechenden Aufrufsarguments übereinstimmt oder
– die Aufrufargumente entlang von Konversionspfaden in die Typen
der Funktionsparameter umgewandelt werden können.
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
64
2. Erweiterbarkeit von Datenbanksystemen
Benutzerdefinierte Funktionen
Wichtige Konversionspfade:
– Smallint Ò Integer Ò Decimal Ò Real Ò Double
– Char Ò Varchar Ò Long Ò Varchar Ò Clob
Die Datentypen Blob, Date, Time und Timestamp erfordern eine exakte Übereinstimmung.
Länge, Genauigkeit sowie Anzahl von Nachkommastellen werden bei
der Überprüfung der Anwendbarkeit ignoriert, für die Anwendung der
Funktion findet aber eine Konversion statt.
Auf dem Funktionspfad können sich nun mehrere anwendbare Funktion befinden.
Die Funktionsresolution sorgt für die Auswahl einer möglichst “guten”
Funktion.
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
2. Erweiterbarkeit von Datenbanksystemen
65
Benutzerdefinierte Funktionen
Ablauf der Funktionsresolution:
1. Zunächst wird die Menge aller anwendbaren Funktionen bestimmt.
2. Betrachte die Argumente des Aufrufs von links nach rechts. Für jedes Argument werden die Funktionen eliminiert, die in bezug auf den
Konversionspfad nicht die “beste verfügbare” Übereinstimmung liefern.
3. Bleibt mehr als eine Funktion übrig, wird die Funktion aus dem Schema genommen, das zuerst im Funktionspfad auftritt.
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
66
2. Erweiterbarkeit von Datenbanksystemen
Benutzerdefinierte Funktionen
Beachtenswerte Punkte bei UDFs
☞ Die UDF sollte reentrant sein, d.h. es sollten keine statischen Variablen benutzt werden. So wird gewährleistet, daß die UDF gleichzeitig
von verschiedenen Applikationen benutzt werden kann.
☞ Falls die UDF dynamisch Speicher allokiert, sollte dieser vor dem
Ausstieg freigegeben werden. Ausnahme: Scratchpad-Funktionen,
später mehr
I
☞ Niemals ?»4. für die Beendigung der UDF verwenden!
I
I
☞ Auch kein F 3#14C oder > ?C !
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
2. Erweiterbarkeit von Datenbanksystemen
☞ Für Implementierungen in C++ ?»47?3?
klaration angeben.
67
Benutzerdefinierte Funktionen
R Ç R als Teil der Funktionsde-
☞ Beim Debugging einer UDF kann eine Datei auf dem Server für die
Protokollierung verwendet werden.
Hierbei muß auf die Zugriffsrechte geachtet werden, denn der
Server-Prozeß läuft nicht unter der eigenen Benutzerkennung.
Intelligentes Datenmanagement — FH Bonn-Rhein-Sieg, SS 03
68
Herunterladen