DE69030228T2 - Verfahren zur Verbindung zweier Relationen einer Datenbank auf einem gemeinsamen Feld in einem parallelen Datenbanksystem - Google Patents

Verfahren zur Verbindung zweier Relationen einer Datenbank auf einem gemeinsamen Feld in einem parallelen Datenbanksystem

Info

Publication number
DE69030228T2
DE69030228T2 DE69030228T DE69030228T DE69030228T2 DE 69030228 T2 DE69030228 T2 DE 69030228T2 DE 69030228 T DE69030228 T DE 69030228T DE 69030228 T DE69030228 T DE 69030228T DE 69030228 T2 DE69030228 T2 DE 69030228T2
Authority
DE
Germany
Prior art keywords
partitions
jobs
execution time
relation
pair
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.)
Expired - Lifetime
Application number
DE69030228T
Other languages
English (en)
Other versions
DE69030228D1 (de
Inventor
Daniel Manuel Dias
Yu Philip Shi-Lung
Joel Leonard Wolf
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Application granted granted Critical
Publication of DE69030228D1 publication Critical patent/DE69030228D1/de
Publication of DE69030228T2 publication Critical patent/DE69030228T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • G06F16/2456Join operations
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)

Description

  • Die Erfindung betrifft allgemein die Verwaltung relationaler Datenbanken in einer Mehrprozessor-Umgebung und im einzelnen die Verbindung zweier Datenbankrelationen auf einem gemeinsamen Feld in einer parallelen, relationalen Datenbankumgebung bei Datenschräglauf, durch Partitionieren der gemeinsamen Operation in getrennte Jobs und optimales Planen der Jobs unter einer Vielzahl von Prozessoren.
  • Eine gemeinsame Operation in relationalen Datenbanksystemen ist die natürliche Verbindung zweier Relationen auf den jeweils über einer gemeinsamen Domäne definierten Spalten. Siehe hierzu beispielsweise die Beschreibung der natürlichen Verbindung auf den Seiten 209 und 210 in An Introduction to Database Systems, Band 1, 3. Ausgabe, von C. Date, Addison- Wesley (1982). Das Ergebnis der Verbindung ist eine neue Relation, in der jede Reihe die Verkettung zweier Reihen ist, d.h., jeweils eine Reihe aus jeder der ursprünglichen Relationen, so daß beide Reihen in ihren jeweiligen Verbindungsspalten denselben Wert haben.
  • Ein bekannter Algorithmus zur Berechnung der Verbindung zweier Relationen ist die von M. Blasgen und K. Eswaran in "Storage and Access in Relational Databases", IBM Systems Journal, Band 4, Seite 363 et seq. (1977) beschriebene Sortier-Mischtechnik. Sie kann in Kurzform wie folgt zusammengefaßt werden: Zunächst wird jede Relation (falls erforderlich) nach der Verbindungsspalte sortiert. Anschließend werden die beiden sortierten Relationen in der offensichlichen verriegelten Sequenz abgetastet und es werden die Reihen gemischt, die gleiche Werte aufweisen.
  • Wenn Sortier-Mischverbindungen parallel in einem Mehrprozessor-Datenbanksystem ausgeführt werden, kommt es zu einem Datenschräglaufproblem, das sich in den Verbindungsspalten der Relationen fortsetzen kann. Das Schräglaufproblem wird generell von den in der Literatur beschriebenen Verbindungsalgorithmen nicht angesprochen. Als einer der frühen Artikel über die parallele Sortier-Mischverbindung sei "Parallel Algorithms for the Execution of Relational Database Operations" von D. Bitton, H. Boral, D. J. DeWitt und W. K. Wilkinson in ACM Trans. on Database Systems, Band 8, Nr. 3, September 1983, Seite 324-353 genannt. Bitton et al. schlagen zwei externe parallele Sortieralgorithmen vor, die sie als parallele, binäre, bitonische Misch- und Blocksortierung bezeichnen. In beiden Algorithmen werden sortierte Läufe auf die Platte geschrieben und Zweiweg-Mischungen werden zum Mischen der Läufe von der Platte verwendet. Der Mischbaum wird auf verschiedenen Prozessoren abgebildet, der endgültige Mischlauf ist sequentiell.
  • In "Join and Semijoin Algorithms for a Multiprocessor Database Machine", ACM Trans. on Database Machines, Band 9, Nr. 1, März 1984, wird auf den Seiten 133-161 von P. Valduriez und G. Gardarin der für eine k-Weg-Mischung verallgemeinerte Algorithmus beschrieben. Das Ergebnis sind p Listen, die sequentiell auf einem einzelnen Prozessor gemischt werden (unter der Annahme, daß p< k).
  • In der Abhandlung von J. P. Richardson, H. Lu und K. Mikkilineni mit dem Titel "Design and Evaluation of Parallel Pipelined Join Algorithms", ACM SIGMOD 1987, San Francisco, Mai 1987, Seite 160-169, wird eine Methode zur Parallelisierung der Misch-Verbindungsoperation beschrieben. In der Methode von Richardson et al. werden die Relationen T&sub1; und T&sub2; zu m&sub1; und m&sub2; Läufen gemischt. Unter der Annahme, daß T&sub1; die größere Relation ist, wird jeder Lauf von T&sub1; einem Prozessor zugewiesen. Jeder Prozessor mischt m&sub2; Läufe von T&sub2; (das heißt, der endgültige Mischlauf von T&sub2; wird wiederholt, mindestens so oft, wie Prozessoren vorhanden sind) und mit den diesem Prozessor zugewiesenen Läufen von T&sub1; misch-verbunden. Dieses Verfahren ist gut, wenn die Projektionen der beiden zu verbindenden Relationen so beschaffen sind, daß eine von ihnen sehr klein ist. Die Autoren beschreiben auch eine andere Version ihres Algorithmus, die eingesetzt werden kann, wenn eine Relation klein ist.
  • S. G. Akl und N. Santoro ziehen in "Optimal Parallel Merging and Sorting Without Memory Conflicts", IEEE Trans. on Comp., Band C-36, Nr. 11, November 1987, Seite 1367-1369, das parallele Mischen zweier sortierter Listen durch Partitionieren jeder der beiden Listen in Betracht.
  • Ein anderer bekannter Algorithmus zur Berechnung der Verbindung zweier Relationen ist die von D. J. DeWitt, R. H. Gerber, G. Graefe, M. L. Heytens, K. B. Kumar und M. Maralikrishna in "Multiprocessor Hash-based Join Algorithms", Proc. 11th VLDB (1985) beschriebene Hash-Verbindungstechnik. Für ein Mehrprozessorsystem kann diese kurz wie folgt zusammengefaßt werden: Zuerst werden beide Relationen (falls erforderlich) entsprechend der Verbindungsspalten im Hash-Verfahren in Hash-Partitionen zerlegt. Die Anzahl der Hash-Partitionen wird generell mit der Anzahl der Prozessoren gleichgesetzt. Anschließend werden die Hash-Partitionen unter den Prozessoren verteilt, so daß sich die entsprechenden Partitionen der beiden Relationen auf demselben Prozessor befinden. Zweitens werden die entsprechenden Hash-Partitionen der beiden Relationen miteinander verbunden.
  • Obwohl eine Verbindungsabfrage durch Einsatz mehrerer Prozessoren beschleunigt werden kann, kann die Beschleunigung aus dieser Art von konventionellem Verbindungsalgorithmus bei Vorhandensein eines Datenschräglaufs sehr eingeschränkt sein, wie von M. S. Lashmi und P. S. Yu in "Effect of Skew on Join Performance in Parallel Architectures", Proc. Intl. Symposium on Databases in Parallel and Distributed Database Systems (1988) beschrieben wird. In "A Performance Evaluation of Four Parallel Join Algorithms in a Shared-Nothing Multiprocessor Environment", Proc. ACM Sigmod Conference (1989), bewerten D. A. Schneider und D. J. DeWitt die Leistung von vier parallelen Verbindungsalgorithmen. Sie schlagen vor, bei starkem Datenschräglauf nicht eine Hash-Verbindung, sondern einen anderen Algorithmus in Erwägung zu ziehen. In "Removing Skew Effect in Join Operation on Parallel Processors", Technical Report CSD-890027, UCLA (1989), schlagen R. C. Hu und R. R. Muntz einen einfachen Hash-Verbindungsalgorithmus zur Identifizierung des größten Schräglaufelements vor und weisen für die Bearbeitung mehrere Prozessoren zu.
  • In dem Artikel "Limited Factors of Join Performance on Parallel Processors" werden von M. Seetha Lakshmi und Philip S. Yu in Proceedings of the fifth International Conference on Data Engineering (IEEE Cat. No 89 CH 2695-5) vom 10.2.88 auf den Seiten 488-496 verschiedene Verfahren erörtert, von denen bekannt ist, daß sie die Effektivität paralleler Verbindungsoperationen verbessern. Der Artikel spricht Verfahren zur Verbindung von Relationen in einem Mehrprozessor-Datenbanksystem an, wozu auch der Schritt der Unterteilung von Relationen in entsprechende Partitionen und das Verbinden dieser Partitionen auf einem der Prozessoren gehört.
  • Neben diesen mehr theoretischen Untersuchungen ist es eine Aufgabe der Erfindung, effiziente Techniken bereitzustellen, mit denen die Gesamtausführungszeit in einer parallelen relationalen Datenbankumgebung bei der natürlichen Verbindung zweier Relationen mittels der Sortier-Misch- und der Hash- Verbindungstechniken minimiert wird.
  • Diese Aufgabe der Erfindung wird durch das Verfahren mit den Merkmalen des Hauptanspruchs gelöst. Weitere Verbesserungen der Erfindung werden in den Unteransprüchen gekennzeichnet.
  • Die Erfindung und ihre Verbesserungen erfüllen darüber hinaus die Aufgabe, Sortier-Misch- und Hash-Verbindungstechniken für den Einsatz in einem Mehrprozessor-Datenbanksystem bereitzustellen, die einen in den Verbindungsspalten der Relationen möglicherweise vorhandenen Datenschräglauf wirksam behandeln.
  • Entsprechend den allgemeinen Lehren der Erfindung wird die Verbindungsoperation in drei Stufen mit einer optionalen vierten Stufe ausgeführt. Die erste Stufe ist eine Vorbereitungsstufe, die im Detail von dem zugrundeliegenden Verbindungsalgorithmus abhängt. Mit dieser vorbereitenden Stufe erreicht man eine Vorverarbeitung, deren Ergebnisse in der folgenden Stufe als Grundlage für die Definition von Unteraufgaben für die endgültige Verbindungsoperation eingesetzt werden. Die in der ersten Stufe bereitgestellten Daten werden in der zweiten Stufe eingesetzt, um sowohl Unteraufgaben zu definieren als auch diese Unteraufgaben optimal den verschiedenen Prozessoren zuzuweisen, und zwar in der Weise, daß die Prozessoren in der endgültigen Verbindungsoperation auch bei Datenschräglauf nahezu gleichmäßig belastet werden. Diese zweite Stufe ist eine für die Erfindung kritische Zuordnungsstufe. Im Detail ist die zweite Stufe für die verschiedenen zugrundeliegenden Verbindungsalgorithmen unterschiedlich; das generelle Verfahren der Definition und Zuordnung von Unteraufgaben in der zweiten Stufe ist jedoch bei den verschiedenen zugrundeliegenden Algorithmen gleich. Nachdem in der zweiten Stufe die Definition und Zuordnung der Unteraufgaben abgeschlossen ist, werden die Daten entsprechend der Zuordnung auf die Prozessoren verteilt, damit in der dritten Stufe die Verarbeitung und die endgültige Verbindung der beiden Relationen stattfinden kann. Das in der endgültigen Verbindungsoperation verwendete Verfahren hängt von dem zugrundeliegenden Verbindungsalgorithmus ab. Während der in der dritten Stufe durchgeführten eigentlichen Verbindung könnte wahlweise eine dynamische Neuzuweisung der Unteraufgaben stattfinden, wenn die Verbindungsoperation unausgewogen werden sollte.
  • Wie erwähnt, kann die Verbindungsoperation mit verschiedenen zugrundeliegenden Verbindungsverfahren realisiert werden. Im ersten Aspekt dieser Erfindung wird ein Verfahren beschrieben, das auf parallelen Sortier-Mischverbindungen in einem Datenbanksystem mit mehreren Prozessoren basiert. In der ersten Stufe werden die erste und die zweite Relation in eine der Zahl der Prozessoren entsprechende Anzahl von Gruppen partitioniert und in die zu verbindende Spalte einsortiert. Diese sortierten Daten aus der ersten Stufe werden der zweiten Stufe bereitgestellt. In der zweiten Stufe werden die sortierten Daten der ersten Stufe in Bereiche und Multiplizitäten repartitioniert, um Unteraufgaben zu definieren, die jeweils Daten aus einer Bereichspartition verbinden. Die von einem einzelnen Prozessor zur Ausführung der einzelnen Unteraufgaben benötigte Zeit wird geschätzt, und die Partitionen werden weiter unterteilt, wie es zur gleichmäßigen Aufteilung der Sortieroperationen auf die verschiedenen Prozessoren notwendig ist. Die Jobs werden unter den Prozessoren nach einer Optimierungstechnik mit minimalem Makespan eingeplant. Der Algorithmus bearbeitet wirksam die in den Verbindungsspalten der Relationen möglicherweise vorhandenen Datenschrägläufe, indem er die Einplanung von Jobs unter den Prozessoren anhand eines geschätzten Schräglaufs aktualisiert.
  • Im zweiten Aspekt der Erfindung wird eine Methode beschrieben, die auf dem parallelen Hash-Verbindungsalgorithmus in einem Mehrprozessor-Datenbanksystem basiert. Die Technik wurde speziell zur Bearbeitung von Datenschrägläufen konzipiert. Der vorgeschlagene Algorithmus basiert auf einem hierarchischen Hashing-Konzept. Die hierarchische Hash-Code-Anwendung wird mit einem Optimierungsalgorithmus mit minimalem Makespan kombiniert, um die Hash-Partitionen iterativ aufzuspalten und für eine gerechte Zuweisung der Hash-Partitionen in den einzelnen Prozessoren zu sorgen. Teil der Analyse ist eine weitere Verfeinerung der Partitionierungen, wenn die Größe der Partitionen zu einer unerwünschten Lastverteilung führt. Während dieser Auswertungsstufe wird keine tatsächliche Hash-Code-Anwendung durchgeführt. Statt dessen werden die Vorteile der Hash-Code-Anwendung auf jeder Ebene geschätzt, so daß die optimale Hash-Code-Anwendung zu einem späteren Zeitpunkt erfolgen kann.
  • Die obengenannten und andere Aufgaben, Aspekte und Vorteile werden besser verständlich anhand der folgenden ausführlichen Beschreibung eines bevorzugten Ausführungsbeispiels der Erfindung unter Bezugnahme auf die Zeichnungen; es zeigt:
  • Figur 1 ein Blockdiagramm der allgemeinen Organisation eines Mehrprozessor-Datenbanksystems, in dem die Verbindungsprozeduren gemäß der Erfindung praktiziert werden können;
  • Figur 2 ein Beispiel dreier Relationen, die zur Erläuterung des Datenschräglaufkonzepts dienen;
  • Figur 3 ein High-Level-Blockdiagramm, das die einzelnen Stufen der Verbindungsoperation gemäß der Erfindung erläutert;
  • Figur 4 ein Flußbild mit den Details der zweiten Stufe der Verbindungsoperation bei Anwendung eines Sortier-Misch-Verbindungsalgorithmus gemäß der Erfindung;
  • Figur 5 ein Diagramm, das erläutert, wie Unteraufgaben in einem ersten Aspekt der Erfindung in kleinere Unteraufgaben unterteilt werden;
  • Figur 6 ein Flußbild mit den Details der zweiten Stufe der Verbindungsoperation unter Anwendung eines ersten Hash-Verbindungsalgorithmus gemäß der Erfindung;
  • Figur 7 ein Flußbild mit den Details der zweiten Stufe der Verbindungsoperation unter Anwendung eines zweiten Hash-Verbindungsalgorithmus gemäß der Erfindung; und
  • Figur 8 ein Diagramm, das erläutert, wie Unteraufgaben in der Hash-Verbindungsoperation der Erfindung neu zugewiesen werden.
  • Ausführliche Beschreibung eines bevorzugten Ausführungsbeispiels der Erfindung
  • In der folgenden Beschreibung wird der Einfachheit halber angenommen, daß jeder Prozessor des Mehrprozessor-Datenbanksystems mit derselben Rechenkapazität ausgestattet ist. Der genaue Aufbau der Architektur der parallelen Datenbank ist hier im übrigen zum größten Teil nicht von Bedeutung. Bezugnehmend auf die Zeichnungen und hier insbesondere auf Figur 1; hier wird ein Blockdiagramm des allgemeinen Aufbaus eines aus mehreren Prozessoren bestehenden Datenbanksystems gezeigt. P Prozessoren 10&sub1; bis 10P sind miteinander über ein Verbindungsnetz 12 verknüpft. Die Prozessoren tauschen die Daten über das Verbindungsnetz 12 aus. Wie die verschiedenen Prozessoren im einzelnen miteinander verbunden sind, ist hier nicht von Bedeutung; wichtig ist, daß für die anstehenden Aufgaben eine ausreichend große Bandbreite vorhanden ist. Für die sekundäre Speicherung verwendet das Datenbanksystem außerdem die herkömmlichen Plattenlaufwerke 161D1 bis 16PDP. Die zu sortierenden beziehungsweise zu verbindenden Relationen werden auf diesen Plattenlaufwerken gespeichert.
  • Die Verteilung der von dem Verbindungsattribut angenommenen Werte hat einen wesentlichen Einfluß auf die für die Verbindungsoperation benötigte Ausführungszeit. In vielen Datenbanken kommen bestimmte Werte für ein Attribut häufiger vor, als andere Werte, was zu einer schräglaufenden Verteilung führt. Betrachten wir die drei in Figur 2 gezeigten Relationen für KUNDEN, BESTELLUNGEN und LIEFERANTEN. Der Kunden-ID in der Relation KUNDE nimmt eindeutige Werte an, dasselbe Attribut kann jedoch in der Relation BESTELLUNGEN nicht eindeutige Werte annehmen, da ein Kunde mehr als einen Artikel bestellen kann. Außerdem kann ein bestimmter Artikel von mehr als einem Kunden bestellt werden, und mehrere Lieferanten können einen bestimmten Artikel liefern.
  • Eine Abfrage, bei der alle Kunden mit offenen Bestellungen aufgelistet werden sollen, würde die Relationen BESTELLUNGEN und KUNDEN in der Spalte Kunden-ID miteinander verbinden, was zu einer Verbindung mit einem einfachen Schräglauf führen würde. Eine Abfrage, bei der alle Lieferanten aufgelistet werden sollen, welche die offenen Bestellungen liefern können, würde die Relationen BESTELLUNGEN und LIEFERANTEN in der Artikel-Spalte miteinander verbinden, was zu einer Verbindung mit einem doppelten Schräglauf führen würde. Die Bezeichnungen einfacher Schräglauf und doppelter Schräglauf sollen die Fälle darstellen, bei denen das Verbindungsattribut einer oder beider Relationen eine schräglaufende Verteilung hat.
  • Die Verbindungsoperation gemäß der Erfindung, wie sie in Figur 3 dargestellt ist, hat drei Stufen und wahlweise eine vierte Stufe. Stufe 1 ist die Vorbereitungsstufe, die gemeinsam für alle Erfindungsaspekte gilt; die Details dieser Stufe variieren jedoch, abhängig von dem zugrundeliegenden Verbindungsalgorithmus. Diese Stufe wird für zwei zugrundeliegende Verbindungsalgorithmen ausführlicher beschrieben. Im einzelnen beschreiben wir zunächst Stufe 1 für ein auf dem Sortier- Mischverfahren basierendes Ausführungsbeispiel der Erfindung, anschließend wird Stufe 1 für ein auf dem Hash-Code basierendes Ausführungsbeispiel der Erfindung beschrieben.
  • Die vorbereitende Phase der Stufe 1 ist eine Vorverarbeitung; ihre Ergebnisse werden in Stufe 2 als Grundlage für die Definition von Unteraufgaben für die endgültige Verbindungsoperation der Stufe 3 verwendet. Im einzelnen heißt das, daß die durch Stufe 1 zur Verfügung gestellten Daten sowohl zur Definition von Unteraufgaben als auch zur optimalen Zuweisung dieser Unteraufgaben an verschiedene Prozessoren verwendet werden, und zwar so, daß die Prozessoren in der endgültigen Verbindungsoperation in Stufe 3 fast gleichmäßig belastet werden, auch bei einem Datenschräglauf. Stufe 2 ist demnach eine Zuweisungsstufe und ist für die vorliegende Erfindung von kritischer Bedeutung. In der folgenden Beschreibung werden die Schritte der Stufe 2, die sowohl an den Sortier- Misch- als auch an den beiden auf dem Hash-Code basierenden Ausführungsbeispielen dieser Erfindung beteiligt sind, im Detail beschrieben.
  • Nachdem in Stufe 2 die Definition und die Zuweisung der Unteraufgaben abgeschlossen sind, werden die Partitionen der zu verbindenden Relationen zur Verarbeitung und zur endgültigen Verbindung der beiden Relationen in Stufe 3 an die ihnen zugewiesenen Prozessoren verteilt. Die in der endgültigen Verbindungsoperation verwendete Methode hängt von dem zugrundeliegenden Verbindungsverfahren ab. Wahlweise beinhaltet Stufe 4 Prozessoren, die über ihren Bearbeitungsfortgang berichten. Da die Zuweisungen in Stufe 2 auf Schätzungen der Zeiten für die Unteraufgaben beruhen, könnte die in Stufe 3 begonnene Verbindungsoperation unausgewogen werden. Wenn diese Unausgewogenheit eine bestimmte vorher festgelegte Schwelle überschreitet, kann die Zuweisung der Stufe 2 wahlweise dynamisch verändert werden.
  • Der erste Aspekt der Erfindung, der hier beschrieben werden soll, bezieht sich auf ein auf dem Sortier-Misch-Verbindungsalgorithmus basierendes zugrundeliegendes Verbindungsverfahren. Nehmen wir an, Relation R&sub1; enthält N&sub1; Reihen, während die Relation R&sub2; N&sub2; Reihen umfaßt. P soll die Anzahl der Prozessoren in dem Datenbanksystem bezeichnen.
  • In der ersten Stufe der Erfindung wird die Gruppe der Reihen von R&sub1; so gleichmäßig wie möglich in P Gruppen von jeweils etwa N&sub1;/P Reihen unterteilt. Mit anderen Worten, die Partition hat N&sub1;-P N&sub1;/P Gruppen von je N&sub1;/P Reihen und P-N&sub1;+P N&sub1;/P Gruppen von je N&sub1;/P Reihen, wobei x die kleinste Ganzzahl bezeichnet, die größer als oder gleich der realen Zahl x ist, und x die größte Ganzzahl bezeichnet, die kleiner als oder gleich x ist. Jedem Prozessor wird dann eine der Partitionen zum Sortieren gegeben. Die Prozessoren müßten ihre Aufgaben mehr oder weniger in der gleichen Zeit ausführen. Die zweite Relation wird analog sortiert. Am Ende dieser Stufe sind zwei Gruppen von P sortierten "Läufen" vorhanden.
  • Um die zweite Stufe der Erfindung vorzustellen, nehmen wir an, daß V&sub1;&le;V&sub2; zwei Werte in der Domäne der Verbindungsspalten sind. Mit einem der 2P sortierten Läufe, zum Beispiel demjenigen, welcher der Relation i&epsi;{1,2} und dem Prozessor j&epsi;{1,...,P} entspricht, haben wir eine wohldefinierte (möglicherweise leere) benachbarte Untergruppe ij,V&sub1;,V&sub2;' die aus allen Reihen mit Sortierspaltenwerten im Intervall [V&sub1;,V&sub2;] besteht. Schickt man jede der Untergruppen ij,V&sub1;,V&sub2; zur endgültigen Sortierung und Mischung an einen einzelnen Prozessor, so führt dies zu einer unabhängigen Unteraufgabe &tau;¹V&sub1;,V&sub2; des gesamten restlichen Teils der Verbindungsoperation. Das hochgestellte Zeichen unterstreicht hier die Tatsache, daß nur ein einzelner Prozessor beteiligt ist. Die Bedeutung dieser Tatsache wird anhand der folgenden Beschreibung deutlich. Wir wollen die Zeit schätzen, die für die Ausführung dieser Unteraufgabe benötigt wird, und zwar wie folgt: T¹V&sub1;,V&sub2; = A(I&sub1;+I&sub2;)+BO, hierbei ist
  • die Anzahl der Eingabereihen von Ri, O ist die Anzahl der Ausgabereihen aus dem Mischlauf von R&sub1; und R&sub2; und A und B sind bekannte Konstanten. Wenn wir annehmen, daß die Werte jeder ij,V&sub1;,V&sub2; gleichmäßig auf die DV&sub1;,V&sub2;-Elemente in der zugrundeliegenden Domäne zwischen V&sub1; und V&sub2; verteilt sind, dann können wir wie folgt berechnen: O = I&sub1;I&sub2; DV&sub1;,V&sub2;.
  • In dem speziellen Fall V&sub1;< V&sub2; ist die Berechnung von O nur eine Schätzung. Ein Paar (V&sub1;,V&sub2;), das die Bedingung V&sub1;< V&sub2; erfüllt, nennen wir ein Paar vom Typ 1. In dem speziellen Fall V&sub1;=V&sub2; verkürzt sich die Gleichung für O auf O=I&sub1;I&sub2;. Tatsächlich ist der Ausgang nur das Kreuzprodukt der beiden Eingänge, so daß die Formel in diesem Fall ganz genau ist. Ein Paar (V&sub1;,V&sub2;), das die Bedingung V&sub1;=V&sub2; erfüllt, nennen wir ein Paar vom Typ 2. Für Paare vom Typ 2, sagen wir mit V=V&sub1;=V&sub2;, kann es sein, daß wir die zusätzliche Möglichkeit in Betracht ziehen möchten, die größere der beiden Gruppen
  • so gleichmäßig wie möglich in M Gruppen einer bestimmten Reihenzahl zu unterteilen, wobei 1&le;M&le;P, und noch feiner abgestimmte unabhängige Unteraufgaben &tau;¹V&sub1;,V&sub2; ... &tau;MV&sub1;,V&sub2; zu erzeugen. In der Unteraufgabe &tau;mV&sub1;,V&sub2;, m&epsi; {1, ..., M}, wird das Kreuzprodukt der kleineren Gruppe und die m-te Partition der größeren Gruppe in einem einzelnen Prozessor ausgeführt. Nehmen wir zum Beispiel an, daß die erste Relation die größere Anzahl von Reihen enthält, dann beträgt die zur Ausführung dieser Unteraufgabe benötigte Zeit TmV&sub1;,V&sub2; = A(I + I&sub2;) + B I I&sub2;, wobei Im&sub1; die Anzahl der Reihen in der m-ten Partition ist. Wir bestehen nicht darauf, daß jede der M Unteraufgaben in einem anderen Prozessor ausgeführt werden soll, obwohl dies in der Praxis wahrscheinlich der Fall ist. Das Ausführen von M> 1 Unteraufgaben ist eindeutig weniger effizient, als das Ausführen einer Unteraufgabe, da die Eingabe aus der kleineren Relation (in diesem Falle R&sub2;) an jeden beteiligten Prozessor geschickt werden muß. Wir nutzen diese Möglichkeit nur bei der Bearbeitung eines übermäßigen Schräglaufs. Wir sagen, daß das Paar vom Typ 2 (V&sub1;,V&sub2;) eine Multiplizität von M hat. Ein Paar vom Typ 1 (V&sub1;,V&sub2;) soll eine Multiplizität 1 haben.
  • Wir können jetzt unseren allgemeinen Lösungsansatz aufstellen: Nehmen wir an, wir erzeugen eine geordnete Sequenz von K Wertepaaren, mit entsprechenden Multiplizitäten in der Domäne der Verbindungsspalten. Diese Sequenz hat folgende Form:
  • V1.1&le;V1.2< ..< Vk-1.1&le;Vk-1.2< Vk.1&le;Vk.2< Vk+1.1&le;Vk+1.2< ...< VK.1&le;VK.2.
  • Jeder Wert in den Verbindungsspalten von R&sub1; und R&sub2; muß in eines der Intervalle [Vk,1,Vk,2] fallen. Für k&epsi;{1,...,K} soll Mk die Multiplizität des Paares (Vk,1,Vk,2) bezeichnen. Wir haben
  • Unteraufgaben &tau;mVk,1,Vk,2 erzeugt, die in den P Prozessoren ausgeführt werden sollen. Die hierzu nötige Gesamtrechenzeit kann geschätzt werden als
  • und soll so gleichmäßig wie möglich auf die Prozessoren aufgeteilt werden. Bei einer "perfekten" Zuweisung, die nicht notwendigerweise möglich ist, wäre jeder Prozessor während
  • Zeiteinheiten beschäftigt. Im einzelnen möchten wir gerne jede Unteraufgabe &tau;mVk,1,Vk,2 einem Prozessor A
  • in der Weise zuweisen, daß die Ausführungszeit für den gesamten Job,
  • minimiert wird. Dieses Optimierungsproblem ist der sogenannte minimale Makespan bzw. das Planungsproblem in einem Mehrprozessorsystem. Obwohl es als NP-komplett bekannt ist, gibt es eine Reihe sehr schneller heuristischer Verfahren, die über eine ausreichend gute Leistung für den ungünstigsten Betriebsfall und eine exzellente Leistung für den durchschnittlichen Betriebsfall verfügen. Hier seien speziell zur Beschreibung der LPT-Heuristik "Bounds on Multiprocessing Timing Anomalies" von R. Graham, SIAM Journal of Computing, Band 17, 1969, Seite 416 ff. genannt, sowie zur Beschreibung der MULTIFIT-Heuristik "An application of Bin Packing to Multiprocessor Scheduling" von E. Coffman, M. Garey und D. S. Johnson im SIAM Journal of Computing, Band 7, 1978, Seite 1 ff.
  • Natürlich haben wir eine Kontrolle darüber, wie die geordnete Sequenz von Wertepaaren und die entsprechenden Multiplizitäten erzeugt werden. Das Ziel in der zweiten Stufe unserer Erfindung ist ein Teile-und-herrsche-Verfahren zur Erzeugung dieser geordneten Sequenz. Ein Beispiel für eine Lösungsmöglichkeit ist der im Flußbild der Figur 4 dargestellte Algorithmus.
  • Bezugnehmend auf Figur 4; der Prozeß beginnt in Funktionsblock 20, indem zunächst K=1 gesetzt wird, V1,1 ist der minimale Wert in den Verbindungsspalten von R&sub1; und R&sub2;, V1,2 ist das Maximum und M&sub1;=1. Außerdem wird die Zeit für die Unteraufgabe geschätzt und eine Liste aller aktuellen Unteraufgaben, geordnet nach Zeitschätzungen für die Unteraufgaben, geführt. Am Anfang befindet sich auf der Liste nur ein Element. Anschließend wird im Entscheidungsblock 22 geprüft, ob die Zeitschätzung der größten Unteraufgabe in der Liste kleiner als oder gleich 1/P-tel der Summe der Zeitschätzungen aller Unteraufgaben in der Liste ist. Mit anderen Worten, "paßt" die größte Unteraufgabe? Wenn ja, werden in Funktionsblock 24 die LPT- oder MULTIFIT-Algorithmen durchgeführt. Der erste und rechnerisch aufwendigste Schritt in beiden Algorithmen ist das Ordnen der Unteraufgaben nach Zeitschätzungen. Dies ist in unserem Fall bereits geschehen. In Entscheidungsblock 26 wird dann geprüft, ob der Makespan innerhalb eines vorher festgelegten multiplikativen Faktors 1+&Delta; einer perfekten Zuweisung liegt. Wenn ja, stoppt der Prozeß; andernfalls wird in Entscheidungsblock 28 geprüft, ob Paare vom Typ 1 vorhanden sind. Wenn nicht, stoppt der Prozeß; andernfalls wird in Entscheidungsblock 30 das größte Paar vom Typ 1 auf der Liste ausgewählt. Dann wird in Funktionsblock 32 das größte Paar vom Typ 1 (Vk,1,Vk,2) in zwei oder drei Teile aufgeteilt, und zwar wie folgt: In R&sub1; gibt es I&sub1; Gesamtelemente, bestehend aus P sortierten Reihen 1j,V&sub1;,V&sub2;. In R&sub2; gibt es I&sub2; Gesamtelemente, bestehend aus P sortierten Reihen 2j,V&sub1;,V&sub2;. Insgesamt haben wir 2P sortierte Reihen mit insgesamt I&sub1;+I&sub2; Elementen. Ein Algorithmus nach Z. Galil und N. Megiddo, beschrieben in "A Fast Selection Algorithm and the Problem of Optimum Distribution of Effort", Journal of the ACM, Band 26, 1979, Seite 58 ff, findet das ( I&sub1; + I&sub2; )/ zweitgrößte Element µ dieser Gruppe. Dies ist ein speziellelr Fall des sogenannten Auswahlproblems. Tatsächlich unterteilt der Algorithmus jede Gruppe ij,V&sub1;,V&sub2; in drei benachbarte (möglicherweise leere) Regionen; ¹1j,V&sub1;,V&sub2;, bestehend aus den Reihen, die kleiner als µ sind, ²1j,V&sub1;,V&sub2;, bestehend aus den Reihen, die gleich µ sind, und ³1j,V&sub1;,V&sub2;, bestehend aus den Reihen, die größer als µ sind. Wir haben somit drei Unteraufgaben erzeugt, wo zunächst nur eine vorhanden war. Die erste oder dritte Unteraufgabe, nicht jedoch beide, könnten leer sein. Bei beiden könnte es sich um den Typ 1 oder um den Typ 2 handeln. Die zweite Unteraufgabe ist nicht leer, es ist eine Unteraufgabe vom Typ 2 mit der Multiplizität 1. Figur 5 zeigt, wie bei Anwendung dieses Verfahrens die drei neuen Unteraufgaben aus einer alten Unteraufgabe erzeugt werden. Im nächsten Schritt wird K angepaßt, die Intervalle werden bestimmt und die Zeitschätzungen werden für jede neue Unteraufgabe berechnet. Wird für eine der Unteraufgaben die Anzahl der Ausgabereihen mit Null berechnet, kann die Unteraufgabe von der Liste gestrichen werden; der einem von zwei Relationen entsprechende Teil ist leer und die Verbindung erbringt kein Ergebnis.
  • An diesem Punkt wird im Entscheidungsblock 34 geprüft, ob die Liste der Unteraufgaben leer ist. Wenn ja, stoppt der Prozeß; andernfalls wird die Liste der Unteraufgaben in Funktionsblock 36 neu numeriert und neu geordnet. Die Steuerung schleift dann zurück zum Entscheidungsblock 22.
  • Fällt die Prüfung im Entscheidungsblock 22 negativ aus, wird in Entscheidungsblock 38 eine weitere Prüfung ausgeführt, in der festgestellt wird, ob es sich bei dem größten Element in der Liste der Unteraufgaben um den Typ 1 handelt. Wenn ja, geht die Steuerung weiter zu Funktionsblock 32; andernfalls wird in Entscheidungsblock 40 geprüft, ob es möglich ist, die Multiplizität des Paares vom Typ 2 entsprechend der größten Unteraufgabe in der Liste auf eine neue Multiplizität M< P zu erhöhen, und zwar in der Weise, daß jede Unteraufgabe jetzt paßt. Wenn dies möglich ist, wird nach der kleinsten solchen Multiplizität gesucht, und die Liste der Unteraufgaben wird in Funktionsblock 42 dahingehend revidiert, daß sie jetzt diese neue Multiplizität enthält. Außerdem wird K angepaßt und die Zeitschätzungen für die neuen Unteraufgaben werden berechnet, bevor die Steuerung zu Funktionsblock 36 geht.
  • Fällt die Prüfung in Entscheidungsblock 40 negativ aus, dann wird in Funktionsblock 44 der Unteraufgabe eine Multiplizität P zugewiesen, jede der P Unteraufgaben wird einem anderen Prozessor zugewiesen und die Unteraufgaben werden aus der Liste entfernt. Außerdem wird K angepaßt. Die P von der Liste entfernten Unteraufgaben werden ungefähr in der gleichen Zeit ausgeführt. Die Steuerung geht jetzt weiter zu Entscheidungsblock 34.
  • Unsere Methode favorisiert Paare mit der Multiplizität 1, ermöglicht jedoch auch höhere Multiplizitäten zur Beseitigung eines übermäßigen Schräglaufs. Wo ein solcher übermäßiger Schräglauf vorliegt, dürfte sich auf natürlichem Wege während der Durchführung des Algorithmus zeigen. Auch die Zeitschätzungen für die Unteraufgabe dürften bei Durchführung des Algorithmus immer präziser werden. Zu diesem Thema wären noch viele Variationen realisierbar. Zum Beispiel müßten LPT oder MULTIFIT nicht jedesmal im Funktionsblock 24 durchgeführt werden. Ein Zähler könnte die Zahl der Durchführungen des Algorithmus mit minimalem Makespan regeln. Die Zeit zur Durchführung des Algorithmus könnte auch nach einem anderen Zähler ablaufen, auch wenn die Lösung nicht ganz zufriedenstellend ist.
  • In der in Figur 3 gezeigten Stufe 3 werden die sortierten Tupel der Relationen R&sub1; und R&sub2; von der Platte gelesen und die den Unteraufgaben entsprechenden Tupel werden an den zugewiesenen Prozessor geschickt. Die Unteraufgaben werden dann auf den zugewiesenen Prozessoren zur Durchführung der endgültigen Verbindungsoperation ausgeführt.
  • Wie durch Stufe 4 in Figur 3 gezeigt wird, könnten die Prozessoren im Verlauf der eigentlichen Verbindung wahlweise über den Fortgang der Operation berichten. Da es sich bei den Zeitschätzungen für die Unteraufgabe genau hierum handelt, könnte der Fortgang der Verbindungsoperation unausgewogen werden. Wenn diese Unausgewogenheit eine bestimmte vorher festgelegte Schwelle überschreitet, könnte ein neuer LPT- oder MULTIFIT-Algorithmus eingeleitet werden.
  • Die Erfindung kann auch unter Anwendung eines Verfahrens praktiziert werden, das auf dem Hash-Verbindungsalgorithmus beruht und in dem eine Doppel-Hashing-Technik eingesetzt wird, mit der ein hierarchischer Hash-Code in den Stufen 1 und 2 der Figur 3 implementiert wird. Andere Variationen der hierarchischen Hash-Code-Anwendung werden zu einem späteren Zeitpunkt erörtert. Die Doppel-Hashing-Technik hilft bei der Erkennung der Schräglaufwerte, ergibt eine bessere Schätzung des Aufwands für die Verbindungsoperationen in jedem Prozessor und sorgt schließllich für eine gleichmäßigere Lastaufteilung.
  • In der ersten Stufe der Figur 3 beginnen wir mit nahezu gleichen Partitionen R&sub1; mit einer Größe von jeweils etwa N&sub1;/P Reihen je Prozessor. Mit anderen Worten, die Partition hat N&sub1;-P N&sub1;/P Gruppen von jeweils N&sub1;/P Reihen und P-N&sub1;+P N&sub1;/P Gruppen von jeweils N&sub1;/P Reihen. H&sub1; und H&sub2; seien zwei Hash- Funktionen, wobei H&sub2; zur weiteren Unterteilung jeder von H&sub1; erzeugten Hash-Partition in feinere Partitionen verwendet wird. Nehmen wir an, H&sub1; kann die Reihen mittels Hash-Codierung in B&sub1; Hash-Partitionen unterteilen und H&sub2; kann jede dieser Partitionen in B&sub2; feinere Hash-Partitionen unterteilen. Für jeden Prozessor j sei &alpha;jk,m(R&sub1;) die Anzahl der Reihen, deren Hash-Wert ihrer Verbindungsspalte unter H&sub1; in die k-te Hash-Partition von H&sub1; fällt und deren Hash-Wert unter H&sub2; in die m-te Hash-Partition von H&sub2; fällt. Die Reihe soll einen zusammengesetzten Hash-Wert (k,m) haben. Jeder Prozessor liest in Tupeln von R&sub1; von der Platte und führt die Zählungen &alpha;jk,m(R&sub1;) für k=1,...,B&sub1; und m=1...,B&sub2; im Hauptspeicher jedes Prozessors j, um zu verfolgen, wieviele Tupel in die feinkörnigen Partitionen nach H&sub1; und H&sub2; im Hash-Verfahren zerlegt werden. Die Prozessoren müßten ihre Aufgaben in ungefähr der gleichen Zeit ausführen. Die zweite Relation wird in entsprechender Weise im Hash-Verfahren zerlegt und ergibt &alpha;jk,m(R&sub2;). Am Ende dieser Stufe haben wir zwei Zähl-Gruppen, &alpha;jk,m(Ri),i=1,2.
  • Am Beginn der zweiten Stufe von Figur 3 werden in den Prozessoren die Gruppen &alpha;jk,m(Ri) hinzugefügt und man erhält
  • Mit einer der 2PB&sub1; Hash-Partitionen von H&sub1;, beispielsweise derjenigen, die der Relation i&epsi;{1,2}, Prozessor j&epsi;{1,...,P} und der Hash-Partition k&epsi;{1,...,B&sub1;} entspricht, und mit einer Untergruppe E&le;{1,...,B&sub2;}, erhalten wir eine wohldefinierte (möglicherweise leere) Untergruppe &theta;ij,k,E, die aus allen Reihen mit zusammengesetzten Hash-Werten (k,m), m&epsi;E besteht. Wenn man jede &theta;ij,k,E zur Durchführung der endgültigen Verbindung an einen einzelnen Prozessor schickt, so erhält man eine unabhängige Unteraufgabe &tau;¹k,E des gesamten restlichen Teils der Verbindungsoperation. Die hochgestellte Zahl unterstreicht hier die Tatsache, daß nur ein einzelner Prozessor beteiligt ist. Die Bedeutung dieser Tatsache wird in Kürze deutlich. Die zur Ausführung dieser Unteraufgabe benötigte Zeit wird mit T¹k,E=A(I&sub1; + I&sub2;)+BO geschätzt, wobei
  • die Anzahl der Eingabereihen von Ri ist, O die Anzahl der Ausgabereihen aus dem Mischlauf von R&sub1; und R&sub2; ist und A und B bekannte Konstanten sind. Nimmt man an, daß die Werte jeder &theta;ij,k,m m&epsi;E gleichmäßig auf die Dk,m Elemente in der zugrundeliegenden Domäne mit dem zusammengesetzten Hash-Wert (k,m) verteilt sind, können wir wie folgt berechnen:
  • Für den Fall, daß E einen einzelnen Wert, sagen wir m, enthält, möchten wir vielleich die zusätzliche Möglichkeit einer möglichst gleichmäßigen Partitionierung der größeren der beiden Gruppen
  • in M Gruppen von Reihen in Erwägung ziehen, wobei 1&le;M&le;P, und noch feinere unabhängige Unteraufgaben &tau;¹k,{m},...,&tau;Mk,{m} erzeugen. In der Unteraufgabe &tau;jk,{m},jE{1...M} wird die Verbindung der kleineren Gruppe und die j-te Subpartition der größeren Gruppe in einem einzelnen Prozessor ausgeführt. Nehmen wir zum Beispiel an, daß die erste Relation die größere Reihenanzahl enthält, dann beträgt die Zeit zur Ausführung dieser Unteraufgabe Tjk,{m}=A((I&sub1;/M)+I&sub2;)+BI&sub1;I&sub2;/M. Wir bestehen nicht darauf, daß jede der M Unteraufgaben auf einem anderen Prozessor ausgeführt wird, obwohl dies in der Praxis wahrscheinlich der Fall ist. Das Ausführen von M> 1 Unteraufgaben ist natürlich weniger effizient, als das Ausführen einer Unteraufgabe, da die Eingabe aus der kleineren Relation (in diesem Falle R&sub2;) an jeden beteiligten Prozessor geschickt werden muß. Wir nutzen diese Möglichkeit nur zur Bearbeitung eines übermäßigen Schräglaufs. Wir sagen, daß die zusammengesetzte Hash-Partition (k,{m}) eine Multiplizität M hat. Sonst soll sie eine Multiplizität 1 haben.
  • Wir können jetzt unseren generellen Lösungsweg aufstellen: Nehmen wir an, wir erzeugen eine geordnete Sequenz von K Paaren der Form (Vk,1,Vk,2), wobei Vk,1&epsi;{1,...,B&sub1;} und Vk,2&le;{1,..,B&sub2;}. Wenn Vk,2 nur ein einziges Element enthält, wird das Paar (Vk,1, Vk,2) als Paar vom Typ 2 bezeichnet. In allen anderen Fällen wird es als Paar vom Typ 1 bezeichnet. Die Sequenz von K Paaren muß die Gruppe der zusammengesetzten Hash-Klassen so partitionieren, daß für jede zusammengesetzte Hash-Klasse (i,j) ein eindeutiges k&epsi;{1,...,K} vorhanden ist, so daß i=Vk,1 und j&epsi;Vk,2. Für k&epsi;{1,...,K} soll Mk die Multiplizität des Paares (Vk,1,Vk,2) bezeichnen. Wir haben die Unteraufgaben &tau;mVk,1,Vk,2 erzeugt, die in den P Prozessoren ausgeführt werden sollen. Die benötigte Gesamtrechenzeit kann geschätzt werden auf
  • diese soll so gleichmäßig wie möglich auf die Prozessoren aufgeteilt werden. Bei einer "perfekten", nicht notwendigerweise möglichen Zuweisung wäre jeder Prozessor für
  • Zeiteinheiten beschäftigt. Im einzelnen möchten wir jede Unteraufgabe &tau;mVk,1Vk,2 einem Prozessor A(&tau;mVk,1,Vk,2) so zuweisen, daß die Ausführungszeit für den gesamten Job,
  • minimiert wird. Dieses Optimierungsproblem ist der sogenannte minimale Makespan oder das Mehrprozessor-Planungsproblem. Obwohl es bekanntlich NP-komplett ist, gibt es eine Reihe sehr schneller heuristischer Verfahren, die über eine ausreichend gute Leistung für den ungünstigsten Betriebsfall und eine exzellente Leistung für den durchschnittlichen Betriebsfall verfügen.
  • Der Punkt ist, daß wir eine Kontrolle darüber ausüben können, wie die geordnete Sequenz von Wertepaaren und die entsprechenden Multiplizitäten erzeugt werden. Das Ziel in der zweiten Stufe unserer Erfindung ist ein Teile- und -herrsche- Verfahren zur Erzeugung dieser geordneten Sequenz. Wir stellen in Stufe 2 zwei Alternativbeispiele möglicher Weiterverarbeitungslösungen vor.
  • Bei der ersten Methode wird eine Variante der LPT-Heuristik nach Graham verwendet; sie ist im Flußbild der Figur 6 dargestellt. Bezugnehmend auf Figur 6; zunächst werden in Funktionsblock 50 die Gruppen {(k,F),k=1,...,B&sub1;}, mit F={1,...,B&sub2;}, in absteigender Reihenfolge gemäß dem Wert der Unteraufgabe, T¹k,F sortiert. Es wird eine Liste aller aktuellen Unteraufgaben, geordnet nach den zeitlichen Schätzungen der Unteraufgaben, geführt. In Entscheidungsblock 52 wird dann geprüft, ob die Zeitschätzung der größten Unteraufgabe in der Liste kleiner als oder gleich 1/P-tel der Summe der Zeitschätzungen aller Unteraufgaben in der Liste ist. Mit anderen Worten, "paßt" die größte Unteraufgabe? Wenn nicht, wird in Entscheidungsblock 54 geprüft, ob das größte Element in der Liste der Unteraufgaben vom Typ 1 ist. Wenn ja, wird in Funktionsblock 56 das größte Paar vom Typ 1 (Vk,1,Vk,2) unterteilt in card(Vk,2) Paare vom Typ 2, jedes mit einer Multiplizität 1. Anschließend wird die Liste der Unteraufgaben neu numeriert und im Funktionsblock 58 neu geordnet, bevor die Steuerschleife zum Entscheidungsblock 52 zurückkehrt.
  • Ist die Prüfung im Entscheidungblock 54 negativ, wird in Entscheidungsblock 60 in einer weiteren Prüfung festgestellt, ob es möglich ist, die Multiplizität des Paares vom Typ 2, das der größten Unteraufgabe in der Liste entspricht, auf eine neue Multiplizität M(P zu erhöhen, und zwar in der Weise, daß jetzt jede Unteraufgabe paßt. Wenn ja, wird die kleinste dieser Multiplizitäten in Funktionsblock 62 gefunden und die Liste der Unteraufgaben wird revidiert, um diese neue Multiplizität aufzunehmen. Außerdem wird K angepaßt und die Zeitschätzungen werden für die neuen Unteraufgaben berechnet. Der Prozeß geht dann weiter zu Funktionsblock 58.
  • Fällt die Prüfung im Entscheidungsblock 60 negativ aus, wird in Funktionsblock 64 der Unteraufgabe eine Multiplizität P zugewiesen, jede der P Unteraufgaben wird einem anderen Prozessor zugewiesen und die Unteraufgaben werden von der Liste entfernt. Außerdem wir K angepaßt. Die entfernten P Unteraufgaben werden fast in der gleichen Zeit ausgeführt. In Entscheidungsblock 66 wird anschließend geprüft, ob die Liste der Unteraufgaben leer ist. Wenn ja, stoppt der Prozeß; wenn nicht, schleift der Prozeß zurück zum Funktionsblock 58.
  • Fällt die Prüfung im Entscheidungsblock 52 positiv aus, passen alle Unteraufgaben. In Funktionsblock 68 wird die Ziel- Makespan-Zeit TARGET als 1/P-tel der Summe der Zeitschätzungen aller Unteraufgaben in der Liste berechnet. Wichtigster Punkt ist, daß dieses Ziel jetzt stabil ist. Obwohl wir die Paare vom Typ 1 in aufeinanderfolgenden Schritten in Paare vom Typ 2 aufteilen können, bleibt die Summe der Zeitschätzungen unverändert. Unsere LPT-Variante findet in den folgenden Schritten statt.
  • Betrachten wir den Prozessor p, für den die Differenz zwischen TARGET und der bereits ihm zugewiesenen Summe der Unteraufgabenzeiten maximal ist. Betrachten wir die größte in der Liste verbleibende Unteraufgabe (Vk,1,Vk,2). Im Entscheidungsblock 70 wird geprüft, ob es sich um eine Unteraufgabe vom Typ 2 handelt. Wenn dem so ist, wird in Funktionsblock 72 dem Prozessor p die Unteraufgabe (Vk,1,Vk,2) zugewiesen und die Unteraufgabe wird aus der Liste entfernt. Im Entscheidungsblock 80 wird dann geprüft, ob die Liste der Unteraufgaben leer ist. Wenn ja, endet der Prozeß; wenn nein, schleift der Prozeß zurück zum Entscheidungsblock 70.
  • Fällt die Entscheidung im Entscheidungsblock 70 negativ aus, wird im Entscheidungsblock 78 geprüft, ob, wenn Prozessor p (Vk,1,Vk,2) zugewiesen würde, die revidierte Differenz zwischen TARGET und der Summe der ihm zugewiesenen Unteraufgabenzeiten negativ wäre. Wenn nicht, geht die Steuerung zum Funktionsblock 72; wenn ja, wird in Funktionsblock 74 (Vk,1,Vk,2) unterteilt in card(Vk,2) Paare vom Typ 2, jedes mit einer Multiplizität 1. Die Liste der Unteraufgaben wird in Funktionsblock 76 neu numeriert und neu geordnet, bevor die Steuerung zum Entscheidungsblock 70 zurückkehrt.
  • Der zweite Hash-Verbindungsalgorithmus für Stufe 2 der Verbindungsoperation ist im Flußbild der Figur 7 dargestellt. Wenn man die Flußbilder der Figuren 4 und 7 miteinander vergleicht, stellt man fest, daß die Gesamtlogik des Sortier- Misch-Verbindungsalgorithmus und dieses Hash-Verbindungsalgorithmus sehr ähnlich ist. Bezugnehmend auf Figur 7; der Prozeß beginnt in Funktionsblock 90, indem zunächst die Gruppe {(k,F),k=1,...,B&sub1;} in absteigender Reihenfolge entsprechend dem Wert der Unteraufgabe, T¹k,F, sortiert wird; F={1, ...,B&sub2;}. Wir führen eine Liste aller aktuellen Unteraufgaben, geordnet nach den Zeitschätzungen der Unteraufgaben. Im Entscheidungsblock 92 wird dann geprüft, ob die Zeitschätzung für die größte Unteraufgabe in der Liste kleiner als oder gleich 1/P-tel der Summe der Zeitschätzungen aller Unteraufgaben in der Liste ist. Mit anderen Worten, "paßt" die größte Unteraufgabe? Wenn ja, wird in Funktionsblock 94 LPT oder MULTIFIT durchgeführt. Auch hier ist wieder der erste und rechnerisch aufwendigste Schritt in beiden Algorithmen das Ordnen der Unteraufgaben nach Zeitschätzungen. Dies ist in unserem Fall bereits geschehen. Im Entscheidungsblock 96 wird dann geprüft, ob der Makespan innerhalb eines vorher festgelegten multiplikativen Faktors 1+&Delta; einer perfekten Zuweisung liegt. Wenn ja, stoppt der Prozeß; wenn nein, wird in Entscheidungsblock 98 geprüft, ob ein Paar vom Typ 1 übrigbleibt. Wenn nein, stoppt der Prozeß; andernfalls wird in Funktionsblock 100 das größte Paar vom Typ 1 auf der Liste ausgewählt. Anschließend wird in Funktionsblock 102 das größte Paar vom Typ 1 (Vk,1,Vk,2) wie folgt in zwei Paare unterteilt: Für jedes Element m&epsi;Vk,2 gibt es eine entsprechende Unteraufgabenzeit T¹Vk,1'{m. Mit der Gruppe {&tau;¹Vk,1'{m} m&epsi;Vk,2} LPT oder MULTIFIT ausführen, wobei Vk,2 in zwei Teilgruppen V¹k,2 und V²k,2 mit etwa gleichen Gesamt-Zeitschätzungen für die Unteraufgabe unterteilt wird. Wenn bei einer der beiden Unteraufgaben eine Zeit von 0 geschätzt wird, kann sie von der Liste gestrichen werden. Außerdem wird K angepaßt. Alternativ könnte man das größte Paar vom Typ 1 in eine beliebige Anzahl Q von Gruppierungen zwischen 2 und der Mächtigkeit Vk,2 aufteilen Die Wahl Q=2 wurde hier aus Darstellungsgründen getroffen. Im Entscheidungsblock 104 wird nun geprüft, ob die Liste der Unteraufgaben leer ist. Wenn ja, stoppt der Prozeß; wenn nein, wird die Liste der Unteraufgaben in Funktionsblock 106 neu numeriert und neu geordnet, bevor die Steuerschleife zum Entscheidungsblock 92 zurückkehrt.
  • Fällt die Prüfung im Entscheidungsblock 92 negativ aus, wird im Entscheidungsblock 108 geprüft, ob das größte Element in der Liste der Unteraufgaben vom Typ 1 ist. Wenn ja, geht die Steuerung weiter zum Funktionsblock 102; wenn nein, wird im Entscheidungsblock 110 geprüft, ob es möglich ist, die Multiplizität des Paares vom Typ 2 entsprechend der größten Unteraufgabe in der Liste auf eine neue Multiplizität M< P in der Weise zu erhöhen, daß jetzt jede Unteraufgabe paßt. Wenn ja, wird die kleinste solche Multiplizität gefunden und die Liste der Unteraufgaben wird dahingehend revidiert, daß diese neue Multiplizität in Funktionsblock 112 mit aufgenommen wird. K wird angepaßt und die Zeitschätzungen werden für die neuen Unteraufgaben berechnet. Die Steuerung geht dann zum Funktionsblock 106. Fällt die Prüfung im Entscheidungsblock 110 negativ aus, wird in Funktionsblock 114 der Unteraufgabe die Multiplizität P zugewiesen, jede der P Unteraufgaben wird einem anderen Prozessor zugewiesen und die Unteraufgaben werden von der Liste entfernt. Außerdem wird K angepaßt. Die entfernten P Unteraufgaben werden in fast derselben Zeit ausgeführt. Der Prozeß geht dann weiter zu Funktionsblock 104.
  • Bei unserer Methode favorisieren wir Paare mit der Multiplizität 1, es können jedoch auch höhere Multiplizitäten zur Überwindung eines übermäßigen Schräglaufs eingesetzt werden. Wo dieser übermäßige Schräglauf vorliegt, dürfte sich auf natürliche Weise während der Durchführung des Algorithmus herausstellen. Die oben beschriebene Methode könnte auch mit vielen anderen Variationen realisiert werden. Zum Beispiel könnte in beiden Methoden ein iterativer Verbesserungsalgorithmus am Ende eingesetzt werden. Diese Methode ist in Figur 8 dargestellt. In dieser Figur stellt das GOAL 1P-tel der Summe der Zeitschätzungen aller Unteraufgaben dar. Die Methode sucht sich den Prozessor P mit der größten Summe der Zeitschätzungen der ihm zugewiesenen Unteraufgaben heraus. Im Prozessor P wird die größte Unteraufgabe (Vk,1,Vk,2) vom Typ 1 herausgesucht und in card (Vk,2) Paare vom Typ 2 mit einer Multiplizität von 1 unterteilt. Diese Aufgaben werden dann den Prozessoren neu zugewiesen, die größte Unteraufgabe zuerst, wie in Figur 8 gezeigt wird.
  • Wie in Stufe 2 für den Sortier-Misch-Verbindungsalgorithmus, die in Figur 4 dargestellt ist, müssen in diesem Verfahren für Stufe 2, basierend auf dem zweiten Hash-Verbindungsalgorithmus nach Figur 7, LPT oder MULTIFIT nicht immer im Funktionsblock 94 durchgeführt werden. Die Anzahl der Durchführungen des Minimum-Makespan-Algorithmus könnte auch durch einen Zähler geregelt werden. Auch könnte nach einem anderen Zähler die Zeit für den Algorithmus ablaufen, auch wenn diese Lösung nicht ganz zufriedenstellend ist.
  • In der in Figur 3 gezeigten Stufe 3 werden die Tupel der Relationen R&sub1; und R&sub2; von der Platte gelesen, die Hash-Funktionen H&sub1; und H&sub2; werden angewendet und die Tupel werden an die in Stufe 2 bestimmten zugewiesenen Prozessoren geschickt.
  • Auf Wunsch könnten in der in Figur 3 gezeigten Stufe 4 im Verlauf der eigentlichen Verbindung die Prozessoren auch über den Fortgang der Operation berichten. Da es sich bei den Zeitschätzungen der Unteraufgabe genau hierum handelt, könnte der Fortgang der Verbindung unausgewogen werden. Wenn diese Unausgewogenheit eine bestimmte vorher festgelegte Schwelle überschreitet, könnte ein neuer LPT- oder MULTIFIT-Algorithmus eingeleitet werden.
  • Es gibt viele alternative Möglichkeiten zur Realisierung des hierarchischen Hashing-Konzepts. Bei einer Alternative kann bei Durchführung der Hashing-Technik eine Liste der in Stufe 1 angetroffenen am häufigsten verwendeten Werte der verschiedenen Verbindungsspalten-Werte geführt werden. Außerdem würde die Vorkommenshäufigkeit gepflegt. Wenn die Vorkommenshäufigkeit eines Verbindungsspalten-Werts unter eine vorher festgelegte Schwelle fällt, würde der Wert aus der Liste entfernt. Eine andere Alternative ist, im Verlauf der Stufe 1 beim Durchführen der Hashing-Technik die Verbindungsspalten- Werte abzutasten. Die Liste mit den am häufigsten verwendeten Werten oder Abtastergebnissen könnte dann zur Erkennung der Schräglaufverteilung und als Richtlinie dafür verwendet werden, welche Partitionen weiter partitioniert werden.
  • Zusammenfassend wurde ein Verfahren zur Verbindung zweier Datenbankrelationen auf einem gemeinsamen Feld in einer parallelen relationalen Datenbank-Umgebung mit einer Vielzahl von Prozessoren bereitgestellt, basierend entweder auf der Verwendung eines Sortier-Misch- oder eines Hash-Verbindungsalgorithmus. Der Prozeß beinhaltet die Partitionierung einer ersten Relation in eine Vielzahl von Partitionen und einer zweiten Relation in eine entsprechende Vielzahl von Partitionen, so daß jeder einzelne Wert in dem gemeinsamen Feld eindeutig der entsprechenden Partition der zweiten Relation entspricht, wodurch eine aktuelle Gruppe von Jobs definiert wird, die jeweils aus der Aufgabe des Verbindens einer Partition der ersten Relation mit der entsprechenden Partition der zweiten Relation bestehen. Die Zeit, die ein einzelner Prozessor zur Ausführung jedes dieser Jobs benötigt, wird geschätzt, diese Schätzungen bilden eine aktuelle Gruppe von Ausführungszeitschätzungen.
  • Anschließend müssen die Jobs auf eine Zeit reduziert werden, die geringer als oder gleich der Summe der Zeitschätzungen geteilt durch die Anzahl der Prozessoren ist. Dies geschieht durch Subpartitionierung aller Partitionen, die Jobs mit einer Ausführungszeitschätzung entsprechen, die größer als die Summe der Zeitschätzungen geteilt durch die Anzahl der Prozessoren ist. Die Subpartitionierung erreicht man durch Ersetzen einer jeden solchen Partition der ersten Relation und der entsprechenden Partition der zweiten Relation, die mehr als einen unterschiedlichen Wert in dem gemeinsamen Feld enthalten, durch mindestens zwei kleinere Partitionen, wobei jeder einzelne Wert in dem gemeinsamen Feld eindeutig einer der kleineren Partitionen der ersten Relation und eindeutig der entsprechenden Partition der kleineren Partitionen der zweiten Relation entspricht. Hierduch werden Ersatz-Jobs in der aktuellen Gruppe der Jobs definiert, wobei jeder Ersatz-Job aus der Aufgabe besteht, eine dieser kleineren Partitionen der ersten Relation mit der entsprechenden kleineren Partition der zweiten Relation zu verbinden. Bezogen auf jeden Job, bei dem die entsprechenden Partitionen der ersten und der zweiten Relation nur einen unterschiedlichen Wert in dem gemeinsamen Feld enthalten, wird die größere dieser entsprechenden Partitionen durch eine Vielzahl kleinerer Partitionen ersetzt, wobei die Anzahl dieser kleineren Partitionen die minimale Ganzzahl ist, die, wenn sie in die Ausführungszeitschätzung für diesen Job unterteilt wird, eine Zeit ergibt, die unterhalb der Summe der Ausführungszeitschätzungen geteilt durch die Anzahl der Prozessoren liegt. Auf diese Weise werden Ersatz-Jobs definiert, wobei jeder Ersatz-Job aus der Aufgabe besteht, eine der kleineren Partitionen der einen Relation mit der unveränderten entsprechenden Partition der anderen Relation zu verbinden.
  • Wenn der Subpartitionierungsprozeß abgeschlossen ist, wird die aktuelle Gruppe der Ausführungszeitschätzungen durch Ersetzen der Ausführungszeitschätzungen der ersetzten Jobs durch Ausführungszeitschätzungen für die Ersatz-Jobs aktualisiert. Der Prozeß wird iterativ durchgeführt, bis für keinen Job in der aktuellen Gruppe von Jobs eine Ausführungszeit vorhanden ist, die größer als die Summe der Ausführungszeitschätzungen geteilt durch die Anzahl der Prozessoren ist.
  • Ein wichtiger Teil der Erfindung ist die Verfeinerung der Prozessor-Zuweisungen. Dies geschieht durch Einplanen der aktuellen Gruppe von Jobs unter den einzelnen Prozessoren unter Anwendung einer Optimierungstechnik mit minimalen Makespan. Der Umfang des Ausführungszeit-Schräglaufs, der sich ergeben würde, wenn die Prozessoren die aktuelle Job-Gruppe wie geplant ausführen würden, wird geschätzt. Diese Schätzung wird mit einem Standard-Schräglauf verglichen; wenn die Schätzung annehmbar ist, wird die aktuelle Job-Gruppe entsprechend der Planung auf den Prozessoren ausgeführt, wodurch die beiden Datenbankrelationen auf einem gemeinsamen Feld mit einem minimalen Ausführungszeit-Schräglauf verbunden werden.
  • Erfüllt die Schräglauf-Schätzung nicht den Schräglauf-Standard, wird eine der größten Partitionen der ersten und der zweiten Relation durch mindestens zwei kleinere Partitionen ersetzt, um Ersatz-Jobs für den durch die ersetzten Partitionen definierten Job festzulegen. Jeder Ersatz-Job besteht aus der Aufgabe, eine der kleineren Ersatz-Partitionen der ersten Relation durch die entsprechende kleinere Ersatz-Partition der zweiten Relation zu ersetzen. Die aktuelle Gruppe von Ausführungszeitschätzungen wird dann durch Ersetzen der Ausführungszeitschätzungen der ersetzten Jobs durch die Ausführungszeitschätzungen für die Ersatz-Jobs aktualisiert. Außerdem wird die Emplanung der aktuellen Job-Gruppe aktualisiert, so daß der geschätzte Ausführungszeit-Schräglauf minimiert wird. Der Umfang des Ausführungszeit-Schräglaufs wird geschätzt und mit dem Schräglauf-Standard verglichen. Dieser Prozeß wird iterativ wiederholt, bis entweder der Umfang des Schräglaufs dem Standard-Schräglauf entspricht, oder alle Partitionen entsprechend einem vorher festgelegten maximalen Umfang subpartitioniert sind.

