DE3788750T2 - Schätzeinrichtung des Indexschlüsselbereiches. - Google Patents

Schätzeinrichtung des Indexschlüsselbereiches.

Info

Publication number
DE3788750T2
DE3788750T2 DE3788750T DE3788750T DE3788750T2 DE 3788750 T2 DE3788750 T2 DE 3788750T2 DE 3788750 T DE3788750 T DE 3788750T DE 3788750 T DE3788750 T DE 3788750T DE 3788750 T2 DE3788750 T2 DE 3788750T2
Authority
DE
Germany
Prior art keywords
key
page
index
search
pages
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
DE3788750T
Other languages
English (en)
Other versions
DE3788750D1 (de
Inventor
Mark Anderson
Richard Lee Cole
William Davidson
Wilson Douglas Lee
Peter Bernard Passe
Gary Ross Ricard
Larry William Youngren
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE3788750D1 publication Critical patent/DE3788750D1/de
Application granted granted Critical
Publication of DE3788750T2 publication Critical patent/DE3788750T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related 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/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • 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)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Input From Keyboards Or The Like (AREA)

Description

  • Die vorliegende Erfindung befaßt sich mit der Suche in binären Baumindizes und insbesondere mit der Abschätzung der Schlüsselanzahl in einem Indexschlüsselbereich.
  • Binäre Wurzelbäume beruhen auf Knuth: The Art of Computer Programming, Band 3, "Sorting and Searching", (S. 471-480) (1973). Sie sind im System/38 von IBM realisiert worden. Ihre Anwendung im System/38 ist in einem Buch beschrieben: IBM System/38 Technical Developments, S. 59-63 und 67-70 (1978), sowie in einem System 38 VMC Logic Overviews and Component Description Manual, Abschnitt 7.1: "Machine Indexes" und Abschnitt 1.1: "Database" (1978). Binäre Wurzelbäume sind mit B-Bäumen und zahlreichen anderen Bäumen verwandt.
  • Die überwiegende Mehrheit der Seiten (Datenblöcke, die im Hauptspeicher ein- und ausgelagert werden) im Index eines binären Wurzelbaumes liegt auf der untersten Ebene des Baumes. Sie werden als Blattseiten bezeichnet. Das Suchen eines Schlüsselbereiches im Index eines binären Wurzelbaumes, der in einer Seitenaustauschumgebung gespeichert ist, ist sehr effektiv, vorausgesetzt, daß sich die gesuchten Seiten in einem Speicher mit schnellem Zugriff befinden. Wenn sich die Seiten nicht dort befinden, dann wird wesentliche Zeit dafür aufgewendet, die erforderlichen Blattseiten wieder aufzufinden. Die Bestimmung der Schlüsselanzahl in einem Schlüsselbereich machte die Wiederauffindung einer großen Anzahl von Blattseiten erforderlich und war damit zeitaufwendig.
  • Zwei Funktionen, die von der Auffindung der Schlüsselmenge innerhalb eines begrenzten Bereiches von Schlüsselwerten profitieren, sind Abfrage- und Kombinationsvorgänge in einem relationalen Datenbankverwaltungsprogramm. Die Kenntnis der Schlüsselanzahl in einem Bereich versetzt einen Benutzer in die Lage, eine wirksamere Reihenfolge auszuwählen, in der die Abfrage- und Kombinationsfunktionen durchgeführt werden sollen.
  • Ein Versuch zur Erhöhung der Geschwindigkeit der Kombinationsfunktionen ist in der US-Patentschrift Nr. 4 497 039 von Katakami et al dargestellt. Katakami et al beschreiben eine Kombinationsfunktion zur Erzeugung einer neuen Tabelle (Datenbereich), die Tupel (Zeilen) einer Vielzahl von zusammengehörigen Tabellen verbindet, die auf einem gemeinsamen Feld (Spalte) oder einer Vielzahl von gemeinsamen Feldern beruhen. Für die Bestimmung der Tupel, die verarbeitet werden sollen, wird ein Mindestextraktionsbereich hinsichtlich des Kombinationsfeldes oder der Vielzahl der Kombinationsfelder für jede Tabelle bestimmt, die als Gegenstand eines Kombinationsvorganges betrachtet wird. Während die Verarbeitung unerwünschter Daten vermieden wird, erfaßt man doch alle die Seiten innerhalb des interessierenden Bereiches, mit denen die Größe des Bereiches in einem gegebenen Index bestimmt wird. Daher wird mit der Wiederauffindung der Blattseiten viel Zeit verbracht.
  • Die vorliegende Erfindung, belegt durch die Ansprüche, vermeidet die Notwendigkeit des Wiederauffindens und Durchsuchens aller Seiten in einem Schlüsselbereich. Als Funktion der Anzahl der betroffenen, aber während einer auf eine Bereichsebene begrenzten Suche nicht wiedergefundenen Seiten wird eine Schätzung der Schlüsselanzahl im Indexschlüsselbereich eines binären Wurzelbaumes vorgenommen, der für eine spezielle Kombinations- oder Abfragefunktion verarbeitet werden soll. Es wird bis hinunter zu ihrer untersten Ebene im Baum nach zwei Schlüsseln gesucht, die die Schlüssel der Bereichsendpunkte definieren. Als Funktion der gewünschten Feinheit oder Suchgenauigkeit wird dann die Ebenenbegrenzung errechnet. Der gesamte Schlüsselbereich im gewünschten Schlüsselbereich wird dann bis hinunter zur Ebenenbegrenzung durchsucht. Die Anzahl der während der Suche betroffenen Seiten wird gezählt und mit der durchschnittlichen Schlüsseldichte pro Seite multipliziert, um die Anzahl der Schlüssel im Bereich zu errechnen. Da während der Schlüsselbereichssuche die Wiederauffindung der zahlreichsten "Blatt"-Seiten in der untersten Ebene vermieden wurde, werden in einem Index mit vier Ebenen wahrscheinlich weniger als 2% der Seiten wiedergefunden und durchsucht worden sein. Daher werden für die Schätzung weniger als 2% der Zeit aufgewendet, die für den Erhalt einer genauen Zählung erforderlich ist.
  • Eine Funktion wie Join (die Kombination von Datenbereichen unter Verwendung von Schlüsselfeldwerten) wird sehr viel effektiver durchgeführt, wenn mit einem Datenbereich begonnen wird, der die kleinste Anzahl von Datensätzen enthält, und dann bis zu dem Datenbereich fortgefahren wird, der die größte Anzahl von Datensätzen enthält. Diese Verfahrensweise minimiert die Anzahl der Suchvorgänge in aufeinanderfolgenden Indiz es (die über die Datenbereiche kombiniert werden sollen) zur Auffindung einer Übereinstimmung mit dem vorhergehenden Kombinations-Schlüsselfeldwert. In einer bevorzugten Ausführungsform enthält jede Seite des Wurzelbaumes Bezüge auf bis zu 60 nachfolgende Seiten des Baumes. Durch die Begrenzung der Durchsuchung eines Schlüsselbereiches bis zu einer Ebene oder Tiefe innerhalb des Baumes, die oberhalb der untersten Ebene liegt, werden etwa 2% der Seiten in einem binären Wurzelbaumindex mit vier Ebenen wieder aufgefunden, wenn die Schlüsselbereichsdurchsuchung auf die dritte Ebene begrenzt wird. Auf diese Weise wird viel Zeit gespart, indem die Anzahl der Schlüssel in den Schlüsselbereichen im Gegensatz zur Durchführung einer genauen Zählung der Schlüssel in dem Bereich geschätzt wird, so daß viele Kandidaten von Indizes oder Zugriffspfaden hinsichtlich der optimalen Reihenfolge der Durchführung einer Kombinationsfunktion vorgeprüft werden können und die Funktion dennoch schneller abgeschlossen ist als die Durchführung eines zwangsweisen Kombinationsvorganges mit dem ersten betroffenen Index.
  • Die Schätzung der Schlüsselanzahl in einem Datenbereichsindex ist ebenfalls bei der Bestimmung der Reihenfolge nützlich, in der Abfrageanforderungen zu bearbeiten sind. Vor der Einleitung der Abfragefunktion wird die Verfahrensweise der Schlüsselbereichsschätzung benutzt, um unter den alternativen Indizes denjenigen auszuwählen, der die Anzahl der Prozessorzyklen und Plattenzugriffe zur vollständigen Durchführung des Abfragevorganges minimiert. Die Schätzung ist nützlich bei der Auswahl des optimalen Index aus einer Menge von alternativen Indizes über dem oder den gleichen Datenbereich(en). Wenn sich ein Index dadurch unterscheidet, daß er weit weniger Schlüssel im interessierenden Bereich hat als jeder andere Index, dann fällt die Wahl leicht. Wenn keiner der potentiellen Zugriffspfade die Anzahl der Kandidaten ausreichend vermindert, dann offenbart die durch die Schätzung gewonnene Information, daß die direkte Verarbeitung der Sätze im darunterliegenden Datenbereich die wirksamste Verfahrensweise ist.
  • Fig. 1 ist eine Blockdiagramm-Darstellung der Seiten in einem binären Wurzelbaumindex, der einen Datenbereich abdeckt;
  • Fig. 2 ist ein Diagramm der in den folgenden Fig. 3-7 verwendeten Symbole;
  • Fig. 3-7 sind ausführliche Blockdiagramm-Darstellungen von ausgewählten Seiten in dem binären Wurzelbaumindex der Fig. 1;
  • Fig. 8 ist ein allgemeines Blockflußdiagramm der Funktionen, die während der Schätzung eines Schlüsselbereiches in einem Index durchgeführt werden;
  • Fig. 9 ist ein vereinfachtes Blockflußdiagramm der Suche der zwei Endpunktschlüssel, die den Schlüsselbereich definieren, um einen Pfadschnittpunkt zu finden;
  • Fig. 10 ist ein ausführliches Flußdiagramm der Suche der Endpunktschlüssel vom Schnittpunkt;
  • Fig. 11 ist ein allgemeines Blockflußdiagramm der Durchsuchung eines Bereiches zwischen Schlüsseln innerhalb einer Ebenengrenze des Index der Fig. 1;
  • Fig. 12 ist ein ausführliches Blockflußdiagramm der Suche nach Seiten in dem Schlüsselbereich zur Zählung der Seitenzeiger und zum Vorabruf der Seiten zur Leistungssteigerung während der Suche;
  • Fig. 13 ist ein ausführliches Blockflußdiagramm der Ermittlung der nachfolgenden vorausweisenden Seiten einer aktuellen Seite; und
  • Fig. 14 ist ein ausführliches Blockflußdiagramm der Suche nach Seitenzeigern in einer Seite oder nach Absprung-Seiten der aktuellen Seite.
  • Fig. 1 ist eine Darstellung eines Datenbereichsindex eines binären Wurzelbaumes, die dazu benutzt werden soll, die Arbeitsweise der bevorzugten Ausführungsformen der Schlüsselschätzung zu demonstrieren. Die durch Punkte dargestellten Linien zeigen die logischen Verbindungen zwischen Seiten in dem Index, wie etwa Seitenzeiger und Rückzeiger. Die Seiten im Index sind mit 1 bis 15 numeriert, wobei Seite 1 auf der ersten Ebene, die Seiten 2-5 auf der zweiten Ebene, die Seiten 6-14 auf der dritten Ebene und die Seite 15 auf der vierten Ebene angeordnet sind. Die einzelne Seite, die Seite 1 auf der Ebene eins, wird als der Stamm bezeichnet. Seiten, die keine logische Verbindung zu beliebigen höher numerierten Ebenen haben, werden als Blattseiten bezeichnet. Die Seiten 5-13 und 15 sind Blattseiten. Der Rest der Seiten, also Seiten, die den Stamm mit den Blattseiten verbinden, werden als Astseiten bezeichnet. Die Seiten 2-4 und 14 sind Astseiten.
  • Jede Seite des Index enthält einige der folgenden Elemente, die in Fig. 2 dargestellt sind. Entscheidungsknoten, die durch das Symbol bei 20 dargestellt werden, definieren die Richtung (d. h. nach rechts oder nach links), in der eine Suche weitergehen soll. Jeder Entscheidungsknoten enthält Information zur Vorwärts- und Rückwärtsverbindung. Sie enthalten auch Information, die die Knotenart definiert, und identifizieren ein Vergleichsbit, das in dem gewünschten Schlüssel zur Feststellung der Suchrichtung geprüft wird (z. B. verläuft die Suche nach links, wenn das Bit null ist; wenn das Bit eins ist, dann verläuft die Suche nach rechts). Seitenzeiger, die durch das Symbol bei 22 dargestellt werden, enthalten einen Zeiger auf die nächste Seite innerhalb des Suchpfades. Wenn ein Seitenzeiger angetroffen wird, muß in dem Fall, daß die Seite, die er adressiert, nicht in einem Speicher mit schnellem Zugriff oder im Hauptspeicher vorhanden ist, die entsprechende Seite aus dem Sekundärspeicher, wie etwa einem Magnetband oder einer Magnetplatte, in den Hauptspeicher zurückgebracht (wieder aufgefunden) werden. Abschließende Textelemente bei 24 enthalten den restlichen Teil einer in dem Index gespeicherten Eintragung oder eines Schlüssels. Allgemeine Textelemente, die bei 26 dargestellt sind, enthalten Text, mit dem mehr als eine Eintragung beginnt. In Anhang A wird die Knoten- und Seitenstruktur ausführlicher beschrieben.
  • Die speziellen Indizes, die in Fig. 1 und 3-7 dargestellt sind, enthalten Schlüssel, die sich auf einen Datenbereich beziehen, der eine Sammlung von Datensätzen mit Informationen über Tiere umfaßt. Ein Schlüssel in dem Datenbereich ist der Laut, den ein Tier von sich gibt, wie etwa BÄH oder MIAU.
  • Fig. 1 zeigt die Seite 1 des Baumes, der in Fig. 3 ausführlicher dargestellt ist. Zwei Laute, die als Schlüssel dienen, GRUNZEN und WIEHERN sind auf der Seite 1 des Baumes enthalten, und bei 34, 36, 37 und 38 sind Zeiger zu anderen Seiten des Index angezeigt. Die Knoten sind von 30 bis 38 durchnumeriert, wobei der Vorsatz "3", der vor den üblichen Knotennummern 0 bis 8 angeordnet ist, den Nummern der Figuren entspricht. Jeder Schlüssel im Index zeigt auf eine spezielle Adresse im Datenbereich, wo ein dem Schlüssel entsprechender Datensatz existiert. Wenn mehr als ein Tier den gleichen Laut von sich gibt, dann entsprechen dem Laut zwei Schlüssel und weisen auf die verschiedenen Datensätze hin. Die Fig. 4, 5, 6 und 7 entsprechen gleicherweise den Seiten 2, 3, 8 und 11 des in Fig. 1 dargestellten Baumes. Die Seiten in den Fig. 3-7 werden in Verbindung mit einer als Beispiel dienenden Suche nachstehend geprüft.
  • Der Index in Fig. 1 wird benutzt, um der einfacheren Erklärung halber einen kleinen Index darzustellen. Ein tatsächlicher Index in seiner realen Form kann viel mehr Seiten und Seitenbezüge enthalten. In einer bevorzugten Ausführungsform kann jede Seite Zeiger auf 60 nachfolgende Seiten enthalten. Dies führt zu einer großen Ausgangsverzweigung n. Folglich werden in einen Index mit vier Ebenen mit 512-Byte-Seiten über 120 Megabytes hineinpassen. Der Anteil der Seiten, die keine Blattseiten sind, in einem binären Wurzelbaum mit vier Ebenen ist gleich (n**2 + n + 1)/(n**3 + n**2 + n + 1), wobei "**" zur Anzeige der Potenz benutzt wird. Bei einer Ausgangsverzweigung von n = 60 beträgt der Anteil der Seiten, die keine Blattseiten sind, 0,0167. Somit werden mehr als 98% der Seiten in einem binären Wurzelbaum mit vier Ebenen Blattseiten sein. Während eine vollständige Durchsuchung eines solchen Index dazu führen würde, daß viele Seiten in den Hauptspeicher übertragen würden, kann eine begrenzte Tiefensuche durchgeführt werden, indem man weniger als 2% aller Seiten überträgt.
  • Binäre Wurzelbäume sind mit B-Bäumen verwandt, und daher ist die hier beschriebene Erfindung auf Realisierungen von binären Bäumen, B-Bäumen und anderen n-nären Bäumen anwendbar. Die Ausgangsverzweigung von n = 60 basiert auf einer Indexseitengröße von 512 Bytes. Es können viele weitere Seitengrößen benutzt werden, die mit der Größe des Hauptspeichers und der in den Indizes gewünschten Anzahl der Ebenen kompatibel sind. Zum Beispiel läßt eine physikalische Seitengröße von 32 768 Bytes eine Ausgangsverzweigung von n = 3840 zu. B-Bäume würden bei ähnlichen Seitengrößen wahrscheinlich eine geringere Ausgangsverzweigung haben, wenn sie nicht eine den binären Wurzelbäumen ähnliche Vorverdichtung benutzen.
  • LOGISCHER ABLAUF
  • Ein interessierender Schlüsselbereich wird beschrieben, der aus zwei Endpunkten (Schlüsseln) besteht, die dazu benutzt werden, die Suche innerhalb eines Index zu begrenzen. Die maximale Tiefe des Schlüsselbereiches wird dadurch bestimmt, daß der Baum ausgehend von den Endpunkten des angegebenen Schlüsselbereiches so lange überprüft wird, bis eine Blattseite gefunden wird. Eine vollständige Durchsuchung des Baumes wird nur an den Endpunkten vorgenommen, damit eine annähernde maximale Tiefe des Schlüsselbereiches bestimmt wird. Nachfolgende zur Erzeugung der Schätzung durchgeführte Durchlaufvorgänge müssen den Index nicht bis zur maximalen Tiefe überprüfen.
  • Wenn der Baum nicht sehr schief ist, liefert dieses Überprüfungspaar eine vernünftige Näherung der durchschnittlichen Tiefe innerhalb des Bereiches. Wenn sich die Tiefen an den beiden Endpunkten unterscheiden, dann wird die tiefere der beiden Überprüfungen verwendet. Die rechte Seite des Baumes in Fig. 1 ist nicht so gut balanciert wie die linke Seite. Die Seiten 5 und 15 sind Blattseiten, die in anderen Tiefen liegen als der Rest der Blattseiten im Baum. Daher wird die rechte Seite des Baumes als schiefer angesehen als die linke Seite. Das Vorhandensein einer solchen Schiefe kann die Genauigkeit der Schätzung beeinflussen.
  • Die Inhalte des Indexbaumes werden vom ersten Endpunkt des Bereiches aus bis zum eingeschlossenen zweiten Endpunkt des Bereiches geprüft. Diese Suche ist Einschränkungen unterworfen, die durch den vorgeschriebenen Genauigkeitsgrad auferlegt werden (den man sich als eine "Tiefenbeschneidung" der Suche vorstellen kann). Die Durchsuchung des Indexbaumes nach einem vorgeschriebenen Schlüsselbereich erfolgt niemals tiefer als bis zur Ebene m des Baumes, wobei m = (Grad der Genauigkeit) * (maximale Tiefe des vorgeschriebenen Bereiches), wobei die Stellen bis zur nächsten ganzen Zahl abgeschnitten werden. Es wird üblicherweise ein Grad von 0,75 verwendet, obgleich in Abhängigkeit von der gewünschten Genauigkeit im Verhältnis zur Zeit auch andere Grade benutzt werden können. Ein höherer Grad wird allgemein genauer sein, aber auch mehr Zeit für die Durchsuchung des Schlüsselbereiches in Anspruch nehmen.
  • Es wird eine Zählung der Seitenzeiger vorgenommen, die im Schlüsselbereich bis hinunter zur Ebene m gefunden werden. Wenn der Baum vernünftig ausgewogen ist, dann erhält man eine Schätzung über die Zahl der Schlüssel bis zur Ebene m+1 hinunter, ohne daß man die Seiten tatsächlich wiederfinden muß, die sie enthalten.
  • Bei einem Bereich, der auf Seite 8 des Index in Fig. 1 beginnt und auf Seite 11 endet, wie er durch die vollständigen Suchvorgänge nach den Schlüsseln bestimmt wurde, die die Endpunkte des Schlüsselbereiches bilden, beträgt die maximale Tiefe des Bereiches drei. Eine Grad von 0,75 begrenzt die zu durchsuchenden Ebenen auf zwei. Tiefenbeschneidung = 3 * 0,75 = 2,25, abgeschnitten zu 2.
  • Während des Durchlaufes des Index zur Erzeugung der Schätzung wird der Index bis zu dem in Fig. 4 auf Seite 2 mit 44 gekennzeichneten Seitenzeiger durchsucht, der auf die Seite 8 zeigt. Der Seitenzeiger wird gezählt, und der Index wird bis zu dem in Fig. 4 mit 47 gekennzeichneten, auf die Seite 9 weisenden Seitenzeiger durchsucht, der ebenfalls gezählt wird. Gleicherweise werden die Zeiger auf die Seiten 10 und 11 (53 und 56) gefunden und gezählt. Damit endet die Durchsuchung des Bereiches, und die Zählung der Seitenzeiger beträgt vier.
  • Während nur die Seiten 1, 2 und 3 "berührt" wurden, wurden die Eintragungen auf den Seiten 8, 9, 10 und 11 vorgemerkt. Damit wurden vier mögliche Seitenfehler vermieden. Obwohl wir die Seite 1 wieder berühren, wenn wir uns zur Seite 3 bewegen, würde dies wahrscheinlich keinen Seitenfehler verursachen, da wir auf sie schon bei der Bewegung zu Seite 8 hin Bezug genommen haben. Seite 1 wird als der Stamm des Index bezeichnet, und auf sie wird häufig verwiesen, so daß in einer virtuellen Seitenumgebung, die ein Seitenaustauschschema nach der längsten Nichtbenutzung benutzt, die Stammseite wahrscheinlich im Hauptspeicher resident bliebe. Sie wird bei allen Durchsuchungen im Index immer von neuem berührt.
  • Die Multiplikation der Anzahl der gefundenen Seitenzeiger mit der Schlüsseldichte (die der durchschnittlichen Schlüsselanzahl pro Seite entspricht) liefert eine Schätzung der Schlüsselanzahl im gesamten Schlüsselbereich. Die Schlüsselanzahl sowie die Gesamtzahl der Seiten im Baum wird in einer Index-Kopfzeile gepflegt, die bei der Schaffung des Index erzeugt wird. Diese Kopfzeile wird aktualisiert, wenn dem Datenbereich neue Eintragungen hinzugefügt werden. Die Anzahl der Seitenzeiger umfaßt Baum-, Ast- und Blattseiten. Sie umfaßt nicht die zugeordneten, aber leeren Seiten. Eine ziemlich gleichmäßige Verteilung der Schlüssel und ein gut balancierter Baum verbessern die Genauigkeit der erzeugten Schätzung. Zur Erzielung balancierter Bäume sind verschiedene Wartungstechniken verfügbar.
  • In einer unterschiedlichen Ausführungsform wird die gesamte maximale Tiefe des Index in der Kopfzeile des Index gepflegt, so daß man die Grenze der Suchtiefe schnell und genauer ermitteln kann. Die Suchtiefe ist auf die maximale Tiefe des Index minus eins begrenzt. Dies führt zu einer genaueren Grenze der Suchtiefe, wenn sich die Endpunktschlüssel näher an der Wurzel befinden als die anderen Schlüssel im Bereich. Es stellt sicher, daß die Tiefe groß genug ist, um eine genauere Schlüsselschätzung zu erzielen. Seiten unterhalb der Grenze werden nicht wiedergefunden, wie dies der Fall sein könnte, wenn die vollständige Suche an den Endpunktschlüsseln durchgeführt würde. Die Begrenzung der Suche auf die maximale Tiefe minus eins ist ebenfalls geeignet, wenn man Versuche für die Endpunktschlüssel verwendet. Die maximale Tiefe für den Schlüsselversuch wird als die maximale Tiefe des Baumes benutzt. Dies funktioniert bei den meisten Schlüsselbereichen gut, da die Blattseiten nicht wiedergefunden werden. Im allgemeinen wird die Grenze der Suchebene m der Ebene vor der maximalen Ausgangsverzweigung des Index entsprechen. Die Suche bis zu einschließlich dieser Ebene stellt genügend Daten zur Verfügung, um eine genaue Näherung zu erzeugen, ohne daß ein übermäßiger Seitenaustausch auftritt.
  • Um die insgesamt aufgewendete Zeit zu vermindern, die für den Erhalt der Schätzung erforderlich ist, wird für eine benachbarte Seite ein asynchroner Lesevorgang initialisiert, ehe mit der Durchsuchung der aktuellen Seite der m-ten Ebene begonnen wird. In Abhängigkeit von der benutzten tatsächlichen Seitengröße und dem für die Durchsuchung der aktuellen Seite der m-ten Ebene erforderlichen Zeit wird eine gewisse Überlappung der Zentraleinheit und der Ein-/Ausgabe erzielt, wodurch die insgesamt aufgewendete Zeit vermindert wird. Weitere Einzelheiten des asynchronen Lesevorganges folgen im nachstehenden Beispiel.
  • BEISPIEL
  • Die für die Erzeugung einer Schätzung der Schlüsselanzahl im Schlüsselbereich von "BÄH" BIS "QUAAK" beim Index für Tierlaute zu einem Datenbereich der Eigenschaften von Tieren (nicht dargestellt) erforderlichen Schritte werden in den folgenden Abschnitten beschrieben. "BÄH" wird als der linke Endpunktschlüssel bezeichnet. "QUAAK" ist der rechte Endpunktschlüssel. Die Fig. 3 bis 7 zeigen die Seiten des binären Wurzelbaumes, die während der Schätzung berührt werden. Die Baumseiten 4-7, 9, 10 und 12-15 werden nicht im einzelnen dargestellt, da sie während des Schätzvorganges nicht durchsucht werden. Fig. 8 ist ein Flußdiagramm der allgemeinen Schritte, wie sie in dem Beispiel verfolgt werden.
  • Block 81 ist ein Suchmittel, mit dem die Stelle im binären Baum identifiziert wird, an der die Pfade der Endpunktschlüssel das erste Mal zur Erzeugung eines Bereiches divergieren. Ein Cluster ist definiert als beliebige zwei Elemente, wie etwa zwei Knoten oder ein Knoten und ein Seitenzeiger oder ein abschließender Text und ein Knoten, um nur einige wenige Möglichkeiten auf zuzählen. Der Knotencluster, an dem diese Divergenz stattfindet, ist als Divergenzcluster oder Divergenzpunkt bekannt. Die Blöcke 82 und 83 sind Suchmittel für die Endpunktschlüssel, die am Divergenzcluster beginnen. In ihrer Kombination erzeugen die Blöcke 81, 82 und 83 die Seitentiefe für jeden Endpunktschlüsseln, und das Maximum dieser Werte wird in Block 84 bestimmt, damit es als Mittel der Suchbegrenzung dient.
  • Blöcke 85 ist ein Bereichssuchmittel zur Durchsuchung des Index zwischen den Endpunktschlüsseln und innerhalb der maximalen Ebene. Er dient auch als Mittel zur Schlüsselschätzung zur Zählung der Anzahl der Seiten, die während der Bereichsdurchsuchung bis zur Seitenebenengrenze betroffen sind und auf die gezeigt wird.
  • Eine parallele Suche nach "BÄH" und "QUAAK" wird durchgeführt, wobei man einen einzelnen Knoten gleichzeitig bewegt, bis der Divergenzcluster ermittelt wurde. Dieser Cluster ist derjenige, der die Knoten 33 und 34 auf der Seite 1 des Index in der Fig. 3 enthält. "BÄH" soll bei Knoten 33 und "QUAAK" bei Knoten 34 positioniert sein. Sowohl für den "BÄH"- wie für den "QUAAK"- Schlüssel werden getrennte aktuelle Ebenenzähler verwaltet. Da beide Suchvorgänge (Block 91 in Fig. 9) auf der Stammseite (Seite 1) beginnen, werden diese Zähler beide mit eins initialisiert, wie es in Block 92 des ausführlichen Flußdiagramms der Fig. 9 gezeigt wird. Jedesmal, wenn die Suche (Blöcke 93 und 94) von einer Ursprungsseite auf einer Ebene zu einer anderen Seite auf einer niedrigeren Ebene des Index voranschreitet, wie es in den Blöcken 95 und 96 dargestellt ist, werden die Zähler in den Blöcken 97 und 98 inkrementiert. Im Falle von "BÄH" werden keine Seitenanzeiger angetroffen, so daß die Zählung bei 1 verbleibt, aber "QUAAK" trifft am Knoten 34 einen Seitenzeiger, so daß sein Ebenenzähler 2 wird. Der Unterschied in den Knoten wird in Block 99 aufgezeichnet, womit angezeigt wird, daß der Divergenzpunkt bei Block 910 gefunden worden ist. Die in Fig. 9 dargestellte Suche identifiziert den niedrigsten Knoten, der als Divergenzpunkt zwischen dem linken Endpunkt und dem rechten Endpunkt dient, und zeichnet die Tiefe dieses Clusters auf. Im Beispiel ist das der in Fig. 3 dargestellte Knoten, der auf Seite 1 des Baumes vorhanden ist, zu dem das mit 33 und 34 bezeichnete Knotenpaar gehört. Der Cluster ist der Divergenzcluster. Er wird als Ausgangspunkt für die zugehörige Bereichsdurchsuchung dienen, die nachstehend beschrieben wird.
  • Ausgehend vom Divergenzpunkt wird eine Suche, die den in Fig. 10 dargestellten Verlauf hat, nach jedem Endpunkt im Block 101 durchgeführt. Im Block 102 wird der Ebenenzähler für den linken Endpunkt initialisiert. Er ist gleich der Tiefe am Divergenzpunkt. Es erfolgt eine Bewegung auf den nächsten Knoten in Block 103. Wenn der nächste Knoten ein Seitenzeiger im Block 104 ist, dann wird im Block 105 die Ebenenzählung inkrementiert, und im Block 103 erfolgt eine Bewegung zum nächsten Knoten. Wenn dies nicht der Fall ist, aber der im Block 106 angezeigte gewünschte Endpunktschlüssel erreicht worden ist, dann ist die Ebenenzählung für diesen Schlüssel vollständig, und die Ebenenzählung für den rechten Endpunkt wird auf die gleiche Weise durchgeführt. Wenn der gewünschte Endpunktschlüssel im Block 106 nicht angetroffen wird, dann erfolgt im Block 103 eine Bewegung zum nächsten Knoten.
  • Wenn der Divergenzpunkt einmal gefunden worden ist, dann wird im Block 101 die Suche nach "BÄH" mit dem linken Knoten (Knoten 33) des Divergenzclusters fortgesetzt und schreitet zum Text für "BÄH" am Cluster 65 der Seite 8 in Fig. 6 fort. Der Ebenenzähler, der bei der oben beschriebenen parallelen Suche begonnen hatte, wird weiter jedesmal dann inkrementiert, wenn eine neue Seite auf einer tieferen Ebene des Baumes bei der Suche nach "BÄH" angetroffen wird. Die Suche nach "BÄH" trifft auf zwei weitere Seitenzeiger (gekennzeichnet mit 36 und 44), so daß nach der vollständigen Durchsuchung die maximale Tiefe drei beträgt.
  • Die gleiche Suche wird für "QUAAK" durchgeführt, dabei wird nur noch eine weitere Seite unterhalb des Divergenzpunktes angetroffen, und daher hat sie ebenfalls eine maximale Tiefe von 3.
  • Nachdem eine Ebenengrenze von 2 bestimmt worden ist (3 * 0,75), wird beginnend beim Divergenzpunkt in Block 111 in Fig. 11, der Schlüsselbereich durchsucht, damit die Anzahl der Seitenzeiger im Bereich bestimmt wird. Die dem Knoten 33, dem linken Knoten im Divergenzcluster, nachgeordneten Knoten werden im Block 112 bis zur Begrenzungsebene nach rechts durchsucht. Sobald die Suche sich zurückwendet (d. h. zurückkehrt) zu Knoten 33, gibt es in der linken Hälfte des Bereiches keine weiteren Seiten. Dann werden die dem Knoten 34, dem rechten Knoten im Divergenzcluster, nachgeordneten Knoten bei Block 113 nach links zur Begrenzungsebene hin durchsucht. Sobald eine Rückkehr zu Knoten 34 erfolgt, ist der vollständige Bereich durchsucht und die Schlüsselanzahl im Bereich geschätzt worden. Die obige Durchsuchung des Schlüsselbereiches wird als symmetrischer Durchlauf nach links und nach rechts bezeichnet. Zuerst werden die dem Knoten 33 nachgeordneten Knoten nach rechts, danach und die dem Knoten 34 nachgeordneten Knoten nach links durchlaufen. Die Codierung wird dadurch vereinfacht, daß danach nur eine Prüfung durchgeführt werden muß, ob sich die Suche am Divergenzpunkt befindet, damit bestimmt wird, ob alle nachgeordneten Knoten durchsucht worden sind.
  • Bei einer weiteren bevorzugten Ausführungsform der vorliegenden Erfindung wird das Paar symmetrischer Durchlaufvorgänge parallel durchgeführt. Zwei getrennte Aufgaben führen den symmetrischen Durchlauf durch. Eine erste Aufgabe führt den Durchlauf der linken Hälfte des Bereiches und eine zweite Aufgabe den Durchlauf der rechten Hälfte des Bereiches durch. Die insgesamt abgelaufene Zeit, die für die Erzeugung der Schätzung erforderlich ist, wird dadurch vermindert, daß die Durchläufe parallel erfolgen.
  • Bei einer gewünschten Genauigkeit von 75% erfolgt die Tiefenbeschneidung bei Ebene 2. Daher erfolgt unterhalb der Ebene 2 keine Durchsuchung des Schlüsselbereiches. Folglich werden die Blattseiten 9 und 10, die sich in einer Tiefe von 3 befinden, nicht wieder aufgefunden oder durchsucht, obgleich in ihnen sogar interessierende Schlüssel enthalten sind.
  • Die Durchsuchung des Schlüsselbereiches wird nun mit weiteren Einzelheiten beschrieben. Zuerst wird der aktuelle Suchpfad diskutiert, und dann wird in Verbindung mit dem vorherigen Laden der Seiten der in den Fig. 12, 13 und 14 dargestellte Fluß diskutiert.
  • Bei der Durchsuchung des oben angegebenen Schlüsselbereiches wird vom Divergenzpunkt, dem Knoten 33, aus die Fortsetzung der Suche nach "BÄH" so lange aufrechterhalten, bis die Tiefenbeschneidung von 2 erreicht ist. Dies führt zu Seite 2, Fig. 4 beim mit 44 gekennzeichneten Seitenzeiger. Bei der bevorzugten Ausführungsform wird diese Position von der anfänglichen Suche nach den Schlüsselgrenzen gemerkt, und die Suche beginnt direkt beim Seitenzeiger 44. Statt der Fortsetzung der Suche auf der Seite 8 bei einer Ebene von 3 wird ein Nebensuchvorgang von diesem Punkt aus durchgeführt, dadurch wird der nächste Schlüsselpfad in dem Index ermittelt. Die Seitenzeigerzählung wird auf eins inkrementiert, um dem mit 44 gekennzeichneten Seitenzeiger Rechnung zu tragen. Es ist anzumerken, daß die Suche nicht bis zu der Seite, auf die gezeigt worden ist (Seite 8) durchgeführt wird, da sie die Tiefenbeschneidung von 2 erreicht hat.
  • Die Suche wird beim Seitenzeiger 44 auf der Seite 2 zum mit 41 gekennzeichneten Knoten auf der Seite 2 wieder aufgenommen. Sie bewegt sich zu dem rechten Knoten zum mit 42 gekennzeichneten Element und sucht nach dem nächsten Schlüsselpfad. Der Knoten 45 wird erreicht, und dann wird die Suche nach dem abschließenden Text fortgesetzt, der "KNURREN" entspricht, wie dies bei 48 dargestellt ist. Jedesmal, wenn ein abschließendes Textelement angetroffen wird, geht die Suche weiter. Da der abschließende Text 48 ein linkes Element ist, bewegt sich die Suche zum rechten Element des Clusters, das dem mit 47 bezeichneten Seitenzeiger entspricht, der Seitenzeigerzähler wird auf 2 inkrementiert, und die Suche wird wieder aufgenommen.
  • Die Wiederaufnahme führt die Suche zu Knoten 45, dem Ursprungsknoten des gerade bearbeiteten Clusters, der ein linker Knoten ist. Der weitere Fortgang zu Knoten 46 und dann wieder weiter führt die Suche zu dem abschließenden Text, der dem bei 49 angezeigten "HEULEN" und "BRÜLLEN" entspricht. Dies führt zu einer Wiederaufnahme bei Knoten 46, der ein rechter Knoten ist. Weitere Wiederaufnahmen zu Knoten 42, einem rechten Knoten, und zu Knoten 40, dem Wurzelknoten der Seite 2, werden durchgeführt.
  • Nachdem die interessierenden Knoten auf Seite 2 vollständig verarbeitet worden sind, veranlaßt eine Wiederaufnahme von Seite 2 aus unter Verwendung der in einer Seitenkopfzeile gespeicherten Rückzeigerinformation die Dekrementierung der aktuellen Ebenenzählung auf eins und fixiert die Suche bei Knoten 33 auf der Seite 1, Fig. 3. Da der Knoten 33 der linke Knoten des Divergenzclusters ist, bewegt sich die Suche in Richtung auf den mit 34 gekennzeichneten Seitenzeiger. Dies ist ein Punkt, der oberhalb der Tiefenbeschneidung liegt, so daß die Suche weitergeht, diesmal auf dem Pfad des rechten Endpunktes und mit einem Durchlauf nach links. Die Suche setzt sich bis zur Seite 3, Fig. 5 fort. Der aktuelle Ebenenzähler wird auf zwei inkrementiert. Die Suche schreitet bis hinunter zu den Knoten 52, 54 fort und geht dann zu dem mit 56 gekennzeichneten Seitenzeiger. Die Seitenzeigerzählung wird auf drei inkrementiert. Die Suche wird beim Cluster 51 und 52 wieder aufgenommen und geht dann hinunter bis zum Seitenzeiger 53. Die Seitenzeigerzählung wird auf vier inkrementiert. Die Suche verläuft nach links bis zum Text 58 "MIAU" und wird über die Knoten 51 und 50 bis zum Divergenzcluster, den Knoten 33 und 34, wiederaufgenommen. Die Durchsuchung des Schlüsselbereiches ist beendet.
  • Die Suche ist unterhalb der Tiefenbeschneidung nicht fortgesetzt worden, so daß Seitenfehler auf vielen Seiten vermieden worden sind. Wenn es 100 durch Schlüssel identifizierte Eintragungen in dem durchsuchten Index gibt, wie es in der Kopfzeile des Index angezeigt wird, die bei der Erzeugung des Index gebildet wurde, dann beträgt die näherungsweise Anzahl von Eintragungen in dem Bereich:
  • Eintragungen pro Seite = Anzahl der Eintragungen/Anzahl der Seiten im gesamten Baum
  • = 100/15
  • = annähernd 6
  • Anzahl der Eintragungen = Anzahl der Seitenzeiger * Eintragungen pro Seite
  • = 4 * 6
  • = 24.
  • Wenn die Seiten 9 und 10 (nicht dargestellt) jede jeweils 5 Eintragungen so wie die Seiten 8 und 11 haben, dann beträgt die genaue Zählung der Eintragungen in dem Bereich 22. Damit ist eine schnelle und genaue Schätzung erreicht worden, obgleich wenige Seiten des Index berührt worden sind.
  • Eine weitere bevorzugte Ausführungsform der vorliegenden Erfindung kompensiert die Tatsache, daß einige Schlüssel nicht auf den Blattseiten liegen. Dies kann vorkommen, wie in dem abschließenden Text zu sehen ist, der dem Textelement "KNURREN", Fig. 4 entspricht. Die Lösung umfaßt die Zählung der Anzahl von abschließenden Textelementen, die bei der Suche nach Seitenzeigern angetroffen werden. Die Zählung wird der Schätzung hinzugefügt, die auf der Anzahl der Seitenzeiger, die bei der Ebenenbegrenzung resident sind, mal der durchschnittlichen Anzahl der Eintragungen pro Blattseite beruht. Bei einem Baum mit vier Ebenen wird die Anzahl der Eintragungen pro Blattseite von der Gesamtanzahl der Eintragungen in dem Index geteilt durch die Gesamtzahl der Seiten im Index minus 2% bestimmt.
  • ASYNCHRONE VORHERIGES LADEN DER SEITEN
  • Ein zeitsparender Wesenszug der vorliegenden Erfindung umfaßt das asynchrone vorherige Laden von vorausweisenden Seiten an der Ebenenbegrenzung. In der vorliegenden Beschreibung wird "Absprung" als eine beliebige Seite oberhalb oder auf der Begrenzungsebene definiert, wenn die Suche durch die den Knoten im Divergenzcluster nachgeordneten Seiten verläuft. "Vorausweisend" ist definiert als die nächste Seite, die nach der Verarbeitung der aktuellen Seite gebraucht wird, die sich auf der Begrenzungsebene befindet. So können "vorausweisende Seiten" Seiten auf der Begrenzungsebene oder Seiten sein, die tatsächlich "Absprung"-Seiten nach obiger Definition sind.
  • Zur Beschreibung des asynchronen vorherigen Ladens der vorausweisenden Seiten an der Ebenenbegrenzung wird ein Flußdiagramm in Fig. 12 benutzt. Während der Durchsuchung des Bereiches wird, wenn sich die aktuelle Seite, wie in Block 121 dargestellt, an der Ebenenbegrenzung befindet, die Ursprungsseite (d. h. die Seite, die den Seitenzeiger enthält, der auf die aktuelle Seite Bezug nimmt) der aktuellen Seite im Block 122 abgefragt, damit nachfolgende vorausweisende Seiten der aktuellen Seite identifiziert werden. Die nachfolgenden vorausweisenden Seiten werden identifiziert, wenn man dem Fluß in Fig. 13 folgt. Im Block 138 beginnt die Suche nach nachfolgenden vorausweisenden Seiten von dem Seitenzeigerknoten aus, der sich auf die aktuelle Seite bezieht. Ein Entscheidungsblock 139 leitet die Suche in Abhängigkeit davon in die richtige Richtung, ob der Suchbereich nach rechts oder links durchläuft. Wenn rechts zutrifft, dann richtet der Block 140 die Wiederaufnahme der Suche nach rechts und findet den nächsten rechten Knoten. Wenn links zutrifft, dann richtet Block 141 die Wiederaufnahme der Suche nach links und findet den nächsten linken Knoten. Die Blöcke 140 und 141 fließen in Block 142, der den nächsten Seitenzeiger ermittelt oder zum Divergenzcluster zurückführt.
  • Wenn bei Block 123 in Fig. 12 eine vorausweisende Seite gefunden wird, dann wird im Block 124 ein asynchrones Laden der vorausweisenden Seite initialisiert, so daß sich diese zu der Zeit im Hauptspeicher befindet, wenn sie durchsucht werden muß. Die aktuelle Seite wird dann in der Schleife der Blöcke 125, 126 und 127 nach Seitenzeigern durchsucht. Wenn im Block 126 Seitenzeiger angetroffen werden, dann wird im Block 127 eine Seitenzeigerzählung inkrementiert. In Fig. 14 ist Block 125 ausführlicher dargestellt. Zuerst bestimmt ein Entscheidungsblock 145, ob sich der aktuelle Knoten im Divergenzcluster befindet. Wenn ja zutrifft, dann wird, wie im Block 146 angezeigt, kein Absprung oder Seitenzeiger gefunden, und der Fluß wird zurückgeführt. Wenn nein zutrifft, bestimmt der Entscheidungsblock 147, ob der aktuelle Knoten ein Seitenzeiger ist. Wenn ja zutrifft, dann ist ein Absprung oder ein Seitenzeiger gefunden worden, wie es bei Block 148 angezeigt wird, und der Fluß wird zurückgeführt. Wenn der aktuelle Knoten kein Seitenzeiger ist, dann bestimmt ein Entscheidungsblock 149, ob der aktuelle Knoten ein Textknoten ist. Wenn er ein solcher ist, dann richtet ein Entscheidungsblock 150 die Suche auf die Wiederaufnahme und Auffindung des nächsten Knotens zu Block 151 oder 152, was davon abhängt, ob die Suche nach links beziehungsweise nach rechts durchläuft. Wenn bei der Entscheidung im Block 149 nein zutraf, dann wird im Block 153 zum nächsten Knoten vorgerückt, ohne daß eine Wiederaufnahme notwendig ist. Der Fluß aus den Blöcken 151, 152 und 153 geht zu Block 145 weiter, bis entweder in Block 145 oder 147 eine Ja-Entscheidung erfolgt.
  • Wenn alle Seitenzeiger auf der aktuellen Seite gezählt worden sind, dann stellt Block 128 in Fig. 12 divergente Pfade für die Bereichsdurchsuchung zur Verfügung. Wenn der Divergenzcluster gefunden wurde, dann wird kein Laden von vorausweisenden Seiten initialisiert, und daher wird der Fluß bei den Blöcken 112 oder 113 zu Fig. 11 zurückkehren. Wenn ein Laden initialisiert worden ist, dann wird die geladene Vorausweisung in Block 129 als nächste Seite identifiziert, und Block 130 identifiziert dann die nächste Seite als die aktuelle Seite, wobei so die vorher geladene Vorausweisung definitiv als die richtige Stelle dafür bezeichnet wird, wo die Durchsuchung des Bereiches fortfährt.
  • Bis dahin ist die aktuelle Seite, die der Vorausweisung entsprach, für die im Block 124 ein Laden durchgeführt wurde, wahrscheinlich im Hauptspeicher angekommen. Es wird dadurch Zeit gespart, daß das Laden initialisiert wird, das als Ein-/Ausgabevorgang bezeichnet wird, und daß dann die aktuelle Seite in der Schleife 125, 126, 127 hinsichtlich der Seitenzeiger weiter bearbeitet wird, während der Ein-/Ausgabevorgang abläuft.
  • Block 121 bestimmt dann, ob sich die aktuelle Seite auf der Begrenzungsebene befindet. Um dem anderen Pfad von diesem Block aus zu folgen, soll sich die aktuelle Seite nicht auf der Begrenzungsebene befinden. Die aktuelle Seite wird dann im Block 131 nach einem Absprung durchsucht. Wenn der Divergenzcluster angetroffen wird, dann wird der Fluß zurückgeführt. Wenn im Block 132 kein Absprung gefunden wird, dann kehrt die Suche zum Hauptstrom des Suchbereiches bei den Blöcken 112 oder 113 zurück. Wenn ein Absprung gefunden wird, dann wird die Seitenzeigerzählung im Block 133 inkrementiert, bei 134 wird der Absprung als nächste Seite identifiziert, und die Ebenenzählung wird bei 135 inkrementiert.
  • Eine andere Verfahrensweise der Vorrollung umfaßt das Steuern von mehr als einer Seite im voraus. Vor der Verarbeitung einer der nächsten Seiten werden bei n Seiten Vorrollungen initialisiert, wobei n so errechnet wird, daß die vorteilhafteste Prozessor- und Ein-/Ausgabeüberlappung bestimmt wird. n ist auch dergestalt eine Funktion des Seitenaustauschmechanismus, daß die Zeitspanne, in der eine Seite festgehalten wird, ein Begrenzungsfaktor für die Anzahl der Seiten ist, die vorgerollt werden können.
  • ANWENDUNGEN
  • Durch die Abschätzung der Anzahl der Datensätze in einem speziellen Datenbereich kann der Nutzer (eine Person oder ein Programm zum Beispiel) eine bessere Leistungsauswahl sowohl bei adhoc-Abfragen wie bei Abfragen von Realzeit-Daten treffen. Die Schätzung ist nützlich bei der Bestimmung, ob es effizienter ist, eine direkte Verarbeitung der Datenbereiche im Gegensatz zur Erzeugung eines neuen, selektiveren Index durchzuführen, bei dem nur die interessierenden Datenbereichssätze betroffen sind. Wenn die im Schlüsselbereich geschätzte Anzahl der Datensätze groß ist, dann ist es im allgemeinen effizienter, den Datenbereich direkt zu verarbeiten, als daß ein neuer Index von Kandidateneintragungen geschaffen wird.
  • Wenn mehrere Auswahlkriterien einer Abfrage vorgeschrieben sind und mehr als ein Auswahlkriterium einen Index hat, der benutzt werden könnte, dann werden die Schätzungen vom Benutzer dazu verwendet, zu entscheiden, welcher der Kandidaten-Indizes zur Erzeugung eines selektiveren Index benutzt werden soll. Das Ziel besteht darin, die Auswahlkriterien und damit den Index zu auszuwählen, der die geringste Anzahl von Datensätzen zur weiteren Verarbeitung erzeugt. Dies minimiert die Anzahl der Seiten, die sowohl im Index wie in dem Datenbereich/den Datenbereichen berührt werden müssen.
  • Ein Beispiel für eine Abfrage mit Auswahlkriterien ist: "Alle Angestellten mit: Alter unter 30 UND Gehalt über 30 000 $". Wenn zwei Indizes existieren, wobei das Alter das primäre Schlüsselfeld in dem einen und das Gehalt das primäre Schlüsselfeld in dem anderen sind, dann erhält man eine Schätzung für jeden Bereich. Das Alter zwischen 0 oder dem im Altersindex am weitesten links liegenden Pfad und 30 ist der eine Bereich, und das Gehalt zwischen 30 000 und dem am weitesten rechts liegenden Pfad im Gehaltsindex ist der andere Bereich. Im allgemeinen wird vom Benutzer der Index mit der kleineren Schlüsselschätzung in dem vorgeschriebenen Bereich gewählt. Vom Benutzer werden noch weitere Faktoren betrachtet, wie etwa die Gesamtzahl der Seiten im Index, da der Index mit der kleineren Schätzung das Dreifache der Seitenanzahl haben könnte und so viel aufwendiger zu verarbeiten wäre.
  • Bei Kombinationsvorgängen ist die vorliegende Erfindung eine Hilfe bei der Bestimmung der Reihenfolge, in der die Kombination der Datenbereiche stattfinden sollte. Im allgemeinen hat jeder Datenbereich, der an dem Kombinationsvorgang teilnimmt, einen Index über sich, bei dem das Kombinationsfeld als Schlüsselfeld in dem Index dient. Ein zusammengesetztes kombiniertes Abbild wird Auswahlkriterien unterworfen, mit denen die Herabsetzung der Anzahl der beschreibenden Datensätze beabsichtigt ist. Die vorliegende Erfindung wird dort, wo die Kriterien auf Schlüsselfelder angewandt werden, dafür benutzt, daß eine Schätzung der Anzahl der Datensätze vorgenommen wird, die den Auswahlkriterien genügen. Diese Schätzungen werden dann dazu benutzt, die Kombinationen der Datenbereiche ordnen zu helfen. Es folgt eine Diskussion über die Bedeutung des Ordnens der Kombinationsvorgänge:
  • In jedem Paar von Datenbereichen, das von der Kombination betroffen sind, wird ein gemeinsames Feld definiert, das als Kombinationsfeld bezeichnet wird. Da es im allgemeinen effizienter ist, Datenbereiche dadurch zu kombinieren, indem man Indizes über sie benutzt, muß der Index, der jedem Datenbereich entspricht, der an der Kombination teilnimmt, ein analoges gemeinsames Schlüsselfeld in dem Index über sich haben, das als Kombinationsschlüsselfeld bezeichnet wird.
  • Es ist am vorteilhaftesten, mit dem Datenbereich zu beginnen, der die wenigsten Kandidaten hat. Die Datenbereiche werden in aufsteigender Reihenfolge bis zu dem Datenbereich verarbeitet, der die größte Anzahl von Kandidaten hat. Dies minimiert die Anzahl der Suchvorgänge in den nachfolgenden Indizes, bei denen eine Übereinstimmung mit dem vorhergehenden Wert des Kombinationsschlüsselfeldes gefunden werden soll. Dies seinerseits resultiert sowohl in dem niedrigsten Ausmaß an Seitenaustauschvorgängen gegen den Datenbereich wie in der kürzesten Verarbeitungszeit, die für die Kombination der Datenbereiche aufgrund der Minimierung der Anzahl der Suchvorgänge erforderlich ist, wie sie durch die Kombinationsausgangsverzweigung erzeugt werden.
  • Wenn man zum Beispiel drei Datenbereiche kombiniert, die über sich Indizes mit den geeigneten Kombinationsschlüsselfeldern haben, dann soll angenommen werden, daß der Index eins n Kandidaten, der Index zwei in Kandidaten und der Index drei p Kandidaten hat. Es wird auch angenommen, daß n kleiner m kleiner p ist.
  • Wenn die Datenbereiche in aufsteigender Reihenfolge miteinander kombiniert werden und eine volle Ausgangsverzweigung angetroffen wird, dann werden alle Kandidaten in den nachfolgenden Indizes überprüft. Es werden n Suchvorgänge im Index eins plus einem Suchvorgang zur Mitteilung durchgeführt, daß keine weiteren Kandidaten in Index eins vorhanden sind (ein Fehlschluß) - Für jeden Kandidaten in Index eins werden m Suchvorgänge im Index zwei plus n Fehlschlüsse oder nm + n durchgeführt. Für jeden Kandidaten in Index eins und für jeden Kandidaten in Index zwei werden p Suchvorgänge im Index drei plus nm Fehlschlüsse durchgeführt. Damit werden in Index drei nmp + nm Suchvorgänge durchgeführt.
  • Die Gesamtanzahl der Indexsuchvorgänge in allen drei Indizes beträgt: (n + nm + nmp) + (1 + n + nm), wobei der erste Ausdruck der Anzahl der Treffer und der zweite Ausdruck der Anzahl der Fehlschlüsse entspricht.
  • Wenn die Kombination in absteigender Reihenfolge durchgeführt wird, dann ist die Anzahl der Suchvorgänge viel größer: (p + pm + pmn) + (1 + p + pm). Wenn n=2, m=5 und p=10 ist, dann beträgt die Anzahl der Suchvorgänge für eine Kombination mit aufsteigender Reihenfolge 125 gegenüber einer Anzahl von Suchvorgängen bei einer Kombination mit absteigender Reihenfolge von 221. Aufgrund der Ausgangsverzweigung der Kandidatenanzahl bei der Kombination von mehrfachen Datenbereichen ist es vorteilhaft, die Kombination in der aufsteigenden Kandidatenreihenfolge durchzuführen. Die Abschätzung der Schlüsselbereichsgröße von Indizes, bei denen die Schlüssel Auswahlkriterien unterworfen werden, ermöglicht die Auswahl der vorteilhaftesten Reihenfolge, in der Datenbereiche kombiniert werden sollen.

