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
Links
- 230000006870 function Effects 0.000 claims description 21
- 238000000034 method Methods 0.000 claims description 16
- 238000005096 rolling process Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 7
- 241001465754 Metazoa Species 0.000 description 5
- 230000001174 ascending effect Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000013138 pruning Methods 0.000 description 2
- 241001417516 Haemulidae Species 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99932—Access augmentation or optimizing
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.
- 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.
- 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.
- 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.
- 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
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)
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)
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 |
-
1986
- 1986-06-06 US US06/871,637 patent/US4774657A/en not_active Expired - Fee Related
-
1987
- 1987-04-28 EP EP87106180A patent/EP0252234B1/de not_active Expired - Lifetime
- 1987-04-28 DE DE3788750T patent/DE3788750T2/de not_active Expired - Fee Related
- 1987-05-29 JP JP62132019A patent/JPH0673136B2/ja not_active Expired - Lifetime
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 |