Claims (10)

1. Ein Verfahren zur Verbindung zweier Relationen einer Datenbank auf einem gemeinsamen Feld in einem parallelen relationalen Datenbanksystem mit P Prozessoren, wobei das genannte Verfahren folgende Schritte umfaßt:
(a) Partitionieren der ersten Relation in eine Vielzahl von Partitionen und der zweiten Relation in eine entsprechende Vielzahl von Partitionen, wodurch eine aktuelle Gruppe von Jobs definiert wird, die jeweils aus der Aufgabe bestehen, eine Partition der ersten Relation mit der entsprechenden Partition der zweiten Relation zu verbinden, so daß die Jobs auf einen Prozessor passen,
dadurch gekennzeichnet, daß Schritt a ausgeführt wird durch
ein Teile- und -herrsche-Verfahren durch Anwendung eines reiterativen Prozesses, in dem k< P Partitionen erzeugt werden, und diese Partitionen, die schätzungsweise mehr als 1/P der geschätzten Gesamtverarbeitungszeit in Anspruch nehmen, weiter in neue Partitionen unterteilt werden; anschließend wird die Zahl k an die neue Anzahl der Partitionen angepaßt, um jeden einzelnen Wert in dem gemeinsamen Feld zu berücksichtigen, der eindeutig einer der Partitionen der ersten Relation und eindeutig der entsprechenden Partition der Partitionen der zweiten Relation entspricht, wobei der genannte Partitionierungsschritt jeden Job auf weniger als oder entsprechend 1/P der Gesamtausführungszeit reduziert;
und weiter gekennzeichnet durch folgende Schritte:
(b) Einplanen einer aktuellen Gruppe von Jobs unter P Prozessoren unter Anwendung einer Optimierungstechnik mit minimalem Makespan;
(c) Schätzen der Menge des Ausführungszeit-Schräglaufs, der auftreten würde, wenn P Prozessoren die aktuelle Job-Gruppe wie in Schritt (b) geplant ausführen würden;
(d) Vergleichen des geschätzten Schräglaufs mit einem Standard-Schräglauf; und
(e) wenn der geschätzte Schräglauf dem Standard-Schräglauf entspricht, Ausführen der aktuellen Job- Gruppe, wie zuletzt geplant, unter Einsatz von P Prozessoren, dadurch Verbinden der genannten beiden Datenbankrelationen auf einem gemeinsamen Feld mit minimalem Ausführungszeit-Schräglauf.
2. Das Verfahren nach Anspruch 1, das, wenn der geschätzte Schräglauf nicht dem Standard-Schräglauf entspricht, weiter folgende Schritte umfaßt:
(f) Ersetzen einer der größten Partitionen der ersten und zweiten Relationen durch mindestens zwei kleinere Partitionen, dadurch Definieren von Ersatz- Jobs für den durch die ersetzten Partitionen definierten Job, wobei jeder dieser Ersatz-Jobs aus der Aufgabe besteht, eine der kleineren Ersatz-Partitionen der ersten Relation mit der entsprechend kleineren Ersatz-Partition der zweiten Relation zu verbinden.
(g) Aktualisieren einer aktuellen Gruppe von Ausführungszeitschätzungen durch Ersetzen der Ausführungszeitschätzungen der ersetzten Jobs durch Ausführungszeitschätzungen für die Ersatz-Jobs;
(h) Aktualisieren der Emplanung der aktuellen Gruppe von Jobs zwischen P Prozessoren, so daß der geschätzte Ausführungszeit-Schräglauf minimiert wird;
(i) Schätzen des Ausführungszeit-Schräglaufs, der entstehen würde, wenn P Prozessoren die aktuelle Job- Gruppe so ausführen würden, wie in Schritt (h) geplant;
(j) Vergleichen des in Schritt (i) geschätzten Ausführungszeit-Schräglaufs mit dem Standard-Schräglauf; und
(k) iteratives Ausführen der Schritte (e) bis (j), bis entweder der Schräglauf dem Standard-Schräglauf in Schritt (j) entspricht oder alle Partitionen entsprechend einem vorher festgelegten maximalen Umfang subpartitioniert wurden.
3. Das Verfahren nach Anspruch 2, bei dem der Partitionierungsschritt weiter folgende Schritte umfaßt:
(l) Schätzen der Zeit, die ein einzelner Prozessor benötigt, um jeden der genannten Jobs auszuführen, wobei die genannten Schätzungen eine aktuelle Gruppe von Ausführungszeitschätzungen bilden;
(m) Subpartitionieren aller Partitionen, die Jobs mit einer Ausführungszeitschätzung entsprechen, welche größer ist als die Summe der Ausführungszeitschätzungen geteilt durch P;
(n) Aktualisieren der aktuellen Gruppe von Ausführungszeitschätzungen durch Ersetzen der Ausführungszeitschätzungen der ersetzten Jobs durch Ausführungszeitschätzungen für die Ersatz-Jobs; und
(o) iteratives Ausführen der Schritte (m) und (n), bis in der aktuellen Job-Gruppe keine Ausführungszeitschätzung für einen Job enthalten ist, die größer ist als die Summe der Ausführungszeitschätzungen geteilt durch P.
4. Das Verfahren nach Anspruch 3, bei dem der Schritt der Subpartitionierung weiter folgende Schritte umfaßt:
(p) Ersetzen aller Partitionen der ersten Relation und der entsprechenden Partition der zweiten Relation, die mehr als einen unterschiedlichen Wert in dem gemeinsamen Feld enthalten, durch mindestens zwei kleinere Partitionen, wobei jeder einzelne Wert in dem gemeinsamen Feld eindeutig einer der kleineren Partitionen der ersten Relation und eindeutig der entsprechenden Partition der kleineren Partitionen der zweiten Relation entspricht, dadurch Definieren von Ersatz-Jobs für alle Jobs aus Schritt (p) in der aktuellen Job-Gruppe, wobei jeder dieser Ersatz-Jobs aus der Aufgabe besteht, eine dieser kleineren Partitionen der ersten Relation mit der entsprechend kleineren Partition der zweiten Relation zu verbinden; und
(q) in bezug auf alle Jobs, bei denen die entsprechenden Partitionen der ersten und zweiten Relationen nur einen unterschiedlichen Wert in dem gemeinsamen Feld enthalten, Ersetzen der größeren dieser entsprechenden Partitionen durch X kleinere Partitionen, wobei X die kleinste ganze Zahl ist, die, wenn sie in die Ausführungszeitschätzung für einen solchen Job unterteilt wird, eine Zeit ergibt, die geringer ist als die Summe der Ausführungszeitschätzungen geteilt durch P, dadurch Definition von Ersatz-Jobs für alle derartigen Jobs aus Schritt (q) in der aktuellen Job-Gruppe, wobei jeder dieser Ersatz-Jobs aus der Aufgabe besteht, eine der X kleineren Partitionen der einen Relation mit der unveränderten entsprechenden Partition der anderen Relation zu verbinden.
5. Das Verfahren nach Anspruch 2, bei dem V&sub1; und V&sub2; zwei Werte in der Domäne der Verbindungsspalten der genannten ersten und zweiten Relationen sind und ein Paar (V&sub1;,V&sub2;), das V&sub1;< V&sub2; erfüllt, als ein Paar vom Typ 1 definiert wird, und ein Paar (V&sub1;,V&sub2;), das V&sub1;=V&sub2; erfüllt, als ein Paar vom Typ 2 definiert wird, weiter, vor Schritt (f) folgende Schritte umfassend:
(r) Auswählen des größten Paares vom Typ 1, um es durch mindestens zwei kleinere Partitionen zu ersetzen; jedoch
(s) wenn keine Paare vom Typ 1 vorhanden sind, dann Ausführen der aktuellen Job-Gruppe, wie zuletzt geplant, unter Einsatz von P Prozessoren, dadurch Verbinden der genannten zwei Datenbankrelationen auf einem gemeinsamen Feld mit minimalem Ausführungszeit-Schräglauf.
6. Das Verfahren nach Anspruch 3, bei dem V&sub1; und V&sub2; zwei Werte in der Domäne von Verbindungspalten der genannten ersten und zweiten Relationen sind, und ein Paar (V&sub1;,V&sub2;), das V&sub1;< V&sub2; entspricht, als ein Paar vom Typ 1 definiert wird und ein Paar (V&sub1;,V&sub2;), das V&sub1;=V&sub2; entspricht, als ein Paar vom Typ 2 definiert wird, und bei dem, wenn eine Zeitschätzung für einen der genannten Jobs größer ist als 1/P der gesamten Ausführungszeit in Schritt (m), weiter die folgenden Schritte enthalten sind:
(t) Festellen, ob der genannte eine Job ein Paar vom Typ 1 ist; und
(u) wenn es sich um ein Paar vom Typ 1 handelt, dann dieses ersetzen durch zumindest zwei Partitionen, von denen eine vom Typ 2 ist.
7. Das Verfahren nach Anspruch 6, bei dem, wenn der genannte eine Job ein Paar vom Typ 2 ist, die folgenden Schritte ausgeführt werden:
(v) Feststellen, ob die Multiplizität des Paares vom Typ 2 erhöht werden kann; und
(w) wenn die Multiplizität erhöht werden kann, Finden der kleinsten Multiplizität und Revidieren der aktuellen Job-Gruppe.
8. Das Verfahren nach Anspruch 7, bei dem, wenn die Multiplizität des Paares vom Typ 2 nicht erhöht werden kann, folgende Schritte ausgeführt werden:
(x) Zuweisen des Paares vom Typ 2, so daß dieses eine Multiplizität P hat; und
(y) Zuweisen jedes der P Jobs an verschiedene Prozessoren.
9. Das Verfahren nach Anspruch 1, bei dem Schritt (a) durch eine hierarchische Doppel-Hashing-Technik ausgeführt wird, unter Einsatz von zwei Hash-Funktionen H&sub1; und H&sub2;, wobei H&sub2; zur weiteren Unterteilung jeder von H&sub1; erzeugten Hash-Partition in feinere Partitionen eingesetzt wird.
10. Das Verfahren nach Anspruch 1, bei dem in Schritt (e) der Fortgang der genannten Prozessoren in der Verbindungsoperation überwacht wird, und bei dem, wenn der Fortgang der Verbindungsoperation unausgewogen wird und eine vorbestimmte Schwelle überschreitet, die Schritte (b) bis (d) wiederholt werden.
DE69030228T 1989-10-05 1990-10-04 Verfahren zur Verbindung zweier Relationen einer Datenbank auf einem gemeinsamen Feld in einem parallelen Datenbanksystem Expired - Lifetime DE69030228T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/417,366 US5121494A (en) 1989-10-05 1989-10-05 Joining two database relations on a common field in a parallel relational database field

