DE4416332A1 - Verfahren und Vorrichtung zur Abfrageoptimierung in einem relationalen Datenbanksystem mit Fremdfunktionen - Google Patents

Verfahren und Vorrichtung zur Abfrageoptimierung in einem relationalen Datenbanksystem mit Fremdfunktionen

Info

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
Application number
DE4416332A
Other languages
English (en)
Inventor
Surajit Chaudhuri
Kyuseok Shim
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HP Inc
Original Assignee
Hewlett Packard Co
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE4416332A1 publication Critical patent/DE4416332A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • YGENERAL 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
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access 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.
Beispiel 1
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.
Beispiel 2
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.
Erster Aspekt der Erfindung
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.
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.
Beispiel 3
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).
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.
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).
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).
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).
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).
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.
Zweiter Aspekt der Erfindung
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.
Beispiel 4
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).
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").
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.
Beispiel 5
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.
Beispiel 6
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.
Dritter Aspekt der Erfindung
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.
Beispiel 7
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).
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.
Beispiel 8
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.
Beispiel 9
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:
Einfacher Aufruf
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.
Gruppen-Aufruf
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.
Für jedes Attribut
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.
Beispiel 10
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.
Beispiel 11
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.
ANHANG A
ANHANG B

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.
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.
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.
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.
DE4416332A 1993-06-14 1994-05-09 Verfahren und Vorrichtung zur Abfrageoptimierung in einem relationalen Datenbanksystem mit Fremdfunktionen Withdrawn DE4416332A1 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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 株式会社日立製作所 データベース処理方法および装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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