DE69232425T2 - Sortierverfahren in einer verteilten Datenbank und Zugangsverfahren dazu - Google Patents

Sortierverfahren in einer verteilten Datenbank und Zugangsverfahren dazu

Info

Publication number
DE69232425T2
DE69232425T2 DE69232425T DE69232425T DE69232425T2 DE 69232425 T2 DE69232425 T2 DE 69232425T2 DE 69232425 T DE69232425 T DE 69232425T DE 69232425 T DE69232425 T DE 69232425T DE 69232425 T2 DE69232425 T2 DE 69232425T2
Authority
DE
Germany
Prior art keywords
key
processors
processor
sections
division
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 - Fee Related
Application number
DE69232425T
Other languages
English (en)
Other versions
DE69232425D1 (de
Inventor
Shinji Fujiwara
Naoki Hamanaka
Mitsuru Nagasaka
Yooichi Shintani
Mikiko Suzuki
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Application granted granted Critical
Publication of DE69232425D1 publication Critical patent/DE69232425D1/de
Publication of DE69232425T2 publication Critical patent/DE69232425T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
    • 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/99937Sorting

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

    HINTERGRUND DER ERFINDUNG
  • Die Erfindung betrifft ein Verfahren zum Sortieren und Zugreifen auf Daten, die in mehreren Speichern in einem verteilten Datenbanksystem verwendet werden, in dem Datensätze unterteilt in mehreren Speichern abgespeichert sind.
  • Als die Technik des parallelen Computersystems entwickelt wurde, wurde das diese Technik verwendende verteilte Datenbanksystem in den praktischen Gebrauch überführt. In einem verteilten Datenbanksystem wird im Allgemeinen eine relationale Datenbank verwendet. Als Grund hierfür kann angegeben werden, dass die Daten leicht verwaltet und verteilt werden, da in einer relationalen Datenbank die Verwaltung und Verarbeitung der Daten mit einer als Datentabelle bezeichneten Tabelle als Einheit ausgeführt werden. Ferner wurde in den letzten Jahren die als SQL bezeichnete Standardverarbeitungssprache festgelegt, und so wird in Betracht gezogen, dass relationale Datenbanken immer mehr in weitem Umfang verwendet werden.
  • Beim bekannten verteilten Datenbanksystem sind die Tabellen der vom System verwalteten Daten verteilt in den zugeordneten Prozessoren mit einem Datensatz als Einheit gespeichert. In diesem System kann, da eine Tabelle an mehrere Prozessoren verteilt wird, eine Verarbeitung wie ein Durchsuchen der Datentabelle parallel hinsichtlich der Prozessoren ausgeführt werden. Daher liefert dieses System den Effekt einer Verkürzung der Umschlagszeit bei Verarbeitung in großem Maßstab. Andererseits müssen in diesem System, da eine Tabelle an mehrere Prozessoren verteilt ist, diese mehreren Prozessoren miteinander zusammenarbeiten, um die Verarbeitungen wie ein Sortieren der gesamten Tabellen und das Herstellen von Übereinstimmung zwischen zwei Tabellen auszuführen.
  • Hinsichtlich einer Technik für Sortiervorgänge in einem verteilten Datenbanksystem wurden bisher verschiedene Verfahren offenbart. Nachfolgend erfolgt eine kurze Beschreibung zu typischen Verfahren innerhalb der verschiedenen Verfahren.
  • Als erstes Verfahren ist dasjenige bekannt, bei dem, nachdem von jedem Prozessor eine Sortierung hinsichtlich der in den Prozessoren verteilt gespeicherten partiellen Daten ausgeführt wurde, die Ergebnisse der Sortierverarbeitung durch die Prozessoren im Hostprozessor gesammelt werden, während sie auf Grundlage von Schlüsselwerten vereinigt werden. Ein derartiges Verfahren ist z. B. im USP 4,412,285 usw. entsprechenden Dokument JP-A-2-118756 offenbart.
  • Dann ist als zweites Verfahren dasjenige bekannt, bei dem die Schlüsselwerte vorab im Hostprozessor in mehrere Bereiche unterteilt werden und die zu sortierenden Daten in mehrere Gruppen unterteilt werden, die den Bereichen der so unterteilten Schlüsselwerte entsprechen, so dass die Daten der Gruppen an die verschiedenen Prozessoren verteilt werden, woraufhin die Daten der Gruppen in den zugeordneten Prozessoren sortiert werden und die Ergebnisse der Sortierverarbeitung in den Prozessoren an den Hostprozessor übertragen werden.
  • Darüber hinaus wird, bei einem dritten Verfahren, nachdem in den Prozessoren hinsichtlich der in diesen verteilt gespeicherten partiellen Daten ein Sortiervorgang unabhängig ausgeführt wurde, das Ergebnis der partiellen Sortierverarbeitung für jeden Bereich von Schlüsselwerten, der an die verschiedenen Prozessoren zu verteilen ist, unterteilt. In diesem Zusammenhang werden nur die Schlüsselwerte der Datensätze und die Datensatzkennungen an die Prozessoren übertragen, während der Datenkörper nicht übertragen wird. Dann wird die Verbindungsverarbeitung der an die Prozessoren verteilten Schlüsselwerte für jeden partiellen Bereich ausgeführt, und auf Grundlage des Ergebnisses der Verbindungsverarbeitung werden die aus den Schlüsselwerten und den Datensatzkennungen bestehenden Sortierstrings aufeinanderfolgend von den Prozessoren zum Hostprozessor gesammelt. Wenn dieses Verfahren verwendet wird, ist es nicht erforderlich, den Datenkörper zu übertragen, und die Verbindungsverarbeitung der Schlüsselwerte kann in den Prozessoren parallel ausgeführt werden.
  • Das obige zweite und dritte Verfahren sind z. B. in dem JP-A- 2-228730 entsprechenden Dokument EP-A- 0377 993 offenbart. Das in diesen Dokumenten beschriebene Verfahren beinhaltet Schritte, die denen ähnlich sind, die in den Absätzen (b) bis (d) des Anspruchs 1 dargelegt sind.
  • Bei den bekannten Verfahren wird die Unterteilungsverteilung der Schlüsselwerte im Hostprozessor ausgeführt, das Ergebnis einer solchen Verarbeitung wird an die Prozessoren geliefert, und die Sortierverarbeitung wird für jeden den zugeordneten Prozessoren zugewiesenen Bereich von Schlüsselwerten ausgeführt. Daher sind diese Verfahren wirkungsvoll, um die verteilte Sortierverarbeitung parallel auszuführen. Darüber hinaus ist es durchaus gleichen der Menge der den Prozessoren zugewiesenen Schlüsselwerte möglich, den Hochgeschwindigkeitsbetrieb der Sortierverarbeitung selbst zu fördern.
  • Beim obigen ersten Verfahren werden die Sortierergebnisse der verteilt in den Prozessoren gespeicherten partiellen Daten im Hostprozessor gesammelt, während sie vereinigt werden. Daher ist, wenn die Menge der zu vereinigenden Daten größer ist, die dem Hostprozessor auferlegte Bearbeitungsbelastung aufgrund dieses Vereinigungsvorgangs erhöht.
  • Andererseits kann gemäß dem obigen zweiten oder dritten Verfahren die Sortierverarbeitung parallel mittels der auf die zugeordneten Prozessoren verteilten Schlüsselwerte und im Hostprozessor parallel ausgeführt werden, wobei nur der Verarbeitungsvorgang des Sammelns der Sortierergebnisse in den Prozessoren vom Hostprozessor ausgeführt werden muss. Daher ist die dem Hostprozessor auferlegte Belastung im Vergleich zum ersten Verfahren verringert.
  • Jedoch müssen auch beim obigen zweiten Verfahren von den Prozessoren erzeugte partielle Sortierstrings aufeinanderfolgend an den Hostprozessor rückgeliefert werden. Daher ist, wenn die Anzahl der zu verarbeitenden Daten zunimmt, die zum Zurückliefern des Verarbeitungsergebnisses erforderliche Belastung erhöht, so dass der Effekt der parallelen Verarbeitung nicht verstärkt werden kann.
  • Andererseits wird beim obigen dritten Verfahren die Verarbeitung des Rücklieferns des Sortierergebnisses unter Verwendung der den Datensätzen entsprechenden Datensatzkennungen ausgeführt, um eine Verringerung der sequenziellen Verarbeitung zu fördern. Daher ist die zum Rückliefern des Verarbeitungsergebnisses erforderliche Belastung klein im Vergleich zum Fall des obigen zweiten Verfahrens. Jedoch besteht immer noch Bedarf am Rückliefern von Kennungen proportional zur Anzahl von Datensätzen an den Hostprozessor. Daher nimmt die Belastung durch die Vereinigungsverarbeitung in den Prozessoren gemeinsam mit einer Erhöhung der Anzahl der Prozessoren zu.
  • Demgemäß nimmt bei den oben beschriebenen bekannten Sortierverfahren selbst dann, wenn die Anzahl der Prozessoren erhöht wird, um die für die Sortierverarbeitung selbst erforderliche Zeit zu verkürzen, die der zentralen Verarbeitungseinheit auferlegte Belastung sowie diejenige, die für die die Sortierverarbeitung begleitende Vereinigungsverarbeitung erforderlich ist, und die Verarbeitung des Festlegens des Unterteilungsbereichs der Schlüsselwerte zu. So ist es schwierig, die Gesamtverarbeitungszeit zu verbessern.
  • Darüber hinaus wird im verteilten Datenbanksystem dann, wenn auf das Sortierergebnis unter Verwendung von Schlüsselwerten zugegriffen wird, ein Binärsuchverfahren (siehe den Artikel "Principle Of Database System", geschrieben von Ullman und Übersetzt von Kunii und Okubo) und dergleichen verwendet. Demgemäß ist es bei den oben genannten bekannten Verfahren selbst dann, wenn mittels der speziellen Sektion der Schlüsselwerte zugegriffen wird, erforderlich, die gesamten in den Prozessoren gespeicherten Daten an einen Benutzer zurückzuliefern.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Daher ist es eine Aufgabe der Erfindung, ein in einem verteilten Datenbanksystem verwendetes Sortierverfahren zu schaffen, das dazu in der Lage ist, durch Verringern der einer zentralen Verarbeitungseinheit auferlegten Belastung eine Sortierverarbeitung wirkungsvoll auszuführen.
  • Diese Aufgabe ist durch das im Anspruch 1 definierte Sortierverfahren gelöst.
  • Bei einer Ausführungsform der Erfindung wird ein Verteilungsbereich von Schlüsselwerten der gesamten Datensätze von eine Datenbank aufbauenden Tabellendaten in mehrere Sektionen unterteilt. Die mehreren Sektionen werden jeweils mehreren ersten Prozessoren zugewiesen, und von mehreren zweiten Prozessoren, die partielle Daten der Datenbank enthalten, werden die Schlüsselwerte der durch die zweiten Prozessoren gespeicherten Datensätze und Information zum Repräsentierenden von Speicherpositionen der Datensätze an die ersten Prozessoren übertragen, denen die Sektionen mit den zugehörigen Schlüsselwerten zugewiesen sind. In den ersten Prozessoren wird eine Anzahl von Schlüsselwerten, die von den zweiten Prozessoren jeweils übertragen wurden, sortiert, und als Sortierergebnis wird eine Schlüsseltabelle erzeugt, in der die so sortierten Schlüsselwerte und die Information zum Repräsentieren der Speicherpositionen der Datensätze registriert sind.
  • Darüber hinaus übertragen die zweiten Prozessoren, vorzugsweise, die Information, die die Entsprechung zwischen den durch die Unterteilung erhaltenen Sektionen der Schlüsselwerte und den ersten, den Sektionen zugewiesenen Prozessoren repräsentiert, an den Hostprozessor.
  • Vorzugsweise wird, wenn der Bereich der Schlüssel der gesamten Datensätze in mehrere Sektionen unterteilt wird, der Bereich der Schlüssel in gleichmäßiger Weise in Sektionen unterteil, deren Anzahl größer als die der Prozessoren ist, und die durch die gleichmäßige Unterteilung erhaltenen Sektionen werden auf solche Weise, dass die Anzahlen der Datensätze einander gleich werden, zu Sektionen vereinigt, deren Anzahl derjenigen der Prozessoren entspricht. Den so verschmolzenen mehreren Sektionen werden die Prozessoren jeweils zugeordnet, die die Sortierergebnisse der Sektionen speichern. Darüber hinaus wird, während der Unterteilung und Vereinigung des Bereichs der Schlüsselwerte, die Ansammlung/Verteilung von Information, wie sie zwischen den zugeordneten Prozessoren ausgeführt wird, hierarchisch ausgeführt.
  • Die Sortierergebnisse werden in den mehreren Prozessoren verteilt gespeichert, und die Information, die die Entsprechung zwischen den durch die Unterteilung erhaltenen Sektionen der Schlüsselwerte und dem den Sektionen zugeordneten ersten Prozessor repräsentiert, wird an den Hostprozessor übertragen, wodurch es nicht erforderlich ist, im Hostprozessor eine Vereinigungsverarbeitung auszuführen. Im Ergebnis kann eine große Einsparung an Sortierverarbeitungszeit realisiert werden. Darüber hinaus werden die Datensatzdaten nicht an den Hostprozessor übertragen, und im Ergebnis kann der Kommunikationsumfang zwischen dem Hostprozessor und dem die Datenbank verarbeitenden Prozessor auf dem erforderlichen Minimum gehalten werden.
  • Ferner wird der Bereich der Schlüssel der Datensätze in mehrere Sektionen unterteilt, und die Anzahlen von Datensätzen, die zu den Sektionen gehören, werden einander gleichgemacht, wodurch eine gleichmäßige Lastverteilung über die Prozessoren realisiert werden kann. Darüber hinaus werden die Unterteilungsprozeduren in den Prozessoren parallel ausgeführt, wodurch es möglich ist, die mit der Unterteilung einhergehende Belastungskonzentration am Hostprozessor zu verringern. Ferner wird, wenn eine derartige Unterteilungsverarbeitung ausgeführt wird, die Ansammlung/Verteilung der Information zwischen den Prozessoren hierarchisch ausgeführt, wodurch es möglich ist, die für den Informationsaustausch benötigte Kommunikationszeit zu verkürzen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Fig. 1 ist ein Flussdiagramm, das einen Ablauf einer parallelen Sortierverarbeitung gemäß einer Ausführungsform der Erfindung zeigt;
  • Fig. 2 ist ein schematisches Blockdiagramm, das eine Konfiguration einer verteilten Datenbankmaschine zeigt, bei der die Erfindung angewandt ist;
  • Fig. 3 ist eine Ansicht, die die Unterteilungssituation von Tabellendaten zeigt;
  • Fig. 4A ist ein schematisches Blockdiagramm, das einen Ablauf von Daten in einer Phase 1 der parallelen Sortierverarbeitung gemäß einer Ausführungsform der Erfindung zeigt;
  • Fig. 4B ist ein schematisches Blockdiagramm, das einen Ablauf von Daten in einer Phase 2 der parallelen Sortierverarbeitung gemäß einer Ausführungsform der Erfindung zeigt;
  • Fig. 4C ist ein schematisches Blockdiagramm, das einen Ablauf von Daten in einer Phase 3 der parallelen Sortierverarbeitung gemäß einer Ausführungsform der Erfindung zeigt;
  • Fig. 4D ist ein schematisches Blockdiagramm, das einen Ablauf von Daten in einer Phase 4 der parallelen Sortierverarbeitung gemäß einer Ausführungsform der Erfindung zeigt;
  • Fig. 5A ist ein Diagramm, das ein Beispiel von Schlüsselwertverteilungs-Information zeigt;
  • Fig. 5B ist ein Diagramm, das ein Beispiel einer Schlüsselunterteilungstabelle zeigt;
  • Fig. 6 ist ein Blockdiagramm, das die Situation von Information zeigt, wie sie von Prozessoren nach Abschluss einer parallelen Sortierverarbeitung gespeichert wird;
  • Fig. 7 ist eine Ansicht, die einen detaillierten Ablauf einer Bereichsberechnung für die gesamten Datensätze zeigt;
  • Fig. 8 ist ein Flussdiagramm, das eine Prozedur einer Unterteilungsverarbeitung für einen Schlüsselbereich zeigt;
  • Fig. 9A ist eine grafische Wiedergabe, die ein Beispiel für die Verteilung von Schlüsselwerten der gesamten Datensätze zeigt;
  • Fig. 9B ist eine grafische Darstellung, die die Vereinigungssituation der Schlüsselsektionen zeigt;
  • Fig. 10 ist eine grafische Darstellung, die die Abweichung der Anzahl von Datensätzen in Vereinigungssektionen nach Abschluss der Vereinigung der Schlüsselsektionen zeigt;
  • Fig. 11 ist ein Diagramm, das die durch die Unterteilungsverarbeitung für den Schlüsselbereich erzeugte Schlüsselunterteilungstabelle zeigt;
  • Fig. 12 ist ein Diagramm, das eine Modifizierung der durch die Unterteilungsverarbeitung für den Schlüsselbereich erzeugten Schlüsselunterteilungstabelle zeigt; und
  • Fig. 13 ist ein Flussdiagramm, das eine Zugriffsverarbeitung für die Schlüsselunterteilungstabelle zeigt.
  • BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN Systemkonfiguration und Verarbeitungsablauf
  • Die Fig. 1 ist ein Flussdiagramm, das einen Ablauf einer parallelen Sortierverarbeitung gemäß einer Ausführungsform eines erfindungsgemäßen Sortierverfahrens zeigt. Die Fig. 2 ist ein Blockdiagramm, das die Konfiguration eines verteilten Datenbanksystems zeigt, das zur Anwendung des erfindungsgemäßen Sortierverfahrens geeignet ist. Das in der Fig. 2 dargestellte verteilte Datenbanksystem verfügt über ein Terminal 200 als Schnittstelle zwischen dem System und einem Benutzer, einen Hostprozessor 201 zum Analysieren einer Benutzeranfrage, die über die Schnittstelle 200 eingegeben wurde, um eine ausführbare Anweisung auszugeben, und eine Gruppe von Datenbankprozessoren 210. Die Gruppe von Datenbankprozessoren 210 besteht aus N Datenprozessoren 203, mit denen Sekundärspeicher 205, wie Magnetplatteneinheiten, zum Speichern der Daten, die Gegenstand der Sortierverarbeitung sind, verbunden sind (nachfolgend als "Quellenprozessoren" bezeichnet, falls anwendbar) 203, und M Datenprozessoren 204, mit denen Sekundärspeicher 206 zum Speichern der Ergebnisse der Sortierverarbeitung verbunden sind (nachfolgend als "Senkenprozessoren" bezeichnet, falls anwendbar).
  • Bei der vorliegenden Ausführungsform zeigen die Datenbankprozessoren und die Sekundärspeicher eineindeutige körperliche Entsprechung. Jedoch kann ein Datenbankprozessor körperlich mich mit mehreren Sekundärspeichern versehen sein, oder mehrere Datenbankprozessoren können einen Sekundärspeicher gemeinsam haben, solange die Datenbankprozessoren und die Sekundärspeicher eine eineindeutige logische Entsprechung zeigen. Darüber hinaus sind in der Fig. 2 die Quellenprozessoren 203 und die Senkenprozessoren 204 als voneinander unabhängige dargestellt. Jedoch kann das System auf solche Weise konzipiert sein, dass ein Prozessor mit der Fähigkeit eines Quellenprozessors 203 und der Fähigkeit eines Senkenprozessors 204 versehen ist, wobei die Fähigkeit des Senkenprozessors 204 (oder des Quellenprozessors 203) durch einen Teil oder den gesamten Quellenprozessor 203 (oder Senkenprozessor 204) realisiert ist. Die vorliegende Ausführungsform wird nachfolgend unter der Annahme beschrieben, dass jeder der Datenbankprozessoren 203 und 204 über die Fähigkeit verfügt, entweder als Quellenprozessor oder Senkenprozessor verwendet werden zu können.
  • Das vorliegende System verfügt ferner über eine Terminalverbindung 209 für Verbindung zwischen dem Terminal 200 und dem Hostprozessor 201 sowie ein Kommunikationsnetzwerk 202 für Verbindungen zwischen dem Hostprozessor 201 und jedem der Datenbankprozessoren 203 und 204, Als Kommunikationsnetzwerk 202 sind verschiedene Netzwerkarten verfügbar, wie ein Bus, ein LAN, ein Hyperwürfel, ein Schmetterlingsschalter und ein Hyper-Kreuzschienenverteiler.
  • Übrigens ist in der folgenden Beschreibung davon ausgegangen, dass die Daten in den Sekundärspeichern gespeichert sind. Jedoch sei darauf hingewiesen, dass die Daten auch in den Hauptspeichern der Datenbankprozessoren gespeichert sein können. Auch in diesem Fall kann die vorliegende Erfindung auf genau dieselbe Weise angewandt werden.
  • Bei der vorliegenden Ausführungsform werden die Datenbank aufbauende Tabellendaten (nachfolgend als "Tabelle" bezeichnet, falls anwendbar) mit einem Datensatz als Einheit unterteilt und verteilt in Formkleiner Tabellen (nachfolgend als "partielle Tabellen" bezeichnet, falls anwendbar) in den Sekundärspeichern 205 gespeichert, die mit mehreren Quellenprozessoren 203 verbunden sind. Die Fig. 3 ist eine Ansicht, die ein Beispiel der Unterteilungsform der Tabelle beim vorliegenden System zeigt. In der Fig. 3 ist als ein Beispiel der Datenbank ein Bibliotheksindex verwendet. Eine Bibliotheksindextabelle 220 wird mit einem Datensatz als Einheit unterteilt und in Form mehrerer partieller Tabellen 207 in den N Sekundärspeichern 205 verteilt gespeichert. Die Anzahl von Datensätzen der Teiltabellen 207 des Bibliotheksindex, die in den jeweiligen Speichern 205 gespeichert sind, beträgt ungefähr dn/N, wenn die Gesamtanzahl der Datensätze dn ist.
  • Als Nächstes erfolgt eine kurze Beschreibung zur Gesamtverarbeitungsprozedur der parallelen Sortierverarbeitung bei der vorliegenden Ausführungsform, wobei auf die Fig. 1 und 4 Bezug genommen wird.
  • Die parallele Sortierprozedur bei dar vorliegenden Ausführungsform besteht aus vier Phasen.
  • In einer ersten Phase empfängt der Hostprozessor 201 eine über das Terminal 200 eingegebene Anfrage des Benutzers, und er liefert die Anweisung START-SORT an alle Quellenprozessoren 203 mit partiellen Tabellen, von denen jede ein Objekt des Sortiervorgangs ist, und alle Senkenprozessoren 204, die die Sortierergebnisse einspeichern (Schritt 101 und Schritt 102). Die Fig. 4A ist ein Flussdiagramm, das einen Fluss von Mitteilungen in der Phase 1 zeigt.
  • In einer zweiten Phase wird in den Quellenprozessoren #1 bis #N, die die Anweisung START-SORT empfangen haben, der Bereich der Schlüsselwerte aller Datensätze auf solche Weise in mehrere Sektionen unterteilt, dass die Anzahl der zu den jeweiligen Sektionen gehörenden Datensätze einander ungefähr gleich sind (Schritt 102).
  • In der vorliegenden Phase lesen die Quellenprozessoren 203 als Erstes die partiellen Tabellen aus den entsprechenden Sekundärspeichern 205 aus, und es wird der Bereich der Schlüssel in der partiellen Tabelle, wie von jedem der Prozessoren abgespeichert, berechnet (Schritt 103). Anschließend teilen die Quellenprozessoren 203 diese Ergebnisse einander mit (Schritt 113), um den Bereich der Schlüssel aller Datensätze durch die Quellenprozessoren zu berechnen (Schritt 104). Dann wird der sich ergebende Bereich der Schlüssel in mehrere Sektionen feinunterteilt, und die Anzahl der Datensätze in der partiellen Tabelle, die zur zugeordneten Sektion gehört, wird gezählt, um Verteilungsinformation für Schlüsselwerte zu erhalten. Die sich ergebende lokale Verteilungsinformation wird ferner zwischen den Quellenprozessoren 203 ausgetauscht, um die Verteilungsinformation 300 der Schlüsselwerte aller Datensätze zu erhalten. Auf Grundlage der globalen Verteilungsinformation der Schlüsselwerte wird der Bereich der Schlüssel auf solche Weise unterteilt, dass die Anzahlen der den jeweiligen Senkenprozessoren zugeordneten Datensätze einander ungefähr gleich werden (Schritt 105). Die Fig. 4B ist eine Ansicht, die den Ablauf von Mitteilungen zeigt, wenn die Quellenprozessoren 203 die partiellen Tabellen 207 aus den Sekundärspeichern 205 auslesen, um die Flüssigkristallbereich der Schlüsselwerte gegenseitig auszutauschen.
  • Das durch die obige Prozedur erhaltene Unterteilungsergebnis wird in Form einer Schlüsselunterteilungstabelle 301 in den jeweiligen Quellenprozessoren 203 gespeichert. Die Fig. 5A ist ein Diagramm, das ein Beispiel der Anordnung der in jedem Quellenprozessor 203 erzeugten Schlüsselwertverteilungs- Information 300 zeigt, und die Fig. 5B ist ein Diagramm, das ein Beispiel der Anordnung der Schlüsselunterteilungstabelle 211 zeigt. Die Schlüsselwertverteilungs-Information 300 wird in Form einer Tabelle erzeugt, die die durch die Unterteilung erhaltenen Schlüsselsektionen und die Anzahl der zu den jeweiligen Schlüsselsektionen gehörenden Datensätze zeigt. Darüber hinaus ist die Schlüsselunterteilungstabelle 211 eine Tabelle, in der dafür gesorgt ist, dass die durch die Unterteilung erhaltenen Schlüsselsektionen den zugeordneten Senkenprozessoren 204 entsprechen, die sich um die Verarbeitungsvorgänge betreffend die Schlüsselsektionen kümmern, und in der Spalte für die Senken-PID sind die Nummern der Senkenprozessoren 204, die sich um die Sortierverarbeitungsvorgänge für die zugeordneten Schlüsselsektionen kümmern, registriert. Bei der vorliegenden Ausführungsform ist, um die Streuung der durch die Senkenprozessoren 204 zu verarbeitenden Datenmengen weiter zu verringern, Unterteilungspunktinformation für die Unterteilung einer Schlüsselsektion in zwei Untersektionen in der Schlüsselunterteilungstabelle 211 vorhanden. In der Schlüsselsektion, in der die Unterteilungspunktinformation registriert ist, wird angezeigt, dass die Schlüsselwerte, die den Wert des Unterteilungspunkts entsprechen oder darüber hinaus gehen, durch den Senkenprozessor betreut werden, der im zugeordneten Eintrag registriert wurde, und dass die Datensätze, deren Schlüsselwerte kleiner als der Wert des Unterteilungspunkts sind, durch den Senkenprozessor 204 betreut werden, der vor diesem Eintrag im Eintrag registriert war. Z. B. ist in der Fig. 5B dargestellt, dass die Schlüsselsektion "200-299" durch den Schlüsselwert "248" in zwei Untersektionen unterteilt wird. So ist dargestellt, dass sich, in der obigen Schlüsselsektion, der Senkenprozessor #1 um die Datensätze kümmert, deren Werte kleiner als der Schlüsselwert "248" sind, und sich der Senkenprozessor #2 um die Datensätze kümmert, deren Werte größer als oder gleich groß wie der Schlüsselwert "248" sind. Bei, einem Eintrag, für den keine Schlüsselpunktinformation registriert wurde, kümmert sich der in der Spalte der Senken-PID registrierte Senkenprozessor 204 um alle Datensätze der Schlüsselsektion. Übrigens muss die Unterteilungspunktinformation nicht notwendigerweise erstellt werden. In diesem Fall wird die Grenze zwischen benachbarten Schlüsselsektionen die Grenze, an der der Bereich wechselt, um den sich ein Senkenprozessor kümmert.
  • In einer dritten Phase überträgt jeder Quellenprozessor 203 ein Paar von Schlüsselwerten für jeden Datensatz in seiner partiellen Tabelle sowie einen Zeiger auf den Datensatzkörper an den Senkenprozessor 204, der sich um die Sortierverarbeitung der Schlüsselwerte kümmert, während er auf die in der Phase 2 erzeugte Schlüsselunterteilungstabelle 211 Bezug nimmt (Schritte 106, 114, 115 und 107). Die Fig. 4C ist eine Ansicht, die einen Datenfluss in der Phase 3 zeigt.
  • In einer vierten Phase werden die Schlüsselwerte und die Datensatzzeiger, die von den Senkenprozessoren 204 empfangen wurde, unabhängig voneinander sortiert. Als Ergebnis der Sortierverarbeitung werden die Schlüsseltabellen 212 erzeugt (Schritt 108) und dann in die entsprechenden Sekundärspeicher 206 eingespeichert (Schritt 109). Die Mitteilungen END-SORT der Senkenprozessoren 204 werden unter diesen hierarchisch angesammelt. Wenn z. B. acht Senkenprozessoren vorhanden sind, werden als Erstes die Mitteilungen END-SORT von den Senkenprozessoren #4 bis #7 an die Senkenprozessoren #0 bis #3 übertragen. Anschließend werden die Mitteilungen END-SORT von den Senkenprozessoren #2 und #3 an die Senkenprozessoren #0 und #1 übertragen, und dann wird die Mitteilung END-SORT vom Senkenprozessor #1 an den Senkenprozessor #0 übertragen. Abschließend wird die Mitteilung END-SORT vom Senkenprozessor #0 an den Hostprozessor übertragen (Schritt 117).
  • Andererseits sammeln die Quellenprozessoren 203, die die Übertragung der Paare aus einem Schlüsselwert und einem Datensatzzeiger an die zugeordneten Senkenprozessoren 204 abgeschlossen haben, die Endmitteilungen auf dieselbe Weise wie in den Senkenprozessoren 204 hierarchisch an. Abschließend überträgt der Quellenprozessor #0 die Schlüsselunterteilungstabelle 211 und die Endmitteilung für die Übertragungsverarbeitung an den Hostprozessor 201 (Schritt 116 und Schritt 117). Der Hostprozessor 201 empfängt die Schlüsselunterteilungstabelle 211 vom Quellenprozessor 203 (Schritt 110), und dann empfängt er die Endmitteilungen vom Quellenprozessoren 203 und vom Senkenprozessor 204, um die Sortierverarbeitung abzuschließen (Schritt 118). Die Fig. 4D ist eine Ansicht, die einen Fluss von Mitteilungen in der Phase 4 zeigt.
  • Die Fig. 6 ist eine Ansicht, die eine Situation zeigt, gemäß der die Information nach Abschluss der oben genannten Sortierverarbeitung in den Prozessoren aufbewahrt wird. Die vom Quellenprozessor 203 gelieferte Schlüsselunterteilungstabelle 211 wird im Hostprozessor 201 aufbewahrt. Die partiellen Tabellen 213, von denen jede Gegenstand eines Sortiervorgangs ist, werden in den Quellenprozessoren 203 aufbewahrt, und die durch den Sortiervorgang erhaltenen Schlüsseltabellen 211 werden in den Senkenprozessoren 204 aufbewahrt. Der Zugriff vom Hostprozessor 201 auf die sortierten Tabellen wird unter Verwendung der Schlüsselunterteilungstabelle 211 und der Schlüsseltabellen 212 ausgeführt. Das Verfahren für den Zugriff auf die sortierten Tabellen wird später beschrieben.
  • Übrigens wird beim Sortierverfahren gemäß der vorliegenden Ausführungsform keinerlei Übertragung des Datensatzkörpers einhergehend mit der Sortierverarbeitung ausgeführt. Daher kann die Sortierverarbeitung für eine große Datenmenge wirkungsvoll ausgeführt werden. Ferner ist es als Ergebnis des Sortiervorgangs möglich, da die sortierten Schlüsseltabellen selbst und die Datensatzkörper nicht an den Hostprozessor 201 zurückgeliefert werden, sequentielle Verarbeitung bei der Sortierverarbeitung wegzulassen.
  • Nachfolgend wird die obige Verarbeitung weiter im Einzelnen beschrieben.
  • Bereichsberechnung für die gesamten Datensätze - Schritt 104
  • Bei der Berechnung des Schlüsselbereichs der gesamten Datensätze kann der Kaskadensumme-Algorithmus angewandt werden (gut bekannte Technik aus der Beschreibung im Artikel "Parallel Technology in Scientific and Technical Calculation" von Tomoji Sekiguchi und Yoshio Koyanagi, INFORMATION PROCESSING, Vol. 27, No. 9, S. 985-994 (Sept. 1986)). Nun erfolgt unter Bezugnahme auf die Fig. 7 eine Beschreibung für das Verfahren zum Erhalten des Schlüsselbereichs unter Verwendung des Kaskadensumme-Algorithmus. In der Fig. 7 ist das Verfahren zum Erhalten eines Rechenwerts für die gesamten Datensätze durch n Kommunikationsprozeduren im System mit, (2^n) (der Operator "^" repräsentiert Exponentialwertbildung) Quellenprozeduren 203 veranschaulicht, wobei dem Quellenprozessor #0 Aufmerksamkeit geschenkt ist. Es ist davon ausgegangen, dass die Prozessornummern den Quellenprozessoren 203 in zahlenmäßiger Reihenfolge mit 0 als erster Zahl logisch zugeordnet sind. Darüber hinaus ist bei den folgenden Ausdrücken davon ausgegangen, dass die Prozessornummer die logische Prozessornummer repräsentiert und dass dieser Wert in Form einer binären Zahl behandelt wird.
  • Als Erstes wird der Schlüsselbereich der Datensätze der partiellen Tabellen 213, die in den Quellenprozessoren 203 aufbewahrt werden, durch die Quellenprozessoren 203 berechnet (Schritt 230). Dann kommunizieren alle Quellenprozessoren 203 mit den Prozessoren (ihre Prozessornummern) xor (2^0) (wobei der Operator "xor" die Ausschließlich-Oder-Operation repräsentiert), und sie tauschen die sich ergebenden Bereiche aus, um zwischen den in ihnen registrierten Schlüsselbereichen und den empfangenen Schlüsselbereichen eine Verbindungsoperation auszuführen, um dadurch einen jeweiligen neuen Schlüsselbereich zu erhalten (Schritt 231-1). Z. B. tauschen der Quellenprozessor #0 und der Quellenprozessor #1 ihre Bereiche aus, so dass diese Bereiche kombiniert werden, und im Ergebnis wird der Schlüsselbereich der Datensätze erhalten, die in den Quellenprozessoren #0 und #1 registriert waren. In ähnlicher Weise kommunizieren auch im anschließenden Schritt 231-2 alle Quellenprozessoren mit den Quellenprozessoren (ihre Prozessornummer) xor (2^1), und sie tauschen die im Schritt 231-1 erhaltenen Schlüsselbereich aus, so dass diese Schlüsselbereiche kombiniert werden. Z. B. tauschen der Quellenprozessor #0 und der Quellenprozessor #2 ihre Schlüsselbereiche aus, so dass der im Quellenprozessor #2 registrierte Schlüsselbereich an den Quellenprozessor #0 geliefert wird. Danach tauschen, im i-ten Schritt 231-i, alle Quellenprozessoren und die Quellenprozessoren (ihre Prozessornummer) xor (2^i-1)) ihre Schlüsselbereiche aus. So erhalten die Prozessoren die Schlüsselbereiche aller Datensätze mittels n Kommunikationsprozeduren.
  • In der Tabelle 1 ist ein Beispiel für den Schlüsselbereich angegeben, wenn acht Quellenprozessoren vorhanden sind. Tabelle 1 Rechenbeispiel für den Schlüsselbereich
  • Beim obigen Beispiel ist davon ausgegangen, dass die Anzahl der Quellenprozessoren die n-te Potenz von 2 ist. Wenn jedoch die Zahl der Quellenprozessoren, d. h. N, im Bereich 2^(n-1) < N < 2^n liegt, ist die Anzahl (2^n - N) virtueller Quellenprozessoren vorhanden, und deren Verarbeitungsvorgänge werden den tatsächlichen Quellenprozessoren 203 zugeordnet, um dadurch für die logische Anzahl (2^n) von Quellenprozessoren zu sorgen. Z. B. führt der Quellenprozessor 1 (i < 2^n) - N) auch die Operation des virtuellen Quellenprozessors (i + N) aus. In diesem Zusammenhang wird angenommen, dass die Anzahl der im virtuellen Quellenprozessor registrierten Daten null ist und der Anfangswert des Schlüsselbereichs leer ist.
  • Sektionsunterteilung des Schlüsselbereichs - Schritt 105
  • Als Nächstes erfolgt eine Beschreibung zum Schritt 105 des Unterteilens des Schlüsselbereichs der gesamten Datensätze in mehrere Schlüsselsektionen auf solche Weise, dass die Anzahlen der zu den jeweiligen Sektionen gehörenden Datensätze einander gleich sind, wobei auf die Fig. 8 Bezug genommen wird.
  • Die Unterteilung des Schlüsselbereichs wird in den Quellenprozessoren 203 ausgeführt, und sie besteht aus einer Verarbeitung des gleichmäßigen Unterteilens des Schlüsselbereichs in mehrere Sektionen (erster Schritt der Schlüsselunterteilung) und einer Verarbeitung des Verbindens der Schlüsselsektionen zum Zuordnen derselben zu den Senkenprozessoren 204 und zur Herstellung von Gleichheit der Anzahlen der den Senkenprozessoren 204 zuzuordnenden Datensätze (zweiter Schritt der Schlüsselunterteilung).
  • Im ersten Schritt der Schlüsselunterteilung wird als Erstes ein geeigneter Wert für die Anzahl der Unterteilungen c des Schlüsselbereichs eingestellt. Dann ist die Anzahl der Unterteilungen c gleich groß wie oder größer als die Anzahl der Senkenprozessoren M zum Speichern der Sortierergebnisse. Bei der vorliegenden Ausführungsform ist die Anzahl der Unterteilungen c auf einen Wert eingestellt, der zweimal so groß wie Mist (Schritt 241). Als Nächstes wird der Schlüsselbereich, auf Grundlage der im Schritt 241 eingestellten Anzahl von Unterteilungen c in gleichmäßiger Weise unterteilt, um c Schlüsselsektionen zu erhalten. Den Gleichverteilungspunkten, von denen jeder zur Grenze zwischen benachbarten Schlüsselsektionen wird, werden mit a&sub0;, a&sub1;, ..., ac bezeichnet (Schritt 244). Als Nächstes werden die Schlüsselwerte der durch die Quellenprozessor 203 gespeicherten partiellen Tabellen durchgefahren, und es wird die Anzahl der Datensätze gezählt, die zu jeder im Schritt 244 abgeteilten Schlüsselsektion des Schlüsselbereichs gehören, um die lokale Schlüsselwertverteilungs-Information zu erzeugen (Schritt 245). Anschließend wird, durch dasselbe Verfahren wie das zum Erhalten des Schlüsselbereichs der gesamten Datensätze, die in den Quellenprozessoren 203 erhaltene lokale Schlüsselwertveiteilungs-Information angesammelt, während sie zwischen den Quellenprozessoren 203 ausgetauscht wird, und abschließend erhalten die Quellenprozessoren 203 die Flüssigkristallbereich der Schlüsselwerte der gesamten Datensätze (Schritt 246).
  • Im zweiten Schritt der Schlüsselunterteilung werden mehrere Schlüsselsektionen vereinigt, um Vereinigungssektionen zu erzeugen, deren Anzahl derjenigen der Senkenprozessoren entspricht (Schritt 247). In diesem Fall wird, unter Bezugnahme auf die zuvor erhaltene Schlüsselwertverteilungs-Information für die gesamten Datensätze, die Vereinigung auf solche Weise ausgeführt, dass die Anzahlen der Datensätze der vereinigten Sektionen einander jeweils so stark wie möglich gleich werden, und es werden die Senkenprozessoren 204 bestimmt, die sich um die Verarbeitungsvorgänge hinsichtlich der Vereinigungssektionen kümmern. Nachfolgend erfolgt eine konkrete Beschreibung für die Verarbeitung für den Fall, dass die Anzahl der Unterteilungen c zum Unterteilen des Schlüsselbereichs auf 16 eingestellt ist und diese Ergebnisse zu acht Sektionen vereinigt werden, denen acht Senkenprozessoren zugeordnet werden.
  • Nun sei angenommen, dass sich die Schlüsselwerte der gesamten Datensätze als Ergebnis des ersten Schritts für die zu verteilende Schlüsselunterteilung ergeben, wie in der Fig. 9A dargestellt. Die Ordinate in diesem Kurvenbild repräsentiert die Anzahl der zu jeder Schlüsselsektion gehörenden Datensätze, und die Abszisse repräsentiert den Schlüsselwert. In der vorliegenden Figur ist der Schlüsselbereich gleichmäßig in 16 Schlüsselsektionen unterteilt. Im Allgemeinen tritt, wenn der Schlüsselbereich gleichmäßig unterteilt wird, wie es in der Fig. 9A dargestellt ist, eine beachtliche Streuung hinsichtlich der Anzahl der zu den entsprechenden Sektionen gehörenden Datensätze auf. Dann werden die Schlüsselsektionen vereinigt, und die Senkenprozessoren werden so zugeordnet, dass die Anzahl der Datensätze in den Vereinigungssektionen einander gleich werden. Die Fig. 9B ist eine grafische Wiedergabe, die zum Erläutern eines Verfahrens zum Vereinigen der Sektionen, um die sich ergebenden Sektionen den Senkenprozessoren zuzuordnen, von Nutzen ist. Die Ordinate im Kurvenbild repräsentiert die kumulative Häufigkeit der Anzahl von Datensätzen, die zu jeder im ersten Schritt der Schlüsselunterteilung erhaltenen Schlüsselsektion gehören, und die Abszisse repräsentiert die durch die Unterteilung erhaltenen Schlüsselsektionen. Die kumulativen Häufigkeiten der zu den zugeordneten Schlüsselsektionen gehörenden Datensätze sind mit s&sub0;, s&sub1;, ..., s&sub1;&sub6; (s&sub0; = 0) bezeichnet, und die im ersten Schritt der Schlüsselunterteilung erhaltenen Werte der Gleichunterteilungspunkte sind mit a&sub0;, a&sub1;, ..., a&sub1;&sub6; (a&sub0; = MIN, a&sub1;&sub6; = MAX) bezeichnet. Übrigens wird die Schlüsselsektion, in der der Schlüsselwert größer als oder gleich groß wie Ai und kleiner als a&sub1;&sbplus;&sub1; ist, als Schlüsselsektion ai bezeichnet. Im zweiten Schritt der Schlüsselunterteilung werden die acht Vereinigungssektionen erstellt, die den Senkenprozessoren 204 zugeordnet werden, was durch Vereinigen der 16 durch die Unterteilung erhaltenen Schlüsselsektionen erfolgt. Die Grenze bi zwischen benachbarten Vereinigungssektionen (b&sub0; = MIN, b&sub8; = MAX) wird so bestimmt, dass sie dem k-ten Gleichverteilungspunkt ak entspricht, wobei die folgenden Beziehungen erfüllt sind:
  • sk+1 &le; (Gesamtanzahl der Datensätze) (Anzahl der Prozessoren)·i und
  • sk < (Gesamtanzahl der Datensätze) (Anzahl der Prozessoren)·i
  • Die so bestimmten Unterteilungspunkte b&sub1;, b&sub2;, b&sub3;, b&sub4;, b&sub5;, b&sub6; und b&sub7; zwischen den Vereinigungssektionen entsprechen den Gleichverteilungspunkten a&sub1;, a&sub3;, a&sub5;, a&sub6;, a&sub1;&sub0;, a&sub1;&sub2; und a&sub1;&sub4; bei der vorliegenden Ausführungsform. Dann wird der Datensatz mit dem Schlüsselwert KEY, der die Beziehung bi &le; KEY &le; bi+1 erfüllt, dem Senkenprozessor #Pi zugeordnet.
  • Als Nächstes wird beurteilt, ob sich die Verteilung der den zugeordneten Senkenprozessoren 204 zugeordneten Datensätze innerhalb der festgelegten Toleranz Dh befindet (Schritt 248). Als Dh wird z. B. ein Wert innerhalb von ±40% der mittleren Anzahl von Datensätzen verwendet. Wenn sich die Streuung der Anzahlen der Datensätze der Vereinigungssektionen innerhalb der Toleranz Dh befindet, wird die Vereinigungsverarbeitung für die Schlüsselsektionen abgeschlossen. Indessen wird dann, wenn die Streuung der Anzahlen der Datensätze der Vereinigungssektionen nicht innerhalb der Toleranz Dh liegt, die Anzahl der Unterteilungen c mit t1 multipliziert (Schritt 249), und dann werden die Schlüsselwerte erneut unterteilt. Das Ausmaß der Zunahme der Anzahl von Unterteilungen c wird auf Grundlage der maximalen Abweichung der Anzahl von Datensätzen jeder Vereinigungssektion bestimmt. Wenn z. B. die maximale Abweichung von der mittleren 5 Anzahl x von Datensätzen jeder Vereinigungssektion y ist, wird die Zunahmerate t1 der Anzahl c von Unterteilungen wie folgt eingestellt:
  • t1 = 2^INT (2·(y/x + 1))
  • wobei INT () eine Funktion repräsentiert, gemäß der die Ziffern unterhalb des Dezimalpunkts weggelassen werden, um dadurch die Anzahl c der Unterteilungen neu zu erhalten, und der Schlüsselbereich wird erneut unter Verwendung der neuen Anzahl c von Unterteilungen unterteilt.
  • Die Fig. 10 ist eine grafische Wiedergabe, in der die Relativwerte der Anzahlen von Datensätzen, die zu den zugeordneten Vereinigungssektionen gehören, die ihrerseits den Senkenprozessoren 204 zugewiesen sind, für den Fall miteinander verglichen werden, dass die Anzahl der Unterteilungen bei der vorliegenden Ausführungsform auf 16 eingestellt ist. In der vorliegenden Figur ist der Mittelwert der Anzahl der Datensätze jeder Vereinigungssektion zu 1 angenommen. Aus der Fig. 10 ergibt es sich, dass die maximale Abweichung der Anzahl der Datensätze 30% beträgt und das Verhältnis des Maximalwerts der Anzahl von Datensätzen zum zugehörigen Minimalwert innerhalb von 2 liegt.
  • Nachdem die Vereinigungssektionen den Senkenprozessoren 204 durch die obigen Prozeduren zugewiesen wurden, wird, um die Anzahl von Datensätzen, die von den Senkenprozessoren 204 bearbeitet werden, ferner zu vergleichmäßigen, der Unterteilungspunkt bi, der Vereinigungssektionen in der entsprechenden Schlüsselsektion korrigiert (Schritt 252). Wenn angenommen wird, dass die Gesamtanzahl der Datensätze Nr ist, die Anzahl der Senkenprozessoren 204 M ist, die Breite jeder Schlüsselsektion w ist, die Anzahl der Datensätze rj in der Schlüsselsektion aj, zu der der Unterteilungspunkt bi der Vereinigungssektionen gehört, rj ist und die kumulative Häufigkeit der Schlüsselwerte bis zum Gleichverteilungspunkt aj-1 den Wert sj-1 hat, gilt, die folgende Beziehung:
  • bi = aj + w(Nr/Mxi - sj-1)/rj
  • Auf Grundlage des obigen Ausdrucks wird der Unterteilungspunkt bi der Vereinigungssektionen nach der Korrektur erhalten. So werden die Schlüsselwerte b&sub1;, b&sub2;, ..., b&sub7; der sich ergebenden Unterteilungspunkte nach der Korrektur 138, 334, 518, 675, 1041, 1246 bzw. 1436.
  • Die Information zu den Schlüsselsektionen, die Anzahl der Datensätze in jeder Schlüsselsektion, die Anzahlender Senkenprozessoren, die sich um die Schlüsselsektionen kümmern, und die durch die obigen Prozeduren erhaltenen Unterteilungspunkte werden in Form der in der Fig. 11 dargestellten Schlüsselunterteilungstabelle 211-a erzeugt. Wenn keine Korrektur der Unterteilungspunkte ausgeführt wird, kann eine Schlüsselunterteilungstabelle erzeugt werden, die die Schlüsselsektionen und die Nummern der Senkenprozessoren als Einträge enthält. Die Schlüsselunterteilungstabelle ist auf solche Weise aufgebaut, wodurch ein Senkenprozessor 204 mit hoher Geschwindigkeit aufgefunden werden kann, der der Schlüsselsektion zugewiesen ist, zu der ein bestimmter Schlüsselwert gehört.
  • Die Fig. 12 ist ein Diagramm, das ein anderes. Beispiel der Schlüsselunterteilungstabelle zeigt. Die in der Fig. 12 dargestellte Schlüsselunterteilungstabelle 211-b verfügt über Vereinigungssektionen und die Anzahl der Senkenprozessoren, die sich um die Verarbeitung der Datensätze der Vereinigungssektionen kümmern, als Einträge. Da die Vereinigungssektionen nicht durch gleichmäßige Unterteilung erhalten werden, ist es erforderlich, ein Binärsuchverfahren zu verwenden, wenn eine derartige Schlüsselunterteilungstabelle verwendet wird, um zu ermitteln, zu welcher der Vereinigungssektionen eine bestimmte Schlüsseltabelle gehört. Jedoch besteht beim vorliegenden Beispiel ein Vorteil dahingehend, dass die Anzahl der Einträge in der Schlüsselunterteilungstabelle nicht diejenigen in der in der Fig. 11 dargestellten Schlüsselunterteilungstabelle überschreiten muss.
  • Übrigens kann mittels der Unterteilung der Schlüsselwerte bei der zweiten und anschließenden Sortierverarbeitung für dieselbe Tabelle unter Verwendung der das letzte Mal verwendeten Anzahl c von Unterteilungen als Anfangswert die Unterteilungsverarbeitung für die Schlüsselwerte mit hoher Geschwindigkeit ausgeführt werden. Darüber hinaus ist es dann, wenn das Schlüsselfeld der Tabelle nicht geändert wird, unter Verwendung der das letzte Mal verwendeten Schlüsselunterteilungstabelle auch möglich, die Unterteilungsverarbeitung für die Schlüsselwerte in der Sortierverarbeitung wegzulassen. In diesem Fall kann die durch die Sortierverarbeitung erzeugte Schlüsselunterteilungstabelle als Attribut der Tabelle gesondert vom Sortierergebnis gespeichert werden.
  • Übertragung und Empfang der Schlüsselwerte jeder Unterteilungssektion - Schritt 106 und Schritt 107
  • Im Schritt 106 werden der in jedem Quellenprozessor 202 aufbewahrte Schlüsselwert jedes Datensatzes der partiellen Tabelle sowie der Datensatzzeiger zum Repräsentieren der Speicherposition des Datensatzkörpers an den Senkenprozessor 204 übertragen, der sich um die Verarbeitung dieses Schlüsselwerts kümmert, wobei auf die Schlüsselunterteilungstabelle 211 Bezug genommen wird, die durch die oben genannten Prozeduren erzeugt wurde. Dann wird der Eintrag, dem die Schlüsselunterteilungstabelle 211 entspricht, auf Grundlage des Schlüsselwerts herausgesucht, um dadurch die Anzahl der Senkenprozessoren 204 zu erhalten, an die sowohl der Schlüsselwert als auch der Datensatzzeiger zu übertragen sind. Die Beschreibung erfolgt für die Prozedur, dass, auf Grundlage eines beliebigen Schlüsselwerts, der entsprechende Eintrag in der Schlüsselunterteilungstabelle zitiert wird, was unter Bezugnahme auf die Fig. 13 erfolgt. Dann sei angenommen, dass die Differenz zwischen dem maximalen und dem minimalen Schlüsselwert höchstens k Bits hat und dass der Schlüsselwert über 1 Bits verfügt. Wenn z. B. der Schlüsselwert eine ganze Zahl von 2 Bites ist und im Bereich von 1.000 bis 8.999 liegt, hat k 13 Bits und 1 hat 16 Bits. Als Erstes wird die Differenz 293 zwischen dem Schlüsselwert 290 und dem Minimalwert 291 des Schlüsselwerts erhalten. Die Differenz 293 wird als relativer Schlüsselwert bezeichnet. Die Bitzahl des relativen Schlüsselwerts ist k Bits. Als Nächstes werden innerhalb der k Bits des relativen Schlüsselwerts die p Bits hoher Ordnung als Unterteilungsbit 294 aus einer Verschiebeberechnung erhalten (Schritt 296). Wenn die Anzahl c der Unterteilungen des Schlüsselbereichs vorgegeben ist, wird p aus dem folgenden Ausdruck erhalten:
  • p = [log&sub2; c]
  • wobei [x] die maximale ganze Zahl ist, die x nicht überschreitet. Der so erhaltene Wert 294 des Unterteilungsbits wird als Index der Schlüsselunterteilungstabelle 211 verwendet, um dadurch auf den Eintrag zuzugreifen, der der Sektion entspricht, zu der der interessierende Datensatz gehört. So kann durch Zugreifen auf den dem Schlüsselwert entsprechenden Eintrag der Zugriff auf den einem beliebigen Schlüsselwert entsprechenden Eintrag durch eine Subtraktion, eine Verschiebeberechnung und Bezugnahme auf die Tabelle unter Verwendung eines Index realisiert werden. Ferner wird die vorliegende Prozedur gemäß der Fig. 13 durch Hardware realisiert, wodurch eine Verbesserung des Verarbeitungswirkungsgrads realisiert werden kann. Darüber hinaus wird die Anzahl der tatsächlichen Unterteilungen PN des Schlüsselbereichs durch die folgende Beziehung ausgedrückt:
  • PN = INT ((Maximalwert - Minimalwert)/2^(k - p) + 1
  • Wenn das Unterteilungsbit im Allgemeinen p ist, variiert die Anzahl tatsächlicher Unterteilungen PN der Sektionen der Schlüsselwerte abhängig vom Maximal- und vom Minimalwert der Schlüsselwerte, und der Bereich ist durch die folgende Beziehung ausgedrückt:
  • 2^(p - 1) < PN &le; 2^p
  • Daher verwendet die Schlüsselunterteilungstabelle nur die Einträge PN hoher Ordnung aus der aus 2^p Einträgen bestehenden Tabelle 298 als reale Tabelle 299.
  • Als Nächstes wird die Prozedur der Bezugnahme auf die Schlüsseltabelle unter Verwendung des obigen Beispiels veranschaulicht. Wenn die Anzahl der Unterteilungen im obigen Beispiel 256 ist, hat das Unterteilungsbit p 8 Bits und die Breite jeder Sektion ist 32. Daher kann der Bereich der Schlüssel von 1.000 bis 8.999 in gleichmäßiger Weise in 250 Sektionen unterteilt werden. Zwischen der Anzahl c der Unterteilungen der Schlüsselwerte und der tatsächlichen Anzahl der Unterteilungssektionen kann in einigen Fällen ein Unterschied erzeugt werden. Jedoch beeinflusst dies das Unterteilungsverfahren für Schlüsselwerte auf Grundlage des vorliegenden Verfahrens in keiner Weise. Beim obigen Beispiel wird, um auf den Eintrag der Schlüsselunterteilungstabelle Bezug zunehmen, der dem Schlüsselwert 5.000 entspricht, als Erstes der Minimalwert 1.000 des Schlüsselwerts vom Schlüsselwert 5.000 subtrahiert. Da der sich ergebende Wert 4.000 als Binärzahl mit 13 Ziffern den Wert (0111111000000) hat, ist, wenn die 8 Bits hoher Ordnung ausgewählt werden, der sich ergebende Wert 126 in Form einer Dezimalzahl. Dann wird auf den Eintrag 126 der Schlüsselunterteilungstabelle Bezug genommen, um die Nummer des Senkenprozessors zu erhalten, der sich um die interessierende Sektion kümmert, und es wird ein Paar aus dem Schlüsselwert 5.000 und dem diesem entsprechenden Datensatzzeiger an den zugeordneten Senkenprozessor übertragen.
  • Ein derartiges Verfahren kann dann angewandt werden, wenn die Breite der Unterteilungssektion der Schlüsselwerte durch die n-te Potenz von 2 angegeben wird. Wenn die Breite der Unterteilungssektion der Schlüsselwerte nicht die n-te Potenz von 2 ist, wird auf den Eintrag der Schlüsselunterteilungstabelle unter Verwendung desjenigen Quotienten, der durch Teilen der Differenz zwischen dem Schlüsselwert und dem Minimalwert desselben durch die Breite der Unterteilungssektion erhalten wird, als Index Bezug genommen. Darüber hinaus wird, wenn die Schlüsselunterteilungstabelle durch ein Paar aus einer Vereinigungssektion und der Nummer des Senkenprozessors ausgedrückt wird, wie in der Fig. 12 dargestellt und wie oben beschrieben, die dem Schlüsselwert entsprechende Vereinigungssektion unter Verwendung einer Binärsuche herausgesucht.
  • Datenzugriff unter Verwendung der Unterteilungstabelle
  • Als Nächstes erfolgt eine Beschreibung zur Prozedur des Zugriffs auf das Ergebnis, das durch Sortieren gemäß der vorliegenden Ausführungsform erhalten wird, wozu der Hostprozessor 201 verwendet wird.
  • Wie oben beschrieben, ist die Fig. 6 eine Ansicht, die die Situation zeigt, gemäß der Information nach Abschluss der Sortierverarbeitung in den Prozessoren aufbewahrt wird. Die partiellen Tabellen 213 werden in den mit den Quellenprozessoren 203 verbundenen Sekundärspeichern 205 aufbewahrt, die Schlüsseltabellen 212 werden als Sortierergebnisse in den mit dem Senkenprozessor 204 verbundenen Sekundärspeichern 206 aufbewahrt, und die durch die Sortierverarbeitung erzeugte Schlüsselunterteilungstabelle 211 wird im Hostprozessor 201 aufbewahrt.
  • Dem Grunde nach wird der Zugriff auf den Datensatz des Sortierergebnisses dadurch ausgeführt, dass auf zwei Arten von Tabellen Bezug genommen wird, nämlich die Schlüsselunterteilungstabelle 211 und die Tabelle 212 mit sortierten Schlüsseln.
  • Als Form der Verwendung des Sortierergebnisses im Hostprozessor 201 werden die folgenden Fälle betrachtet: (1) Spezifizieren der Reihenfolge der Schlüsselwerte zum Ausführen des Zugriffs, (2) Spezifizieren des Schlüsselwerts zum Ausführen des Zugriffs und (3) Vergleichen der zwei in den zugeordneten Quellenprozessoren aufbewahrten sortierten Datenwerte miteinander, um die Verbindungsoperation auszuführen. Im nachfolgenden Absatz wird die Datenzugriffsprozedur für die obigen Fälle (1) bis (3) beschrieben.
  • (1) Fall, gemäß dem auf den Datensatz a ausgehend vom Kopf der Schlüsselwerte zugegriffen wird
  • Die Anzahl der Datensätze wird über die Sektionen der im Hostprozessor 201 aufbewahrten Schlüsselunterteilungstabelle 211 aufsummiert, um die kumulativen Häufigkeiten s&sub1;, s&sub2;, ..., sn zu erhalten. Als Nächstes werden die kumulativen Häufigkeiten ab dem Kopf bis zu den individuellen Schlüsselabschnitten s&sub1;, s&sub2;, ..., sn sequenziell mit a verglichen, um einen Wert i zu erhalten, der die Beziehung si &le; a < si+1 erfüllt, um dadurch den Senkenprozessor #Pi zu erhalten, der die Datensätze der entsprechenden Sektion enthält. Dann wird der Zeiger auf den Datensatzkörper durch Bezugnahme auf den Eintrag (a - si) der im Senkenprozessor #Pi aufbewahrten Tabelle 212 mit sortierten Schlüsseln erhalten. Dann wird unter Verwendung des Datensatzzeigers auf den entsprechenden Datensatz der partiellen Tabelle 213 des den Datensatzkörper aufbewahrenden Quellenprozessors 203 zugegriffen.
  • (2) Fall, gemäß dem der Datensatz herausgesucht wird, in dem der Schlüsselwert k ist
  • Auf dieselbe Weise wie bei der Übertragungsverarbeitung im Schritt 106 der Sortierverarbeitung wird auf Grundlage des Schlüsselwerts der entsprechende Eintrag der Schlüsselunterteilungstabelle herausgesucht, um die Nummer des Senkenprozessors 204 zu erhalten, dem die Sektion mit dem zugehörigen Schlüsselwert zugewiesen wurde. Nachdem die Nummer des Senkenprozessors 204 erhalten wurde, wird die Schlüsseltabelle 212 des entsprechenden Senkenprozessors herausgesucht, und dann wird, auf Grundlage des diesem Schlüsselwert entsprechenden Eintrags der Datensatzzeiger zum Repräsentieren der Speicherstelle, an der der diesem Schlüsselwert entsprechende Datensatz zu speichern ist, erhalten. Dann wird unter Verwendung dieses Datensatzzeigers auf den entsprechenden Datensatz der partiellen Tabelle 213 des den Datensatzkörper enthaltenden Quellenprozessors 203 zugegriffen.
  • (3) Fall, gemäß dem zwei Tabellen miteinander verglichen werden, um die Verbindungsoperation auszuführen
  • Hinsichtlich der miteinander zu vergleichenden einzelnen Tabellen wird als Erstes eine Sortierverarbeitung ausgeführt. Als Ergebnis der Sortierverarbeitung sind die partiellen Tabellen als Körper der Tabellen in mehreren Quellenprozessoren 203 abgespeichert, und die entsprechenden Schlüsseltabellen sind in mehreren Senkenprozessoren 204 abgespeichert. Im Fall des Vergleichens der Schlüsselwerte der zwei sortierten Tabellen A und B miteinander werden die Einträge der Schlüsseltabelle der Tabelle A an den Senkenprozessor 204 übertragen, der durch die Schlüsselunterteilungstabelle der Tabelle 2 zugewiesen ist.
  • Als Nächstes wird unter Bezugnahme auf nur einen der Schlüsselwerte der Tabellen eine Vergleichsverarbeitung ausgeführt, bei der ein Vergleich der Schlüsseltabellen der zwei Tabellen unter Verwendung der jeweiligen Senkenprozessoren 204 ausgeführt wird. Das Vergleichsergebnis wird in Form einer Kombinationstabelle aus Paaren mit dem beim Vergleich erfolgreichen Schlüsselwert und dem Zeiger auf die Datensätze in den Senkenprozessoren 204 abgespeichert, und es wird nur die Endmitteilung an den Hostprozessor 201 gesandt. Die für den Zugriff auf die Einträge dieser Kombinationstabelle verwendete Schlüsselunterteilungstabelle ist dieselbe wie die Tabelle B.
  • Andere Ausführungsformen
  • Die oben genannte Ausführungsform ist auf solche Weise konzipiert, dass, nachdem der Bereich von Schlüsseln unterteilt wurde, nur die Schlüsselwerte und die Datensatzzeiger für die Datensätze an die Senkenprozessoren übertragen werden. Jedoch können beim Übertragungsvorgang die gesamten Datensätze an die Senkenprozessoren übertragen werden. In diesem Fall besteht zwar ein Mangel dahingehend, dass der zu sortierende Datensatzkörper in den Senkenprozessor 204 verschoben werden muss, jedoch kann, da die Quellenprozessoren 203 die Datensätze an die geeigneten Senkenprozessoren verteilen, der Overhead hinsichtlich der Verteilung der Datensätze im Vergleich zum Fall verringert werden, in dem ein Prozessor, z. B. der Hostprozessor 201, die Verteilung ausführt. Darüber hinaus wird, da die Quellenprozessoren 203 die jeweiligen Verarbeitungsvorgänge zum Unterteilen der Schlüsselwerte unabhängig voneinander ausführten, die Belastung im Vergleich zum Fall gering, in dem diese Beurteilung konzentriert im Hostprozessor 201 ausgeführt wird.
  • Ferner werden bei der obigen Ausführungsform während des Ausführens des Sortiervorgangs die Schlüsselwerte von den Quellenprozessoren 203 an die Senkenprozessoren 204 übertragen. In diesem Zusammenhang werden, hinsichtlich dieses Verfahrens, die folgenden zwei Verfahren ferner als entsprechend hinsichtlich der Speicherform des Sortierergebnisses angesehen.
  • Bei einem ersten Verfahren werden, auf Grundlage der durch die Senkenprozessoren 204 sortierten Schlüsseltabellen 212, die Datensatzkörper, denen die zu interessierenden Schlüsseltabelle 212 gehörenden Schlüsselwerte entsprechen, vom diese Datensatzkörper speichernden Quellenprozessor an den entsprechenden Senkenprozessor 204 übertragen, und das Ergebnis wird im mit diesem Senkenprozessor 204 verbundenen Sekundärspeicher 206 abgespeichert. Im Ergebnis wird, da die zu den partiellen Sektionen der Schlüsselwerte gehörenden Datensatzkörper im selben Sekundärspeicher abgespeichert werden, dann guter Wirkungsgrad erzielt, wenn auf die Datensatzdaten des Sortierergebnisses sukzessive in der Reihenfolge der Schlüsselwerte zugegriffen wird. Daher ist dies dann effektiv, wenn für eine bestimmte Sektion des Sortierergebnisses eine statistische Berechnung erfolgt.
  • Bei einem zweiten Verfahren werden die von den Senkenprozessoren 204 sortierten Schlüsseltabellen 212 an den Hostprozessor 201 übertragen, und von diesem wird eine Gruppe von Schlüsseltabellen 212 der gesamten Datensätze verwaltet. Beim vorliegenden Fall kann, wenn der Hostprozessor 201 sukzessive auf die Daten der Sortierergebnisse zugreift, hinsichtlich dieser Daten unmittelbar auf den Sekundärspeicher 205 für einen der Quellenprozessoren 203 zugegriffen werden, ohne dass dies über den Senkenprozessor 204 erfolgt. Daher ist das vorliegende Verfahren dann sehr effektiv, wenn die Sortierergebnisse über den Hostprozessor 201 an das Terminal 200 oder einen externen Speicher (nicht dargestellt) übertragen werden.
  • Wie oben dargelegt, wird gemäß der Erfindung nur die Schlüsselunterteilungstabelle, die im Zwischenstadium der Sortierverarbeitung erzeugt wurde, an den Hostprozessor zurückgeliefert, und die Sortierergebnisse selbst werden verteilt in mehreren Sekundärspeichern für jede Sektion der Schlüsselwerte gespeichert, wodurch es möglich ist, den Wirkungsgrad der Sortierverarbeitung in einem verteilten Datenbanksystem zu verbessern.
  • Darüber hinaus ist es möglich, die dem Hostprozessor auferlegte Belastung zu senken, da die Unterteilung des Schlüsselbereichs bei der verteilten Sortierung durch die Prozessoren parallel ausgeführt werden kann.
  • Ferner ist es unter Bezugnahme auf die Schlüsselunterteilungstabelle möglich, diejenige Sektion wirkungsvoll zu erhalten, zu der ein vorgegebener Schlüsse gehört.

Claims (10)

1. Sortierverfahren in einem verteilten Datenbanksystem mit mehreren ersten Prozessoren (203), deren jeder einen Teil der Sätze einer Datenbank enthält, und einem Host-Prozessor (201) zum Zugriff auf jeden der ersten Prozessoren (203), mit folgenden Schritten:
(a1) in jedem ersten Prozessor (203) wird der Bereich der Schlüssel in der partiellen Tabelle (207) des Prozessors berechnet;
(a2) der Schlüsselbereich wird in mehrere Sektionen fein unterteilt, und die Anzahl der Sätze in jeder Sektion wird gezählt;
(a3) diese Ergebnisse weiden unter den ersten Prozessoren (203) mitgeteilt;
(b) es wird eine Schlüssel-Unterteilungstabelle (211) mit einer Anzahl von Sektionen erzeugt, die der Anzahl an zweiten Prozessoren (204) entspricht, wobei der Schlüsselbereich in jeder Sektion so gewählt ist, daß die Anzahl von den einzelnen zweiten Prozessoren (204) zugeordneten Sätzen im wesentlichen gleich ist;
(c) die Schlüsselwerte der in den ersten Prozessoren (203) enthaltenen Sätze und Informationen, die die Speicherplätze der Sätze angeben, werden auf diejenigen der zweiten Prozessoren (204) übertragen, denen die Sektionen der mit diesen Sätzen verknüpften Schlüsselwerte zugeordnet sind; und
(d) die Schlüsselwerte der Sätze in jedem zweiten Prozessor (204) werden unter Erzeugung von Schlüsseltabellen (212) sortiert, in denen die die Speicherplätze der Sätze angebenden Informationen zusammen mit den sortierten. Schlüsselwerten verzeichnet sind.
2. Verfahren nach Anspruch 1, wobei die Schlüsselunterteilungstabelle (211) in den ersten Prozessoren (203) erzeugt und von einem davon an den Host-Prozessor (201) übertragen wird.
3. Verfahren nach Anspruch 1 oder 2, mit ferner folgenden Schritten:
(e) die Schlüsselunterteilungstabelle (211) wird aufgrund des Schlüsselwertes des Satzes der Datenbank wiedergewonnen, auf die zugegriffen wird, um auf die Schlüsseltabelle (212) zuzugreifen, in der die Schlüsselsektion, zu dem der Schlüsselwert gehört, aufgezeichnet ist; und
(f) auf den Satz wird aufgrund der Satzspeicherstelle zugegriffen, die in der so angesprochenen Schlüsseltabelle (212) aufgezeichnet war und diesem Schlüsselwert entspricht.
4. Verfahren nach Anspruch 3, wobei
in dem Schritt (d) die von den zweiten Prozessoren (204) erzeugten Schlüsseltabellen (212) in den zweiten Prozessoren (204) entsprechenden Speichern (206) gespeichert werden,
in dem Schritt (e)
aufgrund der Schlüsselunterteilungstabelle der zweite Prozessor (204) diskriminiert wird, dem die gewählte Schlüsselsektion von dem Host-Prozessor (201) zugeordnet ist;
die gewählte Schlüsselsektion wird dem diskriminierten zweiten Prozessor (204) zugestellt wird; und
auf die Schlüsseltabelle (212) zugegriffen wird, die der von dem diskriminierten zweiten Prozessor (204) zugestellten Schlüsselsektion entspricht, und
der Schritt (e) von dem diskriminierten zweiten Prozessor (204) ausgeführt wird.
5. Verfahren nach Anspruch 3, wobei
in dem Schritt (d) die von den zweiten Prozessoren (204) erzeugten Schlüsseltabellen (212) auf den Host-Prozessor (201) übertragen werden; und
der Schritt (e) von dem Host-Prozessor (201) ausgeführt und in diesem Schritt von dem Host-Prozessor (204) aufgrund der Schlüsselunterteilungstabelle (211) auf die Schlüsseltabelle (212) zugegriffen wird, die dem zweiten Prozessor (204) entspricht, dem die gewählte Schlüsselsektion zugeordnet ist.
6. Verfahren nach Ansprüch 1, wobei ferner
von einem oder mehreren der ersten Prozessoren (203) eine Verteilungsinformation der in den ersten Prozessoren (203) enthaltenen Schlüsselwerte des Satzes gewonnen werden;
die Schlüsselwert-Verteilungsinformation an den oder die übrigen ersten Prozessoren (203) übertragen wird, und
eine Verteilungsinformation (300) der Schlüsselwerte der Datenbanksätze in den ersten Prozessoren (203) aufgrund der von dem oder den ersten Prozessoren (203) übertragenen Schlüsselwert-Verteilungsinformation sowie der in dem oder den ersteh Prozessoren (203) gewonnenen Schlüsselwert- Verteilungsinformation erhalten wird.
7. Verfahren nach Anspruch 6, wobei ferner der Verteilungsbereich der Schlüsselwerte der Datenbanksätze aufgrund der resultierenden Verteilungsinformation in mehrere Sektionen unterteilt wird.
8. Verfahren nach Anspruch 7, wobei für die Unterteilung
in einem ersten Schritt der Verteilungsbereich der Schlüsselwerte gleichmäßig in mehrere Sektionen unterteilt wird, deren Anzahl größer ist als die Anzahl der zweiten Prozessoren, und
in einem zweiten Schritt die in dem ersten Schritt erhaltenen Sektionen gemischt werden, um mehrere Unterteilungssektionen zu erhalten, deren Anzahl gleich ist der Anzahl der zweiten Prozessoren, und die zweiten Prozessoren den in diesem zweiten Schritt erhaltenen Unterteilungssektionen zugeordnet werden.
9. Verfahren nach Anspruch 8, wobei die Abweichung in der Anzahl der zu den resultierenden Unterteilungssektionen gehörenden Sätze größer ist als eine vorgegebene Abweichung in dem zweiten Schritt, die Anzahl der in dem ersten Schritt erhaltenen Sektionen um eine vorgegebene Zahl erhöht wird und der erste und der zweite Schritt wiederholt werden.
10. Verfahren nach Anspruch 8, wobei zu der Unterteilung die Grenzen zwischen den Unterteilungssektionen derart korrigiert werden, daß die Anzahlen an Sätzen, die jeweils zu den in dem zweiten Schritt gewonnenen Unterteilungssektionen gehören, ungefähr gleich sind.
DE69232425T 1991-07-10 1992-07-07 Sortierverfahren in einer verteilten Datenbank und Zugangsverfahren dazu Expired - Fee Related DE69232425T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP16966191 1991-07-10

Publications (2)

Publication Number Publication Date
DE69232425D1 DE69232425D1 (de) 2002-03-28
DE69232425T2 true DE69232425T2 (de) 2002-10-10

Family

ID=15890592

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69232425T Expired - Fee Related DE69232425T2 (de) 1991-07-10 1992-07-07 Sortierverfahren in einer verteilten Datenbank und Zugangsverfahren dazu

Country Status (3)

Country Link
US (1) US5842207A (de)
EP (1) EP0522488B1 (de)
DE (1) DE69232425T2 (de)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3560690B2 (ja) * 1995-06-14 2004-09-02 富士通株式会社 並列プロセッサ装置
US5768532A (en) * 1996-06-17 1998-06-16 International Business Machines Corporation Method and distributed database file system for implementing self-describing distributed file objects
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
US6092061A (en) * 1997-08-15 2000-07-18 International Business Machines Corporation Data partitioning by co-locating referenced and referencing records
US5903893A (en) * 1997-09-15 1999-05-11 International Business Machines Corporation Method and apparatus for optimizing a merge-join operation across heterogeneous databases
US6269375B1 (en) * 1998-04-01 2001-07-31 International Business Machines Corporation Rebalancing partitioned data
US6272486B1 (en) * 1998-04-16 2001-08-07 International Business Machines Corporation Determining the optimal number of tasks for building a database index
US6377258B1 (en) * 1998-04-20 2002-04-23 Broadcom Corporation Method and system for providing a hardware sort in a graphics system
US6556993B2 (en) * 2000-05-30 2003-04-29 Broadcom Corporation Method and system for providing a hardware sort in a graphics system
US6226650B1 (en) * 1998-09-17 2001-05-01 Synchrologic, Inc. Database synchronization and organization system and method
JP2000187668A (ja) * 1998-12-22 2000-07-04 Hitachi Ltd グループ化方法と重複排除方法
JP2000242532A (ja) * 1999-02-23 2000-09-08 Fujitsu Ltd 出力ファイル制御装置、その装置を用いたデータ処理システム及びその装置での処理をコンピュータで行わせるためのプログラムを格納した記憶媒体
US6618371B1 (en) 1999-06-08 2003-09-09 Cisco Technology, Inc. Butterfly network with switches set for two node disjoint paths and method for forming the paths
US6681224B2 (en) * 2000-07-31 2004-01-20 Fujitsu Limited Method and device for sorting data, and a computer product
US6934840B2 (en) * 2000-12-21 2005-08-23 International Business Machines Corporation Composite keystore facility apparatus and method therefor
US7016897B2 (en) * 2000-12-29 2006-03-21 International Business Machines Corporation Authentication referral search for LDAP
JP2002229772A (ja) * 2001-02-06 2002-08-16 Sony Corp ソート処理方法およびソート処理装置
JP3631680B2 (ja) * 2001-02-06 2005-03-23 株式会社ビーコンインフォメーションテクノロジー データ処理システム、データ処理方法及びコンピュータプログラム
US7039827B2 (en) * 2001-02-13 2006-05-02 Network Appliance, Inc. Failover processing in a storage system
US9805032B2 (en) 2002-06-14 2017-10-31 Koninklijke Philips N.V. Client-server protocol
US6807546B2 (en) * 2002-08-12 2004-10-19 Sybase, Inc. Database system with methodology for distributing query optimization effort over large search spaces
US7139783B2 (en) * 2003-02-10 2006-11-21 Netezza Corporation Materialized view system and method
US8239343B2 (en) * 2003-05-23 2012-08-07 Bmc Software, Inc. Database reorganization technique
US7941408B2 (en) * 2003-09-06 2011-05-10 Oracle International Corporation System, structure, interface, and semantics for implementing row versions: accessing past versions of a data item
JP2005196602A (ja) * 2004-01-09 2005-07-21 Hitachi Ltd 無共有型データベース管理システムにおけるシステム構成変更方法
WO2006089092A2 (en) * 2005-02-16 2006-08-24 Ziyad Dahbour Hierarchal data management
CA2595858A1 (en) * 2005-05-24 2006-11-30 Turbo Data Laboratories Inc. Multiprocessor system, and its information processing method
US7860865B2 (en) * 2005-12-19 2010-12-28 Yahoo! Inc. System of a hierarchy of servers for query processing of column chunks in a distributed column chunk data store
CN101639769B (zh) * 2008-07-30 2013-03-06 国际商业机器公司 在多处理器系统上对数据集进行划分及排序的方法和装置
JP5347772B2 (ja) * 2009-07-01 2013-11-20 富士通株式会社 転送速度設定方法、データ転送装置及び情報処理システム
US8380724B2 (en) * 2009-11-24 2013-02-19 Microsoft Corporation Grouping mechanism for multiple processor core execution
US8935248B2 (en) 2010-05-17 2015-01-13 United States Postal Service Localized data affinity system and hybrid method
US9182913B2 (en) * 2011-10-18 2015-11-10 Ubiterra Corporation Apparatus, system and method for the efficient storage and retrieval of 3-dimensionally organized data in cloud-based computing architectures
EP2859475A4 (de) * 2012-06-06 2016-03-02 Spiral Genetics Inc Verfahren und system zum sortieren von daten in einer cloud-rechnerumgebung und anderen verteilten rechnerumgebungen
US9171170B2 (en) * 2012-08-17 2015-10-27 Broadcom Corporation Data and key separation using a secure central processing unit
US9607036B2 (en) * 2013-08-21 2017-03-28 International Business Machines Corporation Managing a data set
US10402388B1 (en) 2017-01-31 2019-09-03 Levyx, Inc. Partition-based analytic systems and methods
US9934287B1 (en) 2017-07-25 2018-04-03 Capital One Services, Llc Systems and methods for expedited large file processing
CN110618866A (zh) * 2019-09-20 2019-12-27 北京中科寒武纪科技有限公司 数据处理方法及装置以及相关产品
US11269863B2 (en) * 2020-01-23 2022-03-08 International Business Machines Corporation Index structure for blockchain ledger

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3611316A (en) * 1969-12-24 1971-10-05 Ibm Indirect indexed searching and sorting
JPH02118709A (ja) * 1981-04-01 1990-05-07 Teradata Corp データ伝送システム及びクロッキングシステム
US4575798A (en) * 1983-06-03 1986-03-11 International Business Machines Corporation External sorting using key value distribution and range formation
US4760526A (en) * 1985-05-22 1988-07-26 Hitachi, Ltd. Method for storing data into a file device and for data retrieval
US4817050A (en) * 1985-11-22 1989-03-28 Kabushiki Kaisha Toshiba Database system
US5058002A (en) * 1987-06-23 1991-10-15 Mitsubishi Denki Kabushiki Kaisha Page splitting method and apparatus for a database stored in a plurality of memory storage units
EP0377993A3 (de) * 1989-01-13 1991-12-18 International Business Machines Corporation Sortierung verteilter Daten
US5146590A (en) * 1989-01-13 1992-09-08 International Business Machines Corporation Method for sorting using approximate key distribution in a distributed system
US5179699A (en) * 1989-01-13 1993-01-12 International Business Machines Corporation Partitioning of sorted lists for multiprocessors sort and merge
US5230047A (en) * 1990-04-16 1993-07-20 International Business Machines Corporation Method for balancing of distributed tree file structures in parallel computing systems to enable recovery after a failure

Also Published As

Publication number Publication date
EP0522488A3 (en) 1993-05-26
EP0522488A2 (de) 1993-01-13
DE69232425D1 (de) 2002-03-28
EP0522488B1 (de) 2002-02-20
US5842207A (en) 1998-11-24

Similar Documents

Publication Publication Date Title
DE69232425T2 (de) Sortierverfahren in einer verteilten Datenbank und Zugangsverfahren dazu
DE69910219T2 (de) Transformation der perspektive auf tabellen von relationalen datenbanken
DE60121231T2 (de) Datenverarbeitungsverfahren
DE69802437T2 (de) Feinkörniger übereinstimmungsmechanismus für optimistische parallelsteuerung mit verriegelungsgruppen
DE69533193T2 (de) Paralleles verarbeitungssystem zum durchlaufen einer datenbank
DE69227948T2 (de) Verfahren und Gerät um ein dynamisches Lexikon in ein Textinformationsauffindungssystem zu integrieren
DE69615230T2 (de) Relationales Datenbanksystem und Verfahren mit grosser Verfügbarkeit der Daten bei der Umstrukturierung von Tabellendaten
DE69425711T2 (de) Computerverfahren und -system zur Optimierung von Beta-Bäumen
DE4410060B4 (de) Übersetzungsvorrichtung zum Umsetzen einer virtuellen Speicheradresse in eine physikalische Speicheradresse
DE69409404T2 (de) Dateisystem mit erweiterten attributen
DE112020000749T5 (de) Indexerstellung für sich entwickelnde umfangreiche Datensätze in Hybriden Transaktions- und Analysenverarbeitungssystemen mit mehreren Mastern
DE112013001284B4 (de) Adaptive Cachespeicher-Umstufungen in einem Caching-System mit zwei Stufen
DE3854909T2 (de) Cacheverwaltungsverfahren und System in einem anteilig genutzten Dateisystem
DE3853460T2 (de) Raumverwaltungsanordnung für das Datenzugriffssystem eines Dateizugriffsprozessors.
DE68927621T2 (de) Echtzeitdatenbasis
DE69131941T2 (de) System und verfahren für informationsauffindung
DE3821551C2 (de) Datenverarbeitungsvorrichtung
DE69132356T2 (de) Verfahren und Gerät zur Zeigerkompression in strukturierten Datenbanken
DE3688529T2 (de) Verfahren zur Auffrischung von Mehrspaltentabellen in einer relationellen Datenbank mit Mindestinformation.
DE3788750T2 (de) Schätzeinrichtung des Indexschlüsselbereiches.
DE69030228T2 (de) Verfahren zur Verbindung zweier Relationen einer Datenbank auf einem gemeinsamen Feld in einem parallelen Datenbanksystem
DE69326608T2 (de) Verfahren und vorrichtung zur speicherung und wiedergabe von multidimensionalen daten in einem rechnerspeicher.
DE69128958T2 (de) Schneide- und Klebefilterung von unbegrenzten, dynamischen, unmodifizierbaren Datenströmen
EP0079471B1 (de) Schaltungsanordnung und Verfahren zur Bildung von Skalarprodukten und Summen von Gleitkommazahlen mit maximaler Genauigkeit
DE3855212T2 (de) Verfahren zur Berechnung eines transitiven Abschlusses

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee