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 WertenInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
- G06F16/24544—Join order optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99932—Access augmentation or optimizing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
- Y10S707/99934—Query 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
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.
"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.
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.
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.
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.
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.
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.
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.
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.
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.
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:
(i) der doppelten Werte in einer der Satellitentabellen oder
(ii) der doppelten Einträge in der mehrspaltigen Tabelle.
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
(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.
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.
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:
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.
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.
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.
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.
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.
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.
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.
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)
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)
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)
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 |
-
1999
- 1999-06-25 US US09/344,731 patent/US6374235B1/en not_active Expired - Lifetime
-
2000
- 2000-06-09 DE DE10028688A patent/DE10028688B4/de not_active Expired - Lifetime
Cited By (4)
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 |