Publications (2)

Publication Number Publication Date
DE69030228D1 DE69030228D1 (de) 1997-04-24
DE69030228T2 true DE69030228T2 (de) 1997-09-18

Family

ID=23653718

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69030228T Expired - Lifetime DE69030228T2 (de) 1989-10-05 1990-10-04 Verfahren zur Verbindung zweier Relationen einer Datenbank auf einem gemeinsamen Feld in einem parallelen Datenbanksystem

Country Status (4)

Country Link
US (1) US5121494A (de)
EP (1) EP0421408B1 (de)
JP (1) JPH07111718B2 (de)
DE (1) DE69030228T2 (de)

Families Citing this family (94)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07104871B2 (ja) * 1989-08-31 1995-11-13 三菱電機株式会社 リレーショナル・データベースにおけるジョイン処理方式
JPH03130842A (ja) * 1989-10-17 1991-06-04 Toshiba Corp データベースシステムの同時実行制御装置
US5241648A (en) * 1990-02-13 1993-08-31 International Business Machines Corporation Hybrid technique for joining tables
US5291583A (en) * 1990-12-14 1994-03-01 Racal-Datacom, Inc. Automatic storage of persistent ASN.1 objects in a relational schema
US5307485A (en) * 1991-05-31 1994-04-26 International Business Machines Corporation Method and apparatus for merging sorted lists in a multiprocessor shared memory system
JPH077422B2 (ja) * 1991-08-23 1995-01-30 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ処理データベース・システムにおけるジョインの実行方法及びシステム
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
JP3526585B2 (ja) * 1992-03-12 2004-05-17 株式会社リコー 分散データベースの質問処理最適化方式
US5418854A (en) * 1992-04-28 1995-05-23 Digital Equipment Corporation Method and apparatus for protecting the confidentiality of passwords in a distributed data processing system
JP3824091B2 (ja) * 1992-10-09 2006-09-20 富士通株式会社 リレーショナルデータベースシステム
JP3202074B2 (ja) * 1992-10-21 2001-08-27 富士通株式会社 並列ソート方式
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
US5473741A (en) * 1993-08-30 1995-12-05 Graphic Systems Technology, Inc. Method for determining the time to perform raster image processing
DE4497320T1 (de) * 1993-09-27 1996-11-21 Oracle Corp Verfahren und Vorrichtung zur parallelen Verarbeitung in einem Datenbanksystem
US5765146A (en) * 1993-11-04 1998-06-09 International Business Machines Corporation Method of performing a parallel relational database query in a multiprocessor environment
US5437032A (en) * 1993-11-04 1995-07-25 International Business Machines Corporation Task scheduler for a miltiprocessor system
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
US6009265A (en) * 1994-02-25 1999-12-28 International Business Machines Corporation Program product for optimizing parallel processing of database queries
US5574900A (en) * 1994-02-25 1996-11-12 International Business Machines Corporation System and method for optimizing parallel processing of database queries
US5835755A (en) * 1994-04-04 1998-11-10 At&T Global Information Solutions Company Multi-processor computer system for operating parallel client/server database processes
US5542089A (en) * 1994-07-26 1996-07-30 International Business Machines Corporation Method and apparatus for estimating the number of occurrences of frequent values in a data set
GB9417314D0 (en) * 1994-08-27 1994-10-19 Int Computers Ltd Method for performing joins in a database system
JP3201945B2 (ja) * 1995-01-10 2001-08-27 インターナショナル・ビジネス・マシーンズ・コーポレーション データベースのテーブルを比較する方法
JP3560690B2 (ja) * 1995-06-14 2004-09-02 富士通株式会社 並列プロセッサ装置
US5860137A (en) * 1995-07-21 1999-01-12 Emc Corporation Dynamic load balancing
WO1997011433A1 (en) * 1995-09-21 1997-03-27 The Trustees Of Columbia University In The City Of New York Performing efficient join operations on large 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
USRE37965E1 (en) * 1995-09-27 2003-01-07 International Business Machines Corporation Method for localizing execution or subqueries and determining collocation of execution of subqueries in a parallel database
US5745746A (en) * 1996-06-24 1998-04-28 International Business Machines Corporation Method for localizing execution of subqueries and determining collocation of execution of subqueries in a parallel database
US5774692A (en) * 1995-10-05 1998-06-30 International Business Machines Corporation Outer quantifiers in object-oriented queries and views of database systems
US5797136A (en) * 1995-10-05 1998-08-18 International Business Machines Corporation Optional quantifiers in relational and object-oriented views of database systems
US5758345A (en) * 1995-11-08 1998-05-26 International Business Machines Corporation Program and method for establishing a physical database layout on a distributed processor system
US5752072A (en) * 1996-05-09 1998-05-12 International Business Machines Corporation Sorting scheme without compare and branch instructions
US5873074A (en) * 1997-04-18 1999-02-16 Informix Software, Inc. Applying distinct hash-join distributions of operators to both even and uneven database records
US5983215A (en) * 1997-05-08 1999-11-09 The Trustees Of Columbia University In The City Of New York System and method for performing joins and self-joins in a database system
US6704866B1 (en) 1997-07-11 2004-03-09 Cisco Technology, Inc. Compression and encryption protocol for controlling data flow in a network
US6092061A (en) * 1997-08-15 2000-07-18 International Business Machines Corporation Data partitioning by co-locating referenced and referencing records
US5884320A (en) * 1997-08-20 1999-03-16 International Business Machines Corporation Method and system for performing proximity joins on high-dimensional data points in parallel
US6006232A (en) * 1997-10-21 1999-12-21 At&T Corp. System and method for multirecord compression in a relational database
JP3571201B2 (ja) * 1997-12-12 2004-09-29 富士通株式会社 データベース検索装置及びデータベース検索プログラムを記録したコンピュータ読み取り可能な記録媒体
US6401188B1 (en) 1998-02-27 2002-06-04 Cisco Technology, Inc. Method for selection on a pattern sequence
US6292822B1 (en) 1998-05-13 2001-09-18 Microsoft Corporation Dynamic load balancing among processors in a parallel computer
US6106575A (en) * 1998-05-13 2000-08-22 Microsoft Corporation Nested parallel language preprocessor for converting parallel language programs into sequential code
AU5568399A (en) * 1998-08-20 2000-03-14 Equifax, Inc. System and method for updating a credit information database
US6226639B1 (en) 1998-09-22 2001-05-01 International Business Machines Corporation System and method for hybrid hash join using over-partitioning to respond to database query
US6327587B1 (en) 1998-10-05 2001-12-04 Digital Archaeology, Inc. Caching optimization with disk and/or memory cache management
US6601058B2 (en) 1998-10-05 2003-07-29 Michael Forster Data exploration system and method
US6253197B1 (en) 1998-10-06 2001-06-26 International Business Machines Corporation System and method for hash loops join of data using outer join and early-out join
US6275987B1 (en) * 1998-11-05 2001-08-14 International Business Machines Corporation Adaptive, predictive progress indicator
US7047232B1 (en) * 1999-01-13 2006-05-16 Ab Initio Software Corporation Parallelizing applications of script-driven tools
US6341346B1 (en) 1999-02-05 2002-01-22 Cisco Technology, Inc. Method for comparison between a pattern sequence and a variable length key
US6640221B1 (en) 2000-07-10 2003-10-28 Sas Institute Inc. System and method for configuring, sequencing and viewing joins in a query
WO2002056192A1 (en) * 2001-01-09 2002-07-18 Abt Associates, Inc. Distributed computing
US7213025B2 (en) * 2001-10-16 2007-05-01 Ncr Corporation Partitioned database system
US7080072B1 (en) 2001-11-14 2006-07-18 Ncr Corp. Row hash match scan in a partitioned database system
US7035851B1 (en) * 2001-12-07 2006-04-25 Ncr Corp. Reorganization of database records using partition merging
US7120648B2 (en) * 2002-02-26 2006-10-10 International Business Machines Corporation System and method for predicting execution time of a database utility command
US6954748B2 (en) * 2002-04-25 2005-10-11 International Business Machines Corporation Remote data access and integration of distributed data sources through data schema and query abstraction
US7882100B2 (en) * 2005-01-24 2011-02-01 Sybase, Inc. Database system with methodology for generating bushy nested loop join trees
US8589944B2 (en) * 2005-03-16 2013-11-19 Ricoh Production Print Solutions Method and system for task mapping to iteratively improve task assignment in a heterogeneous computing system
JP4793091B2 (ja) * 2005-05-17 2011-10-12 ブラザー工業株式会社 インク給送装置及びインクジェット記録装置
US7685193B2 (en) * 2006-04-28 2010-03-23 Kognitio Limited Database system with multiple processing nodes
FR2907567B1 (fr) * 2006-10-23 2008-12-26 Canon Kk Procede et dispositif de generation de motifs de reference a partir d'un document ecrit en langage de balisage et procedes et dispositifs de codage et de decodage associes.
US7636712B2 (en) * 2006-11-14 2009-12-22 Microsoft Corporation Batching document identifiers for result trimming
US20080140696A1 (en) * 2006-12-07 2008-06-12 Pantheon Systems, Inc. System and method for analyzing data sources to generate metadata
US8799272B2 (en) 2007-07-20 2014-08-05 Hewlett-Packard Development Company, L.P. Data skew insensitive parallel join scheme
JP4966175B2 (ja) * 2007-12-04 2012-07-04 日本電信電話株式会社 分散インデックス結合方法及びシステム
US7945529B2 (en) * 2007-12-27 2011-05-17 Business Objects, S.A. Apparatus and method for performing table comparisons
US8078610B2 (en) * 2008-03-26 2011-12-13 Teradata Us, Inc. Optimization technique for dealing with data skew on foreign key joins
US7941424B2 (en) * 2008-05-30 2011-05-10 Teradata Us, Inc. System, method, and computer-readable medium for dynamic detection and management of data skew in parallel join operations
US8195644B2 (en) * 2008-10-06 2012-06-05 Teradata Us, Inc. System, method, and computer-readable medium for optimization of multiple parallel join operations on skewed data
US9665620B2 (en) 2010-01-15 2017-05-30 Ab Initio Technology Llc Managing data queries
US8930954B2 (en) * 2010-08-10 2015-01-06 International Business Machines Corporation Scheduling parallel data tasks
US9116955B2 (en) 2011-05-02 2015-08-25 Ab Initio Technology Llc Managing data queries
US9600513B2 (en) 2011-06-09 2017-03-21 International Business Machines Corporation Database table comparison
US8868545B2 (en) * 2011-12-29 2014-10-21 Teradata Us, Inc. Techniques for optimizing outer joins
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
US9430285B2 (en) 2012-10-31 2016-08-30 Nec Corporation Dividing and parallel processing record sets using a plurality of sub-tasks executing across different computers
US20140214886A1 (en) 2013-01-29 2014-07-31 ParElastic Corporation Adaptive multi-client saas database
US10585896B2 (en) * 2013-03-12 2020-03-10 Red Hat, Inc. Managing data in relational database management system
US9305074B2 (en) * 2013-06-19 2016-04-05 Microsoft Technology Licensing, Llc Skew-aware storage and query execution on distributed database systems
EP3373134B1 (de) 2013-12-06 2020-07-22 Ab Initio Technology LLC Quellcodeumwandlung
US9792328B2 (en) 2014-03-13 2017-10-17 Sybase, Inc. Splitting of a join operation to allow parallelization
US9836505B2 (en) 2014-03-13 2017-12-05 Sybase, Inc. Star and snowflake join query performance
US10042876B2 (en) 2014-09-17 2018-08-07 International Business Machines Corporation Sort-merge-join on a large architected register file
US10437819B2 (en) 2014-11-14 2019-10-08 Ab Initio Technology Llc Processing queries containing a union-type operation
US10417281B2 (en) 2015-02-18 2019-09-17 Ab Initio Technology Llc Querying a data source on a network
US10545923B1 (en) * 2017-12-19 2020-01-28 Teradata Us, Inc. Reducing skew for database operation processing with randomization
US11868331B1 (en) 2018-05-21 2024-01-09 Pattern Computer, Inc. Systems and methods for aligning big data tables in linear time
US11157496B2 (en) 2018-06-01 2021-10-26 International Business Machines Corporation Predictive data distribution for parallel databases to optimize storage and query performance
US11163764B2 (en) 2018-06-01 2021-11-02 International Business Machines Corporation Predictive data distribution for parallel databases to optimize storage and query performance
CN109885384B (zh) * 2018-12-13 2023-02-07 平安壹钱包电子商务有限公司 任务并行度优化方法、装置、计算机设备及存储介质
US11093223B2 (en) 2019-07-18 2021-08-17 Ab Initio Technology Llc Automatically converting a program written in a procedural programming language into a dataflow graph and related systems and methods
US11573823B2 (en) 2019-11-18 2023-02-07 International Business Machines Corporation Parallel execution of applications

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58151664A (ja) * 1982-03-02 1983-09-08 Fujitsu Ltd ジヨブ選択方式
JP2681269B2 (ja) * 1986-12-10 1997-11-26 富士通株式会社 並列データ再分配方法及びマルチプロセッサシステム
JPH01237872A (ja) * 1988-03-18 1989-09-22 Fujitsu Ltd 負荷分散処理方式