Claims (20)

1. Eine Einrichtung zur Schätzung der Schlüsselanzahl innerhalb eines Schlüsselbereiches, der durch Schlüsselendpunkte in einem baumähnlichen Index definiert ist, der eine Vielzahl von Seiten hat, die seitenweise in einen Hauptspeicher hinein und aus diesem heraus umgelagert werden, die umfaßt:
Suchmittel (81-83) für die Durchsuchung des Index nach allen Schlüsseln, die den Schlüsselbereich definieren, und Verfolgung der Suchebene, die für jeden Bereichsbegrenzungsschlüssel erforderlich ist;
Begrenzungsmittel (84) für die Realisierung einer unteren Ebenenbegrenzung als Funktion der Suchebenen für jeden Bereichsbegrenzungsschlüssel und eine gewünschte Körnung der Suche;
Mittel zur Bereichsdurchsuchung (85) zur Durchsuchung des Index zwischen den Bereichsbegrenzungsschlüsseln bis hinunter zur Ebenenbegrenzung, wie sie durch das Begrenzungsmittel bestimmt wurde, und
Schlüsselschätzmittel (85) zur Schätzung der Schlüsselanzahl als Funktion der gezählten Anzahl der Seiten, auf die während einer solchen Bereichsdurchsuchung gezeigt wurde.
2. Die Schlüsselschätzeinrichtung von Anspruch 1, wobei das Begrenzungsmittel die Ebenenbegrenzung als Funktion der Tiefe der Suchebenen für die Bereichsbegrenzungsschlüssel zur Verfügung stellt.
3. Die Schlüsselschätzeinrichtung von Anspruch 1, wobei der baumähnliche Index einen binären Wurzelindex umfaßt, der die Fähigkeit zu mehr als zwei Seitenzeigern pro Indexseite hat.
4. Die Schlüsselschätzeinrichtung von Anspruch 3, wobei jede Indexseite bis zu 60 Seitenzeiger pro Indexseite enthält.
5. Die Schlüsselschatzeinrichtung von Anspruch 1, wobei die Ebenenbegrenzung mindestens eine Ebene oberhalb der untersten Indexebene liegt.
6. Die Schlüsselschätzeinrichtung von Anspruch 1, wobei die Schlüsselschätzeinrichtung die Anzahl der gezählten Seiten mit einer durchschnittlichen Schlüsseldichte pro Seite multipliziert, um eine Schätzung der Schlüsselanzahl im Schlüsselbereich zu erhalten.
7. Die Schlüsselschätzeinrichtung von Anspruch 6, wobei die Schlüsselschätzung dazu benutzt wird, eine Reihenfolge für die Vorgänge bei bestimmten Funktionen auszuwählen.
8. Die Schlüsselschätzeinrichtung von Anspruch 7, wobei die Schlüsselschätzung dazu benutzt wird, die Reihenfolge der Vorgänge auszuwählen, die bei einer Kombinationsfunktion durchgeführt werden sollen.
9. Die Schlüsselschätzeinrichtung von Anspruch 8, wobei Mehrfacherfassungen von Datensätzen kombiniert werden sollen und eine Schätzung der Schlüsselanzahl durchgeführt wird, die in gewünschten Schlüsselbereichen in Indizes für jede Erfassung von Datensätzen enthalten sind.
10. Die Schlüsselschätzeinrichtung von Anspruch 9, wobei die Reihenfolge, in der die Datenbereiche kombiniert werden, eine Funktion der Schätzungen der Schlüsselanzahl in den gewünschten Schlüsselbereichen in jedem Index ist.
11. Die Schlüsselschätzeinrichtung von Anspruch 10, wobei die Datenbereiche in der Reihenfolge der aufsteigenden Schlüsselanzahl kombiniert werden, wobei bei dem Datenbereich mit der geringsten Schlüsselanzahl der Kombinationsvorgang zuerst durchgeführt wird und bei dem Datenbereich mit der größten Schlüsselanzahl der Kombinationsvorgang zuletzt durchgeführt wird.
12. Die Schlüsselschätzeinrichtung von Anspruch 6, wobei die Schlüsselschätzung dafür benutzt wird, einen optimalen Index auszuwählen, der bei der Durchführung eines Abfragevorganges benutzt werden soll.
13. Die Schlüsselschätzeinrichtung von Anspruch 1, die weiterhin umfaßt:
vorausschauende Mittel zur Bestimmung zukünftiger Seiten, die von den Bereichssuchmitteln zur Suche in einem Index angefordert werden, und
Vorrollmittel für die Vorabfrage der zukünftigen Seiten, so daß sie für eine Durchsuchung zur Verfügung stehen, wenn sie von dem Bereichsdurchsuchungsmittel angefordert werden, so daß bei der Durchsuchung des Index nur ein minimaler Zeitverzug eintritt.
14. Die Schlüsselschätzeinrichtung von Anspruch 13, wobei das Bereichsdurchsuchungsmittel mit der Durchsuchung der zukünftigen Seite vorhergehenden Seite fortfährt, während solche zukünftigen Seiten vorabgefragt werden.
15. Die Schlüsselschätzeinrichtung von Anspruch 13, wobei das vorausschauende Mittel bei weiteren Seiten eine Prüfung auf Vorabfrage vor der Durchsuchung vorabgefragter zukünftiger Seiten durchführt.
16. Ein Verfahren zur Schätzung der Schlüsselanzahl über einen Schlüsselbereich, der durch Schlüsselendpunkte in einem baumähnlichen Index definiert wird, der in einem Speichersystem gespeichert ist, das Seiten benutzt, die in einen Hauptspeicher hinein und aus diesem heraus umgelagert werden, wobei die Seiten Seitenzeiger auf andere Seiten im Index haben, wobei das Verfahren die Schritte umfaßt:
a) Durchsuchen jeden Endes des Schlüsselbereiches, um eine maximale Ebene für jedes Ende des Schlüsselbereiches zu finden;
b) Bestimmen einer unteren Ebenenbegrenzung als Funktion der Schlüsselbereichsebenen und einer gewünschten Genauigkeit der Schlüsselanzahlschätzung;
c) Durchsuchen des Schlüsselbereiches zwischen den Enden des Schlüsselbereiches und bei und oberhalb der unteren Ebenenbegrenzung und
d) Zählen der Anzahl der Seitenzeiger, die während der Bereichsdurchsuchung angetroffen werden, die auf den Seiten resident sind, die die untere Ebenenbegrenzung nicht überschreiten, wobei die geschätzte Schlüsselanzahl eine Funktion der gezählten Anzahl der Seitenzeiger ist.
17. Das Verfahren nach Anspruch 16 und weiterhin die Schritte der Identifizierung eines Divergenzpunktes der Durchsuchung der Enden des Schlüsselbereiches umfassend, so daß die Durchsuchung vom Divergenzpunkt aus unterschiedlichen Pfaden folgt.
18. Das Verfahren von Anspruch 17, wobei die Schlüsselbereichsdurchsuchung in zwei Durchsuchungen unterteilt wird, die durch die zwei Pfade vom Divergenzpunkt aus und die Enden des Schlüsselbereiches definiert werden.
19. Das Verfahren von Anspruch 18, wobei die beiden Durchsuchungen jede jeweils von den entsprechenden Enden des Schlüsselbereiches in Richtung der Mitte des Schlüsselbereiches verlaufen, bis sie den Divergenzpunkt erreichen.
20. Das Verfahren von Anspruch 19 und weiterhin den Schritt der Initialisierung eines Paares paralleler Aufgaben zur Durchführung der beiden Durchsuchungen umfassend, wobei jeder Durchsuchung eine Aufgabe zugeteilt wird.
ANHANG A - Knoten- und Seitenstruktur
Alle Indexelemente (Knoten, Seitenzeiger, Textelemente) sind drei Bytes groß. (Anzahl der Bits im Feld dargestellt durch die Zahl im Block).
- Das Knotenformat ist wie folgt: Typ nicht verwendet Bit für allgemeinen Text Richtungsbit Prüfbit Abstand zum nächsten Cluster
Typ: 10 = Knoten
Bit für allgemeinen Text: Nachfolgender Cluster enthält allgemeinen Text. (0 = allgemeiner Text vorhanden).
Richtungsbit: Zeigt die relative Position dieses Knotens innerhalb des Clusters an. (0 = links, 1 = rechts).
Prüfbit: Zeigt an, welches Bit im aktuellen Argumentbyte geprüft werden sollte, um die Richtung der Suche durch den Baum zu bestimmen (0 bis 7).
Abstand zum nächsten Cluster: Exclusiv-ODER-Abstand zum nächsten Cluster.
- Das Seitenzeigerformat ist wie folgt Typ Index in Segmenttabelle Seitennummer
Typ: 11 = Seitenzeiger
Index in Segmenttabelle: Identifiziert ein Speichersegment, das die gewünschte Seite enthält.
Seitenversetzung: Identifiziert die Seitennummer der neuen Seite in dem die Seite enthaltenden Segment.
- Das Format des Textelementes ist wie folgt Typ Textlänge Abstand zum Text
Typ: 0 = Textelement
Textlänge: Länge des Textelementes (0 bis 127)
Abstand des Textes: Seitenversatz zum aktuellen Text
Format der logischen Seite
- Logische Indexseiten können in der Größe von 512 bis 32768 Bytes reichen.
- Eine in Gebrauch befindliche Seite hat das folgende Format (Feldbreite ausgedrückt in der Anzahl der Bytes): Wurzelknoten der Seite Seitentyp Anzahl der freien Bytes Versatz zum ersten freien Byte auf der Seite Rückzeigerinformation aktueller Baum
- Eine freie Seite hat das folgende Format: unbenutzt Seitentyp Anzahl der freien Seiten in freier Kette Zeiger auf nächste frei Seite
DE3788750T 1986-06-06 1987-04-28 Schätzeinrichtung des Indexschlüsselbereiches. Expired - Fee Related DE3788750T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/871,637 US4774657A (en) 1986-06-06 1986-06-06 Index key range estimator

