DE10028688A1 - Methode, System und Programm für eine Verbindungsoperation in einer mehrspaltigen Tabelle sowie in Satellitentabellen mit doppelten Werten - Google Patents

Methode, System und Programm für eine Verbindungsoperation in einer mehrspaltigen Tabelle sowie in Satellitentabellen mit doppelten Werten

Info

Publication number
DE10028688A1
DE10028688A1 DE10028688A DE10028688A DE10028688A1 DE 10028688 A1 DE10028688 A1 DE 10028688A1 DE 10028688 A DE10028688 A DE 10028688A DE 10028688 A DE10028688 A DE 10028688A DE 10028688 A1 DE10028688 A1 DE 10028688A1
Authority
DE
Germany
Prior art keywords
column
matching
tables
entries
satellite
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.)
Granted
Application number
DE10028688A
Other languages
English (en)
Other versions
DE10028688B4 (de
Inventor
Stephen Yao Ching Chen
Patrick Michael Malone
Jerry Mukai
Jeffrey Ralph Ruggles
Desai Paramesh Sampatrai
Yun Wang
Guogen Zhang
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE10028688A1 publication Critical patent/DE10028688A1/de
Application granted granted Critical
Publication of DE10028688B4 publication Critical patent/DE10028688B4/de
Anticipated expiration legal-status Critical
Expired - Lifetime 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
    • G06F16/24544Join order optimisation
    • 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/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • G06F16/2456Join operations
    • 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
    • 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/99933Query processing, i.e. searching
    • 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/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Operations Research (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Beschrieben wird eine Methode, ein System und ein Programm zur Durchführung einer Verbindungsoperation in einer mehrspaltigen Tabelle und in mindestens zwei Satellitentabellen mit einer Verbindungsbedingung. Jede Satellitentabelle besteht aus mehreren Zeilen und mindestens einer Verbindungsspalte. Die mehrspaltige Tabelle besteht aus mehreren Zeilen und mindestens einer Spalte, die der Verbindungsspalte in jeder Satellitentabelle entspricht. Die Zeilen der Satellitentabellen werden einer Verbindungsoperation unterzogen, um verkettete Zeilen der Satellitentabellen zu erzeugen. Eine der verketteten Zeilen wird mit der mehrspaltigen Tabelle verbunden, worauf ein von der mehrspaltigen Tabelle zurückgesendeter Eintrag empfangen wird. Anschließend wird geprüft, ob der zurückgesendete Eintrag die Suchkriterien erfüllt. Wenn ja, wird festgestellt, ob eine der Satellitentabellen doppelte Werte in der Verbindungsspalte des zurückgesendeten übereinstimmenden Eintrags oder ob die mehrspaltige Tabelle doppelte Einträge in den Verbindungsspalten enthält. Für jeden doppelten Wert in den Satellitentabellen und für jeden doppelten Eintrag in der mehrspaltigen Tabelle werden zurückgesendete übereinstimmende Einträge erzeugt.

Description

QUERVERWEIS AUF WEITERE PATENTANMELDUNGEN
Es wird hiermit verwiesen auf die folgenden, gleichzeitig am 25. Juni 1999 beim amerikanischen Patentamt eingereichten Patentanmeldungen:
"Methode, System und Programm zur Suche in einer Liste von Einträgen, wenn nicht für alle Felder in einem Eintrag Suchkriterien zur Verfügung stehen", Tina Lee, Lee Chin Liu, Desai Paramesh Sampatrai, Hong S. Tie, S. Y. Wang, Yun Wang, Anmeldenummer: US 09/344727;
"Methode, System und Programm für eine Verbindungsoperation in einer mehrspaltigen Tabelle sowie in Satellitentabellen", Stephen Yao Ching Chen, William Y. Kyu, Feng-Ling Lin, Desai Paramesh Sampatrai und Yun Wang, Anmeldenummer: US 09/340352; und
"Methode, System und Programm zur Bestimmung der Reihenfolge beim Sortieren der Verbindungsbefehle für Tabellen in einer Verbindungsabfrage", Lee-Chin Hsu Liu, Hong Sang Tie, Shyh Yee Wang und Yun Wang, Anmeldenummer: US 09/3400849.
HINTERGRUND DER VORLIEGENDEN ERFINDUNG Anwendungsgebiet der vorliegenden Erfindung
Die vorliegende Erfindung bezieht sich im allgemeinen auf eine Methode, ein System und ein Programm für eine Verbindungsoperation in einer mehrspaltigen Tabelle sowie in Satellitentabellen mit einer Verbindungsbedingung und im besonderen auf die Verbindung von Tabellen unterschiedlicher Größe mit einer Fakttabelle in einer Sternverbindung.
Beschreibung der verwandten Technik
Datenaufzeichnungen im Computermanagementsystem einer relationalen Datenbank (RDBMS) werden in Tabellen geführt. Eine Tabelle ist eine Gruppe von Zeilen, die alle dieselben Spalten aufweisen. Jede Spalte enthält für die Datenaufzeichnungen innerhalb einer Zeile Informationen eines bestimmten Datentyps. Mit jeder Tabelle lassen sich Indizes verknüpfen. Ein Index ist eine geordnete Gruppe von Zeigern auf Datenaufzeichnungen in der Tabelle, und zwar auf der Basis der Daten in einer oder mehreren Spalten der Tabelle. In manchen Fällen befinden sich alle in einer Abfrage angeforderten Informationen im Index, was eine Suche in der eigentlichen Tabelle überflüssig macht. Ein Index besteht aus Zeilen oder Indexeinträgen, die einen Indexschlüssel und einen Zeiger auf eine Datenbankaufzeichnung in der Tabelle, die die Schlüsselspaltenwerte des Indexeintragsschlüssels enthält, umfassen. Ein Indexschlüssel setzt sich zusammen aus Schlüsselspalten, die es ermöglichen, Aufzeichnungen innerhalb einer Tabelle zu sortieren. Die Indexschlüsselspalten setzen sich aus den Spalten der Tabelle zusammen und können beliebige der für die jeweilige Spalte möglichen Werte enthalten. Spalten, die häufig verwendet werden, um auf eine Tabelle zuzugreifen, können als Schlüsselspalten dienen.
Organisationen können ihre Daten in einem sogenannten Data Warehouse archivieren, einer Sammlung von Daten, die die Entscheidungsfindung der Führungsebene unterstützen soll. Data Warehouses enthalten viele verschiedene Daten, die ein zusammenhängendes Bild der Geschäftsbedingungen zu einem bestimmten Zeitpunkt abgeben. Eine Form der Implementierung eines Data Warehouse ist bekannt unter dem Begriff Sternschema oder mehrdimensionale Modellierung. Das Grundprinzip eines Sternschemas besteht darin, dass Informationen in zwei Gruppen aufgeteilt werden, nämlich Fakten und Dimensionen. Eine Faktentabelle enthält die hauptsächlichen Datenbankaufzeichnungen über die wichtigsten Transaktionen der Organisation, so beispielsweise Umsatzzahlen, Einkaufsdaten, Kapitalrenditen usw. Dimensionen sind Tabellen, die Attribute zu den Daten in der Faktentabelle enthalten. Jede Dimensionstabelle besitzt eine primäre Schlüsselspalte, die einer anderen Schlüsseltabelle in der Faktentabelle entspricht. Normalerweise ist die Faktentabelle wesentlich umfangreicher als die dazugehörigen Dimensionstabellen.
Die Faktentabelle enthält normalerweise numerische Fakten, so beispielsweise das Datum eines Verkaufs, die Kosten, den Typ des verkauften Produkts, Ort des Verkaufs usw. Die Dimensionstabelle enthält normalerweise beschreibende Texte mit Attributen zu einer der Fakttabellenspalten. Eine Zeitdimensionstabelle kann beispielsweise Attribute zur Datumsspalte in der Faktentabelle enthalten, die das Verkaufsdatum angeben. Die Zeitdimensionstabelle kann verschiedene Wetterbedingungen oder Ereignisse angeben, die am jeweiligen Datum geherrscht bzw. sich abgespielt haben. Entsprechend liefert die Zeitdimensionstabelle Attribute über die Zeit (d. h. das Wetter, wichtige Ereignisse usw.) über Datenspalten in der Faktentabelle.
Das Sternschema ermöglicht der Datenbank einen Überblick über die Dimensionsattribute, die für Analysezwecke nützlich sind. Dies gestattet dem Benutzer, Attribute in den Dimensionstabellen abzufragen, um Aufzeichnungen in der Faktentabelle zu suchen. Eine Abfrage kann Zeilen in den Dimensionstabellen angeben, die bestimmte Attribute oder Verbindungsbedingungen erfüllen. Diese Zeilen der Dimensionstabellen besitzen primäre Schlüssel, die anderen Schlüsseln in der Faktentabelle entsprechen. Anschließend wird mit den qualifizierenden Zeilen der verbundenen Dimensionstabellen und der Faktentabelle eine Verbindungsoperation wie beispielsweise Equijoin oder eine natürliche Verbindung durchgeführt. Diese Verbindung resultiert in der Ausgabe von Faktentabelleneinträgen, die mit den Zeilen der verbundenen Dimensionstabellen übereinstimmen, also Faktentabelleneinträgen, die den Suchkriterien in den Dimensionstabellen entsprechen. Auf diese Weise werden Verbindungsoperationen verwendet, um in einer Faktentabelle Dimensionstabellenattribute abzufragen.
Eine Verbindungsoperation kombiniert oder verkettet die Zeilen aus den unterschiedlichen Dimensionstabellen entsprechend einer Bedingung oder einem Prädikat, um Werte zu ermitteln, die auf die Faktentabelle angewandt werden sollen. Diese Operation unterscheidet sich von einem kartesianischen Produkt, das jede Zeile aus einer Tabelle mit jeder anderen Zeile einer anderen Tabelle verkettet, und zwar ohne Rücksicht auf eine Bedingung oder ein Prädikat, welches besagt, dass Zeilen aus dem Ergebnis ausgeschlossen werden sollen. Zeilen aus den Tabellen, die an einer Verbindungsoperation beteiligt sind und das Prädikat oder die Bedingung nicht erfüllen, werden aus dem Verbindungsergebnis ausgeschlossen. Da sich die Dimensionstabellen nicht aufeinander beziehen, werden die Zeilen der Dimensionstabellen, die die Verbindungsbedingung erfüllen, in jeder möglichen Kombination miteinander verkettet.
Das kartesianische Produkt der Zeilen der Dimensionstabellen liefert eine Datenansicht des gesamten Raums, d. h. kartesianischen Raums, jeder möglichen Kombination aus den möglichen Dimensionstabellenwerten. Das Verbindungsergebnis andererseits ist eine Untergruppe des kartesianischen Raums, der auf diejenigen Punkt des kartesianischen Raums begrenzt ist, die die Verbindungs- oder Suchbedingung erfüllen. Eine der üblichen Arten von Verbindungsoperation ist ein Equijoin. Ein Equijoin kombiniert zwei Zeilen aus unterschiedlichen Tabellen, die entsprechend einem Attribut gleich sind. Sobald diese Kombination aller Zeilen der Dimensionstabelle, die die Suchkriterien erfüllen, erzeugt wurde, werden die resultierenden Zeilen in einer Equijoin-Operation auf die Faktentabelle angewandt, um diejenigen Zeilen in der Faktentabelle zu lokalisieren, die dieselben Werte besitzen wie die Zeilen, die aus der Verbindungsoperation in den Dimensionstabellen resultieren. Normalerweise werden die primären Schlüsselspalten der Dimensionstabellen im Verbindungsergebnis mit den entsprechenden fremden Schlüsselspalten in der Faktentabelle verglichen, um die Equijoin-Ergebnisse zu erzeugen.
In der mehrdimensionalen Analyse ist es häufig wünschenswert, die Attribute, die in den Dimensionstabellen spezifiziert sind, abzufragen, und anschließend alle Aufzeichnungen in der Faktentabelle zu lokalisieren, die die Kriterien der Attribute der Dimensionstabelle erfüllen. Um eine solche Abfrage durchführen zu können, übernimmt die Suchmaschine von den Dimensionstabellen die in den Suchkriterien spezifizierten Bedingungen. Daraufhin führt die Suchmaschine mit den Dimensionstabellen und der Faktentabelle eine Equijoin- Operation durch, um Verbindungsergebnisse zu erzeugen, die die Verbindungsbedingung erfüllen.
Das oben beschriebene Suchverfahren unter Verwendung von Verbindungsoperationen ist sehr ineffizient, da die Ergebnisse der Verbindungsoperation in den Dimensionstabellen zahlreiche Verkettungen erzeugen kann, die in der Faktentabelle überhaupt nicht existieren. Es wurde festgestellt, dass im Durchschnitt nur etwa 1% oder weniger der verketteten Ergebnisse der Verbindungsoperation in den Dimensionstabellen über entsprechende übereinstimmende Einträge in der Faktentabelle verfügen, die in einer Equijoin-Operation verkettet würden. Nichtsdestotrotz würden Verfahren auf dem heutigen Stand der Technik versuchen, alle Verbindungsergebnisse der Dimensionstabellen mit der Faktentabelle zu verbinden, obwohl viele dieser versuchten Verbindungsoperationen zu keinem Ergebnis führen würden, da weniger als 1% der verketteten Ergebnisse aus den Verbindungsoperationen der Dimensionstabelle über entsprechende Übereinstimmungen in der Faktentabelle verfügen. Es werden also zahlreiche Verbindungsoperationen durchgeführt, für die es kein Verbindungsergebnis gibt, wodurch unnötigerweise E/A- Operationen durchgeführt werden, um die nicht- übereinstimmenden Verbindungsoperationen durchzuführen.
Fig. 1 veranschaulicht ein Beispiel eines Sternschemas 2 mit mehreren Dimensionstabellen 4, 6 und 8 und einer Faktentabelle 10. Die Faktentabelle 10 enthält Umsatzdaten, wobei jede der darin enthaltenen Aufzeichnungen Angaben über die in Spalte 12 MENGE enthaltene Menge enthält. Darüber hinaus enthält jede dieser Aufzeichnungen Angaben zum Zeitpunkt des Umsatzes, und zwar in Spalte 14 TID; darin enthalten ist ein Zeitidentifikator. Das verkaufte Produkt wird in Spalte 16 PID angegeben; hierbei handelt es sich um eine Produktidentifikation. Schließlich wird in Spalte 18 GID, einem geografischen Identifikator, der Ort des Umsatzes bzw. die Speicherstelle angegeben. Die Dimensionstabellen 4, 6 und 8 liefern Attribute für die Spalten TID 14, PID 16 und GID 18 in der Faktentabelle.
Die primären Schlüsselspalten jeder der Dimensionstabellen 4, 6, 8 sind die Spalte 20 TID, die Spalte 28 PID bzw. die Spalte 36 GID. Die Spalten 14, 16 und 18 in der Faktentabelle 10 sind fremde Schlüssel, die den primären Schlüsseln 20, 28 und 36 der Dimensionstabellen 4, 6 und 8 entsprechen, die Attribute zu den Daten in der Faktentabelle 10 liefern. Die Dimensionstabelle 4 beispielsweise liefert Attribute für jeden möglichen TID-Wert, darunter beispielsweise die Angabe des Monats in Spalte 22, das Quartal in der Spalte 24 und das Jahr in der Spalte 26. Die Dimensionstabelle 6 liefert Produktattribute für jeden PID-Wert, darunter beispielsweise das Produkt in der Artikelspalte 30, die Produktklasse in der Klassenspalte 32 und die Lagerposition des Produkts in der Lagerspalte 34. Die Dimensionstabelle 8 liefert Attribute für jeden möglichen GID-Wert, darunter beispielsweise die Stadt des GID in der Spalte 38, die geografische Region in der Spalte 40 und das Land in der Spalte 42.
Um die in der Faktentabelle enthaltenen Aufzeichnungen durch eine Abfrage der Attribute in mehreren Dimensionstabellen 4, 6 und 8 zu lokalisieren, würde die Suchmaschine zuerst die Dimensionstabellen 4, 6 und 8 gemäß den in den Suchkriterien der Abfrage spezifizierten Bedingungen verbinden. Die Ergebnisse aus der Verbindung der Dimensionstabellen würden mit der Faktentabelle einer Equijoin-Operation unterzogen, um diejenigen Zeilen in der Faktentabelle 10 zu lokalisieren, die mit den Attributen in den Zeilen der verbundenen Dimensionstabelle bezüglich Zeitpunkt 4, Produkt 6 und geografischem Standort 8 übereinstimmen. Die Anzahl der Vergleiche der Zeilen, die aus den verbundenen Dimensionstabellen gebildet wurden, könnte eine riesige Anzahl an Kalkulationen erforderlich machen. Wenn beispielsweise die Dimensionstabellenwerte, die die Suchkriterien erfüllt haben, 60 Zeitwerte, 50.000 Produktwerte und 1.000 geografische Standortwerte umfassen, dann würde die Verkettung dieser Zeilen in einer Verbindungsoperation 3 Milliarden mögliche Werte erzeugen, die in einer Equijoin-Operation auf die Faktentabelle 10 angewandt werden müßten, obwohl höchstwahrscheinlich nur 1% der Einträge in der Faktentabelle 10 in einer Equijoin-Operation verkettet würden.
Deshalb besteht auf diesem Gebiet der Bedarf eines verbesserten Verfahrens zur Durchführung von Sternverbindungsabfragen in mehreren Dimensionstabellen.
ZUSAMMENFASSUNG DER BEVORZUGTEN AUSFÜHRUNGSBEISPIELE
Zur Überwindung des oben beschriebenen Standes der Technik beschreiben bevorzugte Ausführungsbeispiele eine Methode, ein System und ein Programm zur Durchführung einer Verbindungsoperation in einer mehrspaltigen Tabelle und mindestens zwei Satellitentabellen mit einer Verbindungsbedingung. Jede Satellitentabelle besteht aus mehreren Zeilen und mindestens einer Verbindungsspalte. Die mehrspaltige Tabelle besteht aus mehreren Zeilen und mindestens einer Spalte, die der Verbindungsspalte in jeder Satellitentabelle entspricht. In den Zeilen der Satellitentabellen wird eine Verbindungsoperation durchgeführt, um verkettete Zeilen der Satellitentabellen zu erzeugen. Eine der verketteten Zeilen wird mit der mehrspaltigen Tabelle verbunden, worauf ein Eintrag von der mehrspaltigen Tabelle empfangen wird. Daraufhin wird geprüft, ob dieser Eintrag die Suchkriterien erfüllt. Wenn ja, wird geprüft, ob eine der Satellitentabellen in der Verbindungsspalte doppelte Werte des Vergleichseintrags aufweist oder ob die mehrspaltige Tabelle doppelte Einträge in den Verbindungsspalten besitzt. Für jeden doppelten Wert in den Satellitentabellen und in der mehrspaltigen Tabelle werden entsprechende Einträge erzeugt.
In anderen bevorzugten Ausführungsbeispielen umfaßt die Prüfung, ob die Satellitentabelle und die mehrspaltige Tabelle doppelte Werte und Einträge besitzen, und die Erzeugung der entsprechenden Einträge gleichzeitig eine Prüfung, ob die Satellitentabellen Verbindungsspalten und mehrere Vergleichswerte für die Verbindungsspalte im zurückgesendeten Vergleichseintrag enthalten. Danach werden mehrere Instanzen des zurückgesendeten Vergleichseintrags in der mehrspaltigen Tabelle bestimmt. Ferner wird geprüft, welche Kombinationen von Vergleichseinträgen in der mehrspaltigen Tabelle sowie von Vergleichseinträgen in jeder Satellitentabelle möglich sind. Für jede mögliche Kombination der Vergleichseinträge und der Vergleichswerte wird ein Vergleichseintrag zurückgesendet.
In weiteren bevorzugten Ausführungsbeispielen umfaßt die Prüfung aller möglichen Kombinationen die Erzeugung mindestens einer verschachtelten Schleife, die die Vergleichswerte in jeder geprüften Satellitentabelle und alle Vergleichseinträge in der mehrspaltigen Tabelle durchläuft. Für jeden Durchlauf einer verschachtelten Schleife werden Vergleichseinträge zurückgesendet. Die mehrspaltige Tabelle kann bezüglich der Vergleichswerte der Satellitentabellen die äußerste Tabelle in der verschachtelten Schleife sein. Oder aber die mehrspaltige Tabelle kann bezüglich mindestens einer Satellitentabelle in den verschachtelten Schleifen eine innere Tabelle sein.
In bevorzugten Ausführungsbeispielen kann eine Umpositionierungslogik verwendet werden, um in dem durch die Verkettung der Dimensionstabellen definierten Raum Werte zu überspringen, selbst dann, wenn die Dimensionstabellen doppelte Werte enthalten. Enthalten die Dimensionstabellen doppelte Werte, werden für die zusätzlichen Instanzen des Werts in der Dimensionstabelle zusätzliche Instanzen des betreffenden Tabelleneintrags zurückgesendet. Ohne diese Logik zur gezielten Verarbeitung doppelter Werte in den Dimensionstabellen würden für doppelte Werte keine Vergleichstabelleneinträge zurückgesendet werden.
KURZE BESCHREIBUNG DER ZEICHNUNGEN
Wir betrachten nun die Zeichnungen, in denen gleiche Referenzziffern sich jeweils auf gleiche Teile beziehen:
Fig. 1 veranschaulicht die sternförmige Anordnung der Datenbanktabellen auf bekannte Weise.
Fig. 2 veranschaulicht eine Computerumgebung, in der bevorzugte Ausführungsbeispiele implementiert werden.
Die Fig. 3a und 3b zeigen eine Logik, mit der Tabellen gemäß bevorzugten Ausführungsbeispielen der vorliegenden Erfindung verbunden werden.
Fig. 4 ist ein Beispiel einer Tabelle, in der sich die Verbindungsoperationen gemäß bevorzugten Ausführungsbeispielen der vorliegenden Erfindung ausführen lassen.
Fig. 5 zeigt eine Logik zur Verarbeitung doppelter Werte in Dimensionstabellen und in der Faktentabelle gemäß bevorzugten Ausführungsbeispielen der vorliegenden Erfindung.
Fig. 6 zeigt ein Beispiel für Dimensionstabellen und Faktentabellen mit doppelten Werten und ein Beispiel dafür, wie die bevorzugte Logik solche doppelten Werte verarbeitet.
AUSFÜHRLICHE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSBEISPIELE
Die nachfolgende Beschreibung bezieht sich auf die beiliegenden Zeichnungen, die einen Bestandteil dieses Dokuments bilden und mehrere bevorzugte Ausführungsbeispiele der vorliegenden Erfindung veranschaulichen. Es wird darauf hingewiesen, dass auch andere Ausführungsbeispiele verwendet werden können und strukturelle und funktionale Abweichungen möglich sind, ohne dass dadurch das Anwendungsgebiet der vorliegenden Erfindung verlassen wird.
Computerumgebung
Fig. 2 zeigt eine Computerumgebung, in die eine Datenbank implementiert werden kann. Ein Computersystem 2, bei dem es sich um einen Computer mit einem Betriebssystem wie beispielsweise MICROSOFT WINDOWS 98 und WINDOWS NT, AIX, OS/390, OS/2, MVS, ** usw. handeln kann, enthält ein Datenbankprogramm 4 wie beispielsweise DB2, MICROSOFT Access, ORACLE 8 von Oracle Corporation, ** usw. Das Datenbankprogramm 4 wird verwendet, um auf Informationen zuzugreifen, die in einer oder mehreren Datenbanken 6 gespeichert sind. Die Datenbanken 6 können aus einem Index 8 oder mehreren Indizes 8 und aus einer oder mehreren Tabellen 10 bestehen. Die Indizes 8 enthalten auf der Basis der Daten in einer oder mehrerer Spalten der Tabelle eine geordnete Gruppe von Zeigern auf Daten in der Tabelle 10. Nähere Einzelheiten zum Aufbau und zur Funktionsweise eines Datenbankprogramms sind in den IBM- Publikationen "DB2 for OS/390: Administration Guide, Version 5", IBM document no. SC26-8957-01 (Copyright IBM. Corp., June, 1997) und "A Complete Guide to DB2 Universal Database", by Don Chamberlin (1998), beschrieben. Auf diese Publikationen wird in diesem Dokument verwiesen.
(Microsoft, Windows und Windows NT sind eingetragene Warenzeichen der Microsoft Corporation; DB2, AIX, OS/390 und OS/2 sind eingetragene Warenzeichen von IBM; MVS ist ein Warenzeichen von IBM, und Oracle 8 ist ein Warenzeichen der Oracle Corporation.)
Ein Speicher 14 speichert die eigentlichen Datensätze, die die Daten für die Indizes und Tabellen enthalten. Der Speicher 14 enthält die Seiten 16a, b, c, die die Indexeinträge für den Index 8 enthalten, beispielsweise die Laubseiten, wenn der Index 8 aus einem B-Baum besteht. Der Speicher 14 umfaßt außerdem die Seiten 18a, b, c der Aufzeichnungen in der Tabelle 10. Der Speicher 14 kann einen nicht-flüchtigen Speicher enthalten, beispielsweise einen DASD-Speicher (Direct Access Storage Device), der sich aus zahlreichen miteinander verbundenen Festplattenlaufwerken zusammensetzt. Der Speicher 14 kann aber auch innerhalb des nicht-flüchtigen Speichers Speicher-Pools oder eine Kombination aus nichtflüchtigen und flüchtigen Speichern enthalten.
Das Datenbankprogramm 4 enthält eine Suchmaschine 20, die auf der Basis von Attributen in Dimensionstabellen einen Suchbefehl empfangen kann, mit dem Aufzeichnungen in einer Faktentabelle lokalisiert werden sollen. In diesem Fall kann die Suchmaschine in der Branche bekannte Optimierungsverfahren einsetzen, um mehrere Tabellen miteinander zu verbinden, um die richtige Reihenfolge der Verbindung von Tabellen zu ermitteln, sodass diese Tabellen nach gleichen Werten durchsucht werden können. Die Datenbank 6 kann weiterhin ein Sternschema enthalten, oder aber die Tabelle kann, wie das Sternschema in Fig. 1, mehrdimensional ausgelegt sein.
Nähere Einzelheiten zur Implementierung eines Sternschemas in einem Datenbankprogramm, wie es beispielsweise in Fig. 2 dargestellt ist, sind in dem gemeinsam erteilten Patent mit dem Titel "Relational Database Modifications Based on Multi- Dimensional Database Modifications", U.S. Patent No. 5,905,985, beschrieben. Auf dieses Patent wird in diesem Dokument verwiesen.
Faktentabelle nach gleichen Aufzeichnungen durchsuchen
Die Fig. 3a, b veranschaulichen eine Programmlogik, die in einem Abfrageoptimierer der Suchmaschine 20 implementiert ist, um ein besseres Verfahren zur Verbindung verketteter Zeilen in den verbundenen Dimensionstabellen 4, 6, 8 mit der Faktentabelle 10 zu ermöglichen. Die Steuerung beginnt an Block 100, wenn eine Suche gestartet wird, die Suchkriterien zu Attributen der Dimensionstabellen enthält, um Aufzeichnungen in der Faktentabelle zu lokalisieren. Die Suchmaschine 20 würde die Suchkriterien oder Prädikate (an Block 102) auf die Dimensionstabellen (Di) anwenden, um nur diejenigen Zeilen in den Dimensionstabellen (z. B. TID 20, GID 36, PID 28) zu qualifizieren, die die Suchkriterien erfüllen. Die Suchmaschine 20 ermittelt daraufhin (an Block 104), ob es in allen Dimensionstabellen Indizes gibt, in denen der Index Schlüsselspalten in den Verbindungsspalten hat. Wenn es nicht für alle Dimensionstabellen Indizes gibt, dann sortiert die Suchmaschine 20 (an Block 106) diese Dimensionstabellen nach ihrer Verbindungsspalte, bei der es sich vorzugsweise um die primäre Spalte handelt. Die Suchmaschine ermittelt daraufhin (an Block 108), ob es in den Verbindungsspalten der Faktentabelle einen Index gibt. Wenn nicht, dann sortiert die Suchmaschine 20 (an Block 110) diese Faktentabelle nach den Verbindungsspalten der Dimensionstabelle.
Nachdem die Suchmaschine 20 sichergestellt hat, dass die Dimensionstabellen und die Faktentabelle nach den Verbindungsspalten sortiert wurden, startet sie die erste Verbindungsoperation in der Faktentabelle, indem sie (an Block 112) die erste Zeile jeder Dimensionstabelle (Di) miteinander verkettet. Die Suchmaschine führt daraufhin (an Block 114) an mehreren Spalten eine Equijoin-Operation der verketteten Zeilen der Dimensionstabellen 4, 6, 8 mit der mehrspaltigen Faktentabelle durch. Diese Equijoin-Operation führt dazu, dass (an Block 116) diejenigen Einträge der Faktentabelle, welche Verbindungsspaltenwerte besitzen, die mit den Werten in der verketteten Zeile von den Ergebnissen der Verbindung in den Dimensionstabellen (Di), die ebenfalls die Suchkriterien erfüllen, übereinstimmen, zurückgesendet werden. Es kann aber auch ein Rückmeldungseintrag von der Faktentabelle 10 zurückgesendet werden. Der Rückmeldungseintrag ist derjenige Eintrag in der Faktentabelle, der den übereinstimmenden Einträgen unmittelbar folgt, oder, wenn keine übereinstimmenden Einträge vorhanden sind, der Eintrag, der diesen übereinstimmenden Einträgen in der Faktentabelle folgen würde. Die Suchmaschine 20 prüft (an Block 118), ob ein Rückmeldungseintrag existiert. Wenn nicht, endet das Programm an Block 122, da die gesamte Faktentabelle damit abgearbeitet wurde.
Ansonsten setzt die Suchmaschine 20 (an Block 120) i gleich 1, wobei es i = 1 bis n Dimensionstabellen Di gibt.
Danach prüft die Suchmaschine 20 (an Block 124), ob der Wert in der i-ten Verbindungsspalte, d. h. der i-ten Spalte in der Zeile, die durch Verkettung der Dimensionstabelleneinträge gebildet wurde, mit dem Wert in der i-ten Spalte im Rückmeldungseintrag von der Faktentabelle übereinstimmt. Wenn ja, setzt die Suchmaschine 20 i = i + 1 (an Block 126) und prüft danach (an Block 130), ob i <= n, d. h. es müssen weitere Spalten in Betracht gezogen werden. Müssen in der Tat weitere Spalten in Betracht gezogen werden, dann geht die Suchmaschine 20 zurück zu Block 124, um die nächste (i + 1)te Spalte zu betrachten. Wenn nicht, wenn also i < n, dann wurden alle Dimensionsspalten Di betrachtet, und die Suchmaschine 20 verwendet (an Block 132) die Rückmeldungswerte für die nächste Verbindungsoperation (an Block 114), da die Rückmeldungswerte mit dem verketteten Eintrag übereinstimmen. Da der Rückmeldungseintrag mit den Verbindungsspalten übereinstimmt, führt die Suchmaschine 20 in diesem Fall dieselbe Verbindungsoperation durch, um in der Faktentabelle nach eventuellen weiteren gleichen Einträgen zu suchen. Wenn die i- te Verbindungsspalte nicht mit der i-ten Rückmeldungs- Eintragsspalte übereinstimmt, dann prüft die Suchmaschine 20 (an Block 128), ob der Wert in der i-ten Verbindungsspalte entsprechend der Sortierung in der i-ten Dimensionstabelle Di kleiner ist als der Wert in der i-ten Spalte des Rückmeldungseintrags. Ist der Wert in der i-ten Verbindungsspalte kleiner, dann erhöht die Suchmaschine 20 den aktuellen i-ten Verbindungsspaltenwert auf den nächsten Wert in der i-ten Dimensionstabelle Di.
Ansonsten setzt die Suchmaschine 20 (an Block 136) den Wert für (i + 1) bis n-te Spalte oder Dimensionstabelle auf den ersten Eintrag in diesen Dimensionstabellen. Die Suchmaschine 20 verbindet daraufhin (an Block 138) die neu ermittelten Verbindungsspalten mit der Faktentabelle und geht zurück zu Block 116. Alle Verbindungsspalten, die nicht mit der Logik der Blöcke 124-138 geändert wurden, ändern den Wert, den sie in den vorherigen Verbindungsoperationen hatten, nicht.
Ist der i-te Verbindungsspaltenwert kleiner als der Wert in der i-ten Spalte des Rückmeldungseintrags, dann erhöht die Suchmaschine 20 (an Block 134) den aktuellen i-ten Verbindungsspaltenwert auf den nächsten Wert in der i-ten Dimensionstabelle Di. Ab Block 134 prüft die Suchmaschine 20, ob das Ende der n-ten Dimensionstabelle erreicht ist. Wenn nicht, geht die Steuerung über an Block 124, wo der erhöhte i- te Verbindungsspaltenwert mit dem Rückmeldungseintrag verglichen wird. Ist jedoch das Ende der i-ten Dimensionstabelle Di erreicht, prüft die Suchmaschine 20 (an Block 142), ob i = 1. Wenn ja, endet das Programm, wenn nein, setzt die Suchmaschine 20 i auf i - 1 und geht zurück zu Block 134, und prüft, ob die vorherige (i - 1)-te Dimensionstabelle verwendet wird, um die nächste verkettete Zeile im kartesianischen Raum, die in der Verbindungsoperation verwendet werden soll, zu bestimmen.
Die Reihenfolge für die Verbindung der Dimensionstabellen läßt sich durch die Verkettung oder Sortierung der fremden Schlüssel in der Faktentabelle ermitteln. Wir betrachten beispielsweise das Sternschema 2 in Fig. 1. Dort können die Zeilen der Dimensionstabellen 4, 6 und 8 entsprechend der Sortierung der fremden Schlüssel 14, 16 und 18 in der Faktentabelle 10 verbunden werden, bei denen es sich um die primären Schlüssel 20, 28 und 36 in den Dimensionstabellen 4, 6 bzw. 8 handelt. Anders ausgedrückt, die verbundenen Schlüssel, die in den Dimensionstabellen 4, 6, 8 Werte für TID 20, PID 28 und GID 36 besitzen, sind die erste, zweite und dritte Dimension, die in der Operation zur Verbindung mit der Faktentabelle 10 verwendet werden. Wie oben bereits angeführt wurde, gibt es für jede der Dimensionen bzw. jeden der primären Schlüssel 20, 28 und 36 der Dimensionstabelle eine ganze Reihe möglicher geordneter Werte. Die schwebende und gemeinsam erteilte Patentanmeldung mit dem Titel "Method, System and Program for Determining the Join Ordering of Tables in a Join Query", mit dem Aktenzeichen: US 09/340,084, auf die in diesem Dokument verwiesen wird, beschreibt eine Methode zur optimalen Bestimmung der Reihenfolge für die Verbindung der Dimensionstabellen und der Faktentabelle.
Mit der bevorzugten Logik der Fig. 3a, b wählt die Suchmaschine 20 auf der Grundlage der Rückmeldung der tatsächlichen Spalteneinträge in der Faktentabelle Verbindungsspaltenwerte aus, die in der nächsten Verbindungsoperation verwendet werden sollen. Verfahren nach dem Stand der Technik durchsuchen die Faktentabelle nach jedem möglichen Punkt im Feld Verbinden der Dimensionstabellen, der durch die qualifizierenden Zeilen gebildet wurde. Diese Verfahren nach dem Stand der Technik können in den Faktentabellen Equijoin-Operationen für nicht existierende Einträge durchführen. Die bevorzugten Ausführungsbeispiele weisen gegenüber den Verfahren nach dem Stand der Technik Vorteile auf, da die bevorzugten Ausführungsbeispiele zahlreiche Verbindungsoperationen vermeiden können, wenn sie alle Verkettungen in dem Raum verwenden, der durch die Verbindung der Dimensionstabelle definiert ist.
Die Vorteile der Logik der Fig. 3a, b wird anhand von Tabelle 200 in Fig. 4 ersichtlich. Fig. 4 veranschaulicht mögliche Werte für die in Fig. 1 beschriebene Faktentabelle 10, wobei die Reihenfolge der Spalten PID und GID im Beispiel vertauscht ist. Wenn es in der Produktdimension 6 5.000 verschiedene mögliche PID-Werte und in der geografischen Dimension 8 500 verschiedene mögliche GID-Werte gäbe, dann würde eine Verbindung in den Dimensionen für alle Produkte, die an einem bestimmten Datum, beispielsweise 31.01.1997, verkauft wurden, die Verbindungsprodukte der Zeilen in TID × PID × GID umfassen, die die Suchkriterien erfüllen. Das sind 1 × 5.000 × 500 oder 2.500.000 mögliche Punkte im kartesianischen Raum, der durch die Verbindung der Zeilen 4, 6 und 8 der Dimensionstabelle definiert ist, die die Suchkriterien erfüllen. Verfahren nach dem Stand der Technik würden die Equijoin-Operationen in der Faktentabelle 200 mit jedem dieser möglichen 2,5 Millionen Resultate der Verkettung der Zeilen in der Dimensionstabelle durchführen, obwohl die Mehrzahl dieser verketteten Zeilen in der Dimensionstabelle gar keine Equijoin-Ergebnisse erzeugen würde, d. h. sie hätten keine übereinstimmenden Einträge in der Faktentabelle 200.
Wenn beispielsweise die Suchmaschine 20 den Eintrag (1/31/97, Shoe, Chicago) mit der Faktentabelle 200 verbinden würde, dann wäre das Resultat der Tabelleneintrag 202 und der Rückmeldungseintrag (1/31/07, Coat, Detroit) 204. Dieser Rückmeldungsschlüssel würde verwendet werden, um die nächste verkettete Zeile der Verbindung in den Dimensionstabellen zu bestimmen, wodurch vermieden werden könnte, dass verkettete Zeilen verwendet werden, die als Verbindungsspaltenwerte einen TID-Wert von 1/31/97, einen GID-Wert Chicago und Produkte nach shoe besitzen, die in der Tabelle 200 nicht existieren, und GID-Standorte zwischen Chicago und Detroit besitzen, die ebenfalls nicht in der Tabelle 200 existieren. Nachdem die Suchmaschine 20 als Rückmeldung den Eintrag 206 empfangen hätte, würde sie anhand des Rückmeldungseintrags 206 die nächste Verbindung erzeugen. Diese Logik würde dafür sorgen, dass die Suchmaschine 20 es vermeiden würde, Dimensionsverbindungen zu verwenden, die Städte zwischen Detroit und San Jose enthalten, für die es in der Faktentabelle 200 keine Einträge gibt. Gäbe es zwischen Detroit und San Jose 200 GID-Standorte, dann würde das Verfahren auf dem Stand der Technik 200 × 5.000 = 1 Million Verbindungen mit der Faktentabelle erzeugen, weil Verbindungsspaltenwerte zwischen Detroit und San Jose für alle Produkte verwendet würden. Die bevorzugte Logik würde 1 Million Suchoperationen vermeiden, da Suchoperationen wie beispielsweise Verbindungen mit nicht existierenden Einträgen in der Faktentabelle auf ein Mindestmaß beschränkt würden.
In anderen Ausführungsbeispielen können die Suchoperationen an einem mehrspaltigen Index in der Faktentabelle 10 durchgeführt werden, die als Spalten die fremden Schlüssel in der Faktentabelle 10 verwendet, die den primären Schlüsseln in den Dimensionstabellen 4, 6, 8 entsprechen. Ein mehrspaltiger Index für die Faktentabelle 10 würde beispielsweise Spalten für die primären Dimensionsschlüssel umfassen, d. h. die fremden Schlüssel von TID, GID und PID. Der Vorteil bei der Verwendung eines mehrspaltigen Indizes in der Faktentabelle 10 ist, dass die große Faktentabelle nicht sortiert werden muss, wodurch der Schritt 110 in Fig. 3a überflüssig wird. Und wenn alle Dimensionen Bestandteile der Verbindungsoperationen sind, dann wird mit einem mehrspaltigen Index die Leistung bezüglich der Reihenfolge, in der die Dimensionstabellen verbunden werden, durch die Sortierung der fremden Schlüssel im mehrspaltigen Index nicht wesentlich beeinträchtigt. Deshalb kann der Datenbank-Programmierer den mehrspaltigen Index so auslegen, dass die Leistung beim Einfügen/Aktualisieren/Löschen des mehrspaltigen Indizes optimiert wird, ohne dass er sich darum kümmern muss, welchen Effekt die Sortierung des mehrspaltigen Indizes auf die Sortierung hat, mit der die Dimensionstabellen verbunden werden.
Bei der Implementierung der Logik der Fig. 3a, b kann die Suchmaschine 20 Positionsindikatoren verwenden, von denen jeder auf eine Zeile in den primären Schlüsselspalten der Dimensionstabellen zeigt. In diesem Fall würden die Verbindungsspalten anhand der Werte in den Dimensionszeilen ermittelt werden, auf die die Positionszeiger zeigen. Die Zeiger können innerhalb der Dimensionstabelle nach unten verschoben werden, um auf den nächsten Eintrag in der Tabelle zu zeigen. Sind in einer Dimensionstabelle keine weiteren Einträge zu berücksichtigen, kann der Zeiger an das obere Ende der Dimensionstabelle vor den ersten Eintrag gesetzt werden. Um beispielsweise den Schritt an Block 132 in Fig. 3b (Verschiebung zum nächsten Eintrag) durchzuführen, würde die Suchmaschine 20 den Positionsindikator für die i-te Dimension (Di) so inkrementieren, dass er auf die nächste Zeile in der Spalte mit den primären Schlüsseln von Di zeigt. Wenn an Block 138 die Verbindungsspalten auf den ersten Eintrag in den Dimensionstabellen Di gesetzt würden, würde die Suchmaschine 20 den Positionsindikator auf die erste Zeile in der i-ten Dimensionstabelle zeigen lassen. Auf diese Weise werden die Zeiger auf die Einträge in den Dimensionstabellen so manipuliert, dass sie die Suchschlüsselwerte bestimmen. Der Fachmann auf diesem Gebiet sieht noch weitere Programmiermöglichkeiten, mit denen sich die Logik der Fig. 3a, b implementieren läßt.
Verbindungsoperationen durchführen, wenn die Dimensionstabellen doppelte Werte enthalten
Es kann vorkommen, dass in den Verbindungsspalten oder in der ersten Spalte der Dimensionstabellen doppelte Werte vorhanden sind. Diese Zeilen in der Dimensionstabelle mit demselben Wert in der Spalte mit dem primären Schlüssel können in einer anderen Spalte einen anderen Attributwert aufweisen. Die Stadt Los Angeles kann beispielsweise zweimal in der geografischen Dimension 8 vorhanden sein, einmal für einen Regionwert 40 der Westküste der USA und ein anderes Mal für einen Regionwert 40 von Südkalifornien. In diesem Fall sollte die Verbindungsoperation für den Verbindungsspaltenwert Los Angeles zweimal durchgeführt werden. Wenn die verbundenen Dimensionstabellen mit der Faktentabelle verbunden werden, erzeugt die Verbindungsoperation der verketteten Dimensionszeilen, die Los Angeles und die Faktentabelle 10 enthalten, dieselben Ergebnisse ein weiteres Mal für jede Instanz, in der ein Verbindungsspaltenwert in der Dimensionstabelle wiederholt wird. Wenn man also zwei Zeilen der geografischen Dimensionstabelle 8 in einen Wert von Los Angeles mit einbezieht, ist es erforderlich, dass dieselben Verbindungsergebnisse von der Faktentabelle zweimal zurückgesendet werden, und zwar einmal für jede Instanz von Los Angeles in der geografischen Dimensionstabelle 8.
Die Umpositionierungslogik der Fig. 3a, b, um zur nächsten verketteten Zeile zu gelangen oder eine verkettete Zeile aus dem Raum der Dimensionstabelle zu überspringen, würde alle doppelten Werte in den verketteten Zeilen überspringen, die mit der Faktentabelle eine Equijoin-Operation bilden würden.
Nehmen wir beispielsweise an, die Produktdimensionstabelle 6 hätte die folgenden Werte (Jacke, Reinigungsmittel, Hut, Hemd, Jacke, Schuh), wobei der Wert von Jacke zweimal vorhanden ist. Möglicherweise kann man Jacke in zwei Produktklassen 32 finden, was dazu führt, dass in der Produktdimensionstabelle 6 zwei Zeilen von Jacke enthalten sind. Wir betrachten nun Fig. 4. Die Suchkriterien enthalten ein Datum 1/31/97 und das Produkt Schuh. In diesem Beispiel gehen wir davon aus, dass die Werte der Produktdimensionstabelle, die in der Verbindungsoperation verwendet werden, einen doppelten Wert für Schuh enthalten. Die Verbindungsoperation in den Dimensionstabellen würde folgendes verbinden:
Dies würde zur Erzeugung doppelter verketteter Zeilen mit doppelten Werten jeder Kombination aus Schuh und einer Stadt führen. Aus diesem Grund ist es wünschenswert, Faktentabelleneinträge in die Verbindungsoperation zurückzusenden, die das Datum 1/31/97 und ein Produkt Schuh zweimal enthalten, nämlich einmal für jeden Wert von Schuh in der Produktdimensionstabelle. Nach dem Empfang des Rückmeldungsschlüssels (1/31/97, Jacke, Detroit) 204, nachdem der erste übereinstimmende Eintrag (1/31/97, Chicago, Schuh) 202 empfangen wurde, würde die Logik der Fig. 3a, b jedoch die nächste verkettete Zeile aus den verbundenen Dimensionstabellenwerten auswählen, die die Suchkriterien in 1/31/97 und Schuh erfüllen wie (1/31/97, Detroit, Schuh). Die Logik der Fig. 3a, b würde nur einmal das Verbindungsergebnis von (1/31/97, Chicago, Schuh) 202 aus der Faktentabelle 200 zurücksenden, da die Logik mit der doppelten verketteten Zeile von (1/31/97, Chicago, Schuh) die Verbindungsoperation nicht zweimal durchführen würde, weil die Logik die verkettete Zeile von (1/31/97, Detroit, Schuh) mit der Faktentabelle 200 verbinden und anschließend den Raum weiter durchlaufen würde, der gebildet wird durch die Verbindung der Dimensionstabellenzeilen, die die Suchkriterien erfüllen. Aus diesem Grund ist es notwendig, die Logik der Fig. 3a, b zu ändern, wenn in den Dimensionstabellen, die in den Verbindungsoperationen verwendet werden, doppelte Zeilen enthalten sind.
Fig. 5 zeigt eine Logik, die verwendet wird, um doppelte Werte in den Dimensionstabellen zu behandeln, wenn eine Übereinstimmung auftritt. Mit der Logik von Fig. 5 muss die Suchmaschine 22 nach einem Verbindungsergebnis eine Verbindungsoperation wiederholen, wonach ein übereinstimmender Eintrag in der Faktentabelle zurückgesendet wird, um nach weiteren übereinstimmenden Einträgen in der Faktentabelle zu suchen. Eine Verbindungsoperation kann entweder einen übereinstimmenden Eintrag in der Faktentabelle zur Folge haben, was das Ergebnis der Verbindungsoperation wäre, oder einen Rückmeldungseintrag, der sich von der verketteten Zeile der im Verbindungseintrag verwendeten Dimensionstabellen unterscheidet und der verketteten Zeile entsprechend der Sortierung der Faktentabelle folgt. Fig. 5 umfaßt eine Änderung dessen, was passiert, wenn an Block 116 nach einer Verbindungsoperation ein übereinstimmender Eintrag empfangen wird. Wenn an Block 116 nach einer Verbindungsoperation ein Ergebnis zurückgesendet wird, bestimmt die Suchmaschine 20 (an Block 300), ob das Ergebnis eine übereinstimmende Verbindung ist. Wenn der zurückgesendete Eintrag ein Rückmeldungseintrag ist, dann geht die Suchmaschine weiter zu Block 118, um den Rückmeldungseintrag zu verarbeiten, um so festzustellen, welche verkettete Zeile als nächstes mit der Faktentabelle verbunden werden soll.
Wenn der zurückgesendete Eintrag eine Übereinstimmung in der Faktentabelle ist, dann geht die Suchmaschine 20 weiter zu den Blöcken 302 und 304, um verschachtelte Schleifen für jeden übereinstimmenden Wert in den Dimensionsspalten und jeden übereinstimmenden Eintrag in der Faktentabelle zu erzeugen. Wenn beispielsweise die Verbindungsoperation, die in der Faktentabelle einen übereinstimmenden Eintrag erzeugt hat, auf (1/31/97, Chicago, Schuh) ist, dann würden für jeden übereinstimmenden Eintrag von 1/31/97, Chicago oder Schuh in den Dimensionstabellen verschachtelte Schleifen erzeugt. Für die übereinstimmenden Einträge in der Faktentabelle würden in diesen doppelten Werten ebenfalls verschachtelte Schleifen erzeugt, um alle doppelten Kombinationen zu bestimmen. Ein übereinstimmender Wert in den Dimensionstabellen bezieht sich auf einen Wert in der Verbindungsspalte der Dimensionstabelle, die mit dem Wert für diese Spalte im Eintrag der Faktentabelle übereinstimmt. Ein übereinstimmender Eintrag der Faktentabelle besitzt daher Verbindungsspaltenwerte, die mit den entsprechenden Verbindungsspaltenwerten in den Dimensionstabellen übereinstimmen. Übereinstimmungen nach dem ersten übereinstimmenden Wert und Eintrag sind doppelte Werte und Einträge.
An Block 302 bestimmt die Suchmaschine 20 die Anzahl übereinstimmender Einträge in der Faktentabelle und die Anzahl übereinstimmender Einträge in den Dimensionstabellen. Die Verkettung der übereinstimmenden Werte in den Dimensionstabellen und der übereinstimmenden Werte in der Faktentabelle bilden das Equijoin-Ergebnis. Die Suchmaschine erzeugt anschließend (an Block 304) eine verschachtelte Schleife, die von jedem übereinstimmenden Eintrag in der Faktentabelle durchlaufen werden muss, wobei die Faktentabelle als äußerste Tabelle verwendet wird, um eine Verkettung mit den übereinstimmenden Werten in den Dimensionstabellen zu erzielen, die in den verschachtelten Schleifen die inneren Tabellen sind. Die Suchmaschine 20 erzeugt daraufhin eine Reihe verschachtelter Schleifen in den Dimensionstabellen, die die innere Schleife in der Faktentabelle sind, um jeden übereinstimmenden Wert in den Dimensionstabellen zu verketten. Nachdem die Sequenz dieser verschachtelten Schleifen durchlaufen wurde, erzeugt die Suchmaschine 20 (an Block 308) ein übereinstimmendes Verbindungsergebnis für jedes Durchlaufen der verschachtelten Schleifen. In bevorzugten Ausführungsbeispielen erzeugt die Suchmaschine 20 die übereinstimmenden Faktentabelleneinträge anhand des Speicherinhalts und nicht anhand eines Zugriffs auf den Faktentabelleneintrag aus dem Speicher, wenn die Faktentabelle die äußerste Tabelle ist. Die doppelte Zeile der Faktentabelle muss nicht abgerufen werden, wenn die Verbindungsoperation durchgeführt wird, da der äußerste Faktentabelleneintrag in der verschachtelten Schleifenverbindung derselbe bleibt. Nach der Erzeugung des Eintrags anhand der Faktentabelle für jede mögliche Kombination der doppelten Werte in den verschiedenen Dimensionstabellen und Einträgen in der Faktentabelle geht die Suchmaschine 20 weiter zu Block 116 und gibt die übereinstimmenden Einträge aus.
Die Logik von Fig. 5 erzeugt somit ein Ergebnis für jede Kombination der übereinstimmenden Einträge in der Faktentabelle und der übereinstimmenden Werte in den Dimensionstabellen. Sind beispielsweise zwei übereinstimmende Einträge, d. h. ein doppelter Wert in der Faktentabelle, und 3 übereinstimmende Einträge, d. h. zwei doppelte Werte in der Dimensionstabelle, enthalten, dann würde die verschachtelte Schleife 2 × 3 × 3 × 3 gleich 54 mal durchlaufen werden, was allen möglichen Kombinationen der übereinstimmenden Einträge entspricht. Wäre nur ein übereinstimmender Eintrag und wären keine doppelten Werte in der Faktentabelle oder in der Dimensionstabelle, dann würde nur ein übereinstimmendes Ergebnis erzeugt werden. Wenn die Faktentabelle als äußerste Tabelle in den verschachtelten Schleifen verwendet wird, wird die Faktentabelle oder werden die übereinstimmenden Einträge nur einmal, d. h. für jeden übereinstimmenden Eintrag in der Faktentabelle, gescannt. Jeder übereinstimmende Eintrag in der Faktentabelle wird daraufhin mit den Verkettungen, die in den verschachtelten Schleifen in den Dimensionstabellen gebildet werden, verkettet.
In anderen Ausführungsbeispielen können die Dimensionstabellen und die Faktentabelle in jeder beliebigen Reihenfolge verkettet werden. Die Faktentabelle kann beispielsweise an innerster Stelle aller verschachtelten Schleifen und eine der Dimensionstabellen die äußerste Tabelle aller verschachtelten Schleifen sein. In diesem Fall würde auf die Faktentabelle bei jedem Durchlauf übereinstimmender Einträge in den Dimensionstabellen, die bezüglich der Faktentabelle eine Außenposition aufweisen, mehrmals zugegriffen werden. Wir betrachten das obige Beispiel, bei dem es zwei übereinstimmende Einträge in der Faktentabelle, d. h. einen doppelten Wert, und drei übereinstimmende Einträge, d. h. zwei doppelte Werte in den Dimensionstabellen, gibt. Wenn die Faktentabelle im Beispiel die innerste Schleife ist, dann wird bei jedem Durchlauf der Dimensionstabellen in vorangegangenen verschachtelten Schleifen auf die Faktentabelle 3 × 3 × 3 gleich 27 mal zugegriffen. Darüber hinaus lassen sich die übereinstimmenden Einträge der Dimensionstabellen in jeder beliebigen Reihenfolge oder in einer Verbindungsreihenfolge zur Verbindung der Dimensionstabellen und Faktentabellen verketten. Methoden zur Bestimmung der Verbindungsreihenfolgen für die Dimensionstabelle sind dem Fachmann bekannt. Die verwandte und gleichzeitig schwebende Patentanmeldung mit dem Titel "Methode, System und Programm zur Bestimmung der Reihenfolge beim Sortieren der Verbindungsbefehle für Tabellen in einer Verbindungsabfrage" (amtliches Aktenzeichen US 09/340084), auf die hier verwiesen wird, beschreibt weitere Verfahren zur Bestimmung von Verbindungsreihenfolgen.
Die Logik von Fig. 5 erzeugt eine bedingte verschachtelte Schleife an jedem übereinstimmenden Eintrag in den Dimensionstabellen und in der Faktentabelle. Dies gewährleistet, dass von der Umpositionierungslogik der Fig. 3a, b keine doppelten Werte umgangen werden, wenn verschachtelte Schleifen erzeugt werden, um alle Verbindungsergebnisse einschließlich der Verbindungsergebnisse, die durch die Verkettung der doppelten Werte gebildet wurden, zurückzusenden. Mit der bevorzugten Logik von Fig. 5 wird für jede zusätzliche Verkettung, die infolge eines Ergebnisses der erzeugten verschachtelten Schleifen gebildet wird, der Abruf nicht für die doppelten Werte wiederholt. Stattdessen wird der übereinstimmende Eintrag, der anhand der ersten Verbindungsoperation ermittelt wurde, vom Speicher bereitgestellt, ohne dass die Suchmaschine die Faktentabelle erneut scannen muss, um dieselbe Antwort zu erzeugen. Wenn es also mit der Logik von Fig. 5 in Spalte i mi Instanzen oder Di des übereinstimmenden Werts und n Instanzen des übereinstimmenden Werts in der Faktentabelle gäbe, dann wäre die Anzahl der Verbindungsergebnisse oder übereinstimmenden Einträge, die während des Durchlaufs der verschachtelten Schleifen erzeugt würden, gleich
Jedes mi ist mindestens gleich 1 und überschreitet 1 bei jedem zusätzlichen doppelten Wert in der i-ten Spalte oder Di.
Die Faktentabelle als äußerste Tabelle eignet sich besonders in solchen Fällen, in denen sich ein Index in der Faktentabelle befindet, beispielsweise ein B-Baum-Index, wo eine einzelne Operation den Baum von Anfang bis Ende durchsucht. In einem solchen Fall werden verschachtelte Schleifen erzeugt, um die resultierende Verbindungsübereinstimmung für jeden Durchlauf der Schleife zu erzeugen. Die Logik von Fig. 5 behält die E/A und die Suche nach Ressourcen bei, indem sie es vermeidet, dass die Tabelle von Anfang an für jeden Durchlauf der verschachtelten Schleifenstruktur durchsucht werden muss. Statt dessen wird einfach der übereinstimmende Eintrag ausgegeben, und zwar mit der Suchmaschine 20, die ermittelt wurde, bevor der Prozeß der verschachtelten Schleife gestartet wurde.
Wenn sich die Faktentabelle bezüglich einer oder mehrerer Dimensionstabellen ganz innen befindet, ist dies besonders in Situationen geeignet, in denen es keinen Index in der Faktentabelle gibt und die Faktentabelle statt dessen anhand der Verbindungsspalten sortiert wird. In diesem Fall kann die Suchmaschine 20, nachdem sie eine Verbindungsoperation durchgeführt hat, an Block 114 zurück an das obere Ende der Faktentabelle gehen, um für die zusätzliche Instanz eines doppelten Werts in der Dimensionstabelle eine weitere Verbindungsoperation durchzuführen. Für jeden Durchlauf der Schleifen, für die die Faktentabelle die innere Tabelle hat, würde die Suchmaschine 20 an den Anfang der Faktentabelle gehen, um erneut die übereinstimmenden Einträge der Faktentabelle mit den Dimensionstabellen zu verketten. In bevorzugten Ausführungsbeispielen würde die Suchmaschine 20, wenn die Faktentabelle die innerste Tabelle ist und sich nicht in einer Indexform befindet, die Speicherstelle des ersten übereinstimmenden Eintrags in der Faktentabelle speichern. Auf diese Weise wird bei der Verbindung der äußeren Dimensionstabelle mit der Faktentabelle die Faktentabelle nicht gescannt, um den übereinstimmenden Eintrag zu suchen. Statt dessen wird der Zeiger verwendet, um zu ermitteln, wo die übereinstimmenden Einträge in der Faktentabelle beginnen. Dadurch wird es überflüssig, die gesamte Faktentabelle zu scannen, um beim Durchlaufen der Schleife auf der Suche nach übereinstimmenden Werten in der Dimensionstabelle, die bezüglich der Faktentabelle außerhalb liegen, den ersten übereinstimmenden Eintrag ausfindig zu machen.
In anderen Ausführungsbeispielen läßt sich die Faktentabelle als die innerste Schleife anordnen, auch wenn die Faktentabelle einen Index enthält, und die Faktentabelle läßt sich als die äußerste Schleife anordnen, wenn die Faktentabelle keinen Index enthält.
Fig. 6 veranschaulicht die vier Dimensionstabellen D1, D2, D3 und D4 500 und eine Faktentabelle 502 der Einträge Fi mit möglichen Werten. Angenommen, F2 und F2' haben Verbindungsspaltenwerte von 1, 20, C, 2000 und F3 von 1, 40, D, 1000. Die Logik der Fig. 3a, b alleine würde nur Übereinstimmungen der Faktentabelle für die erste Verkettung von 1, 20, C, 200 zweimal für F2 und F2' ergeben. Die Rückmeldung wäre F3 oder 1, 40, D, 1000. Die Fig. 3a, b alleine würden nicht die übereinstimmenden Einträge von F2 und F2' für die doppelten Werte in den Dimensionstabellen D1 und D3 von 1 und 1' und C und C' ergeben. Die Logik von Fig. 5 würde beim Empfang der ersten Übereinstimmung an F2 eine erste verschachtelte Schleife für jeden übereinstimmenden Eintrag in der Faktentabelle bilden, der mit jeder Instanz von D1 = 1 verbunden werden soll. Danach würde eine weitere innere verschachtelte Schleife gebildet werden, die einen Durchlauf für jeden zusätzlichen Wert von D3 = C durchführt. Jede dieser verschachtelten Schleifen würde zweimal durchlaufen werden, wodurch das übereinstimmende Ergebnis von F2 viermal erzeugt würde. Danach würden die verschachtelten Schleifen erneut für F2' und wiederholte Ergebnisse gebildet werden. Diese Ergebnisse der Anwendung der Logik in Fig. 5 wird an 504 in Fig. 7 veranschaulicht. Wie aus den Ergebnissen von 504 ersichtlich ist, ist die Faktentabelle die äußerste Tabelle, in der ein übereinstimmender Eintragswert in der Faktentabelle danach mit allen möglichen Kombinationen der Dimensionstabellen verkettet wird.
Auf diese Weise wird durch die unterschiedliche Anordnung der Faktentabelle in den verschachtelten Schleifen dasselbe Ergebnis erzielt, um weitere übereinstimmende Ergebnisse zu erzeugen, wenn es doppelte Werte in den Dimensionstabellen gibt. Die bevorzugte Logik von Fig. 5 läßt sich in die Umpositionierungslogik der Fig. 3a, b integrieren, um zu vermeiden, dass das kartesianische Produkt der doppelten Werte mit den anderen Dimensionstabellenspalten gebildet werden muss, um den vollständigen Raum der Dimensionstabellenzeilen einschließlich doppelter Zeilen für doppelte Werte zu erzeugen. Die Logik von Fig. 5 beinhaltet eine Änderung der Umpositionierungslogik von Fig. 3a, b, die dafür sorgt, dass alle übereinstimmenden Ergebnisse bereitgestellt werden können, wenn es doppelte Werte in den Dimensionstabellen und Faktentabellen gibt.
Zusammenfassung
Damit ist die Beschreibung der bevorzugten Ausführungsbei­ spiele der vorliegenden Erfindung abgeschlossen. Im Anschluß werden noch einige andere Ausführungsbeispiele der vorliegenden Erfindung vorgestellt.
Die bevorzugten Ausführungsbeispiele können als eine Methode, ein Gerät oder Produkt implementiert werden, bei dem eine Standardprogrammierung und/oder technische Verfahren eingesetzt werden, um Software, Firmware, Hardware oder eine Kombination daraus zu erstellen. Der Begriff "Produkt" (oder "Computerprogrammprodukt"), wie er in diesem Dokument verwendet wird, bezieht sich auf ein oder mehrere Computerprogramme und Datendateien, auf die von einem oder mehreren computerlesbaren Geräten, Datenträgern oder Medien, beispielsweise einem magnetischen Speichermedium, einem Diskettenlaufwerk, einem CD-ROM-Laufwerk, einem Dateiserver, der den Zugriff auf die Programme über eine Netzwerkverbindung ermöglicht, einem Holographiegerät usw. zugegriffen werden kann. Natürlich weiß der Fachmann auf diesem Gebiet, dass viele Abwandlungen dieser Konfiguration möglich sind, ohne vom Grundkonzept der vorliegenden Erfindung abzuweichen.
Bevorzugte Ausführungsbeispiele wurden bezüglich einer Suchmaschine beschrieben, die die Schritte der Erzeugung einer Suche und die Suche in der Faktentabelle und in den Dimensionstabellen durchführt. In anderen Ausführungsbeispielen lassen sich die von der Suchmaschine ausgeführten Funktionen mit verschiedenen Komponenten eines Datenbankverwaltungssystems (DBMS) durchführen.
Bevorzugte Ausführungsbeispiele wurden bezüglich einer Anordnung für eine Sternverbindungsoperation beschrieben, in der Dimensionstabellen zu einer Faktentabelle verbunden werden. Die bevorzugte Logik läßt sich jedoch auf beliebige andere Anordnungen anwenden, in denen eine mehrspaltige Tabelle mit fremden Schlüsselspalten und mehreren Satellitentabellen existiert, die als primäre Schlüsselspalten mindestens eine der fremden Schlüsselspalten der primären Tabelle aufweisen, um zwischen der mehrspaltigen Tabelle und den Satellitentabellen eine Integrität herzustellen. Die bevorzugten Ausführungsbeispiele sind nicht ausschließlich auf die Sternverbindungsanordnung beschränkt. Die Suchkriterien können auch Spalten der Dimensionstabellen enthalten, bei denen es sich nicht um die primäre Schlüsselspalte handelt oder die die primäre Schlüsselspalte mit einschließen.
Der Fachmann auf diesem Gebiet weiß, dass der Suchalgorithmus der bevorzugten Ausführungsbeispiele sich auf Suchoperationen beziehen kann, die bezüglich einer beliebigen Datenstruktur (Spalten, Zeilen oder Auflistung von Aufzeichnungen, die Werte für gemeinsame Informationsfelder haben) durchgeführt werden. Die Suchverfahren der bevorzugten Ausführungsbeispiele sind nicht auf Tabellen oder andere Datenbankstrukturen wie Tabellen, Indizes oder andere Kombinationen sortierter Daten, die berücksichtigt werden müssen, beschränkt.
Der Algorithmus der bevorzugten Ausführungsbeispiele wurde so beschrieben, dass bestimmte Schritte in einer bestimmten Reihenfolge existieren. Andere Algorithmen, die mit der vorliegenden Erfindung in Übereinstimmung liegen, können jedoch Änderungen, Löschungen und/oder Erweiterungen der Schritte umfassen, die in den Algorithmen der bevorzugten Ausführungsbeispiele beschrieben werden. Diese geänderten Algorithmen würden eine effizientere Suche nach fehlenden Spalten ermöglichen als derzeit eingesetzte Methoden zur Suche nach fehlenden Spalten in mehrspaltigen Indizes.
Beschrieben wurden bevorzugte Ausführungsbeispiele bezüglich der Ausführung einer verschachtelten Schleifenverbindung für jeden übereinstimmenden Eintrag zur Erzeugung übereinstimmender Ergebnisse für doppelte Werte in der Faktentabelle und den Dimensionstabellen. In anderen Ausführungsbeispielen kann jedoch auch jedes andere auf diesem Gebiet bekannte Verbindungsverfahren verwendet werden.
Beschrieben wurden bevorzugte Ausführungsbeispiele bezüglich Situationen, in denen die Satellitentabelle eine einzige Verbindungsspalte enthält, in der doppelte Werte vorhanden sein können. Eine Satellitentabelle kann jedoch mehrere Verbindungsspalten enthalten. In diesem Fall würde die Suchmaschine die Verkettung der Verbindungsspalten innerhalb der Satellitentabelle umfassen, wenn übereinstimmende Werte ermittelt werden, d. h. übereinstimmende Werte werden in allen Verbindungsspalten einer Satellitentabelle betrachtet.
Zusammenfassend läßt sich sagen, dass die bevorzugten Ausführungsbeispiele eine Methode, ein System und ein Programm zur Durchführung einer Verbindungsoperation in einer mehrspaltigen Tabelle und in mindestens zwei Satellitentabellen mit einer Verbindungsbedingung beschreiben. Jede Satellitentabelle besteht aus mehreren Zeilen und mindestens einer Verbindungsspalte. Die mehrspaltige Tabelle besteht aus mehreren Zeilen und mindestens einer Spalte, die der Verbindungsspalte in jeder Satellitentabelle entspricht. Eine Verbindungsoperation wird in den Zeilen der Satellitentabellen durchgeführt, um verkettete Zeilen der Satellitentabellen zu erzeugen. Eine der verketteten Zeilen wird mit der mehrspaltigen Tabelle verbunden, und es wird ein Eintrag aus der mehrspaltigen Tabelle empfangen. Danach wird festgestellt, ob der zurückgesendete Eintrag die Suchkriterien erfüllt. Wenn ja, wird festgestellt, ob eine der Satellitentabellen doppelte Werte in der Verbindungsspalte des zurückgesendeten übereinstimmenden Eintrags oder ob die mehrspaltige Tabelle doppelte Einträge in den Verbindungsspalten besitzt. Die zurückgesendeten übereinstimmenden Einträge werden für jeden doppelten Wert in den Satellitentabellen und jeden doppelten Eintrag in der mehrspaltigen Tabelle erzeugt.
Die obige Beschreibung der bevorzugten Ausführungsbeispiele der vorliegenden Erfindung dienen lediglich zur Veranschaulichung. Sie erhebt nicht den Anspruch auf Vollständigkeit und soll die Ausgestaltung nicht auf die beschriebene Form beschränken. Im Zusammenhang mit der obigen Beschreibung sind zahlreiche Änderungen und Abweichungen möglich. Der Anwendungsbereich der vorliegenden Erfindung soll nicht durch diese ausführliche Beschreibung, sondern vielmehr durch die beigefügten Ansprüche beschränkt werden. Die obige Spezifikation mit all ihren Beispielen und Daten liefert eine vollständige Beschreibung der Herstellung und Verwendung der vorliegenden Erfindung. Da viele Abwandlungen der Konfiguration der vorliegenden Erfindung möglich sind, ohne vom Grundkonzept, der vorliegenden Erfindung abzuweichen, wird die Erfindung in den nachfolgenden Ansprüchen definiert.

Claims (27)

1. Eine Methode zur Durchführung einer Verbindungsoperation in einer mehrspaltigen Tabelle und in mindestens zwei Satellitentabellen mit einer Verbindungsbedingung, wobei jede Satellitentabelle aus mehreren Zeilen und mindestens einer Verbindungsspalte besteht und wobei die mehrspaltige Tabelle aus mehreren Zeilen und mindestens einer Spalte besteht, die der Verbindungsspalte in jeder Satellitentabelle entspricht, wobei diese Methode folgendes umfasst:
Durchführung einer Verbindungsoperation in den Zeilen der Satellitentabellen zur Erzeugung verketteter Zeilen der Satellitentabellen;
Verbindung einer der verketteten Zeilen mit der mehrspaltigen Tabelle;
Empfang eines zurückgesendeten Eintrags von der mehrspaltigen Tabelle;
Bestimmung, ob der zurückgesendete Eintrag die Suchkriterien erfüllt;
nachdem festgestellt wurde, dass die zurückgesendeten Einträge die Suchkriterien erfüllen, Bestimmung, ob eine:
  • a) der Satellitentabellen doppelte Werte in der Verbindungsspalte des zurückgesendeten übereinstimmenden Eintrags besitzt oder
  • b) ob die mehrspaltige Tabelle doppelte Einträge in den Verbindungsspalten aufweist; und
Erzeugung des zurückgesendeten übereinstimmenden Eintrags für jeden:
(i) der doppelten Werte in einer der Satellitentabellen oder
(ii) der doppelten Einträge in der mehrspaltigen Tabelle.
2. Die Methode gemäß Anspruch 1, die weiterhin den Schritt der Feststellung umfaßt, ob beide Satellitentabellen und die mehrspaltige Tabelle doppelte Werte besitzen, wobei die Erzeugung der zurückgesendeten übereinstimmenden Einträge weiterhin folgendes umfasst:
Ermittlung aller möglichen Kombinationen der Anzahl übereinstimmender Einträge in der mehrspaltigen Tabelle und der übereinstimmenden Verbindungsspaltenwerte in den Satellitentabellen; und
Rücksendung des übereinstimmenden Eintrags für jede mögliche Kombination der übereinstimmenden Einträge und übereinstimmenden Werte.
3. Die Methode gemäß Anspruch 2, wobei die Ermittlung aller möglichen Kombinationen die Erzeugung mindestens einer verschachtelten Schleife umfasst, in der die übereinstimmenden Werte in jeder ermittelten Satellitentabelle und alle übereinstimmenden Einträge in der mehrspaltigen Tabelle durchlaufen werden und der übereinstimmende Eintrag für jeden Durchlauf jeder der verschachtelten Schleifen zurückgesendet wird.
4. Die Methode gemäß Anspruch 3, wobei das Verbindungsergebnis der übereinstimmenden Einträge aus der mehrspaltigen Tabelle und der übereinstimmenden Werte aus den Satellitentabellen bei jedem Durchlauf der verschachtelten Schleife aus dem Speicher zurückgesendet wird.
5. Die Methode gemäß Anspruch 3, wobei die mehrspaltige Tabelle sich an äußerster Stelle in der verschachtelten Schleife bezüglich aller übereinstimmenden Werte der Satellitentabellen befindet, und wobei für jeden übereinstimmenden Eintrag in der mehrspaltigen Tabelle die verschachtelte Schleife jeden übereinstimmenden Wert in den Satellitentabellen durchläuft.
6. Die Methode gemäß Anspruch 5, wobei die Verwendung der mehrspaltigen Tabelle in der Verbindungsoperation die Verwendung eines Indizes in der mehrspaltigen Tabelle, deren Einträge in einer Baumstruktur gespeichert sind, umfaßt.
7. Die Methode gemäß Anspruch 3, wobei die mehrspaltige Tabelle eine innere Position bezüglich mindestens einer Satellitentabelle in den verschachtelten Schleifen aufweist.
8. Die Methode gemäß Anspruch 7, wobei die mehrspaltige Tabelle anhand der Verbindungsspalten sortiert ist.
9. Die Methode gemäß Anspruch 8, die weiterhin folgendes umfasst:
einen Zeiger auf einen ersten übereinstimmenden Eintrag in der mehrspaltigen Tabelle; und
Verarbeitung des Zeigers, so dass er auf den ersten übereinstimmenden Eintrag zugreift, wenn die Iterationen zur Verkettung der Dimensionstabellen und der mehrspaltigen Tabelle durchlaufen werden.
10. Ein System zur Durchführung einer Verbindungsoperation in einer mehrspaltigen Tabelle und in mindestens zwei Satellitentabellen mit einer Verbindungsbedingung, wobei dieses System folgendes umfasst:
einen Computer;
einen Speicherbereich, auf den der Computer zugreifen kann, der mindestens zwei Satellitentabellen umfasst, wobei jede Satellitentabelle aus mehreren Zeilen und mindestens einer Verbindungsspalte besteht, sowie eine mehrspaltige Tabelle umfaßt, die aus mehreren Zeilen und mindestens einer Spalte, die der Verbindungsspalte in jeder Satellitentabelle entspricht, besteht;
eine Programmlogik, die vom Computer ausgeführt wird, wobei diese Logik folgendes umfasst:
  • a) ein Mittel zur Durchführung einer Verbindungsoperation in den Zeilen der Satellitentabellen, um so verkettete Zeilen der Satellitentabellen zu erzeugen;
  • b) ein Mittel zur Verbindung einer der verketteten Zeilen mit der mehrspaltigen Tabelle;
  • c) ein Mittel für den Empfang eines zurückgesendeten Eintrags aus der mehrspaltigen Tabelle;
  • d) ein Mittel zur Bestimmung, ob der zurückgesendete Eintrag die Suchkriterien erfüllt;
  • e) ein Mittel zur Bestimmung:
    a) ob die Satellitentabellen doppelte Werte in der Verbindungsspalte des zurückgesendeten übereinstimmenden Eintrags enthalten oder
    b) ob die mehrspaltige Tabelle doppelte Einträge in den Verbindungsspalten enthält, nachdem festgestellt wurde, dass die zurückgesendeten Einträge die Suchkriterien erfüllen; und
  • f) ein Mittel zur Erzeugung des zurückgesendeten übereinstimmenden Eintrags für:
    a) die doppelten Werte in einer der Satellitentabellen oder
    b) die doppelten Einträge in der mehrspaltigen Tabelle.
11. Das System gemäß Anspruch 10, wobei die Programmlogik weiterhin ein Mittel zur Feststellung umfasst, ob beide Satellitentabellen doppelte Werte und die mehrspaltige Tabelle doppelte Einträge aufweisen, und wobei die Programmlogik zur Erzeugung der zurückgesendeten übereinstimmenden Einträge weiterhin folgendes umfaßt:
ein Mittel zur Ermittlung aller möglichen Kombinationen der Anzahl übereinstimmender Einträge in der mehrspaltigen Tabelle und der übereinstimmenden Verbindungsspaltenwerte in den Satellitentabellen; und
ein Mittel zur Rücksendung des übereinstimmenden Eintrags für jede mögliche Kombination der übereinstimmenden Einträge und übereinstimmenden Werte.
12. Das System gemäß Anspruch 11, wobei die Programmlogik zur Ermittlung aller möglichen Kombinationen ein Mittel zur Erzeugung mindestens einer verschachtelten Schleife umfasst, um die übereinstimmenden Werte in jeder ermittelten Satellitentabelle und alle übereinstimmenden Einträge in der mehrspaltigen Tabelle zu durchlaufen, wobei der übereinstimmende Eintrag für jeden Durchlauf jeder der verschachtelten Schleifen zurückgesendet wird.
13. Das System gemäß Anspruch 12, wobei das Verbindungsergebnis der übereinstimmenden Einträge aus der mehrspaltigen Tabelle und die übereinstimmenden Werte aus den Satellitentabellen bei jedem Durchlauf der verschachtelten Schleife aus dem Speicher zurückgesendet wird.
14. Das System gemäß Anspruch 12, wobei die Programmlogik zur Erzeugung jeder verschachtelten Schleife folgendes umfasst:
ein Mittel zur Verwendung der mehrspaltigen Tabelle an einer äußersten Position in der verschachtelten Schleife bezüglich aller übereinstimmenden Werte der Satellitentabellen;
ein Mittel zur Durchführung eines Durchlaufs der verschachtelten Schleife anhand jedes übereinstimmenden Werts in den Satellitentabellen für jeden übereinstimmenden Wert in der mehrspaltigen Tabelle.
15. Das System gemäß Anspruch 14, bei dem ein Index in der mehrspaltigen Tabelle Einträge aufweist, die in einer Baumstruktur gespeichert sind, wobei das System weiterhin eine Programmlogik zur Verwendung des Indizes in der Verbindungsoperation aufweist.
16. Das System gemäß Anspruch 12, bei dem die mehrspaltige Tabelle eine innere Position bezüglich mindestens einer Satellitentabelle in den verschachtelten Schleifen aufweist.
17. Das System gemäß Anspruch 16, bei dem die mehrspaltige Tabelle anhand der Verbindungsspalten sortiert ist.
18. Das System gemäß Anspruch 17, bei dem die Programmlogik weiterhin folgendes umfasst:
ein Mittel zur Darstellung eines Zeigers auf einen ersten übereinstimmenden Eintrag in der mehrspaltigen Tabelle; und
ein Mittel zur Verarbeitung des Zeigers, so dass dieser auf den ersten übereinstimmenden Eintrag zugreifen kann, wenn die Iterationen zur Verkettung der Dimensionstabellen und der mehrspaltigen Tabelle durchgeführt werden.
19. Ein Produkt zur Programmierung eines Computers, so dass dieser eine Verbindungsoperation in einer mehrspaltigen Tabelle und in mindestens zwei Satellitentabellen mit einer Verbindungsbedingung durchführt, wobei jede Satellitentabelle aus mehreren Zeilen und mindestens einer Verbindungsspalte besteht, und wobei die mehrspaltige Tabelle aus mehreren Zeilen und mindestens einer Spalte entsprechend der Verbindungsspalte in jeder Satellitentabelle besteht, wobei es sich bei dem genannten Produkt um computerlesbare Medien handelt, die mindestens ein Computerprogramm enthalten, das darin eingebettet und in der Lage ist, den Computer zur Ausführung einer der folgenden Operationen zu veranlassen:
Verbindungsoperation in den Zeilen der Satellitentabellen, um verkettete Zeilen der Satellitentabellen zu erzeugen;
Verbindung einer der verketteten Zeilen mit der mehrspaltigen Tabelle;
Empfang eines von der mehrspaltigen Tabelle zurückgesendeten Eintrags;
Bestimmung, ob der zurückgesendete Eintrag die Suchkriterien erfüllt;
Bestimmung, ob:
(i) die Satellitentabellen doppelte Werte in der Verbindungsspalte des zurückgesendeten übereinstimmenden Eintrags enthalten, oder
(ii) ob die mehrspaltige Tabelle doppelte Einträge in den Verbindungsspalten aufweist, nachdem sichergestellt wurde, dass der zurückgesendete Eintrag die Suchkriterien erfüllt; und
Erzeugung des zurückgesendeten übereinstimmenden Eintrags für jeden:
(i) der doppelten Werte in einer der Satellitentabellen oder
(ii) der doppelten Einträge in der mehrspaltigen Tabelle.
20. Das Produkt gemäß Anspruch 19 sowie die Feststellung, ob beide Satellitentabellen doppelte Werte aufweisen und die mehrspaltige Tabelle doppelte Einträge besitzt, wobei die Erzeugung der zurückgesendeten übereinstimmenden Einträge folgendes umfasst:
Bestimmung aller möglichen Kombinationen aus der Anzahl der übereinstimmenden Einträge in der mehrspaltigen Tabelle und der übereinstimmenden Verbindungsspaltenwerte in den Satellitentabellen; und
Rücksendung des übereinstimmenden Eintrags für jede mögliche Kombination der übereinstimmenden Einträge und übereinstimmenden Werte.
21. Das Produkt gemäß Anspruch 20, wobei die Bestimmung aller möglichen Kombinationen die Erzeugung mindestens einer verschachtelten Schleife umfasst, in der die übereinstimmenden Werte in jeder geprüften Satellitentabelle und alle übereinstimmenden Einträge in der mehrspaltigen Tabelle durchlaufen werden und der übereinstimmende Eintrag für jeden Durchlauf jeder der verschachtelten Schleifen zurückgesendet wird.
22. Das Produkt gemäß Anspruch 21, wobei das Verbindungsergebnis der übereinstimmenden Einträge aus der mehrspaltigen Tabelle und der übereinstimmenden Werte aus den Satellitentabellen bei jedem Durchlauf der verschachtelten Schleife aus dem Speicher zurückgesendet wird.
23. Das Produkt gemäß Anspruch 21, wobei sich die mehrspaltige Tabelle an der äußersten Position in der verschachtelten Schleife bezüglich aller übereinstimmenden Werte der Satellitentabellen befindet, und wobei für jeden übereinstimmenden Eintrag in der mehrspaltigen Tabelle die verschachtelte Schleife jeden übereinstimmenden Wert in den Satellitentabellen durchläuft.
24. Das Produkt gemäß Anspruch 23, wobei die Verwendung der mehrspaltigen Tabelle in der Verbindungsoperation die Verwendung eines Indizes in der mehrspaltigen Tabelle, deren Einträge in einer Baumstruktur gespeichert sind, umfaßt.
25. Das Produkt gemäß Anspruch 21, wobei die mehrspaltige Tabelle eine innere Position bezüglich mindestens einer Satellitentabelle in den verschachtelten Schleifen aufweist.
26. Das Produkt gemäß Anspruch 25, wobei die mehrspaltige Tabelle anhand der Verbindungsspalten sortiert wird.
27. Das Produkt gemäß Anspruch 26, das weiterhin folgendes umfasst:
einen Zeiger auf einen ersten übereinstimmenden Eintrag in der mehrspaltigen Tabelle und
Verarbeitung des Zeigers, so dass dieser auf den ersten übereinstimmenden Eintrag zugreifen kann, wenn die Iterationen zur Verkettung der Dimensionstabellen und der mehrspaltigen Tabelle durchgeführt werden.
DE10028688A 1999-06-25 2000-06-09 Methode, System und Programm für eine Verbindungsoperation in einer mehrspaltigen Tabelle sowie in Satellitentabellen mit doppelten Werten Expired - Lifetime DE10028688B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/344,731 1999-06-25
US09/344,731 US6374235B1 (en) 1999-06-25 1999-06-25 Method, system, and program for a join operation on a multi-column table and satellite tables including duplicate values