Also Published As

Publication number Publication date
JPH07111718B2 (ja) 1995-11-29
US5121494A (en) 1992-06-09
EP0421408B1 (de) 1997-03-19
DE69030228D1 (de) 1997-04-24
JPH03126169A (ja) 1991-05-29
EP0421408A3 (en) 1993-04-21
EP0421408A2 (de) 1991-04-10

Similar Documents

Publication Publication Date Title
DE69030228T2 (de) Verfahren zur Verbindung zweier Relationen einer Datenbank auf einem gemeinsamen Feld in einem parallelen Datenbanksystem
DE69507020T2 (de) System zum filtern von prioritätswarteschlangen und betriebsverfahren
DE69327716T2 (de) System und verfahren, um wissen über das typische und aussergewöhnliche aus einer datenbank von vorfallsdaten herauszusuchen.
DE69128980T2 (de) Verfahren zur Optimierung von Rechnerkode
DE68926849T2 (de) Struktur und Verfahren zur Anordnung rekursiv abgeleiteter Daten in einer Datenbank
DE69031100T2 (de) Interprozessor-Datenabhängigkeit minimierendes Übersetzungsverfahren
DE69606648T2 (de) Verfahren und vorrichtung zur ablauffolgen von multiprozessoren mit starker affinität
DE69802437T2 (de) Feinkörniger übereinstimmungsmechanismus für optimistische parallelsteuerung mit verriegelungsgruppen
DE3855212T2 (de) Verfahren zur Berechnung eines transitiven Abschlusses
DE69032576T2 (de) Dynamische Optimierung eines einzelnen relationalen Zugriffs
DE69924857T2 (de) Programm-kode-umwandlung
DE69425711T2 (de) Computerverfahren und -system zur Optimierung von Beta-Bäumen
DE69232425T2 (de) Sortierverfahren in einer verteilten Datenbank und Zugangsverfahren dazu
DE69107506T2 (de) Verfahren und Vorrichtung zur Gleichzeitigkeitssteuerung von gemeinsamen Datenaktualisierungen und Abfragen.
DE3781577T2 (de) Verwaltung der groesse und der anzahl der den prozessen zugeordneten speichersegmente in einer konfiguration fuer mehrfachverarbeitung.
DE69625725T2 (de) Von Multitasking Gebrauch machendes Sortieren
DE3852997T2 (de) Rechnersystem und Verfahren für die Überwachung von nichtstationären Datenstrukturen in einem Rechnersystem.
DE69028373T2 (de) Mehrstufiges Verriegelungssystem und -verfahren
DE68919041T2 (de) Vereinigte Variationen in mustergesteuerten, regelbasierten Produktionssystemen für künstliche Intelligenz.
DE602004011890T2 (de) Verfahren zur Neuverteilung von Objekten an Recheneinheiten
DE60208778T2 (de) Datenstruktur für informationssysteme
DE69533193T2 (de) Paralleles verarbeitungssystem zum durchlaufen einer datenbank
DE60224432T2 (de) Dynamische und automatische speicherverwaltung
DE19515020A1 (de) Verfahren und Vorrichtung zum Optimieren von Abfragen mit Gruppieren-nach-Operatoren
DE69027017T2 (de) Anordnung und Verfahren zur Speicherverwaltung in einem Mikrorechner

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8320 Willingness to grant licences declared (paragraph 23)
8328 Change in the person/name/address of the agent

Representative=s name: DUSCHER, R., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 7