Publications (2)

Publication Number Publication Date
DE3788750D1 DE3788750D1 (de) 1994-02-24
DE3788750T2 true DE3788750T2 (de) 1994-06-23

Family

ID=25357822

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3788750T Expired - Fee Related DE3788750T2 (de) 1986-06-06 1987-04-28 Schätzeinrichtung des Indexschlüsselbereiches.

Country Status (4)

Country Link
US (1) US4774657A (de)
EP (1) EP0252234B1 (de)
JP (1) JPH0673136B2 (de)
DE (1) DE3788750T2 (de)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US5202986A (en) * 1989-09-28 1993-04-13 Bull Hn Information Systems Inc. Prefix search tree partial key branching
US5355473A (en) * 1991-06-20 1994-10-11 Lawrence Au Indexed record locating and counting mechanism
US5442778A (en) * 1991-11-12 1995-08-15 Xerox Corporation Scatter-gather: a cluster-based method and apparatus for browsing large document collections
US5574897A (en) * 1992-09-30 1996-11-12 International Business Machines Corporation System managed logging of objects to speed recovery processing
US5423035A (en) * 1992-12-23 1995-06-06 Hughes Aircraft Company Method for evaluating relational database queries with automatic indexing and ordering of join components
US5469568A (en) * 1993-01-07 1995-11-21 International Business Machines Corporation Method for choosing largest selectivities among eligible predicates of join equivalence classes for query optimization
US5440732A (en) * 1993-02-05 1995-08-08 Digital Equipment Corp., Pat. Law Gr. Key-range locking with index trees
US5504887A (en) * 1993-09-10 1996-04-02 International Business Machines Corporation Storage clustering and packing of objects on the basis of query workload ranking
JPH07253991A (ja) * 1994-03-16 1995-10-03 Mitsubishi Electric Corp ジョイン処理方式
CA2124094C (en) * 1994-05-20 1999-07-20 K. Bernhard Schiefer Method and apparatus for optimizing data retrieval using index scanning
US5664172A (en) * 1994-07-19 1997-09-02 Oracle Corporation Range-based query optimizer
US5748952A (en) * 1995-05-10 1998-05-05 International Business Machines Corporation System and method for avoiding complete index tree traversals in sequential and almost sequential index probes
US5758353A (en) * 1995-12-01 1998-05-26 Sand Technology Systems International, Inc. Storage and retrieval of ordered sets of keys in a compact 0-complete tree
US5787422A (en) * 1996-01-11 1998-07-28 Xerox Corporation Method and apparatus for information accesss employing overlapping clusters
US5826262A (en) * 1996-03-22 1998-10-20 International Business Machines Corporation Parallel bottom-up construction of radix trees
US5829004A (en) * 1996-05-20 1998-10-27 Au; Lawrence Device for storage and retrieval of compact contiguous tree index records
US5857196A (en) * 1996-07-19 1999-01-05 Bay Networks, Inc. Method for storing a tree of potential keys in a sparse table
US5873078A (en) * 1996-07-19 1999-02-16 Bay Networks, Inc. Radix tree search logic
US6070164A (en) 1998-05-09 2000-05-30 Information Systems Corporation Database method and apparatus using hierarchical bit vector index structure
US8396824B2 (en) * 1998-05-28 2013-03-12 Qps Tech. Limited Liability Company Automatic data categorization with optimally spaced semantic seed terms
US7711672B2 (en) * 1998-05-28 2010-05-04 Lawrence Au Semantic network methods to disambiguate natural language meaning
US20070294229A1 (en) * 1998-05-28 2007-12-20 Q-Phrase Llc Chat conversation methods traversing a provisional scaffold of meanings
US6421664B1 (en) 1999-06-16 2002-07-16 International Business Machines Corporation Apparatus, program product and method for estimating the number of keys within an index key range
US6658405B1 (en) * 2000-01-06 2003-12-02 Oracle International Corporation Indexing key ranges
US6757671B1 (en) * 2000-09-27 2004-06-29 Microsoft Corporation Use of indices for queries with comparisons on a function
CA2451208A1 (en) * 2001-06-21 2003-01-03 Paul P. Vagnozzi Database indexing method and apparatus
US7299243B2 (en) * 2001-09-19 2007-11-20 Bmc Software, Inc. System and method for controlling free space distribution by key range within a database
US7447786B2 (en) * 2003-05-09 2008-11-04 Oracle International Corporation Efficient locking of shared data that is accessed for reads in a cluster database
US7835953B2 (en) * 2003-09-29 2010-11-16 International Business Machines Corporation Method and structure for monitoring moving objects
US8972380B2 (en) * 2003-09-29 2015-03-03 International Business Machines Corporaton System and method for monitoring events against continual range queries
US7693824B1 (en) 2003-10-20 2010-04-06 Google Inc. Number-range search system and method
US20070192215A1 (en) * 2006-02-10 2007-08-16 Taylor Thomas B Computer-implemented registration for providing inventory fulfillment services to merchants
CN101606152A (zh) * 2006-10-03 2009-12-16 Qps技术有限责任公司 通过分类而自动匹配主体到客户的内容的机制
US7853480B2 (en) * 2007-05-21 2010-12-14 Amazon Technologies, Inc. System and method for providing export services to merchants
US8478775B2 (en) * 2008-10-05 2013-07-02 Microsoft Corporation Efficient large-scale filtering and/or sorting for querying of column based data encoded structures
US8266165B2 (en) * 2008-12-25 2012-09-11 Avaya Inc. Adaptive parameterized search algorithm
JP5343793B2 (ja) * 2009-09-28 2013-11-13 ブラザー工業株式会社 情報生成装置、情報生成プログラム、情報生成方法、ノード装置、ノードプログラム及び検索方法
US9171044B2 (en) * 2010-02-16 2015-10-27 Oracle International Corporation Method and system for parallelizing database requests
US8805800B2 (en) * 2010-03-14 2014-08-12 Microsoft Corporation Granular and workload driven index defragmentation
US8583655B2 (en) * 2011-10-17 2013-11-12 Hewlett-Packard Development Company, L.P. Using an inverted index to produce an answer to a query
US20130332428A1 (en) * 2012-06-11 2013-12-12 Microsoft Corporation Online and Workload Driven Index Defragmentation
WO2015073003A1 (en) * 2013-11-14 2015-05-21 Hewlett-Packard Development Company, L.P. Estimating data
US10459810B2 (en) 2017-07-06 2019-10-29 Oracle International Corporation Technique for higher availability in a multi-node system using replicated lock information to determine a set of data blocks for recovery

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US947005A (en) * 1899-01-14 1910-01-18 American Typographic Corp Machine for forming type-bars.
US916004A (en) * 1906-03-24 1909-03-23 Wilhelm Ostwald Process of rendering lithopone more stable against light.
US948010A (en) * 1908-02-06 1910-02-01 Jacob O Funkhouser Electric coupler-action for organs.
US4468728A (en) * 1981-06-25 1984-08-28 At&T Bell Laboratories Data structure and search method for a data base management system
JPS583031A (ja) * 1981-06-30 1983-01-08 Fujitsu Ltd リレ−シヨナル・モデルにおけるジヨイン演算処理方式
US4468736A (en) * 1982-06-08 1984-08-28 Burroughs Corporation Mechanism for creating dependency free code for multiple processing elements
US4611272A (en) * 1983-02-03 1986-09-09 International Business Machines Corporation Key-accessed file organization
US4507752A (en) * 1983-02-22 1985-03-26 International Business Machines Corporation In-place index compression
US4606002A (en) * 1983-05-02 1986-08-12 Wang Laboratories, Inc. B-tree structured data base using sparse array bit maps to store inverted lists
US4575798A (en) * 1983-06-03 1986-03-11 International Business Machines Corporation External sorting using key value distribution and range formation
US4571679A (en) * 1983-09-06 1986-02-18 The United States Of America As Represented By The Secretary Of The Navy Fault tree data array

