DE4416332A1 - Verfahren und Vorrichtung zur Abfrageoptimierung in einem relationalen Datenbanksystem mit Fremdfunktionen - Google Patents
Verfahren und Vorrichtung zur Abfrageoptimierung in einem relationalen Datenbanksystem mit FremdfunktionenInfo
- Publication number
- DE4416332A1 DE4416332A1 DE4416332A DE4416332A DE4416332A1 DE 4416332 A1 DE4416332 A1 DE 4416332A1 DE 4416332 A DE4416332 A DE 4416332A DE 4416332 A DE4416332 A DE 4416332A DE 4416332 A1 DE4416332 A1 DE 4416332A1
- Authority
- DE
- Germany
- Prior art keywords
- query
- queries
- rewrite
- relational database
- rules
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99932—Access augmentation or optimizing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Operations Research (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
Die vorliegende Erfindung bezieht sich auf ein relationales
Datenbanksystem und insbesondere auf Abfrageoptimierungs
techniken für ein relationales Datenbanksystem mit Fremd
funktionen.
Relationale Datenbanksysteme liefern die Fähigkeit, die Da
ten, die in ihrer Datenbank gespeichert sind, geeignet ab
zufragen. In vielen Anwendungen besteht jedoch ein Bedarf,
Daten und Operationen, die sich außerhalb der Datenbank be
finden (bezeichnet als Fremdfunktionen) zu integrieren. Es
wäre z. B. geeignet, mathematische Funktionen und UNIX-Bi
bliotheksfunktionen als Teil einer relationalen Abfrage
(query) aufzurufen. Zudem existieren für viele Problembe
reiche hochabgestimmte Anwendungen. Die Fähigkeit, solche
existierenden Anwendungen auszunutzen ist wichtig, da eine
Neuentwicklung untragbar aufwendig sein kann. Auch kann für
viele Anwendungen nur ein Teil der Daten, die benötigt wer
den, in der Datenbank gespeichert sein. Zusätzliche Daten
können außerhalb liegen. Ein Zugriff auf äußere Daten wird
durch einen Satz von Schnittstellen-Routinen geschaffen.
Heute sind z. B. viele spezialisierte geographische Informa
tionssysteme (GIS = Geographic Information Systems) verfüg
bar, die die Fähigkeit schaffen, geographische Daten zu
speichern und auf sie zuzugreifen. Andererseits sind die In
formationen für Attribute (z. B. die Bevölkerungszahl einer
Stadt) in einer relationalen Datenbank gespeichert. Deshalb
ist für GIS-Anwendungen die Fähigkeit, eine relationale Ab
fragesprache zu verwenden, ebenso wichtig, wie die Fähig
keit, Funktionen aufzurufen, die von dem GIS-Software-Paket
geliefert werden. Im allgemeinen ist die Fähigkeit, Fremd
funktionen in einer relationalen Abfrage aufzurufen, wich
tig, um Anwendungen zu entwickeln. Um die Schlüssel-Heraus
forderungen an die Optimierung, die durch Fremdfunktionen
eingeführt werden, darzustellen, seien zwei Beispiele, die
aus einer früheren Anwendung entnommen sind, betrachtet, die
bei Kolovson u. a., Interoperability of spatial and attri
bute data managers: A case study, Proceedings of the 3rd In
ternational Symposium on Large Spatial Databases, Miami,
Florida, 1992, beschrieben sind. Diese bekannte Anwendung
wurde beim Papyrus-Projekt entwickelt, dazu seien Connors u.
a., The papyrus integrated date server, Proceedings of the
First International Conference on Parallel and Distributed
Systems, Miami, Florida, 1991, betrachtet. Die Anwendung er
möglicht es, auf Informationen über Unternehmen und deren
Standorte in der Bay Area in Nord-Kalifornien zuzugreifen.
Die Anwendung ist auf dem ETAK-MapEngine (ETAK-Karten-Pro
zessor) und einer relationalen Speicherverwaltung aufgebaut.
Das Unternehmen ETAK in Menlo Park, Kalifornien, ist ein Un
ternehmen, das Fahrzeug-Navigationsausstattung entwickelt
und digitale Karten-Datenbanken herstellt.
Der MapEngine ist eine Verwaltung für geographische Daten,
die die Fähigkeit schafft, Karten zu speichern und abzufra
gen. Der MapEngine speichert die Standorte der Unternehmens
einrichtungen in der Bay Area in einer Datei Map (Karte).
Die relationale Datenbank wird verwendet, um Attribut-Infor
mationen über Unternehmen (z. B. die Art des Unternehmens) in
einer Tabelle Business (Unternehmen) zu speichern. Jeder Tu
pel dieser Tabelle speichert auch ein zusätzliches Attribut,
welches als ein Schlüssel für den MapEngine wirkt. Letzterer
verwendet diesen Schlüssel, um den Standort des Unternehmens
herauszufinden. Entsprechend zeigt jede Aufnahme im MapEn
gine auf den Tupel in der Tabelle Business der relationalen
Datenbank, in dem die Attribut-Informationen über die ent
sprechende Unternehmenseinrichtung aufbewahrt sind. Somit
ist es möglich, daß sich die Abfragen sowohl über das
relationale System, als auch über den MapEngine erstrecken.
Das Ziel dieses Beispiels ist es, die Bedeutung der seman
tischen Informationen, die zu den Fremdfunktionen gehören,
für die Optimierung hervorzuheben. Der MapEngine schafft
eine Funktion, um auf alle Punkte (ein Punkt oder ein Fen
ster (window) ist als ein einzelnes Argument dargestellt,
obwohl eine Vielfalt von Darstellungen möglich ist) in einer
Karte (Map) zuzugreifen, und eine Boolsche Funktion (Inside)
(Inside = innerhalb), um zu prüfen, ob sich ein vorgegebener
Punkt innerhalb eines Fensters befindet. Die Funktion Inside
ist eine arithmetische Funktion. Der MapEngine schafft auch
eine zusätzliche Funktion Mapclip (Kartenhalter), die, ein
Fenster vorausgesetzt, alle Punkte auf der Landkarte, die
sich in dem Fenster befinden, zurückgibt. Es sei eine Abfra
ge betrachtet, um, ein Fenster vorausgesetzt, alle Punkte
auf der Karte, die sich in dem Fenster befinden, zu finden.
Die Abfrage kann durch das Aufrufen der Datei Map und das
Prüfen, ob sich jeder der wiedergefundenen Standorte inner
halb des Fensters befindet (durch das Verwenden der Funktion
Inside), beantwortet werden. Der Nutzen der Tatsache, daß
die Abfrage durch das Aufrufen der Funktion Mapclip beant
wortet werden kann, ist jedoch von Bedeutung, da das Verwen
den der Funktion Mapclip den Aufwand für die Auswertung der
Abfrage sehr reduzieren kann.
Das Ziel dieses Beispiels ist es, hervorzuheben, daß die
Entscheidung, eine vorgegebene Abfrage durch semantische
Optimierung zu modifizieren, aufwandsabhängig getroffen
werden muß. Es sei das Problem betrachtet, alle Restaurants
in der Innenstadt von Palo Alto zu finden. Diese Abfrage
kann durch das Auswählen aller Restaurants aus der Tabelle
Business und dem anschließenden Durchführen der Funktion
Mapclip beantwortet werden. Der MapEngine hat jedoch auch
eine Datei Map_Restaurant (Karte_Restaurant), die aus all
den Einrichtungen besteht, die Restaurants darstellen. Des
halb können diese semantischen Informationen verwendet wer
den, um die Abfragen zu beantworten. Man könnte die Datei
Map_Restaurant aufrufen, um alle Restaurants in der Bay Area
zu erhalten, und man kann dann die in der Innenstadt von
Palo Alto durch das Aufrufen der Funktion Inside auswählen.
Diese zwei Abfragen sind äquivalent, aber der optimale Plan
der einen Abfrage kann, verglichen mit dem optimalen Plan
der anderen Abfrage, um eine Größenordnung besser sein, wo
bei es davon abhängt, ob der Indizierungseffekt des Ein
schränkens der Standorte auf die Innenstadt von Palo Alto
wirksamer ist, als die Indizierung, die auf dem Einschränken
der Unternehmen auf Restaurants beruht.
Beispiel 1 zeigt, daß beim Vorliegen von Fremdfunktionen ei
ne Vielzahl von Verfahren existieren können, um die gleiche
Abfrage zu beantworten. Solche semantische Informationen
sind zur Abfrageoptimierung extrem nützlich und müssen fest
gehalten werden. Beispiel 2 zeigt, daß die Anwendung solcher
semantischer Informationen zur Abfrageoptimierung aufwands
abhängig sein muß.
Die Fähigkeit, relationale Abfragen wirksam zu beantworten,
stützt sich auf das Repertoire von Auswertungsoptionen und
auf einen Optimierer, um unter diesen Optionen zu wählen.
Deshalb muß das Datenbanksystem dem Optimierer ausreichende
Auswertungsoptionen und notwendige Erweiterungen liefern,
wenn relationale Abfragen die Fähigkeit haben, Fremdfunktio
nen aufzurufen, so daß Abfragen, die Fremdfunktionen ein
schließen, wirksam optimiert werden können. Existierende
Optimierer sind jedoch nicht in der Lage, diesen Bedarf zu
befriedigen. Natürlich gibt es weitere Dimensionen für das
Problem, Fremdfunktionen aufzurufen (z. B. Formatumwandlung,
Unterstützung komplexer Ziele), aber der Schwerpunkt der Er
findung bezieht sich ausschließlich auf die Optimierung und
die dazugehörenden Probleme.
In den letzten Jahren wurden mehrere erweiterbare Systeme
mit verschiedenen Erweiterbarkeitsgraden vorgestellt. Es
seien z. B. Carey u. a., Extensible database management sy
stems, ACM-SIGMOD Record, Dezember, 1990; Greafe u. a., The
exodus optimizer, Proceedings of the 1987 ACM-SIGMOD Confe
rence on the Management of Data, Seiten 160-172, San Fran
cisco, CA, Mai 1987; Hass u. a., Extensible query processing
in starburst, Proceedings of the 1989 ACM-SIGMOD Conference
on the Management of Data, Seiten 377-388, Portland, OR,
Juni 1989; und Stonebraker u. a., On rules, procedures, ca
ching and views in database systems, Proceedings of the 1990
ACM-SIGMOD Conference on the Management of Data, Seiten 281-290,
Atlantic City, NJ, Mai 1990, betrachtet. Neuschrei
be-Sprachen zur Optimierung in erweiterbaren Systemen sind
ebenfalls bekannt. Es seien z. B. Pirahesh u. a., Exten
sible/rule based query optimization in starburst, Procee
dings of the 1992 ACM-SIGMOD Conference on the Management of
Data, Seiten 39-48, San Diego, CA, Mai 1992; Lohman, Gram
mer-like functional rules for represnting query optimization
alternatives, Proceedings of the 1988 ACM-SIGMOD Conference
on the Management of Data, Seiten 18-27, Chicago, IL, Juni
1988; Greafe u. a., siehe oben, betrachtet. Die Schriften
von Pirahesh u. a., Lohman und Greafe u. a. sind hiermit
durch Bezugnahme aufgenommen.
Ein Hauptnachteil dieser bekannten Neuschreibe-Sprachen be
steht darin, daß ihnen die Fähigkeit fehlt, mit Fremdfunkti
onen, die in einer Abfrage erscheinen, zu arbeiten. Ein an
derer Nachteil besteht darin, daß die existierenden Neu
schreibe-Sprachen einer Zwischenpegel-Programmiersprache
(z. B. C) gleichen, mit der zu arbeiten mühselig und kompli
ziert ist. Noch ein weiterer Nachteil der existierenden Neu-
Schreibe-Sprachen besteht darin, daß die Optimierungstechni
ken von den Neuschreibe-Regeln (rewrite rules) abhängig
sind, was folglich die Optimierung kompliziert.
Eine Abfrageoptimierung beim Vorliegen einer Fremdfunktion
wurde bei Chimenti u. a., Towards an open architecture for
LDL, Proceedings of the 15th International VLDB Conference,
Seiten 195-203, Amsterdam, August 1989, der hiermit durch
Bezugnahme aufgenommen ist, untersucht. In dieser Schrift
werden LDL-Programme (language description language =
Sprachbeschreibungssprache) erweitert, um zu ermöglichen,
Fremdtabellen zu verwenden und Aufwandsdeskriptoren für
Fremdtabellen festzulegen. Das LDL-System verwendet keine
Neuschreibe-Regeln, die semantische Informationen über die
Fremdfunktionen enthalten.
Folglich haben frühere Versuche, Abfragen, die Fremdfunkti
onen aufrufen, zu optimieren, keine höhere Programmierspra
che für Neuschreibe-Regeln verwendet, um semantische Bezie
hungen von Fremdfunktionen auszudrücken. Frühere Versuche
konnten auch nicht garantieren, daß beim Verwenden von Neu
schreibe-Regeln und Aufwandsmodellen für Fremdfunktionen ein
optimaler Plan erhalten wird. Deshalb wurde dem Problem der
aufwandsabhängigen Optimierung von relationalen Abfragen
beim Vorliegen solcher Fremdfunktionen früher nicht zufrie
denstellend begegnet.
Die Aufgabe der vorliegenden Erfindung liegt darin, ein re
lationales Datenbanksystem zu schaffen, um Fremdfunktionen
zu integrieren, und darin, eine aufwandsabhängige Optimie
rung der relationalen Abfragen beim Vorliegen von Fremdfunk
tionen zu schaffen.
Diese Aufgabe wird durch ein relationales Datenbanksystem
nach Anspruch 1 und ein Verfahren zur Optimierung einer Ab
frage nach Anspruch 7 gelöst.
Die vorliegende Erfindung schafft eine verbesserte aufwands
abhängige Optimierung von relationalen Abfragen beim Vorlie
gen von Fremdfunktionen.
Die Erfindung betrifft allgemein gesprochen einen Optimie
rungsansatz, der semantische Informationen über Fremdfunk
tionen berücksichtigt.
Insbesondere stellt die Erfindung einen umfassenden Lösungs
ansatz für die Abfrageoptimierung beim Vorliegen von Fremd
funktionen dar. Neuschreibe-Regeln werden verwendet, um die
Semantik der Fremdfunktionen auszudrücken. Die Neuschreibe-
Regeln werden spezifiziert, wobei eine Erweiterung auf die
Abfragesprache angewendet wird. Die Neuschreibe-Regeln bie
ten einen Optimierer mit Raum für äquivalente Abfragen. Die
Erfindung stellt auch sicher, daß ein optimaler Plan (sowohl
aus den Plänen der ursprünglichen Abfrage, als auch der al
ternativen Abfragen, die durch die Neuschreibe-Regeln er
zeugt werden) erhalten wird.
Die Erfindung hat viele andere Aspekte, die in der detail
lierten Beschreibung vollständig beschrieben sind. Z. B. ver
wendet die Erfindung ein regelunabhängiges Verfahren zum An
wenden der Neuschreibe-Regeln, um äquivalente Abfragen zu
erzeugen, und nutzt die Gemeinsamkeiten der Abfragen aus,
wenn die alternativen Abfragen optimiert werden.
Die Fähigkeit, Fremdfunktionen in einer relationalen Abfrage
aufzurufen, ist für viele Anwendungen wichtig, da sie ihnen
die Möglichkeit schafft, existierende Codes und Daten, die
sich außerhalb der Datenbank befinden, auszunutzen. Die vor
liegende Erfindung ermöglicht die effiziente und wirksame
Optimierung von Abfragen, die Fremdfunktionen aufrufen.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung
werden nachfolgend unter Bezugnahme auf die beiliegenden
Zeichnungen näher erläutert. Es zeigt
Fig. 1 ein Blockdiagramm eines relationalen Datenbanksy
stems gemäß der Erfindung;
Fig. 2 ein elementares Flußdiagramm, das die Aspekte der
Erfindung darlegt;
Fig. 3 ein Flußdiagramm, das ein abgeschlossenes Verfahren
gemäß dem zweiten Aspekt der Erfindung, der äquiva
lente Abfragen erzeugt, darstellt; und
Fig. 4 ein Blockdiagramm eines Ausführungsbeispiels des
Optimierungsverfahren gemäß der Erfindung.
Die Ausführungsbeispiele der Erfindung werden nachfolgend
unter Bezug auf die Fig. 1-4 erörtert. Für Fachleute
ist es jedoch ohne weiteres offensichtlich, daß die hierin
mit Bezug auf diese Figuren gegebene detaillierte Beschrei
bung erklärenden Zwecken dient, während sich die Erfindung
über diese begrenzten Anwendungsbeispiele hinaus erstreckt.
Die Erfindung betrifft ein relationales Datenbankverwal
tungssystem, das Verfahren und Vorrichtung zum Optimieren
von Abfragen, die Fremdfunktionen aufrufen, einschließt. Se
mantische Informationen werden in einer deklarativen Weise
(Verwenden einer einfachen Erweiterung der SQL (SQL = Stan
dard Query Language = Standard-Abfrage-Sprache)) durch das
Verwenden der Neuschreibe-Regeln, die die Semantik von
Fremdfunktionen ausdrücken, spezifiziert. Die Aufnahme von
semantischen Informationen vergrößert implizit den Auswahl
freiraum, der für den Optimierer verfügbar ist. Dann wird
ein optimaler Plan in einer aufwandsabhängigen Art ausge
wählt, der alle alternativen Wortverbindungen der Abfrage,
die sich durch die semantischen Informationen ergeben, be
rücksichtigt. Zusätzlich kann Heuristik in den Optimierungs
ansatz aufgenommen werden.
Fig. 1 ist ein Blockdiagramm, das ein relationales Daten
banksystem 2 gemäß der Erfindung darstellt. Das relationale
Datenbanksystem 2 empfängt eine Abfrage 10, die optimiert
werden soll. Die Abfrage wird einem Optimierer 11 zugeführt,
der die Abfrage 10 gemäß den Neuschreibe-Regeln 12 und den
Aufwandsinformationen 13 optimiert. Im speziellen empfängt
der Optimierer 11 eine Eingangsabfrage, die verarbeitet wer
den soll, erzeugt alternative Abfragen, wobei er die Neu
schreibe-Regeln 12 verwendet, und wählt dann einen "optima
len" Plan aus einer Gruppe von Abfragen, die die Eingangsab
frage und die alternativen Abfragen einschließen, aus. Das
relationale Datenbanksystem 2 umfaßt auch einen relationalen
Ausführungsprozessor 14, der auf relationale Datenbanktabel
len 15 und Fremdfunktionen 16 zugreifen kann. Die Neuschrei
be-Regeln 12 gehören entweder zu den Fremdfunktionen 16 oder
den Datenbanktabellen 15. Der Spezifizierer der Neuschrei
be-Regeln 12 stellt sicher, daß die Abfragen bezüglich aller
Datenbanken auf jeder Seite der Neuschreibe-Regel äquivalent
sind. Die Fremdfunktionen 16 zeigen Daten und Operationen
an, die sich außerhalb der Datenbank befinden (z. B. Fremdbe
dingungen, Fremdtabellen oder Fremdfunktionen).
Fig. 2 ist ein elementares Flußdiagramm, das die Aspekte der
Erfindung darstellt. Wie in Fig. 2 gezeigt ist, gibt es drei
Aspekte der Erfindung. Der erste Aspekt betrifft das Schaf
fen 20 von Neuschreibe-Regeln für Fremdfunktionen. Der zwei
te Aspekt betrifft das Erzeugen 22 alternativer Abfragen,
wobei die Neuschreibe-Regeln verwendet werden. Der dritte
Aspekt betrifft die Auswahl 24 eines optimalen Plans, wobei
ein aufwandsabhängiger Lösungsansatz verwendet wird. Jeder
dieser Aspekte ist nachfolgend detailliert beschrieben.
Ein erster Aspekt der Erfindung bezieht sich auf das Schaf
fen 20 von Neuschreibe-Regeln 12 für Fremdfunktionen 16 in
einem relationalen Datenbanksystem 2. Eine Neuschreibe-Regel
wird verwendet, um eine Abfrage, die Fremdfunktionen (z. B.
Tabellen) einschließt, als eine äquivalente Abfrage, die ein
unterschiedliches Format hat, aber noch Fremdfunktionen
(z. B. Tabellen) einschließt, neu zu schreiben. Die äquiva
lente Abfrage kann effizienter ausgeführt werden. Daher ver
größern die Neuschreibe-Regeln für die Fremdfunktionen durch
Berücksichtigen von semantischen Informationen über Fremd
funktionen das Optimierungspotential von Abfrageoptimierern.
Der Schwerpunkt der Erfindung ist auf Verbindungsabfragen
gerichtet.
Verbindungsabfragen entsprechen einer Untermenge von SQL,
die die folgende Form hat:
SELECT columnlist FROM Tablelist
WHERE cond1 AND . . . AND condn.
SELECT columnlist FROM Tablelist
WHERE cond1 AND . . . AND condn.
Es sei zu bemerken, daß die "WHERE"-Eintragung eine Verbin
dung der Bedingungen cond1 . . . condn ist.
Jede Verbindungsabfrage ist eine zweidimensionale Auswahl-
Projektions-Verbindungs-Abfrage (SPJ-Abfrage; SPJ = select
project-join). Die Verwendung dieser Untermenge von SQL ist
am weitesten verbreitet. Obwohl die Ausführungsbeispiele der
Erfindung, die nachfolgend erörtert werden, sich auf Verbin
dungsabfragen konzentrieren, ist die Erfindung allgemein auf
alle SQL-Abfragen anwendbar.
Aus Gründen der geeigneten Schreibweise können Verbindungs
abfragen als Bereichsberechnungsausdrücke dargestellt wer
den, wie es bei nicht-rekursiver Datenaufzeichnung (Datalog)
gemacht wird. Es sei z. B. Ullman, Principals of Database and
Knowledge-Bases Systems, Computer Science Press, 1989, be
trachtet. In einem Bereichsberechnungsausdruck wird eine
Verbindungsabfrage als ein Satz von Verbindungen (Zeichen
folgen (litarals)) dargestellt. Jede Verbindung ist ein Ta
bellenname mit Argumenten. Es gibt in einem solchen Be
reichsberechnungsausdruck keine expliziten Gleichungsaus
drücke. Statt dessen sind die Gleichungen implizit als Glei
chung von Variablen in dem Ausdruck dargestellt. Wie bei der
SQL ist das Ergebnis eines solchen Bereichsberechnungsaus
drucks eine Reihe von Tupeln. Dieser Lösungsansatz unter
scheidet sich von dem Lösungsansatz, der in deduktiven Da
tenbanken (Deductive Databases) verwendet wird, bei denen
ein Satz Semantik zu einer derartigen Schreibweise gehört.
In der Bereichsberechnungsschreibweise wird keine spezielle
Syntax benötigt, um Bezug auf Fremdfunktionen zu nehmen. Ein
Bezug auf eine Fremdfunktion erscheint bei der Bereichsbe
rechnungsschreibweise einfach als eine weitere Verbindung.
Deshalb sind Fremdfunktionen als Fremdtabellen modelliert
(die Ausdrücke Fremdfunktionen und Fremdtabellen sind aus
tauschbar verwendet). Das folgende Beispiel zeigt, wie bei
der Bereichsberechnungsdarstellung Abfrage ein beliebiger
Bezug auf Fremdfunktionen in der Abfrage einheitlich als
eine Verbindung dargestellt ist, obwohl der Bezug als eine
Bedingung, Tabelle oder Funktion in der SQL-Abfrage auftre
ten kann.
Es sei eine leicht modifizierte Version der Abfrage betrach
tet, die in Beispiel 1 formlos festgelegt ist. Es sei ange
nommen, daß eine Tabelle BUSINESS fünf Attribute hat: NAME
(= Name), TYPE (= Typ), EARNING (= Gewinn), SIZE (= Größe)
und ETAKID. Die Karte auf dem MapEngine ist als eine Fremd
tabelle MAP modelliert, die aus den Attributen ETAKID und
LOCATION (= Standort) besteht. Das Attribut ETAKID in beiden
Tabellen bezieht sich auf den Schlüssel im MapEngine. Aus
Beispiel 1 sei in Erinnerung gerufen, daß die Funktion Insi
de als eine Bedingung wirkt, die überprüft, ob ein Punkt in
nerhalb eines Fensters liegt. Deshalb kann sie als eine Be
dingung in der "WHERE"-Eintragung der Abfrage dargestellt
sein. Zuletzt verwendet eine Fremdfunktion EXPECTED-REVENUE
(= erwartete Einnahme) die Größe eines Restaurants als ein
Eingangsargument und berechnet den erwarteten durchschnitt
lichen Gewinn eines Restaurants. Die folgende Abfrage findet
alle Restaurants, die in der Landkarte im Fenster w sind und
einen höheren Gewinn als den erwarteten Betrag aufweisen.
SELECT BUSINESS.NAME, MAP.LOCATION
FROM BUSINESS, MAP
WHERE BUSINESS.TYPE = "Restaurant"
AND BUSINESS.ETAKID = MAP.ETAKID
AND INSIDE (w, MAP.LOCATION)
AND BUSINESS.EARNING < EXPECTED-REVENUE (BUSINESS.SIZE).
SELECT BUSINESS.NAME, MAP.LOCATION
FROM BUSINESS, MAP
WHERE BUSINESS.TYPE = "Restaurant"
AND BUSINESS.ETAKID = MAP.ETAKID
AND INSIDE (w, MAP.LOCATION)
AND BUSINESS.EARNING < EXPECTED-REVENUE (BUSINESS.SIZE).
Die Bereichsberechnungsdarstellung für die gleiche Abfrage
lautet:
Query(name) : - Business(name, "Restaurant", earn, size, eid) Map(eid, location), Insidebb(w, location), Exp_Revbf (size, exp),
earn < exp.
Query(name) : - Business(name, "Restaurant", earn, size, eid) Map(eid, location), Insidebb(w, location), Exp_Revbf (size, exp),
earn < exp.
Es sei zu bemerken, daß, abhängig davon, ob die Fremdfunk
tion als eine Tabelle (MAP) oder als eine Funktion (EXPEC-
TED-REVENUE) erscheint, sich ihre Darstellung in der Be
reichsberechnungsschreibweise unterscheidet. Die Fremdfunk
tion, die als eine Tabelle erscheint, weist nämlich Argumen
te für jedes seiner Attribute auf, wohingegen die Fremdfunk
tion, die einer Funktion entspricht, eine Argumentposition
für jede Eingangsargumentposition und eine Argumentposition
für jede Ausgangsargumentposition aufweist. Die oberen Indi
zes werden verwendet, um die Sicherheitsbeschränkungen auf
den Fremdfunktionen anzuzeigen. Für eine n-stellige Verbin
dung ist der obere Index eine n-stellige Liste, eine für je
de Argumentposition. Der obere Index b (bound = gebunden)
zeigt an, ob das Argument über einem Wert liegen muß, bevor
die Fremdfunktion aufgerufen wird. Andernfalls ist der obere
Index f (free = frei). Zum Beispiel erfordert die Verbindung
Inside, daß ihre beiden Argumente gebunden sind. Zur Verein
fachung ist der obere Index nachfolgend weggelassen, wenn
alle Argumente frei sein können, oder wenn die Bindungsin
formationen nicht relevant sind.
Bei der Bereichsberechnungsdarstellung erscheinen die Bezüge
auf alle Tabellen, fremd oder lokal (d. h. gespeichert),
gleichartig in der Abfrage. Dennoch ist der Unterschied zwi
schen einer Fremdtabelle und einer Datenbanktabelle sowohl
für die Abfrageauswertung, als auch für die Abfrageoptimie
rung von Bedeutung.
Das Ziel der Neuschreibe-Regeln besteht darin, semantische
Informationen, die mit Fremdtabellen und deren Beziehung zu
Datenbanktabellen verbunden sind, festzuhalten. Die Darstel
lung der Neuschreibe-Regeln ist deklarativ. Die Deklarativi
tät der Neuschreibe-Regeln macht es nicht nur möglich, eine
formale Semantik zu schaffen, sondern erleichtert regelunab
hängige Algorithmen zum Anwenden der Regeln und zum Erzeugen
22 von Alternativen zu der vorgegebenen Abfrage.
Die Darstellung der Neuschreibe-Regeln erfordert nur einfa
che Erweiterungen zu der Abfragesprache SQL. Ganz allgemein
hat eine Neuschreibe-Regel das Format REWRITE QUERY1 AS
QUERY2 (= Schreibe Abfrage1 als Abfrage2 neu), wobei QUERY1
und QUERY2 relationale Abfragen sind. Es ist erforderlich,
daß das Ergebnis der Abfragen die gleiche Stellenzahl hat
(d. h., Anzahl von Spalten). Ein wichtiger Punkt liegt darin,
daß die Anwendung einer solchen Regel, durch eine Vorein
stellung, eine neue Abfrage erzeugt, die vom Optimierer 11
als eine Alternative zu der vorgegebenen Abfrage 10 berück
sichtigt wird (obwohl man spezifizieren könnte, daß nur die
neue Abfrage berücksichtigt werden soll). In jedem Fall er
folgt die letzte Auswahl 24 einer Abfrage aus der gegebenen
Abfrage 10 und den durch die Neuschreibe-Regeln erzeugten
Abfragen 22 basierend auf einer kostenabhängigen Optimie
rung.
Die folgende Schreibweise wird für Neuschreibe-Regeln ver
wendet.
El(x, y) = Er(x, z).
Die Ausdrücke El(x, y) und Er(x, z) sind Verbindungsausdrücke
und werden die linke Seite (lhs = left-hand side), bzw. die
rechte Seite (rhs = right-hand side) der Regel genannt. Die
Variablen x, y und z sind geordnete Sätze von Variablen. Die
Variablen des Satzes x, der auf jeder Seite der Neuschrei
be-Regel erscheint, werden universelle Variablen genannt.
Wie nachfolgend genauer erörtert wird, sagt die Neuschrei
be-Regel aus, daß die linke Seite der Regel durch die rechte
Seite der Regel "über universelle Variablen" ersetzt werden
kann. Zusätzlich wird die Bezeichnung ⇔ verwendet, um zwei
Regeln gleichzeitig zusammen anzuzeigen (d. h. zweiseitige
Regeln).
Als ein erstes Beispiel einer Neuschreibe-Regel sei die Re
gel betrachtet, die in Beispiel 1 formlos verwendet wurde.
Diese Neuschreibe-Regel kann in einer Bereichsberechnungs
schreibweise wie folgt dargestellt werden:
Map(eid, loc), Inside(window, loc) ⇒ Mapclip(eid, loc, window).
Map(eid, loc), Inside(window, loc) ⇒ Mapclip(eid, loc, window).
Es sei zu bemerken, daß die Sicherheitsbeschränkung für Map
clip gleich (ffb) ist. In dieser Neuschreibe-Regel sind alle
Variablen eid, loc und window universelle Variablen.
Die folgende Regel wurde als ein zweites Beispiel für eine
Neuschreibe-Regel formlos in Beispiel 2 verwendet.
Business(name, "Restaurant", earn, size, eid) Map(eid, loc)
⇔ Map_Restaurant(eid, loc).
Diese Regel besagt, daß man, um die Standorte aller Restau
rants zu erhalten, entweder eine Verbindung zwischen Busi
ness und Map hernehmen, oder die ETAK-Datei Map_Restaurant
verwenden kann. Hierbei sind eid und loc universelle Varia
blen.
Die folgende Regel für den MapEngine besagt als ein drittes
Beispiel für eine Neuschreibe-Regel, daß man trotz der ge
trennten Überprüfung, ob ein Punkt zu zwei vorgegebenen Fen
stern gehört, überprüfen kann, ob der Punkt zum Überschnei
dungsbereich (intersect) der Fenster gehört.
Inside(w1,point), Inside(w2,point) ⇒ Inside(w,point),
Intersect (w1,w2,w).
Beim Verwenden dieser Neuschreibe-Regel kann das Problem,
alle Unternehmen in einer Vielzahl von Fenstern zu finden,
auf das Problem reduziert werden, alle Unternehmen im Über
schneidungsbereich der Fenster zu finden.
Die folgende Neuschreibe-Regel erleichtert als ein viertes
Beispiel für eine Neuschreibe-Regel die Abfrageoptimierung.
Oft ist es nützlich, in der Lage zu sein, dem Optimierer an
zuzeigen, daß ein Index existiert, so daß er zu einem geeig
neten Zeitpunkt verwendet werden kann. Es sei z. B. angenom
men, daß ein Index der Datei Map für eine gegebene Variable
eid existiert. Eine Neuschreibe-Regel, die auf dieser Annah
me basiert, würde dann folgendermaßen lauten:
Map(eid, loc) ⇔ Mapwithidbf(eid, loc).
Die Sicherheitsbeschränkung auf die Funktion Mapwithid ist
(bf), was erforderlich macht, daß die Variable eid spezifi
ziert wird, bevor sie aufgerufen wird. Genau wie bei einer
herkömmlichen Optimierung ist die Verwendung eines Indexes
aufwandsabhängig, wie auch die Wahl zwischen der vorgegebe
nen Abfrage und der Abfrage, die durch eine Anwendung der
obengenannten Regeln erhalten wird, aufwandsabhängig ge
troffen werden muß.
Allgemein gesagt wird die Neuschreibe-Regel durch das Anwen
den der Regeln von links nach rechts verwendet, um Alterna
tiven zu der gegebenen Abfrage zu erzeugen. Die formale Se
mantik, die einer Neuschreibe-Regel zugeordnet ist, hat fol
gende zwei Komponenten: Äquivalenz und Richtungsgebunden
heit. Zwei Abfragen sind äquivalent, wenn sie die gleiche
Menge von Tupeln bezüglich einer beliebigen Datenbank zur
Folge haben.
Zuerst stellt eine Neuschreibe-Regel die folgende Äquivalenz
sicher. Die Abfragen Ql und Qr haben für eine Neuschreibe-
Regel, El(x, y) ⇒ Er(x, z), bezüglich einer beliebigen Da
tenbank, wie nachfolgend definiert, die gleiche Menge von
Tupeln zur Folge.
Ql(x) : - El(x, y)
Qr(x) : - Er(x, z).
Qr(x) : - Er(x, z).
Durch die Wirkung der obengenannten Äquivalenz kann eine
Neuschreibe-Regel verwendet werden, um eine äquivalente Ab
frage durch "Substitution" von Unterausdrücken in einer Ab
frage abzuleiten. Es sei beachtet, daß nur die universellen
Variablen als Projektionsvariablen von Qr und Ql auftreten.
Als nächstes spezifiziert eine Neuschreibe-Regel auch eine
Richtungsgebundenheit, was durch den Pfeil (⇒) angezeigt
ist. Der Pfeil wird verwendet, um anzuzeigen, daß nur ein
Auftreten der linken Seite der Regel durch das entsprechende
Auftreten der rechten Seite (und nicht umgekehrt) "substi
tuiert" werden sollte, um äquivalente Abfragen zu erzeugen.
Es sei das erste Beispiel einer Neuschreibe-Regel, das oben
erörtert ist, betrachtet. Die Semantik beinhaltet, daß die
Abfragen Ql und Qr bezüglich einer beliebigen Datenbank die
gleiche Menge von Tupeln bezüglich einer beliebigen Daten
bank zur Folge haben müssen.
Ql(eid,loc,window) : - Map(eid,loc), Inside(window,loc)
Qr(eid,loc,window) : - Mapclip(eid,loc,window).
Qr(eid,loc,window) : - Mapclip(eid,loc,window).
Diese Neuschreibe-Regel tritt in der Abfrage Q, die nachfol
gend aufgeführt ist, auf. Die linke Seite der Regel paßt die
zweiten und die dritten Verbindungen von Q an. Durch das Er
setzen dieser Verbindungen durch die entsprechende Substitu
tion für die rechte Seite der Regel wird die Abfrage Q′ er
halten.
Q(name, loc) : - Pusiness (name, "Restaurant", earn,eid)
Map(eid, loc), Inside(w, loc), Intersect(w1, w2, w)
Q′ (name, loc) : - Business(name, "Restaurant", earn,eid),
Mapclip(eid, loc, w), Intersect(w1, w2, w).
Map(eid, loc), Inside(w, loc), Intersect(w1, w2, w)
Q′ (name, loc) : - Business(name, "Restaurant", earn,eid),
Mapclip(eid, loc, w), Intersect(w1, w2, w).
Die Richtungsgebundenheit der Semantik beinhaltet, daß die
Regel im dritten Beispiel der Neuschreibe-Regeln nicht auf
die Abfrage Q angewendet werden kann, obwohl die Anwendung
eine äquivalente Abfrage zur Folge hätte.
Bei dem bevorzugten Ausführungsbeispiel des ersten Aspektes
der Erfindung werden die Neuschreibe-Regeln dem relationalen
Datenbanksystem 2 geliefert 20, wobei eine höhere Program
miersprache, z. B. eine Erweiterung der Abfragesprache SQL,
verwendet wird. Die Neuschreibe-Regeln werden folglich, ob
wohl oben die Bereichsberechnungsschreibweise verwendet ist,
tatsächlich in einer Erweiterung der SQL dargestellt, um die
Erörterung zu vereinfachen. Zum Beispiel könnte das erste
Beispiel der Neuschreibe-Regel, die oben genannt ist, fol
gendes Aussehen haben:
REWRITE
SELECT eid, loc
FROM MAP
WHERE INSIDE (windows, loc)
AS
SELECT eid, loc
FROM MAPCLIP
WHERE MAPCLIP.WINDOW = WINDOW.
SELECT eid, loc
FROM MAP
WHERE INSIDE (windows, loc)
AS
SELECT eid, loc
FROM MAPCLIP
WHERE MAPCLIP.WINDOW = WINDOW.
Der zweite Aspekt der Erfindung betrifft den Lösungsansatz,
der verwendet wird, um alternative Abfragen zu erzeugen 22,
wobei die Neuschreibe-Regeln 12 verwendet werden. In diesem
Abschnitt wird der Einfachheit halber angenommen, daß die
Abfragen keine Ungleichheitsbeschränkungen aufweisen.
Es ist wichtig, anzumerken, daß ein Unterausdruck, der zur
linken Seite der Neuschreibe-Regel äquivalent ist, durch die
rechte Seite der Neuschreibe-Regel ersetzt werden kann, um
eine neue Abfrage abzuleiten. Obwohl dieser Schritt der Er
setzung einfach ist, ist es schwieriger, zu entscheiden, ob
ein Unterausdruck zur linken Seite einer Neuschreibe-Regel
äquivalent ist. Folglich wird ein neuartiges Verfahren, um
die Äquivalenz von zwei Verbindungsabfragen zu überprüfen,
nachfolgend beschrieben.
Unter Verwendung des herkömmlichen Wissens könnte man glau
ben, daß zwei Verbindungsabfragen äquivalent sind, wenn und
nur wenn es eine derartige Umbenennung von Variablen gibt,
daß eine Eins-zu-eins-Abbildung unter den Zeichenfolgen in
der Abfrage existiert. Anders ausgedrückt heißt das, daß
zwei Abfragen äquivalent sind, wenn und nur wenn sie iso
morph sind. Die bloße Substitution der rechten Seite einer
Neuschreibe-Regel für einen Unterausdruck, von dem bekannt
ist, daß er äquivalent zur linken Seite der Wiedereinschrei
be-Regel ist, ist jedoch nicht ausreichend. Das folgende
Beispiel zeigt, daß eine solche einfache Substitution nicht
genug ist, um Äquivalenz sicherzustellen.
Die linke Seite der folgenden Neuschreibe-Regel paßt die Ab
frage Ql an.
Business(name, "Restaurant", earn, size, eid), Map(eid, loc)
⇔ Map_Restaurant(eid, loc).
⇔ Map_Restaurant(eid, loc).
Die Neuschreibe-Regel kann also verwendet werden, um eine
alternative Abfrage Ql′ aus der Abfrage Ql zu erzeugen.
Ql(loc) : - Business(bizname, "Restaurant", earn, size, eid)
Map(eid, loc) Owner(bizname, "bob")
Ql′(loc) : - Map_Restaurant(eid, loc) Owner(bizname, "bob").
Map(eid, loc) Owner(bizname, "bob")
Ql′(loc) : - Map_Restaurant(eid, loc) Owner(bizname, "bob").
Es sei beachtet, daß Ql′ die Folge des Anwendens des einfa
chen Substitutsansatzes auf Ql ist. Es sei angenommen, daß
"bob" nur Motels besitzt. Die Abfrage Ql gibt einen leeren
Satz zurück, der jedoch von der Abfrage Ql′ nicht benötigt
wird.
Der springende Punkt des Problems mit der einfachen Sub
sitution liegt darin, daß die Semantik der Neuschreibe-Re
geln eine Äquivalenz von beiden Seiten der Regel nur über
universelle Variablen sicherstellt. Deshalb ist es für eine
Abbildung nicht genug, der Bedingung der Eins-zu-eins-Abbil
dung zu genügen. Die Abbildung muß zusätzlichen Beschränkun
gen genügen. Folglich muß ein neuartiges Verfahren, um die
Äquivalenz von zwei Verbindungsabfragen zu überprüfen, so
wohl der Eins-zu-eins-Abbildung, als auch den zusätzlichen
Beschränkungen genügen. Dieses neuartige Verfahren wird Sub
stitions-Abbildung bezeichnet.
Substitutions-Abbildung ist folgendermaßen definiert. Es sei
l ⇒ r eine Neuschreibe-Regel und Q eine Abfrage. Eine Ab
bildung von Variablen aus l auf die aus Q wird eine Substi
tutions-Abbildung der Regel auf die Abfrage genannt, wenn:
- (a) die Abbildung der Zeichenfolgen in l auf die Zei chenfolgen in Q eine Eins-zu-eins-Abbildung ist;
- (b) nur universelle Variablen in l (wenn überhaupt) auf Konstanten in Q abgebildet werden;
- (c) Abbildungen von nicht-universellen Variablen nicht unter den Projektionsvariablen aus Q sein können;
- (d) die Abbildungen der nicht-universellen Variablen aus l nicht in irgendeiner Zeichenfolge aus Q, die nicht in dem Abbild von l ist, auftreten können; und
- (e) eine Konstante in l nur auf sich selbst abgebildet werden kann.
Die Bezeichnung "Abbild" einer Variable (oder einer Zeichen
folge) bezogen auf eine Abbildung bezeichnet in der Defini
tion die Variable (oder die Zeichenfolge), auf die die er
stere abgebildet ist. Das Abbild einer Abfrage bezogen auf
eine Abbildung bezieht sich ebenfalls auf die Zeichenfolgen,
die durch das Anwenden der Abbildung auf die Abfrage erhal
ten werden.
Ein Vergleich der obigen Definition mit der Abbildung, die
in Beispiel 4 durchgeführt ist, zeigt, daß die durchgeführte
einfache Abbildung in diesem Fall die Bedingung (d) ver
letzt, da die Zeichenfolge bizname eine Abbildung der
nicht-universellen Variablen ist. Es sei eine Variante der
Abfrage in Beispiel 4 betrachtet, bei der die Zeichenfolge
Owner (Eigentümer) durch Historic(loc) (geschichtlich) in Q
ersetzt ist. In einem derartigen Fall ist der Bedingung (d)
genügt und die Abbildung genügt der Substitutions-Abbildung.
Um eine alternative Abfrage zu erzeugen, wird eine Neu
schreibe-Regel auf eine Abfrage angewendet, wobei zwei ele
mentare Schritte verwendet werden. Zuerst sei identifiziert,
ob ein solcher Unterausdruck existiert, daß es eine Substi
tutions-Abbildung der Regel auf die Abfrage gibt. Als zwei
tes werde der Unterausdruck mit der rechten Seite der Regel
(nach dem Umbenennen) substitutiert.
Ein Verfahren zum Erzeugen aller äquivalenter Verbindungsab
fragen, die durch das Anwenden einer Regel auf eine Abfrage
erhalten werden, hat folgendes, Aussehen. Alle möglichen Ab
bildungen, die der Bedingung der Eins-zu-eins-Abbildung ge
nügen, könnten festgelegt werden. Dann könnte das Verfahren
feststellen, ob die Abbildungen den zusätzlichen Beschrän
kungen der Substitutions-Abbildung genügen. Bei Abfragen mit
keinen sich wiederholenden Tabellennamen können Anwendungen
einer Regel in einer Zeit O (n log n) in der Größe der Ab
frage und der Neuschreibe-Regel (n) durchgeführt werden. Da
in der Praxis Abfragen meist in diese Kategorie fallen,
bringt die Anwendung der Regel für die meisten Abfragen ei
nen geringen Gesamtaufwand.
Das Ziel des Einführens der Neuschreibe-Regeln liegt darin,
den Optimierer 11 mit Alternativen, die wegen der Semantik
der Fremdtabellen auftreten, zu präsentieren. Die alterna
tiven Abfragen werden durch die Anwendung(en) der Regeln er
zeugt 22. Jede der erzeugten Abfragen ist zur vorgegebenen
Abfrage äquivalent.
Der Abschluß der Abfrage stellt den Satz von allen Alterna
tiven, die durch das Verwenden der Neuschreibe-Regel erzeugt
werden können, dar. Genauer gesagt besteht der Abschluß ei
ner Abfrage Q bezogen auf einen Satz R von Neuschreibe-Re
geln aus dem Satz von Abfragen:
closure (R,Q) = {Q′| Q ⇒ *RQ′}
Das Symbol Q ⇒ *RQ′ wird verwendet, um die Tatsache zu er
fassen, daß Q′ aus Q durch eine begrenzte Reihe von Anwen
dungen von Neuschreibe-Regeln (aus dem Satz R entnommen) er
halten wurde.
Die Neuschreibe-Regeln können auch in einer Folge, wie sie
durch das folgende Beispiel dargestellt ist, verwendet wer
den.
Es sei die folgende Abfrage betrachtet.
Q(loc) : - Map(eid, loc), Inside(w1, loc), Inside(w2, loc).
Es kann die Regel aus dem dritten Beispiel der Neuschreibe-
Regeln angewendet werden, um die Abfrage Q′ zu erzeugen:
Q′(loc) : - Map(eid, loc), Inside(w, loc), Intersect(w1},
w2}, w).
Danach hat eine Verwendung des ersten Beispiels der Neu
schreibe-Regeln die folgende Abfrage Q′′ zur Folge.
Q′′(loc) : Mapclip(eid, loc, w), Intersect(w}, w2}, w).
Die Optimierung befaßt sich üblicherweise mit dem Auswählen
eines optimalen Plans für eine Abfrage. Beim Vorliegen von
Neuschreibe-Regeln bewirkt die Erfindung jedoch, daß ein
Satz von äquivalenten Abfragen (Abschluß) erzeugt wird. Das
Optimierungsproblem besteht folglich darin, die günstigste
unter den optimalen Plänen der Abfragen im Abschluß der vor
gegebenen Abfrage herauszufinden. Der Optimierungsweg der
Erfindung besteht darin, zuerst einen Satz von äquivalenten
Abfragen (Schritt 1) 22a zu erzeugen, und dann den günstig
sten unter den optimalen Plänen, die für jede Abfrage erhal
ten werden, zu wählen 24 (Schritt 2). Schritt 1 wird unten
detailliert beschrieben. Schritt 2 wird im dritten Aspekt
der Erfindung beschrieben.
Eine Abfrage und einen Satz von Neuschreibe-Regeln vorausge
setzt, berechnet ein Abschlußverfahren den Abschluß der Ab
frage bezogen auf den Satz von Neuschreibe-Regeln. Das Ab
schlußverfahren ist in Fig. 3 dargestellt.
Fig. 3 ist ein Flußdiagramm eines Ausführungsbeispiels des
Abschlußverfahrens gemäß dem zweiten Aspekt der Erfindung.
Der Abschluß ist der Satz von äquivalenten Abfragen, der von
der Eingangsabfrage und den Neuschreibe-Regeln gebildet
wird. Das Verfahren beginnt mit der Entscheidung 31, ob eine
neue Abfrage zum Verarbeiten verfügbar ist. Bei der ersten
Iteration ist die neue Abfrage die Eingangsabfrage 10 und
ist verfügbar. Bei nachfolgenden Abfragen sind die neuen Ab
fragen die alternativen Abfragen, die durch andere Abschnit
te des Verfahrens erzeugt worden sind.
Wenn keine Abfragen verfügbar sind, ist das Verfahren in je
dem Fall beendet. Wenn andererseits festgestellt wird 31,
daß eine oder mehrere neue Abfragen verfügbar sind, dann
wird eine nächste neue Abfrage erhalten 33. Als nächstes
wird eine Entscheidung 34 getroffen, die darauf basiert, ob
mindestens eine Neuschreibe-Regel verfügbar ist, um verwen
det zu werden. Diese Entscheidung 34 würde zumindest fest
stellen, ob, z. B., ein Aufrufen einer Fremdfunktion minde
stens eine Neuschreibe-Regel, die ihr zugeordnet ist, be
sitzt. Wenn keine Neuschreibe-Regel zum Anwenden auf die
Abfrage verfügbar sind, springt das Verfahren zu Entschei
dung 31 zurück, um die nächste Abfrage zu verarbeiten.
Wenn andererseits festgestellt wird 34, daß mindestens eine
Neuschreibe-Regel existiert, wird eine neue Neuschreibe-Re
gel erhalten 35. Die nächste Neuschreibe-Regel ist eine der
Neuschreibe-Regeln, die zum Anwenden auf die Abfrage verfüg
bar sind. Die nächste Neuschreibe-Regel wird dann in einer
Entscheidung 36, die feststellt, ob eine Substitions-Abbil
dung von der Neuschreibe-Regel auf die Abfrage durchgeführt
werden kann, verwendet. Die Anforderungen für eine Substi
tutions-Abbildung wurden oben detailliert erörtert. Wenn die
Substitutions-Abbildung mißlingt, kehrt das Verfahren zu
Entscheidung 34 zurück, um festzustellen, ob eine weitere
Neuschreibe-Regel verfügbar ist. Wenn die Substitutions-Ab
bildung erfolgreich ist, wird eine neue Abfrage aus der Neu
schreibe-Regel (in Gebrauch) und der Abfrage (in Gebrauch)
erzeugt. Danach springt das Verfahren in den Fällen, in de
nen die Neuschreibe-Regel mehr als eine Substitutions-Abbil
dung für die in Gebrauch befindliche Abfrage (nicht die neu
erzeugte Reihe) besitzt, zu Entscheidung 36 zurück.
Ein Beispiel eines Programmier-Codes für einen speziellen
Abschlußalgorithmus (gen_closure = erzeuge Abschluß) ist im
Anhang A enthalten. Der Algorithmus ruft wiederholt die
Funktion rewrite (neuschreiben), die ebenfalls im Anhang A
enthalten ist, auf. Eine Neuschreibe-Regel r und eine Abfra
ge Q vorausgesetzt, leitet die Funktion rewrite(r,Q) alle
Abfragen, die durch eine einzelne Anwendung von r auf Q er
halten werden können, ab. Der Ausdruck "fehlerfreie Anwen
dung" (sound application) im Anhang A bezieht sich auf er
folgreiche Substitutions-Abbildung. Der Algorithmus gen_clo
sure ist iterativ. Während jeder Iteration existiert ein
Satz von Abfragen (neu), die als Ursachen wirken, um zusätz
liche Abfragen durch Aufrufen der Funktion rewrite zu erzeu
gen. Nur diese abgeleiteten Abfragen, die ganz neu erzeugt
worden sind, wirken als Ursachen für die nächste Iteration.
Der Algorithmus gen_closure ist ein fehlerfreies und kom
plettes Verfahren, um den Abschluß zu erhalten.
Um wirksam auf die relevanten Regeln zuzugreifen, ist es be
vorzugt, die Regeln in einer Regeltabelle (siehe Fig. 4),
die auf die Verbindungen, die auf der linken Seite der Regel
auftreten, indiziert ist, aufzubewahren. Es kann auch vor
teilhaft sein, Regelklassen zu verwenden, die es ermögli
chen, daß die Regeln in Klassen aufgeteilt sind, und dann
derart angewendet werden, daß alle Regeln einer vorgegebenen
Klasse vor irgendwelchen Regeln einer anderen Klasse ange
wendet werden.
Allgemein gesprochen hängt die Beendigung des in Fig. 3 ge
zeigten Abschlußverfahrens davon ab, ob der Abschluß der Ab
frage bezüglich einem Satz von Neuschreibe-Regeln begrenzt
ist oder nicht. Folglich endet das Verfahren, wenn und nur
wenn der Abschluß begrenzt ist. Es könnten jedoch derartige
Abfragen und Neuschreibe-Regeln existieren, daß der Abschluß
einer Abfrage bezüglich einem Satz von Neuschreibe-Regeln
ein unbegrenzter Satz ist. Als Folge sind mehrere Bedingun
gen identifiziert, um den Abschluß zu erleichtern.
Es sind zwei Bedingungen beschrieben, um einen Abschluß si
cherzustellen, wenn ein Satz von Neuschreibe-Regeln allen
Bedingungen genügt. Die erste Bedingung ist eine Bedingung
der Eigenschaft der nichtanwachsenden Länge (Non-Increasing
Length Property). Diese Bedingung macht es erforderlich, daß
die Länge der rechten Seite jeder Regel kürzer oder gleich
lang wie die linke Seite ist. Eine Bereichsberechnungsaus
drucks-Länge kann z. B. als die Anzahl von Verbindungen in
dem Ausdruck definiert sein. Folglich genügt eine Neuschrei
be-Regel der Bedingung der nichtanwachsenden Länge, wenn die
rechte Seite der Neuschreibe-Regel nicht länger als die lin
ke Seite ist. Die folgende Neuschreibe-Regel genügt z. B. der
Bedingung der Eigenschaft der nichtanwachsenden Länge nicht.
Map_Restaurant(eid, loc) ⇒ Business(name, "Restaurant",
earn, eid), Map(eid, loc).
Die zweite Bedingung ist eine Bedingung einer Ungleich-
Null-Eigenschaft. Die Eigenschaft der nichtanwachsenden Län
ge ist nicht in der Lage, Situationen zu erfassen (d. h. über
inklusive), bei denen, obwohl eine örtliche Verletzung der
Bedingung der Eigenschaft der nichtanwachsenden Länge exi
stiert, die Länge der neugeschriebenen Abfrage nicht über
eine gewisse Grenze hinaus anwachsen kann. Die Bedingung der
Ungleich-Null-Eigenschaft erfaßt diese Situationen. Diese
Prüfung zur Beendigung eines Satzes von Neuschreibe-Regeln R
hat zwei Schritte. Zuerst wird ein Satz von Ungleichungen
Ineq(R) von einem Satz R von Neuschreibe-Regeln abgeleitet.
Dieser Satz Ineq(R) von Ungleichungen ist folgendermaßen
aufgebaut:
- - Zuordnen einer Integer-Variable zu jedem Tabellennamen.
- - Erhalten eines algebraischen Ausdrucks für jeden Bereichs berechnungsausdruck durch: Ersetzen jeder Zeichenfolge durch die Variable, die zu dem Tabellennamen gehört, und Ersetzen einer Verbindung durch eine Addition.
Für jede Neuschreibe-Regel der Form lhs ⇒ rhs wird eine
arithmetische Ungleichung left_Exp · Right_Exp gebildet, bei
der left_Exp und right_Exp algebraische Ausdrücke für lhs
bzw. rhs sind. Zusätzlich ist jede Variable größer oder
gleich Null. Der Satz von arithmetischen Ungleichungen, die
zu einem Satz R von Neuschreibe-Regeln gehören, wird von
Ineq(R) erfaßt. Ein Satz von Neuschreibe-Regeln R hat einen
begrenzten Abschluß für jede Abfrage, wenn keine Variable in
Ineq(R) Null ist. Eine Variable in Ineq(R) ist Null, wenn
sie für jede Lösung von Ineq(R) dem Wert Null zugeordnet
werden muß. Wirksame Algorithmen, die auf linearen Program
miertechniken basieren, sind bekannt und erhältlich, um zu
überprüfen, ob eine Variable in einem Satz von linearen Un
gleichungen für alle Lösungen Null ist.
Die Bedingung der Ungleich-Null-Eigenschaft ist durch das
folgende Beispiel demonstriert. Es sei der Satz von zykli
schen Neuschreibe-Regeln betrachtet, der die Datei Map_Re
staurant im zweiten Beispiel der Neuschreibe-Regeln ein
schließt, welcher der Eigenschaft der nichtanwachsenden Län
ge nicht genügt. Die entsprechenden Ungleichungen sind (m
für Map, r für Restaurant, d für Map_Restaurant):
{m · 0, d · 0, r · 0, d · m+r, m+r · d}.
Offensichtlich existiert keine Variable, die Null ist, und
deshalb existiert ein begrenzter Abschluß.
Zusätzlich zu den obigen Bedingungen kann auch Heuristik
verwendet werden, um die Beendigung des Abschlußverfahrens
sicherzustellen, wenn keiner der Beendigungsbedingungen ge
nügt wird (z. B. der Eigenschaft der nichtanwachsenden Länge
und der Ungleich-Null-Eigenschaft). In solch einem Fall spe
zifiziert das Abschlußverfahren nur eine begrenzte Teilmen
ge des Abschlusses. Techniken, um solch eine Teilmenge zu
spezifizieren, sind nachfolgend erörtert. Außerdem kann,
wenn gewünscht, auch Heuristik verwendet werden, um einige
Abfragen, die in Schritt 1 erzeugt werden, von einer Berück
sichtigung in Schritt 2 des Optimierungsverfahrens auszu
schließen.
Der Abschluß einer Abfrage ist typischerweise auf einige Ab
fragen begrenzt. Dennoch sind Heuristik-Techniken nützlich,
um die Anzahl von Anwärtern äquivalenter Abfragen, die für
die Optimierung in der zweiten Phase der Optimierung berück
sichtigt werden, zu beschränken. Diese Heuristik-Techniken
können aus zwei Typen bestehen. Zuerst kann nur ein Teilsatz
des Abschlusses spezifiziert werden. Als nächstes können ei
nige der erzeugten alternativen Abfragen von einer Berück
sichtigung im Schritt 2 des Optimierungsverfahrens ausge
schlossen werden.
Zur selektiven Spezifikation des Abschlusses kann man ein
Budget verwenden, um die maximale Zeit festzulegen, die für
die Spezifikation verwendet wird. Das Abschlußverfahren kann
einfach erweitert werden, um diese Modifikation aufzunehmen.
Eine andere Alternative besteht darin, die Neuschreibe-Re
geln zu modifizieren. Dieser alternative Lösungsansatz ist
durch das folgende Beispiel dargestellt.
Eine Neuschreibe-Regel, z. B.:
Business(name, "Restaurant", earn, size, eid), Mapclip(eid,
loc, window) ⇒ Business(name, "Restaurant", earn size,
eid), Mapclip(eid, loc, small_win), Intersect(window, w,
small_win)
kann modifiziert werden, um wie folgt zu lauten:
Business(name, "Restaurant", earn, size, eid), Mapclip(eid,
loc, window) ⇒ Business(name, "Restaurant", earn, size,
eid), SpecialMapclip(eid, loc, window).
Die modifizierte Neuschreibe-Regel enthält einen neuen Ta
bellennamen SpecialMapclip. Anders als die ursprüngliche
(unmodifizierte) Regel kann die modifizierte Neuschreibe-Re
gel nicht wiederholt verwendet werden, da es keine Neu
schreibe-Regel gibt, bei der SpecialMapclip in der linken
Seite auftritt. Nachdem jedoch der Abschluß erzeugt worden
ist, wird der Ausdruck "M"apclip(eid, loc, small_win), Inter
sect(window, w, small_win)" für den Ausdruck "SpecialMap
clip(eid, loc, window)" substituiert.
Das Beispiel zeigt also, daß ein Unterausdruck als eine ein
zelne Zeichenfolge behandelt werden kann, wodurch die Größe
des wirksamen Abschlusses reduziert wird. Die Auswahl des
Unterausdruckes wird verwendet, um die Teilmenge des Ab
schlusses zu bestimmen, die zur Spezifikation ausgewählt
wird. Durch die Verwendung dieser Strategie kann man sicher
stellen, daß jeder Satz von Neuschreibe-Regeln der Bedingung
der Eigenschaft der nichtanwachsenden Länge genügt und da
durch eine Beendigung sicherstellt.
Eine weitere Anwendung der Heuristik liegt darin, äquivalen
te Abfragen, die nicht optimiert werden müssen, zu identifi
zieren. Dies kann durch eine grobe Aufwandsschätzung oder
durch die Verwendung des folgenden Lösungsansatzes festge
legt werden. Einige der Neuschreibe-Regeln (z. B. das dritte
Beispiel der Neuschreibe-Regeln) können als "stets verbes
sernd" markiert werden. Wenn eine solche Regel eine Abfrage
Q′ von einer Abfrage Q ableitet, dann muß die Abfrage Q
nicht länger optimiert werden, da vorausgesetzt ist, daß Q′
stets einen besseren optimalen Plan zur Folge haben wird.
Abfrageoptimierung beim Vorliegen von Neuschreibe-Regeln und
Fremdtabellen erfordert neue Dimensionen des herkömmlichen
Optimierungsproblems. Zum ersten macht das Vorliegen von
Fremdtabellen sowohl die Einführung von neuen Verbindungs
verfahren als auch von Aufwandsmodellen, die für Fremdtabel
len geeignet sind, erforderlich. In diesem Abschnitt wird
vorausgesetzt, daß das Aufwandsmodell jedem vorgegebenen
Plan im Ausführungsraum eine reale Nummer zuweist und dem
Prinzip der Optimalität genügt (siehe Cormen u. a., Intro
duction to Algorithmus, The MIT Press, 1990), das in allen
relationalen Optimierern implizit ist, die eine dynamische
Programmierung verwenden. Ferner muß die herkömmliche Ver
bindungsspezifikationsphase sicherstellen, daß nur die Neu
ordnungen der Bindungen berücksichtigt werden, die den Si
cherheitsbeschränkungen genügen, da die Fremdtabellen Si
cherheitsbeschränkungen haben können. Mit anderen Worten
heißt das, daß sichergestellt werden muß, daß die Bindungen,
die den Fremdfunktionen weitergegeben werden, den Sicher
heitsbeschränkungen genügen. Dies ist ein ausführlich stu
diertes Problem. Es sei z. B. Ullman, Principals of Database
and Knowledge-Base Systems, Computer Science Press, 1989,
für eine Erörterung betrachtet. Schließlich liegt die Aufga
be darin, einen optilalen Plan aus einem angereicherten
Raum, der eine Vielzahl äquivalenter Abfragen enthält, aus
zuwählen 24.
Natürlich muß jede Erörterung über eine Optimalität mit Be
zug auf einen Raum von Möglichkeiten geschehen. Die Ausfüh
rung einer Abfrage wird üblicherweise als beschrifteter Ver
bindungsbaum (siehe Krishnamurthy u. a., Optizimation of
nonrecursive queries, Proceedings of International Conferen
ce on Very Large Data Bases, Seiten 128-137, Kyoto, Japan,
August 1986), bei dem der innere Knoten eine Verbindungs
operation und jeder Astknoten eine Basistabelle darstellt,
syntaktisch dargestellt. Gemäß der Erfindung kann ein Ast
knoten auch eine Fremdtabelle sein. Der Optimierer berück
sichtigt alle links-tief bezeichneten Bäume, wobei folglich
ein lineares Ordnen der Verbindungen erzwungen wird. Daher
ist der Ausführungsraum als Raum aller links-tiefen Verbin
dungsbäume für jede äquivalente Abfrage, die aus Schritt 1
des Optimierungsvorgangs erhalten wird, definiert. Schritt 2
des Optimierungsvorgangs besteht dann darin, einen Plan des
geringsten Aufwandes aus dem Ausführungsraum auszuwählen.
Fig. 4 ist ein Blockdiagramm eines Ausführungsbeispiels des
Optimierungsvorgangs gemäß der Erfindung. Fig. 4 stellt die
funktionalen Einheiten, die dem Optimierer 11, der in Fig. 1
gezeigt ist, zugeordnet sind, dar. Insbesondere verwendet
der Optimierungsvorgang einen Generator 40 für äquivalente
Abfragen, der die Neuschreibe-Regeln 12 verwendet, die in
einer Regeltabelle 42 gespeichert sind, um die äquivalenten
Abfragen zu erzeugen. Der Optimierungsvorgang verwendet
ebenfalls einen neusortierbaren Einheiten-Generator 44 und
einen Abfrageoptimierer 46. Der Abfrageoptimierer 46 ist
durch die Wechselwirkung mit Lokal-Optimierern 47 und einer
Plantabelle 38 in der Lage, effizient zu arbeiten. Der Opti
mierungsvorgang gemäß der Erfindung ist nachfolgend genauer
erörtert.
Der Schritt 2 des Optimierungsvorgangs wird von dem Abfrage
optimierer 46 durchgeführt, der einen Aufwandsoptimierungs-
Algorithmus verwendet, um den optimalen Plan aus dem Ausfüh
rungsraum festzulegen oder auszuwählen. Nachfolgend werden
zwei verschiedene Lösungsansätze für den Aufwandsoptimie
rungs-Algorithmus beschrieben.
Der erste Lösungsansatz für den Aufwandsoptimierungs-Algo
rithmus ist eine direkte Erweiterung des herkömmlichen dyna
mischen Programmierungsoptimierungs-Algorithmus. Der optima
le Plan für jede Abfrage im Abschluß und eine darauffolgende
Auswahl des Planes, der den niedrigsten Aufwand unter diesen
hat, kann erhalten werden, da der Ausführungsraum eine Ver
einigung der Ausführungsräume der äquivalenten Abfragen ist.
Wenn z. B. Q₁ und Q₂ die einzigen zwei Abfragen im Abschluß
sind, kann man die optimalen Pläne P₁ und P₂ für Q₁ bzw. Q₂
feststellen, und dann den weniger aufwendigen Plan aus P₁
und P₂ auswählen. Daher ist der folgende Aufwandsoptimie
rungs-Algorithmus eine direkte Erweiterung des herkömmlichen
dynamischen Programmierungs-Algorithmus und umfaßt die fol
genden Schritte:
- (i) Optimieren jeder Abfrage, wobei der herkömmliche dyna mische Programmierungs-Algorithmus verwendet wird, und Erhalten des besten Planes für die Abfrage.
- (ii) Auswählen des unaufwendigsten unter den besten Plänen, die im Schritt (i) erhalten wurden.
Es sei beachtet, daß der Schritt (i) durch einen beliebigen
herkömmlichen relationalen Optimierer (siehe z. B. Selinger
u. a., Access path selection in a relational database mana
gement system, Proceedings of the ACM SIGMOD International
Symposium on Management of Data, Seiten 23-34, Boston,
Juni 1979) mit der einfachen Erweiterung, um die Sicherheit
zu überprüfen, während eine Verbindungsreihenfolge berück
sichtigt wird, abgeschlossen werden kann. Der Raum, der für
diesen Algorithmus erforderlich ist, ist der maximale Raum,
der zur Optimierung einer beliebigen der äquivalenten Abfra
gen erforderlich ist. Der Algorithmus hat jedoch eine gerin
ge Zeit-Komplexität, da er aus der Tatsache, daß unter den
Abfragen im Abschluß Gemeinsamkeiten bestehen, keinen Nutzen
zieht.
Der zweite Lösungsansatz für den Aufwandsoptimierungs-Algo
rithmus wird bevorzugt, da er viel schneller als die direkte
Erweiterung arbeitet. Der Schlüssel zu diesem Lösungsansatz
liegt darin, daß der Kostenoptimierungs-Algorithmus Gemein
samkeiten der Abfragen über eine Vielzahl von äquivalenten
Abfragen während der Optimierung ausnutzt. Obwohl der Algo
rithmus, der auf der herkömmlichen dynamischen Programmie
rung basiert, die Gemeinsamkeiten der Unterabfragen einer
einzelnen Abfrage ausnutzt, um die Zeit-Komplexität der Op
timierung zu reduzieren, nutzt er nicht die Gemeinsamkeiten
der Unterabfragen über eine Vielzahl von äquivalenten Abfra
gen während der Optimierung aus.
Bevor der verbesserte Aufwandsoptimierungs-Algorithmus be
schrieben wird, folgt eine Beschreibung, wie die Unterab
fragen, die zwei oder mehr äquivalente Abfragen gemeinsam
haben, identifiziert werden können. Diese Identifikation
wird während des Schrittes 1 des Optimierungsvorgangs durch
geführt, bei dem die äquivalenten Abfragen im Abschluß durch
die Anwendung der Regeln erzeugt werden 22. Das folgende
Beispiel stellt den Identifikationsvorgang dar.
Es sei eine Anwendung des zweiten Beispiels der Neuschrei
be-Regeln auf die Abfrage Q betrachtet, die die Abfrage Q′
zur Folge hat. Die Datei Historic des MapEngine umfaßt die
Standorte aller historischer Örtlichkeiten. Die Fremdtabelle
Pricebf(loc, amount) (Preisbf(loc, Betrag)) liefert den Wert
des realen Grundstücks. Die folgende Abfrage fragt nach den
Preisen des realen Grundstückes der Plätze, die historisch
sind und Restaurants haben.
Q(amount) : - Historic(loc), Business (bizname, "Restaurant", earn, eid) Map(eid, loc), Price(loc, amount)
Q′(amount) : - Historic(loc), Map_Restaurant(eid, loc), Price (loc, amount).
Q(amount) : - Historic(loc), Business (bizname, "Restaurant", earn, eid) Map(eid, loc), Price(loc, amount)
Q′(amount) : - Historic(loc), Map_Restaurant(eid, loc), Price (loc, amount).
Es sei zu beachten, daß beide Abfragen den Unterausdruck
"Historic(loc), Price(loc, amount)" gemeinsam haben. Diese
Gemeinsamkeit kann zu der Zeit, zu der die Neuschreibe-Regel
dadurch verwendet wird, durch die Beachtung der Tatsache,
daß die ersten und die letzten Zeichenfolgen durch die An
wendung der Neuschreibe-Regel unverändert bleiben, erfaßt
werden. Der optimale Plan für die gemeinsame Unterabfrage
Historic(loc), Price(loc, amount) muß festgelegt werden, da
er ein Teil der Optimierung der Abfage Q ist. Er kann wie
derverwendet werden, wenn der optimale Plan für die Abfrage
Q′ festgelegt wird.
Gemäß dem verbesserten Aufwandsoptimierungs-Algorithmus wird
jede Abfrage einzeln optimiert, wobei jedoch der optimale
Plan für eine beliebige Unterabfrage, die mit einer anderen
äquivalenten Abfrage übereinstimmt (nur diese Unterabfragen)
in einer Plantabelle 48 gespeichert ist, so daß sein optima
ler Plan nicht neu abgeleitet werden muß. Die Plantabelle 48
wird somit zu Rate gezogen, um zu überprüfen, ob der Plan
schon existiert, wenn die optimalen Pläne gebildet werden.
Ein Beispiel des Programmier-Codes für den verbesserten Auf
wandsoptimierungs-Algorithmus ist im Anhang A (d. h. das Ver
fahren Optplan) dargestellt. Im Unterschied zum herkömmli
chen Algorithmus folgt der verbesserte Algorithmus einem
strukturierten Lösungsansatz (top-down). Die elementaren
Fälle des Verfahrens Optplan, bei dem die Abfrage nur eine
oder zwei Verbindungen hat, wurden weggelassen. Der verbes
serte Algorithmus ruft Lokal-Optimierer auf, um Qi aus Si
und qi (siehe Anhang A) zu erzeugen. Die Lokal-Optimierer 47
verwenden Informationen über das Aufwandsmodell. Gemäß dem
verbesserten Aufwandsoptimierungs-Algorithmus werden optima
le Pläne nach einer hierarchischen Methode (bottom-up) auf
gebaut, d. h., die Anwärter für den optimalen Plan für eine
Abfrage werden aus den optimalen Plänen seiner unmittelbaren
Unterabfragen gebildet. Wie in herkömmlichen Optimierern be
handelt der Optimierer 11 die Verbindungen (z. B. Gehalt <
50 000), die in Boolsche Bedingungen (sargable predicates =
sargable Prädikate) eingebaut sind, speziell. Sie werden
nicht neusortiert, sondern statt dessen wird ihre Wirkung so
wohl für Auswahlfaktoren, als auch für zum Festlegen der Zu
griffspfade in dem Lokal-Optimierer berücksichtigt. Schließ
lich sei zu beachten, daß der verbesserte Algorithmus die
Verbindungsklassen, die den Sicherheitsbeschränkungen (im
Anhang A nicht gezeigt) nicht genügen, entfernt.
Beim Zugriff auf die Plantabelle 48 ist es vorteilhaft, si
cherzustellen, daß die Suche nach dem optimalen Plan einer
Abfrage effizient ist. Ein effizienter Lösungsansatz besteht
darin, die Plantabelle als eine Hash-Tabelle zu unterhalten,
in der jede Abfrage als eine geordnete Liste von Integer-
Zahlen dargestellt ist. Jede Integer-Zahl entspricht dem In
dex des Eintrags einer globalen Zeichenfolgentabelle, in der
die Zeichenfolgen der Abfragen gespeichert sind. Deshalb
läuft der Vergleich von zwei Abfragen darauf hinaus, zu
überprüfen, ob zwei Zeichenfolgen gleich sind und folglich
sehr effizient ausgeübt werden können. Das folgende Beispiel
zeigt sowohl die Darstellung der Zeichen, als auch die Ge
meinsamkeiten der Abfragen, die in dieser Darstellung erfaßt
sind.
Dieses Beispiel verwendet die Abfragen Q und Q′ aus Beispiel
7. Es sei angenommen, daß die Indizes für die globale Zei
chenfolgentabelle, die den Zeichenfolgen in der Abfrage Q
entsprechen, von links nach rechts 1, 2, 3 und 4 sind. Des
wegen wird Q durch die Zeichenfolge (1234) dargestellt. Ist
jedoch die Neuschreibe-Regel einmal verwendet, wird eine
neue Zeichenfolge Map_Restaurant(eid, loc) geschaffen, die
mit einem Index 5 in die globale Zeichenfolgentabelle einge
tragen wird. Die Darstellung für Q′ ist (145). Die Optimie
rung der Abfrage Q schafft den optimalen Plan für (14), der
dann in der Plantabelle gespeichert wird. Während der Opti
mierung der Abfrage Q′ wird zuerst die Plantabelle zu Rate
gezogen, um zu sehen, ob ein Plan für (145) schon existiert.
Da er noch nicht existiert, werden die optimalen Pläne für
jeden Unterplan rekursiv aufgebaut. Insbesondere wird vor
dem Aufbauen des optimalen Plans für (14) die Plantabelle zu
Rate gezogen. Der optimale Plan von (14) wird zur Optimie
rung wiederverwendet.
Der verbesserte Aufwandsoptimierungs-Algorithmus hat die ge
wünschten Eigenschaften, daß für keine Unterabfrage ein Un
terplan neu abgeleitet wird. Zudem werden nur Pläne für ge
meinsame Unterabfragen in der Plantabelle zurückbehalten.
Es ist offensichtlich, daß Algorithmen, die auf dynamischer
Programmierung basieren, entweder als strukturierter Algo
rithmus (top-down) oder als hierarchischer Algorithmus (bot
tom-up) (es sei Cormen u. a., siehe oben, betrachtet) vor
liegen können. Deshalb kann eine Variante des Aufwandsopti
mierungs-Algorithmus geschaffen werden, nämlich ein hierar
chischer Lösungsansatz (bottom-up). Tatsächlich können zwei
mögliche Varianten in einem hierarchischen Lösungsansatz
(bottom-up) existieren. Eine Möglichkeit besteht darin, alle
äquivalenten Abfragen zusammen zu optimieren. Folglich wer
den optimale Pläne für alle Unterabfragen der Größe n auf
gebaut, bevor irgendein optimaler Plan für irgendeine Unter
abfrage der Größe (n+1) aufgebaut wird. Dieser Lösungsansatz
hat den Vorteil, daß weniger Raum erforderlich ist als beim
strukturierten Lösungsansatz (top-down), da zum Bilden eines
beliebigen Plans der Größe (n+1) nur Pläne der Größe n benö
tigt werden und so Raum wiederverwendet werden kann. Ungün
stigerweise ist die Zeitdauer für die Vollendung des optima
len Planes für eine beliebige der äquivalenten Abfragen län
ger als beim strukturierten Lösungsansatz (top-down), da die
Unterabfragen für alle äquivalenten Abfragen zusammen gebil
det werden. Eine andere Variante des hierarchischen Lösungs
ansatzes (bottom-up) besteht darin, daß die Optimierung für
jede Abfrage einzeln durchgeführt wird, die optimalen Pläne
von gemeinsamen Unterabfragen jedoch gesichert werden. Ob
wohl dies den Fehlbetrag des vorigen Lösungsansatz verbes
sert, leidet die Variante unter dem Problem, nicht in der
Lage zu sein, die größte gemeinsame Unterabfrage gemeinsam
zu haben, wie das folgende Beispiel zeigt.
Es sei angenommen, daß zwei Abfragen im Abschluß mit den
Darstellungen (1234) und (1235) existieren. Die Abfragen
teilen die Unterabfrage (123). Es sei angenommen, daß der
optimale Plan für (1234), und daher für (123), schon aufge
baut ist. Es sei die Aufgabe betrachtet, einen optimalen
Plan für (1235) zu erstellen. Wenn der Optimierer den hie
rarchischen Lösungsansatz (bottom-up) verwendet, erkennt er
die Existenz des im Cache-Speicher abgelegten Plans (123)
nicht, bis alle kleineren Pläne aufgebaut sind. Deshalb wer
den unnötige Zugriffe auf die Plantabelle gemacht.
Somit gibt es Für und Wider für die Verwendung einer hierar
chischen (bottom-up) oder einer strukturierten (top-down)
Version des Optimierungs-Algorithmus. Es kann bevorzugt
sein, die strukturierte Variante (top-down), die mit einer
Verzweigungs- und Grenz-Strategie vergrößert ist, zu verwen
den. Wenn folglich von einem teilweisen Plan herausgefunden
wurde, daß er den Aufwand des optimalen Planes, der bisher
gefunden wurde, überschritten hat, dann muß dieser teilweise
Plan nicht vollendet werden, da er garantiert nicht optimal
ist.
Heuristik-Techniken können ebenfalls in den Optimierungs-
Vorgang eingebaut werden. Z. B. kann Heuristik verwendet wer
den, um die Reihenfolge festzulegen, in der die Abfragen op
timiert werden. Es kann auch vorteilhaft sein, die Suche
nach einem optimalen Plan aufzugeben (statt der Spezifizie
rung des gesamten Raums), nachdem eine signifikante Verbes
serung bezüglich des optimalen Plans für die vorgegebene Ab
frage erhalten wurde.
Günstige und verknüpfte Prädikate können ebenfalls eine
wichtige Rolle in der Optimierung spielen. In einem herkömm
lichen relationalen Optimierer werden die Auswahlbedingungen
nicht wie andere Datenbankbeziehungen neu geordnet. Aller
dings werden die Auswahlbedingungen so früh wie möglich aus
gewertet. Tatsächlich steigt der Aufwand für die Neusortie
rung von Verbindungen exponential mit der Anzahl der Zei
chenfolgen, die neu sortiert werden. Deshalb bringt die un
nötige Neusortierung einen zusätzlichen Gesamtaufwand für
den Optimierer mit sich. Es sei eine Fremdtabelle, wie z. B.
Inside(w, loc), die überprüft, ob ein Punkt loc in einem
Fenster w liegt, betrachtet. Der Aufruf einer solchen Tabel
le ist nicht aufwendig. Deshalb kann der Optimierungsaufwand
durch das Benennen bestimmter Fremdtabellen als unaufwendige
Tabellen gesenkt werden. Die Zeichenfolgen in einer Abfrage,
die zu unaufwendigen Tabellen gehören, werden nicht neu sor
tiert, während der Rest der Zeichenfolgen neu sortiert wird.
Die Zeichenfolgen, die zu unaufwendigen Tabellen gehören,
werden so früh wie möglich durch das sichere Sortieren der
neusortierbaren Zeichenfolgen ausgewertet. Das Vorliegen von
unaufwendigen Verbindungen bringt den Schritt des Erzeugens
von neusortierbaren Einheiten durch den neusortierbaren Ein
heiten-Generator 44 aus Fig. 4 mit sich. Die sargablen Prä
dikate in einem relationalen Optimierer haben die Eigen
schaft, daß sie auf die Speichersystemebene hinabgeschoben
werden können. Es sei Selinger u. a., siehe oben, betrach
tet. Genauso kann die Möglichkeit, anzuzeigen, welche unauf
wendigen Tabellen mit einer neusortierbaren Tabelle ver
knüpft sind, ebenfalls geschaffen werden. Diese Informatio
nen können während der Optimierung ausgenutzt werden.
Die Abfrageverarbeitungs-Techniken für Fremdfunktionen, die
vom Optimierer 46 verwendet werden, werden nun beschrieben.
Insbesondere liegt der Schwerpunkt auf Abfrageverarbei
tungs-Techniken für die Verbindungsoperation. In der nach
folgenden Beschreibung des Aufwandsmodells wird vorausge
setzt, daß die Fremdtabelle als die rechte Ableitung eines
Verbindungsknotens in einem links-tiefen Baum auftritt. Des
halb wird in einem links-tiefen Verbindungsbaum vorausge
setzt, daß sich die Fremdtabellen mit einer anderen Tabelle
(Zwischentabelle oder Basistabelle), die als linke Tabelle
bezeichnet wird, verbinden.
Der Schlüsselpunkt liegt darin, daß ein beliebiger Zugriff
auf eine Fremdtabelle die Sicherheitsbeschränkungen berück
sichtigen muß. Bevor ein Tupel aus einer Fremdtabelle erhal
ten werden kann, muß er deshalb an den Bindungen vorbeige
führt werden, die wegen der Sicherheitsbeschränkungen erfor
derlich sind. In den meisten Systemen wird für jede Bindung
ein Aufruf für die Fremdfunktion gemacht. Eine derartige
Technik ist zum Aufrufen von Fremdfunktionen, die einen ho
hen Aufrufaufwand haben und viele Tupel als Ausgabe zurück
geben, uneffizient. Deshalb besteht gemäß der Erfindung die
Abfrageverarbeitung für Fremdfunktionen aus dem Betrachten
der "Verbindung" mit einer Fremdtabelle, das zwei Phasen
aufweist: Aufruf und verbleibende Verbindung. Die Aufruf-
Phase besteht aus der Übergabe der Werte für die Grenz-Argu
mente der Fremdtabelle von der linken Tabelle. Es gibt ver
schiedene Arten, auf die dieser Aufruf auftreten kann:
In diesem Schema wird für jeden Tupel in der linken Tabelle
ein Aufruf für die entsprechenden Grenz-Argumente, wie sie
in der Sicherheitsbeschränkung spezifiziert sind, durchge
führt.
In diesem Schema wird für alle unterschiedlichen Werte der
Grenz-Argumente von der linken Beziehung ein einzelner Auf
ruf für die Grenz-Argumente durchgeführt.
Die Gruppen-Aufruf-Technik addiert den zusätzlichen Gesamt
aufwand des Identifizierens des Satzes der unterschiedlichen
Werte für die Grenz-Argumente. Jedoch weist sie den Vorteil
auf, daß weniger Aufrufe nötig sind, was bei Fremdtabellen
wichtig ist, bei denen jeder Aufruf aufwendig ist (z. B. das
Berechnen der mittleren Entfernung eines Punktes von allen
anderen Punkten). Außerdem ist der Gruppen-Aufruf überlegen,
wenn die linke Tabelle schon vor der Verbindung nach den
Grenz-Argumenten sortiert ist.
Da ein Aufruf einen Satz von Tupeln erzeugt, ist der Schritt
der verbleibenden Verbindung ähnlich einer herkömmlichen
Verbindung. Ein beliebiges Verbindungs-Verfahren kann ver
wendet werden. Die Auswahlbedingungen, die für eine oder
mehrere freie (f) Argumente der Fremdtabelle gelten, werden
ebenfalls während dieser Phase ausgewertet. Die einfachste
Auswahl für die verbleibende Verbindung ist eine verschach
telte Schleife, bei der die Tupel, die für jeden Aufruf er
zeugt werden, als die innere Tabelle für die Verbindung be
handelt werden. Der einzige Unterschied besteht darin, daß
sich die innere Tabelle für jeden Aufruf ändert (potenti
ell). Dieses Verfahren für die verbleibende Verbindung kann
mit den zwei Techniken für den Aufruf kombiniert werden.
Die Kombination des einfachen Aufrufs und der Wahl der ver
schachtelten Schleifenverbindungs-Technik resultiert in ei
nem Verbindungs-Algorithmus, der der herkömmlichen ver
schachtelten Schleifenverbindung ähnlich ist, und der als
verschachtelte Fremdschleifenverbindung bezeichnet wird (FNL
- foreign nested loop). Die Kombination des Gruppen-Aufrufs
und der Wahl der verschachtelten Schleifenverbindung resul
tiert in einem Algorithmus, der der Sortieren-Mischen-Ver
bindung ähnlich ist, und der als Fremd-Sortieren-Mischen-
Verbindung (FSM) bezeichnet wird. Ein Beispiel des Program
mier-Codes für den FSN-Algorithmus erscheint im Anhang B
(d. h. Foreign Sort Merge Join Algorithm = Fremd-Sortieren-
Mischen-Verbindungs-Algorithmus). Der FSM-Algorithmus wird
bevorzugt, wenn der Aufruf von Fremdtabellen aufwendig ist.
Schließlich wurde bei Postgres das Auffangen der Ergebnisse
des Aufrufs vorgeschlagen, um die Anzahl der Aufrufe zu sen
ken. Eine derartige Alternative kann mit dem vorliegenden
Lösungsansatz für das Abfrageverfahren verwendet werden.
Siehe z. B. Stonebraker u. a., siehe oben.
Das Aufwandsmodell muß in der Lage sein, den Aufwand für ei
nen beliebigen vorgegebenen Plan zu berechnen. Bei einem
herkömmlichen relationalen Optimierer enthält ein Deskriptor
für eine Tabelle statistische Informationen über die Tabel
le, wie z. B. die Anzahl der eindeutigen Werte in jeder Argu
mentposition (d. h. in jeder Spalte) und die erwartete Anzahl
von Tupeln in der Tabelle. Das Aufwandsmodell verwendet die
Deskriptoren, um den Aufwand einer Operation (z. B. einer
Verbindung) zu berechnen. Das Aufwandsmodell schafft auch
einen neuen Deskriptor, der die statistischen Informationen
der Zwischentabelle, die nach der Operation erhalten wird,
enthält.
Obwohl der Lösungsansatz der Erfindung in bezug auf das Auf
wandsmodell darin besteht, den relationalen Deskriptor für
die Datenbank und die Zwischentabellen zu erhalten, erfor
dert die Erfindung zwei Erweiterungen. Erstens muß ein De
skriptor für Fremdtabellen geschaffen werden. Zweitens müs
sen Erklärungen dafür geschaffen werden, wie ein derartiger
Deskriptor verwendet werden kann, um den Aufwand einer
Operation zu erhalten, und wie man den relationalen Deskrip
tor für die Zwischentabelle nach einer "Verbindung" mit der
Fremdtabelle ableiten kann.
Für jede Fremdtabelle können folgende Informationen regi
striert sein:
Sicherheitsbeschränkungen: Diese Informationen werden nicht
direkt durch das Kostenmodell verwendet, sondern werden
durch den Optimierer verwendet.
Aufwand: Der Aufwand für das einmalige Aufrufen der Fremd
tabelle.
Ausgangsanzahl: Die Anzahl von "Ausgangstupeln", die für
jeden Aufruf erwartet wird.
Bereichsgröße: Die Größe der Darstellung jedes Bereichsele
mentes. Die Kardinalswerte des Bereichs. Eine zulässige Zu
weisung zu den Kardinalswerten ist unbegrenzt.
Eindeutiger Wertfaktor: Die erwartete Anzahl von eindeutigen
Werten, die das Attribut für jeden Aufruf hat. Wenn dieser
Parameter nicht explizit, geschaffen wird, wird die Ausgangs
anzahl verwendet, um diesen Faktor anzunähern. Genauso wird,
wenn alle Bereiche begrenzt sind, eine konstante Verteilung
vorausgesetzt, um diesen Faktor zu berechnen.
Es ist offensichtlich, daß abgesehen von der Sicherheit alle
anderen Eigenschaften des Deskriptors für das Aufwandsmodell
von Bedeutung sind. Das Aufwandsmodell ist eine Erweiterung
des Modells, das von Chimenti u. a., Towards an open archi
tecture for LDL, Proceedings of the 15th International VLDB
Conference, Seiten 195-203, Amsterdam, August 1989, vorge
schlagen wurde. Es ist ebenfalls offensichtlich, daß die Pa
rameter im Deskriptor nicht notwendigerweise konstant sein
müssen, sondern ebenso von einer beliebigen Konstante, die
in der Abfrage zur Kompilierungszeit auftritt, abhängig sein
können. Ein Beispiel eines Deskriptors für eine Fremdtabelle
ist nachfolgend aufgeführt.
Der Deskriptor für die Fremdtabelle Intersectbbf(window1,
window2, window3) könnte durch einen Aufwand von 0.012ms,
eine Ausgangszahl von 1 und einen eindeutigen Wertfaktor von
1 charakterisiert sein. Die Größe jedes Bereichselementes
ist die, die einer Realzahl entspricht, und hat eine Be
reichsgröße - unbegrenzt. Es sei beachtet, daß die Ausgangs
zahl und der eindeutige Wertfaktor gleich 1 sind.
Um den Deskriptor zu berechnen, sind Erweiterungen notwen
dig. Zur Vereinfachung ist nur die Situation, in der die
Fremdtabelle als eine rechte Ableitung von links-tiefen
Verbindungsbäumen auftritt, beschrieben. Da vorausgesetzt
ist, daß die Fremdtabelle als ein rechter Astknoten auf
tritt, kann man auch die Existenz eines Deskriptors für die
Zwischenbeziehung, die auch als die linke Beziehung bezeich
net wird, voraussetzen. Im Optimierer 46 kann man eine kun
dengebundene Funktion registrieren, um den resultierenden
Deskriptor zu berechnen. Eine derartige Funktion kann den
Deskriptor für die linke Beziehung als seine Argumente ver
wenden. Nachfolgend ist ein vorgegebener Weg beschrieben, um
den Deskriptor für die Zwischentabelle zu berechnen.
Vor dem Beschreiben der Formeln zum Herleiten des Deskrip
tors ist es sinnvoll, den linken Eindeutigkeitsfaktor zu er
klären. Der linke Eindeutigkeitsfaktor berechnet die erwar
tete Anzahl von verschiedenen Aufrufen der Fremdtabelle für
den vorgegebenen Deskriptor für die linke Beziehung. Es exi
stieren mehrere Möglichkeiten, den linken Eindeutigkeitsfak
tor näherungsweise zu bestimmen. Eine Möglichkeit besteht
darin, eine einfache Formel für den linken Eindeutigkeits
faktor, wie unten beschrieben ist, zu verwenden.
Es ist erforderlich, daß für die Fremdtabelle eine oder meh
rere Argumentpositionen gebunden sind. Deshalb existiert ein
entsprechender Satz von Attributen A in der linken Bezie
hung, der die Werte für die Grenz-Argumente der Fremdtabelle
liefert. P sei das Produkt der erwarteten Anzahl von eindeu
tigen Werten für den Satz von Attributen A in der linken Be
ziehung. Der Deskriptor der linken Beziehung wird verwendet,
um P zu berechnen. Offensichtlich kann die Anzahl der ver
schiedenen Aufrufe P nicht übersteigen. Die Anzahl der ver
schiedenen Aufrufe kann jedoch auch N, die Anzahl von Tupeln
in der linken Beziehung, nicht übersteigen. Deshalb kann
min(P,N) als der linke Eindeutigkeitsfaktor verwendet wer
den. Es sei zu beachten, daß besagte Formel eine obere Gren
ze für den linken Eindeutigkeitsfaktor liefert. Ein Beispiel
zeigt eine Anwendung der Formel.
Es sei die folgende Abfrage betrachtet, die den Standort der
Endstationen für die Busrouten liefert.
Query(route, loc) : - Terminal(route, eid), Map(eid, loc).
Es sei vorausgesetzt, daß der Deskriptor für Terminal ein
hundert Tupel besitzt, daß jedoch erwartet wird, daß die An
zahl der erwarteten eindeutigen Werte im zweiten Argument
zehn beträgt. In einem solchen Fall wird der linke Eindeu
tigkeitsfaktor zu 10 berechnet.
In der folgenden Beschreibung ist vorausgesetzt, daß keine
anderen Auswahlbedingungen als die Gleichheit zwischen der
linken Tabelle und den Grenz-Argumenten der Fremdtabelle
existieren. Sowohl die Wirkung der Ausgangsauswahlbedingun
gen als auch die Wirkung der Projektion auf Fremdtabellen
auf dem Deskriptor werden dadurch berechnet, daß das Ergeb
nis der Verbindung der linken Beziehung mit der Fremdtabelle
als eine Zwischentabelle (wie ein beliebiger innerer Knoten
des Verbindungsbaums) behandelt wird. Deshalb gelten die
Aufwandsformeln, die nachfolgend geliefert werden, nur für
die Aufrufphase.
Anzahl von Tupeln: Die berechnete Anzahl von Tupeln, die der
Verbindung folgt, ist N′ = F*N, wobei F die Ausgangszahl der
Fremdtabelle und N die Anzahl der Tupel in der linken Bezie
hung ist.
Anzahl von eindeutigen Werten: Die berechnete Anzahl von
eindeutigen Werten, die dem i-ten Argument der Fremdtabelle
entsprechen, ist gegeben durch: UVFi*UI, wobei UVFi der ein
deutige Wertfaktor für das i-te Attribut ist. Der Parameter
UI ist der linke Eindeutigkeitsfaktor, der oben erörtert
wurde.
Aufwand: Der Aufwand der verschachtelten Fremdschleifen- und
Fremd-Sortieren-Mischen-Verbindung wird geliefert. Es sei
angenommen, daß N die Anzahl der Tupel in der linken Bezie
hung, C der Aufwand des Aufrufs der Fremdtabelle und UI der
Eindeutigkeitsfaktor ist. Die folgenden Aufwendungen gelten
nur für die Aufrufphase.
Geschachtelte Fremdschleife: C*N
Fremd-Sortieren-Mischen: Costsort(N) + UI*C.
Geschachtelte Fremdschleife: C*N
Fremd-Sortieren-Mischen: Costsort(N) + UI*C.
Claims (10)
1. Relationales Datenbanksystem (2) mit folgenden Merkma
len:
einer relationalen Datenbank (15) mit einer Mehrzahl von Tupeln;
mindestens einer Fremdfunktion (16) mit deklarativen Neuschreibe-Regeln (12), die dieser zugeordnet sind; und
einem Optimierer (11) zum Optimieren einer Abfrage (10), wobei auf die relationale Datenbank (15) und zumindest eine Fremdfunktion (16) zugegriffen wird, wobei Auf wandsinformationen (13) verwendet werden.
einer relationalen Datenbank (15) mit einer Mehrzahl von Tupeln;
mindestens einer Fremdfunktion (16) mit deklarativen Neuschreibe-Regeln (12), die dieser zugeordnet sind; und
einem Optimierer (11) zum Optimieren einer Abfrage (10), wobei auf die relationale Datenbank (15) und zumindest eine Fremdfunktion (16) zugegriffen wird, wobei Auf wandsinformationen (13) verwendet werden.
2. Relationales Datenbanksystem (2) nach Anspruch 1, bei
dem die Neuschreibe-Regeln (12) verwendet sind, um äqui
valente Abfragen zu erzeugen (22), aus denen ein optima
ler Plan ausgewählt wird (24).
3. Relationales Datenbanksystem (2) nach Anspruch 1 oder 2,
bei dem die Neuschreibe-Regeln (12), die jeder der
Fremdfunktionen (16) zugeordnet sind, in einer höheren
deklarativen Programmiersprache ausgedrückt sind.
4. Relationales Datenbanksystem (2) nach einem der Ansprü
che 1 bis 3,
bei dem die höhere deklarative Programmiersprache, die für die Neuschreibe-Regeln (12) verwendet ist, eine Er weiterung der SQL ist, die die Form "REWRITE Query1 AS Query2" aufweist, ist, und
bei dem die Neuschreibe-Regeln (12) in einer Regeltabel le (42), die auf die Verbindungen, die auf der linken Seite der Neuschreibe-Regeln (12) auftreten, indiziert sind.
bei dem die höhere deklarative Programmiersprache, die für die Neuschreibe-Regeln (12) verwendet ist, eine Er weiterung der SQL ist, die die Form "REWRITE Query1 AS Query2" aufweist, ist, und
bei dem die Neuschreibe-Regeln (12) in einer Regeltabel le (42), die auf die Verbindungen, die auf der linken Seite der Neuschreibe-Regeln (12) auftreten, indiziert sind.
5. Relationales, Datenbanksystem (2) nach einem der Ansprü
che 1 bis 4,
bei dem der Optimierer (11) Gemeinsamkeiten unter den Abfragen über eine Vielzahl von Abfragen ausnutzt, und
bei dem das relationale Datenbanksystem ferner eine Plantabelle (48) umfaßt, die vorher festgelegte optimale Pläne für Unterabfragen speichert, um die Gemeinsamkei ten auszunutzen.
bei dem der Optimierer (11) Gemeinsamkeiten unter den Abfragen über eine Vielzahl von Abfragen ausnutzt, und
bei dem das relationale Datenbanksystem ferner eine Plantabelle (48) umfaßt, die vorher festgelegte optimale Pläne für Unterabfragen speichert, um die Gemeinsamkei ten auszunutzen.
6. Relationales Datenbanksystem (2) nach einem der Ansprü
che 1 bis 5, bei dem die Aufwandsinformationen (13) Auf
wandsinformationen (13) über die Fremdfunktionen (16)
umfassen.
7. Verfahren zum Optimieren einer Abfrage (10), wobei rela
tionale Datenbanktabellen (15) und Fremdfunktionen (16)
aufgerufen werden, wobei das Verfahren folgende Schritte
aufweist:
- (a) Schaffen von Neuschreibe-Regeln (20) für die Fremd funktionen (16);
- (b) Empfangen einer Eingangsabfrage (10), die ausgeführt werden soll;
- (c) Erzeugen alternativer Abfragen (22) aus der Ein gangsabfrage (10) und den Neuschreibe-Regeln (12); und
- (d) Erzeugen eines optimalen Plans (24).
8. Verfahren nach Anspruch 7, bei dem der Schritt des Er
zeugens (c) das Festlegen umfaßt, ob eine linke Seite
von zumindest einer der Neuschreibe-Regeln (12) äqui
valent zu zumindest einem Abschnitt der Abfrage (10)
ist, wobei Substitutions-Abbildung (36) verwendet wird.
9. Verfahren nach Anspruch 7 und 8, bei dem der Schritt des
Erzeugens (d) folgende Schritte umfaßt:
- (d1) Erzeugen eines optimalen Plans für die Eingangsab frage (10) und für zumindest eine der alternativen Abfragen; und
- (d2) Auswählen von einem der optimalen Pläne (24).
10. Verfahren nach Anspruch 9, bei dem der Schritt des Er
zeugens (d1) die Gemeinsamkeiten unter den Abfragen über
eine Vielzahl von Abfragen verwertet.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/077,227 US5544355A (en) | 1993-06-14 | 1993-06-14 | Method and apparatus for query optimization in a relational database system having foreign functions |
Publications (1)
Publication Number | Publication Date |
---|---|
DE4416332A1 true DE4416332A1 (de) | 1994-12-15 |
Family
ID=22136817
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE4416332A Withdrawn DE4416332A1 (de) | 1993-06-14 | 1994-05-09 | Verfahren und Vorrichtung zur Abfrageoptimierung in einem relationalen Datenbanksystem mit Fremdfunktionen |
Country Status (4)
Country | Link |
---|---|
US (1) | US5544355A (de) |
JP (1) | JPH07141236A (de) |
DE (1) | DE4416332A1 (de) |
GB (1) | GB2279165A (de) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19621788A1 (de) * | 1995-08-30 | 1997-03-06 | Bayerisches Forschungszentrum | Datenbanksystem zur Verwaltung von Arrays |
US6272501B1 (en) | 1995-08-30 | 2001-08-07 | Peter Baumann | Database system for management of arrays |
DE10065323A1 (de) * | 2000-12-31 | 2002-07-18 | Siemens Ag | Steuerungsmethode für die Anordnung von graphischen Elementen |
Families Citing this family (95)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5671403A (en) * | 1994-12-30 | 1997-09-23 | International Business Machines Corporation | Iterative dynamic programming system for query optimization with bounded complexity |
CA2146171C (en) * | 1995-04-03 | 2000-01-11 | Bernhard Schiefer | Method for estimating cardinalities for query processing in a relational database management system |
US5742810A (en) * | 1995-08-31 | 1998-04-21 | International Business Machines Corporation | System, method and computer program product for passing host variables to a database management system |
USRE37965E1 (en) * | 1995-09-27 | 2003-01-07 | International Business Machines Corporation | Method for localizing execution or subqueries and determining collocation of execution of subqueries in a parallel database |
US5745746A (en) * | 1996-06-24 | 1998-04-28 | International Business Machines Corporation | Method for localizing execution of subqueries and determining collocation of execution of subqueries in a parallel database |
US5787411A (en) * | 1996-03-20 | 1998-07-28 | Microsoft Corporation | Method and apparatus for database filter generation by display selection |
US6026390A (en) * | 1996-05-29 | 2000-02-15 | At&T Corp | Cost-based maintenance of materialized views |
US5768589A (en) * | 1996-07-12 | 1998-06-16 | Oracle Corporation | Method and apparatus for executing stored procedures in a foreign database management system |
US5899991A (en) * | 1997-05-12 | 1999-05-04 | Teleran Technologies, L.P. | Modeling technique for system access control and management |
US5864840A (en) * | 1997-06-30 | 1999-01-26 | International Business Machines Corporation | Evaluation of existential and universal subquery in a relational database management system for increased efficiency |
US5926813A (en) * | 1997-08-15 | 1999-07-20 | Microsoft Corporation | Database system index selection using cost evaluation of a workload for multiple candidate index configurations |
US5960423A (en) * | 1997-08-15 | 1999-09-28 | Microsoft Corporation | Database system index selection using candidate index selection for a workload |
US5913206A (en) * | 1997-08-15 | 1999-06-15 | Microsoft Corporation | Database system multi-column index selection for a workload |
US5950186A (en) * | 1997-08-15 | 1999-09-07 | Microsoft Corporation | Database system index selection using cost evaluation of a workload for multiple candidate index configurations |
US5895465A (en) * | 1997-09-09 | 1999-04-20 | Netscape Communications Corp. | Heuristic co-identification of objects across heterogeneous information sources |
US5943666A (en) * | 1997-09-15 | 1999-08-24 | International Business Machines Corporation | Method and apparatus for optimizing queries across heterogeneous databases |
US6243703B1 (en) * | 1997-10-14 | 2001-06-05 | International Business Machines Corporation | Method of accessing and displaying subsystem parameters including graphical plan table data |
US6493700B2 (en) * | 1997-10-14 | 2002-12-10 | International Business Machines Corporation | System and method for specifying custom qualifiers for explain tables |
US6539378B2 (en) | 1997-11-21 | 2003-03-25 | Amazon.Com, Inc. | Method for creating an information closure model |
US6448981B1 (en) | 1997-12-09 | 2002-09-10 | International Business Machines Corporation | Intermediate user-interface definition method and system |
WO2000010097A1 (en) * | 1998-08-14 | 2000-02-24 | Song Oliver Yuh Shen | Universal business management system and method |
US6223171B1 (en) | 1998-08-25 | 2001-04-24 | Microsoft Corporation | What-if index analysis utility for database systems |
US6584459B1 (en) | 1998-10-08 | 2003-06-24 | International Business Machines Corporation | Database extender for storing, querying, and retrieving structured documents |
US6763353B2 (en) * | 1998-12-07 | 2004-07-13 | Vitria Technology, Inc. | Real time business process analysis method and apparatus |
US6338055B1 (en) * | 1998-12-07 | 2002-01-08 | Vitria Technology, Inc. | Real-time query optimization in a decision support system |
US6581205B1 (en) | 1998-12-17 | 2003-06-17 | International Business Machines Corporation | Intelligent compilation of materialized view maintenance for query processing systems |
US6370522B1 (en) | 1999-03-18 | 2002-04-09 | Oracle Corporation | Method and mechanism for extending native optimization in a database system |
US6401083B1 (en) | 1999-03-18 | 2002-06-04 | Oracle Corporation | Method and mechanism for associating properties with objects and instances |
US6351742B1 (en) | 1999-03-18 | 2002-02-26 | Oracle Corporation | Method and mechanism for database statement optimization |
WO2000055755A2 (en) * | 1999-03-18 | 2000-09-21 | Oracle Corporation | Method for extending native optimization in a database system |
DK173451B1 (da) * | 1999-04-16 | 2000-11-20 | Targit As | Fremgangsmåde, apparat og databærer til behandling af forespørgsler til en database |
US7167853B2 (en) * | 1999-05-20 | 2007-01-23 | International Business Machines Corporation | Matching and compensation tests for optimizing correlated subqueries within query using automatic summary tables |
US6442537B1 (en) * | 1999-06-24 | 2002-08-27 | Teleran Technologies, Inc. | System of generating and implementing rules |
CA2279028C (en) * | 1999-07-29 | 2002-09-10 | Ibm Canada Limited-Ibm Canada Limitee | Dropped database table recovery |
US6353820B1 (en) * | 1999-09-29 | 2002-03-05 | Bull Hn Information Systems Inc. | Method and system for using dynamically generated code to perform index record retrieval in certain circumstances in a relational database manager |
US6353819B1 (en) * | 1999-09-29 | 2002-03-05 | Bull Hn Information Systems Inc. | Method and system for using dynamically generated code to perform record management layer functions in a relational database manager |
US6532470B1 (en) | 1999-12-17 | 2003-03-11 | International Business Machines Corporation | Support for summary tables in a database system that does not otherwise support summary tables |
US6496828B1 (en) | 1999-12-17 | 2002-12-17 | International Business Machines Corporation | Support for summary tables in a heterogeneous database environment |
US6526403B1 (en) * | 1999-12-17 | 2003-02-25 | International Business Machines Corporation | Method, computer program product, and system for rewriting database queries in a heterogenous environment |
US7136834B1 (en) | 2000-10-19 | 2006-11-14 | Liquidnet, Inc. | Electronic securities marketplace having integration with order management systems |
JP4255624B2 (ja) | 2001-02-22 | 2009-04-15 | 株式会社日立製作所 | データベース管理システム、データベース管理システムにおける問合せ方法、およびデータベース管理システムにおける問い合わせ実行プログラム |
WO2002071260A1 (en) * | 2001-03-01 | 2002-09-12 | Aalborg Universitet | Adaptable query optimization and evaluation in temporal middleware |
US20020129342A1 (en) * | 2001-03-07 | 2002-09-12 | David Kil | Data mining apparatus and method with user interface based ground-truth tool and user algorithms |
WO2002073531A1 (en) * | 2001-03-07 | 2002-09-19 | Rockwell Scientific Company, Llc | One-step data mining with natural language specification and results |
US6850933B2 (en) * | 2001-11-15 | 2005-02-01 | Microsoft Corporation | System and method for optimizing queries using materialized views and fast view matching |
US7974906B2 (en) | 2002-06-12 | 2011-07-05 | Itg Software Solutions, Inc. | System and method for estimating and optimizing transaction costs |
US8229834B2 (en) | 2002-06-12 | 2012-07-24 | Itg Software Solutions, Inc. | System, method and program for agency cost estimation |
US7747606B2 (en) * | 2003-09-06 | 2010-06-29 | Oracle International Corporation | Automatic SQL tuning advisor |
US8543566B2 (en) * | 2003-09-23 | 2013-09-24 | Salesforce.Com, Inc. | System and methods of improving a multi-tenant database query using contextual knowledge about non-homogeneously distributed tenant data |
US7529728B2 (en) | 2003-09-23 | 2009-05-05 | Salesforce.Com, Inc. | Query optimization in a multi-tenant database system |
US7260563B1 (en) * | 2003-10-08 | 2007-08-21 | Ncr Corp. | Efficient costing for inclusion merge join |
US7240078B2 (en) * | 2003-11-25 | 2007-07-03 | International Business Machines Corporation | Method, system, and program for query optimization with algebraic rules |
US7606792B2 (en) | 2004-03-19 | 2009-10-20 | Microsoft Corporation | System and method for efficient evaluation of a query that invokes a table valued function |
US8185518B2 (en) * | 2004-11-12 | 2012-05-22 | International Business Machines Corporation | Method, system and program product for rewriting structured query language (SQL) statements |
US7536380B2 (en) * | 2005-03-24 | 2009-05-19 | International Business Machines Corporation | Dynamic look ahead predicate generation |
US20060224628A1 (en) * | 2005-03-29 | 2006-10-05 | Bea Systems, Inc. | Modeling for data services |
US7778998B2 (en) * | 2005-03-28 | 2010-08-17 | Bea Systems, Inc. | Liquid data services |
US20060218118A1 (en) * | 2005-03-28 | 2006-09-28 | Bea Systems, Inc. | Using query plans for building and performance tuning services |
US8086615B2 (en) * | 2005-03-28 | 2011-12-27 | Oracle International Corporation | Security data redaction |
US20060218149A1 (en) * | 2005-03-28 | 2006-09-28 | Bea Systems, Inc. | Data redaction policies |
US20060224556A1 (en) * | 2005-03-29 | 2006-10-05 | Bea Systems, Inc. | SQL interface for services |
US20060224557A1 (en) * | 2005-03-29 | 2006-10-05 | Bea Systems, Inc. | Smart services |
US7599925B2 (en) * | 2005-03-31 | 2009-10-06 | Microsoft Corporation | Using query expression signatures in view matching |
CN101131695B (zh) * | 2006-08-25 | 2010-05-26 | 北京书生国际信息技术有限公司 | 一种文档库系统及其实现方法 |
US20070143246A1 (en) * | 2005-12-15 | 2007-06-21 | International Business Machines Corporation | Method and apparatus for analyzing the effect of different execution parameters on the performance of a database query |
US7464084B2 (en) * | 2006-01-30 | 2008-12-09 | International Business Machines Corporation | Method for performing an inexact query transformation in a heterogeneous environment |
US7685145B2 (en) * | 2006-03-28 | 2010-03-23 | Microsoft Corporation | Database physical design refinement using a merge-reduce approach |
US8095531B2 (en) * | 2006-10-03 | 2012-01-10 | Salesforce.Com, Inc. | Methods and systems for controlling access to custom objects in a database |
US20080195578A1 (en) * | 2007-02-09 | 2008-08-14 | Fabian Hueske | Automatically determining optimization frequencies of queries with parameter markers |
US8117105B2 (en) | 2007-04-18 | 2012-02-14 | Pulse Trading, Inc. | Systems and methods for facilitating electronic securities transactions |
US8521627B2 (en) * | 2007-04-18 | 2013-08-27 | Blockross Holdings, LLC | Systems and methods for facilitating electronic securities transactions |
US9002827B2 (en) | 2007-07-11 | 2015-04-07 | Teradata Us, Inc. | Database query table substitution |
US8396862B2 (en) * | 2007-07-30 | 2013-03-12 | Teradata Us, Inc. | Product join dynamic partition elimination for multilevel partitioning |
US20090144229A1 (en) * | 2007-11-30 | 2009-06-04 | Microsoft Corporation | Static query optimization for linq |
US8095540B2 (en) * | 2008-04-16 | 2012-01-10 | Yahoo! Inc. | Identifying superphrases of text strings |
US8402016B2 (en) * | 2009-05-27 | 2013-03-19 | Hewlett-Packard Development Company, L.P. | Fetching optimization in multi-way pipelined database joins |
US8332388B2 (en) * | 2010-06-18 | 2012-12-11 | Microsoft Corporation | Transformation rule profiling for a query optimizer |
US20110314001A1 (en) * | 2010-06-18 | 2011-12-22 | Microsoft Corporation | Performing query expansion based upon statistical analysis of structured data |
US8326825B2 (en) | 2010-11-05 | 2012-12-04 | Microsoft Corporation | Automated partitioning in parallel database systems |
US9043248B2 (en) * | 2012-03-29 | 2015-05-26 | International Business Machines Corporation | Learning rewrite rules for search database systems using query logs |
US9405821B1 (en) * | 2012-08-03 | 2016-08-02 | tinyclues SAS | Systems and methods for data mining automation |
US9348895B2 (en) | 2013-05-01 | 2016-05-24 | International Business Machines Corporation | Automatic suggestion for query-rewrite rules |
US9633075B2 (en) * | 2014-06-23 | 2017-04-25 | Sap Se | Framework for re-writing database queries |
US9477724B2 (en) | 2014-06-23 | 2016-10-25 | Sap Se | Framework for visualizing re-written queries to database |
KR101621490B1 (ko) * | 2014-08-07 | 2016-05-17 | (주)그루터 | 쿼리 실행 장치 및 방법, 그리고 그를 이용한 데이터 처리 시스템 |
US10108712B2 (en) | 2014-11-19 | 2018-10-23 | Ebay Inc. | Systems and methods for generating search query rewrites |
US9901301B2 (en) | 2014-12-12 | 2018-02-27 | Ebay Inc. | Coordinating relationship wearables |
US9626430B2 (en) * | 2014-12-22 | 2017-04-18 | Ebay Inc. | Systems and methods for data mining and automated generation of search query rewrites |
US10452658B2 (en) * | 2014-12-23 | 2019-10-22 | Teradata Us, Inc. | Caching methods and a system for entropy-based cardinality estimation |
US9946749B2 (en) | 2016-09-08 | 2018-04-17 | Semmle Limited | Rewriting inequality queries |
US10346418B2 (en) * | 2016-12-16 | 2019-07-09 | Sap Se | Optimizing data access based on data aging |
US10592509B2 (en) * | 2017-03-01 | 2020-03-17 | Sap Se | Declarative rules for optimized access to data |
US11709891B2 (en) * | 2020-12-31 | 2023-07-25 | Teradata Us, Inc. | Runtime metric estimations for functions |
US11921878B2 (en) * | 2021-01-21 | 2024-03-05 | Servicenow, Inc. | Database security through obfuscation |
CN116701429B (zh) * | 2023-05-19 | 2023-12-29 | 杭州云之重器科技有限公司 | 一种基于批量历史任务模糊化的公共查询方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0490465A2 (de) * | 1990-12-07 | 1992-06-17 | Digital Equipment Corporation | Verfahren und Geräte im mit relationellen Abfragen auf nicht relationelle Dateien zuzugreifen |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4829427A (en) * | 1984-05-25 | 1989-05-09 | Data General Corporation | Database query code generation and optimization based on the cost of alternate access methods |
JP2760794B2 (ja) * | 1988-01-29 | 1998-06-04 | 株式会社日立製作所 | データベース処理方法および装置 |
-
1993
- 1993-06-14 US US08/077,227 patent/US5544355A/en not_active Expired - Lifetime
-
1994
- 1994-05-09 DE DE4416332A patent/DE4416332A1/de not_active Withdrawn
- 1994-06-06 GB GB9411286A patent/GB2279165A/en not_active Withdrawn
- 1994-06-14 JP JP6131601A patent/JPH07141236A/ja active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0490465A2 (de) * | 1990-12-07 | 1992-06-17 | Digital Equipment Corporation | Verfahren und Geräte im mit relationellen Abfragen auf nicht relationelle Dateien zuzugreifen |
Non-Patent Citations (2)
Title |
---|
DE-Z: "Elektronik" 26/23.12.1987, S. 47/48, "Datenbank-Managementsysteme - eine Technolgie im Umbruch" * |
VOSSEN, Gottfried, WITT, Kurt-Ulrich: "Zur Klassifikation von strukturellen Erweiterungen des relationalen Datenmodells", in DE-Z: Infor- mationstechnik it 32 (1990) 2, S. 94-106 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19621788A1 (de) * | 1995-08-30 | 1997-03-06 | Bayerisches Forschungszentrum | Datenbanksystem zur Verwaltung von Arrays |
US6272501B1 (en) | 1995-08-30 | 2001-08-07 | Peter Baumann | Database system for management of arrays |
DE10065323A1 (de) * | 2000-12-31 | 2002-07-18 | Siemens Ag | Steuerungsmethode für die Anordnung von graphischen Elementen |
DE10065323C2 (de) * | 2000-12-31 | 2003-10-30 | Siemens Ag | Verfahren zur Steuerung der Anordnung von graphischen Elementen |
Also Published As
Publication number | Publication date |
---|---|
JPH07141236A (ja) | 1995-06-02 |
US5544355A (en) | 1996-08-06 |
GB9411286D0 (en) | 1994-07-27 |
GB2279165A (en) | 1994-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE4416332A1 (de) | Verfahren und Vorrichtung zur Abfrageoptimierung in einem relationalen Datenbanksystem mit Fremdfunktionen | |
DE60004385T2 (de) | Verfahren und systeme um olap hierarchien zusammenfassbar zu machen | |
DE4323947C2 (de) | Verfahren zum Steuern von Datenbankabfragen in einem heterogenen, verteilten Datenbanksystem | |
DE3855706T2 (de) | Automatisierte Rechnung von Materialien | |
DE60208778T2 (de) | Datenstruktur für informationssysteme | |
DE3688529T2 (de) | Verfahren zur Auffrischung von Mehrspaltentabellen in einer relationellen Datenbank mit Mindestinformation. | |
DE10028688B4 (de) | Methode, System und Programm für eine Verbindungsoperation in einer mehrspaltigen Tabelle sowie in Satellitentabellen mit doppelten Werten | |
DE69533193T2 (de) | Paralleles verarbeitungssystem zum durchlaufen einer datenbank | |
DE69932344T2 (de) | Zugriff zu hierarchischem datenspeicher via sql-eingabe | |
DE68916486T2 (de) | Verfahren zur Durchführung von Operationen in einem relationalen Datenbankverwaltungssystem. | |
DE202011110124U1 (de) | Hybridabfrageausführungsplan | |
WO1998001808A1 (de) | Datenbanksystem | |
DE112013005993T5 (de) | Verfahren, Vorrichtung und computerlesbares Medium für eine optimale Bestimmung von Daten-Teilmengen | |
DE112019005881T5 (de) | Kryptografische überprüfung von datenbanktransaktionen | |
DE60300984T2 (de) | Methode und Computersystem für die Optimierung eines Boolschen Ausdrucks für Anfragebearbeitung | |
DE102012100113A1 (de) | Verfahren, Software und Computersystem zur Handhabung von angesammelten Daten | |
DE69031719T2 (de) | Verfahren zum automatischen Entwurf einer Programmstruktur | |
DE102005025401A1 (de) | Datentransformationssystem | |
DE60013138T2 (de) | Ein verfahren und ein gerät für die verarbeitung von abfragen einer datenbank | |
EP1276056A1 (de) | Verfahren zum Verwalten einer Datenbank | |
DE112021001743T5 (de) | Vektoreinbettungsmodelle für relationale tabellen mit null- oder äquivalenten werten | |
DE602005002846T2 (de) | Verfahren zur Datenverarbeitung und assoziiertes Softwareprogramm | |
EP1324218A1 (de) | Kategorisierungsystem für Datenobjekte und Verfahren zum Prüfen der Konsistenz von Zuordnungen von Datenobjekten zu Kategorien | |
DE112021003056T5 (de) | Benutzerorientierte spreadsheet-programmiersprache | |
EP1064606B1 (de) | Datenverarbeitungssystem und verfahren zum automatischen erstellen von inhaltsangaben von textdokumenten |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8139 | Disposal/non-payment of the annual fee |