Publications (2)

Publication Number Publication Date
DE10028688A1 true DE10028688A1 (de) 2001-06-28
DE10028688B4 DE10028688B4 (de) 2010-02-04

Family

ID=23351774

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10028688A Expired - Lifetime DE10028688B4 (de) 1999-06-25 2000-06-09 Methode, System und Programm für eine Verbindungsoperation in einer mehrspaltigen Tabelle sowie in Satellitentabellen mit doppelten Werten

Country Status (2)

Country Link
US (1) US6374235B1 (de)
DE (1) DE10028688B4 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10318701B2 (en) 2016-01-19 2019-06-11 Ford Motor Company Resolving configuration conflicts using a multi-valued decision diagram

Families Citing this family (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000030007A2 (en) 1998-11-13 2000-05-25 The Chase Manhattan Bank System and method for multicurrency and multibank processing over a non-secure network
CN1439142A (zh) 1998-12-23 2003-08-27 大通银行 包括生成、处理和跟踪在内的贸易运作及贸易单证的集成系统和方法
US7068832B1 (en) 1999-05-11 2006-06-27 The Chase Manhattan Bank Lockbox imaging system
US6484179B1 (en) * 1999-10-25 2002-11-19 Oracle Corporation Storing multidimensional data in a relational database management system
US7805365B1 (en) 1999-10-25 2010-09-28 Jpmorgan Chase Bank, N.A. Automated statement presentation, adjustment and payment system and method therefor
KR100327122B1 (ko) * 1999-12-24 2002-03-13 오길록 재삽입 연산을 수행하는 고차원 색인구조를 위한 회복방법
US7822656B2 (en) 2000-02-15 2010-10-26 Jpmorgan Chase Bank, N.A. International banking system and method
US8768836B1 (en) 2000-02-18 2014-07-01 Jpmorgan Chase Bank, N.A. System and method for electronic deposit of a financial instrument by banking customers from remote locations by use of a digital image
US20020059216A1 (en) * 2000-03-31 2002-05-16 Gowen Richard C. Decision support system and method
US7584125B2 (en) * 2000-06-26 2009-09-01 Jpmorgan Chase Bank, N.A. Electronic check presentment system and method having an item sequence capability
US6640221B1 (en) * 2000-07-10 2003-10-28 Sas Institute Inc. System and method for configuring, sequencing and viewing joins in a query
US8468071B2 (en) * 2000-08-01 2013-06-18 Jpmorgan Chase Bank, N.A. Processing transactions using a register portion to track transactions
US20070228144A1 (en) * 2000-08-01 2007-10-04 Lee Knackstedt Processing transactions using a register portion to track transactions
AU2001285422A1 (en) 2000-08-11 2002-02-25 John J. Loy Trade receivable processing method and apparatus
AU2002224482A1 (en) 2000-11-06 2002-05-15 First Usa Bank, N.A. System and method for selectable funding of electronic transactions
US20070162387A1 (en) * 2000-11-06 2007-07-12 Cataline Glen R System and method for optimized funding of electronic transactions
US6493701B2 (en) * 2000-11-22 2002-12-10 Sybase, Inc. Database system with methodogy providing faster N-ary nested loop joins
US8805739B2 (en) 2001-01-30 2014-08-12 Jpmorgan Chase Bank, National Association System and method for electronic bill pay and presentment
US7401048B2 (en) * 2001-06-01 2008-07-15 Jpmorgan Chase Bank, N.A. System and method for trade settlement tracking and relative ranking
US20030033250A1 (en) * 2001-08-10 2003-02-13 Bob Mayes System and method for automatic terminal management
US7822684B2 (en) * 2001-10-05 2010-10-26 Jpmorgan Chase Bank, N.A. Personalized bank teller machine
US7437327B2 (en) * 2002-05-24 2008-10-14 Jp Morgan Chase Bank Method and system for buyer centric dispute resolution in electronic payment system
US20030220858A1 (en) * 2002-05-24 2003-11-27 Duc Lam Method and system for collaborative vendor reconciliation
US7689482B2 (en) 2002-05-24 2010-03-30 Jp Morgan Chase Bank, N.A. System and method for payer (buyer) defined electronic invoice exchange
US20030220863A1 (en) 2002-05-24 2003-11-27 Don Holm System and method for varying electronic settlements between buyers and suppliers with dynamic discount terms
JP2004110219A (ja) * 2002-09-17 2004-04-08 Hitachi Ltd データ処理システム及びジョイン処理方法
US7769650B2 (en) 2002-12-03 2010-08-03 Jp Morgan Chase Bank Network-based sub-allocation systems and methods for swaps
US7219091B1 (en) 2003-02-24 2007-05-15 At&T Corp. Method and system for pattern matching having holistic twig joins
US7451144B1 (en) 2003-02-25 2008-11-11 At&T Corp. Method of pattern searching
US10311412B1 (en) 2003-03-28 2019-06-04 Jpmorgan Chase Bank, N.A. Method and system for providing bundled electronic payment and remittance advice
US8630947B1 (en) 2003-04-04 2014-01-14 Jpmorgan Chase Bank, N.A. Method and system for providing electronic bill payment and presentment
US7792717B1 (en) 2003-10-31 2010-09-07 Jpmorgan Chase Bank, N.A. Waterfall prioritized payment processing
US7702577B1 (en) 2003-11-06 2010-04-20 Jp Morgan Chase Bank, N.A. System and method for conversion of initial transaction to final transaction
US7814003B2 (en) 2003-12-15 2010-10-12 Jp Morgan Chase Billing workflow system for crediting charges to entities creating derivatives exposure
US7380707B1 (en) * 2004-02-25 2008-06-03 Jpmorgan Chase Bank, N.A. Method and system for credit card reimbursements for health care transactions
US20050273347A1 (en) * 2004-06-04 2005-12-08 Bank One, Delaware, National Association Method and system for processing payment items at a central processor
US8554673B2 (en) 2004-06-17 2013-10-08 Jpmorgan Chase Bank, N.A. Methods and systems for discounts management
US8121944B2 (en) 2004-06-24 2012-02-21 Jpmorgan Chase Bank, N.A. Method and system for facilitating network transaction processing
US8290863B2 (en) * 2004-07-23 2012-10-16 Jpmorgan Chase Bank, N.A. Method and system for expediting payment delivery
US8290862B2 (en) * 2004-07-23 2012-10-16 Jpmorgan Chase Bank, N.A. Method and system for expediting payment delivery
CA2574893A1 (en) * 2004-07-27 2006-03-02 Jp Morgan Chase Bank System and method for measuring communication-system infrastructure usage
US20060089891A1 (en) * 2004-10-21 2006-04-27 Nigam Rakesh K System and method for generating expense information
US20060095374A1 (en) * 2004-11-01 2006-05-04 Jp Morgan Chase System and method for supply chain financing
US20060147894A1 (en) * 2004-12-30 2006-07-06 Vicam, L.P. Jacketed vessel for holding semen for sex biasing mammals through artificial insemination and systems and methods for enhancing the probability of sex biasing using the same
US20100121743A1 (en) * 2005-04-13 2010-05-13 Jp Morgan Chase Bank System and method for generating dividend information
US7822682B2 (en) 2005-06-08 2010-10-26 Jpmorgan Chase Bank, N.A. System and method for enhancing supply chain transactions
US7676409B1 (en) 2005-06-20 2010-03-09 Jpmorgan Chase Bank, N.A. Method and system for emulating a private label over an open network
US8301529B1 (en) 2005-11-02 2012-10-30 Jpmorgan Chase Bank, N.A. Method and system for implementing effective governance of transactions between trading partners
US20080040249A1 (en) * 2006-01-20 2008-02-14 Jpmorgan Chase Bank, N.A. Method for transaction processing in a capture and deposit
US7734545B1 (en) 2006-06-14 2010-06-08 Jpmorgan Chase Bank, N.A. Method and system for processing recurring payments
US7730056B2 (en) * 2006-12-28 2010-06-01 Sap Ag Software and method for utilizing a common database layout
US8606799B2 (en) * 2006-12-28 2013-12-10 Sap Ag Software and method for utilizing a generic database query
US8417731B2 (en) 2006-12-28 2013-04-09 Sap Ag Article utilizing a generic update module with recursive calls identify, reformat the update parameters into the identified database table structure
US7916925B2 (en) 2007-02-09 2011-03-29 Jpmorgan Chase Bank, N.A. System and method for generating magnetic ink character recognition (MICR) testing documents
US8762270B1 (en) 2007-08-10 2014-06-24 Jpmorgan Chase Bank, N.A. System and method for providing supplemental payment or transaction information
US8788281B1 (en) 2007-12-03 2014-07-22 Jp Morgan Chase Bank, N.A. System and method for processing qualified healthcare account related financial transactions
US7766244B1 (en) 2007-12-31 2010-08-03 Jpmorgan Chase Bank, N.A. System and method for processing transactions using a multi-account transactions device
US8622308B1 (en) 2007-12-31 2014-01-07 Jpmorgan Chase Bank, N.A. System and method for processing transactions using a multi-account transactions device
US8352458B2 (en) * 2008-05-07 2013-01-08 Oracle International Corporation Techniques for transforming and loading data into a fact table in a data warehouse
US8112355B1 (en) 2008-09-05 2012-02-07 Jpmorgan Chase Bank, N.A. Method and system for buyer centric dispute resolution in electronic payment system
US9092447B1 (en) 2008-10-20 2015-07-28 Jpmorgan Chase Bank, N.A. Method and system for duplicate detection
US8391584B2 (en) 2008-10-20 2013-03-05 Jpmorgan Chase Bank, N.A. Method and system for duplicate check detection
US9176860B2 (en) * 2009-02-12 2015-11-03 Hewlett-Packard Development Company, L.P. Database join optimized for flash storage
US8458681B1 (en) * 2009-06-30 2013-06-04 Google Inc. Method and system for optimizing the object code of a program
US8447641B1 (en) 2010-03-29 2013-05-21 Jpmorgan Chase Bank, N.A. System and method for automatically enrolling buyers into a network
US8589288B1 (en) 2010-10-01 2013-11-19 Jpmorgan Chase Bank, N.A. System and method for electronic remittance of funds
US8689200B1 (en) 2011-01-12 2014-04-01 Google Inc. Method and system for optimizing an executable program by generating special operations for identical program entities
US8683455B1 (en) 2011-01-12 2014-03-25 Google Inc. Method and system for optimizing an executable program by selectively merging identical program entities
US8543503B1 (en) 2011-03-30 2013-09-24 Jpmorgan Chase Bank, N.A. Systems and methods for automated invoice entry
US8543504B1 (en) 2011-03-30 2013-09-24 Jpmorgan Chase Bank, N.A. Systems and methods for automated invoice entry
US9043310B2 (en) 2011-11-08 2015-05-26 International Business Machines Corporation Accessing a dimensional data model when processing a query
US8825633B2 (en) 2012-05-15 2014-09-02 Sas Institute Inc. System, method, and data structure for automatically generating database queries which are data model independent and cardinality independent
USD678653S1 (en) 2012-07-19 2013-03-19 Jpmorgan Chase Bank, N.A. Drive-up financial transaction machine
US8949218B2 (en) 2012-12-26 2015-02-03 Teradata Us, Inc. Techniques for join processing on column partitioned tables
US8972381B2 (en) 2012-12-26 2015-03-03 Teradata Us, Inc. Techniques for three-step join processing on column partitioned tables
USD690074S1 (en) 2013-03-13 2013-09-17 Jpmorgan Chase Bank, N.A. Financial transaction machine
US9058626B1 (en) 2013-11-13 2015-06-16 Jpmorgan Chase Bank, N.A. System and method for financial services device usage
US10325032B2 (en) 2014-02-19 2019-06-18 Snowflake Inc. Resource provisioning systems and methods
US10180961B2 (en) * 2014-12-17 2019-01-15 Teradata Us, Inc. Remote nested join between primary access module processors (AMPs)
US10430408B2 (en) 2015-09-24 2019-10-01 International Business Machines Corporation Technology to reduce cost of concatenation for hash array
US11016978B2 (en) 2019-09-18 2021-05-25 Bank Of America Corporation Joiner for distributed databases
US11126401B2 (en) 2019-09-18 2021-09-21 Bank Of America Corporation Pluggable sorting for distributed databases

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5043872A (en) 1988-07-15 1991-08-27 International Business Machines Corporation Access path optimization using degrees of clustering
US5345585A (en) 1991-12-02 1994-09-06 International Business Machines Corporation Method for optimizing processing of join queries by determining optimal processing order and assigning optimal join methods to each of the join operations
US5367675A (en) 1991-12-13 1994-11-22 International Business Machines Corporation Computer automated system and method for optimizing the processing of a query in a relational database system by merging subqueries with the query
US5301317A (en) 1992-04-27 1994-04-05 International Business Machines Corporation System for adapting query optimization effort to expected execution time
FR2696852B1 (fr) 1992-10-12 1994-12-23 Bull Sa Procédé d'aide à l'optimisation d'une requête d'un système de gestion de base de données relationnel.
US5423035A (en) 1992-12-23 1995-06-06 Hughes Aircraft Company Method for evaluating relational database queries with automatic indexing and ordering of join components
US5469568A (en) 1993-01-07 1995-11-21 International Business Machines Corporation Method for choosing largest selectivities among eligible predicates of join equivalence classes for query optimization
US5742806A (en) * 1994-01-31 1998-04-21 Sun Microsystems, Inc. Apparatus and method for decomposing database queries for database management system including multiprocessor digital data processing system
CA2124094C (en) 1994-05-20 1999-07-20 K. Bernhard Schiefer Method and apparatus for optimizing data retrieval using index scanning
US5680603A (en) 1994-10-20 1997-10-21 International Business Machines Corporation Method and apparatus for reordering complex SQL queries containing inner and outer join operations
US5799309A (en) 1994-12-29 1998-08-25 International Business Machines Corporation Generating an optimized set of relational queries fetching data in an object-relational database
US5671403A (en) 1994-12-30 1997-09-23 International Business Machines Corporation Iterative dynamic programming system for query optimization with bounded complexity
US5615361A (en) 1995-02-07 1997-03-25 International Business Machines Corporation Exploitation of uniqueness properties using a 1-tuple condition for the optimization of SQL queries
US5548754A (en) 1995-02-07 1996-08-20 International Business Machines Corporation Optimization of SQL queries using early-out join transformations
US5706494A (en) 1995-02-10 1998-01-06 International Business Machines Corporation System and method for constraint checking bulk data in a database
US5546576A (en) 1995-02-17 1996-08-13 International Business Machines Corporation Query optimizer system that detects and prevents mutating table violations of database integrity in a query before execution plan generation
US5548755A (en) 1995-02-17 1996-08-20 International Business Machines Corporation System for optimizing correlated SQL queries in a relational database using magic decorrelation
CA2168287C (en) * 1995-03-31 2000-05-23 Guy M. Lohman Method for detecting and optimizing relational queries with encoding/decoding tables
US5666525A (en) * 1995-09-21 1997-09-09 The Trustees Of Columbia University In The City Of New York System and method for performing an efficient join operation on large tables with a small main memory
US5734893A (en) 1995-09-28 1998-03-31 Ibm Corporation Progressive content-based retrieval of image and video with adaptive and iterative refinement
US5689698A (en) 1995-10-20 1997-11-18 Ncr Corporation Method and apparatus for managing shared data using a data surrogate and obtaining cost parameters from a data dictionary by evaluating a parse tree object
US5761657A (en) 1995-12-21 1998-06-02 Ncr Corporation Global optimization of correlated subqueries and exists predicates
US5706495A (en) 1996-05-07 1998-01-06 International Business Machines Corporation Encoded-vector indices for decision support and warehousing
US5758335A (en) 1996-09-27 1998-05-26 Bull Hn Information Systems Inc. Optimizing table join ordering using graph theory prior to query optimization
US5899986A (en) * 1997-02-10 1999-05-04 Oracle Corporation Methods for collecting query workload based statistics on column groups identified by RDBMS optimizer
US5995957A (en) * 1997-02-28 1999-11-30 International Business Machines Corporation Query optimization through the use of multi-column statistics to avoid the problems of column correlation
US5848408A (en) 1997-02-28 1998-12-08 Oracle Corporation Method for executing star queries
US6138111A (en) 1997-05-02 2000-10-24 Informix Software, Inc. Cardinality-based join ordering
US5905985A (en) 1997-06-30 1999-05-18 International Business Machines Corporation Relational database modifications based on multi-dimensional database modifications
US5873075A (en) 1997-06-30 1999-02-16 International Business Machines Corporation Synchronization of SQL actions in a relational database system
US5822750A (en) 1997-06-30 1998-10-13 International Business Machines Corporation Optimization of correlated SQL queries in a relational database management system
US6105018A (en) * 1998-03-26 2000-08-15 Oracle Corporation Minimum leaf spanning tree
US6285997B1 (en) * 1998-11-16 2001-09-04 International Business Machines Corporation Query optimization with deferred update and autonomous sources

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10318701B2 (en) 2016-01-19 2019-06-11 Ford Motor Company Resolving configuration conflicts using a multi-valued decision diagram
US10318702B2 (en) 2016-01-19 2019-06-11 Ford Motor Company Multi-valued decision diagram reversible restriction
US10318703B2 (en) 2016-01-19 2019-06-11 Ford Motor Company Maximally standard automatic completion using a multi-valued decision diagram
US10325063B2 (en) 2016-01-19 2019-06-18 Ford Motor Company Multi-valued decision diagram feature state determination

Also Published As

Publication number Publication date
US6374235B1 (en) 2002-04-16
DE10028688B4 (de) 2010-02-04

Similar Documents

Publication Publication Date Title
DE10028688B4 (de) Methode, System und Programm für eine Verbindungsoperation in einer mehrspaltigen Tabelle sowie in Satellitentabellen mit doppelten Werten
DE69910219T2 (de) Transformation der perspektive auf tabellen von relationalen datenbanken
DE69904588T2 (de) Datenbankzugangswerkzeug
DE60121231T2 (de) Datenverarbeitungsverfahren
DE68927743T2 (de) Sortier-/Mischausgabe
DE60130475T2 (de) Durchführung von kalkulationen eines tabellenkalkulationstyps in einem datenbanksystem
DE69615230T2 (de) Relationales Datenbanksystem und Verfahren mit grosser Verfügbarkeit der Daten bei der Umstrukturierung von Tabellendaten
DE60035432T2 (de) System zur verwaltung der rdbm fragmentierungen
DE69424586T2 (de) Verfahren und System zum formulieren interaktiver Abfragen
DE69602364T2 (de) Rechnersystem um semantische objektmodelle von existierenden relationellen datenbanksystemen herzustellen
DE69813652T2 (de) System und Verfahren zum hierarchischen Zusammenstellen und Einordnen eines Satzes von Objekten in einem Abfragekontext
DE69128958T2 (de) Schneide- und Klebefilterung von unbegrenzten, dynamischen, unmodifizierbaren Datenströmen
DE69900854T2 (de) Ein suchsystem und verfahren zum zurückholen von daten und die anwendung in einem suchgerät
DE69935657T2 (de) Verfahren und gerät zum optimieren der querygenerierung durch selektives verwenden von zusätzen oder schlüsselwerten
DE68929132T2 (de) Datenbankverwaltungssystem und Verfahren hierfür
DE69329265T2 (de) Graphischer Datenbankzugriff
EP1088280B1 (de) Verfahren und system zur schnellen speicherresidenten verarbeitung von transaktionsdaten
DE69926305T2 (de) Rechnerlesbarer Speicher zum Speichern einer Datenbank und Indizes
DE60022152T2 (de) Parallele optimierte Ereignisauslösung in parallelen Datenbanksystemen
DE69232542T2 (de) Definitionsänderungssprache für ein Datenbankrechnersystem
DE69112694T2 (de) Verfahren zum Betrieb eines Datenverarbeitungssystems zur Ausführung von Datenbanktransaktionen.
DE19954534A1 (de) Rückwärtsindexieren von Zeichenketten in einer relationalen Datenbank zum Suchen mit Joker
DE10103574A1 (de) Aggregierte Prädikate und Suche in einem Datenbankverwaltungssystem
DE10039537A1 (de) Verbesserung der mehrdimensionalen Umstrukturierung beim Hinzufügen oder Entfernen von Dimensionen und Dimensionsmitgliedern
DE10056763B4 (de) Generieren von Einschränkungsabfragen mit Hilfe von Tensordarstellungen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8120 Willingness to grant licences paragraph 23
8364 No opposition during term of opposition
R071 Expiry of right