Also Published As

Publication number Publication date
US4774657A (en) 1988-09-27
DE3788750D1 (de) 1994-02-24
JPH0673136B2 (ja) 1994-09-14
EP0252234A2 (de) 1988-01-13
EP0252234B1 (de) 1994-01-12
JPS62288935A (ja) 1987-12-15
EP0252234A3 (de) 1992-01-22

Similar Documents

Publication Publication Date Title
DE3788750T2 (de) Schätzeinrichtung des Indexschlüsselbereiches.
DE69900854T2 (de) Ein suchsystem und verfahren zum zurückholen von daten und die anwendung in einem suchgerät
DE69636761T2 (de) Speichern und wiederauffinden von geordneten schlüsselmengen in einem kompakten 0-kompletten baum
DE69130793T2 (de) Datenbank Suchprozessor
DE69401662T2 (de) Datenbankstrukturen
DE69131941T2 (de) System und verfahren für informationsauffindung
DE102005023128B4 (de) System und Verfahren zum gemeinschaftlichen Verwenden von Speicherressourcen zwischen mehreren Dateien
DE69032576T2 (de) Dynamische Optimierung eines einzelnen relationalen Zugriffs
DE69926305T2 (de) Rechnerlesbarer Speicher zum Speichern einer Datenbank und Indizes
DE69524601T2 (de) Verfahren zum daten speichern und daten wiederfinden und eine speicheranordnung
DE69804495T2 (de) Informationsmanagement und wiedergewinnung von schlüsselbegriffen
DE3856055T2 (de) Verfahren und Einrichtung, um gleichzeitigen Zugriff zu indizierten sequentiellen Dateien zu ermöglichen
DE60208778T2 (de) Datenstruktur für informationssysteme
DE69708654T2 (de) Chipkarte mit gemäss einer baumartigen struktur gespeicherten dateien
DE3855212T2 (de) Verfahren zur Berechnung eines transitiven Abschlusses
DE19954534A1 (de) Rückwärtsindexieren von Zeichenketten in einer relationalen Datenbank zum Suchen mit Joker
DE60118973T2 (de) Verfahren zum abfragen einer struktur komprimierter daten
DE102007037646B4 (de) Computerspeichersystem und Verfahren zum Indizieren, Durchsuchen und zur Datenwiedergewinnung von Datenbanken
DE19515020A1 (de) Verfahren und Vorrichtung zum Optimieren von Abfragen mit Gruppieren-nach-Operatoren
DE69935657T2 (de) Verfahren und gerät zum optimieren der querygenerierung durch selektives verwenden von zusätzen oder schlüsselwerten
DE10028688A1 (de) Methode, System und Programm für eine Verbindungsoperation in einer mehrspaltigen Tabelle sowie in Satellitentabellen mit doppelten Werten
DE10134229A1 (de) Verfahren und System zum Ermitteln von Abweichungen in Datentabellen
DE69517887T2 (de) Verfahren und System zum Herstellen von Verbindungen in einem Datenbanksystem
DE112010002620T5 (de) Ontologie-nutzung zum ordnen von datensätzen nachrelevanz
EP1276056A1 (de) Verfahren zum Verwalten einer Datenbank

Legal Events

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