DE69401662T2 - Datenbankstrukturen - Google Patents
DatenbankstrukturenInfo
- Publication number
- DE69401662T2 DE69401662T2 DE69401662T DE69401662T DE69401662T2 DE 69401662 T2 DE69401662 T2 DE 69401662T2 DE 69401662 T DE69401662 T DE 69401662T DE 69401662 T DE69401662 T DE 69401662T DE 69401662 T2 DE69401662 T2 DE 69401662T2
- Authority
- DE
- Germany
- Prior art keywords
- index
- node
- subspace
- level
- external boundary
- 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
- 238000005192 partition Methods 0.000 claims description 80
- 238000000034 method Methods 0.000 claims description 16
- 238000013479 data entry Methods 0.000 claims description 15
- 238000009826 distribution Methods 0.000 claims description 14
- 230000014509 gene expression Effects 0.000 claims description 14
- 230000008569 process Effects 0.000 claims description 6
- 238000013500 data storage Methods 0.000 claims description 2
- 238000007726 management method Methods 0.000 claims description 2
- 238000010276 construction Methods 0.000 description 8
- 238000000638 solvent extraction Methods 0.000 description 8
- 239000008186 active pharmaceutical agent Substances 0.000 description 6
- 230000006978 adaptation Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 238000003780 insertion Methods 0.000 description 4
- 230000037431 insertion Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000013499 data model Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000010845 search algorithm Methods 0.000 description 2
- 240000004759 Inga spectabilis Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000002730 additional effect Effects 0.000 description 1
- 230000005574 cross-species transmission Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000001575 pathological effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012546 transfer 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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+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/953—Organization of data
- Y10S707/956—Hierarchical
-
- 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/964—Database arrangement
- Y10S707/966—Distributed
- Y10S707/967—Peer-to-peer
- Y10S707/968—Partitioning
-
- 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
-
- 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/99941—Database schema or data structure
- Y10S707/99942—Manipulating data structure, e.g. compression, compaction, compilation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)
- Holo Graphy (AREA)
- Photoreceptors In Electrophotography (AREA)
Description
- Die Erfindung betrifft Datenbankstrukturen und insbesondere hierarchische Indexstrukturen zur Verwendung in Datenbankstrukturen, Verfahren zur Verwendung bei der Indexierung eines Datenraumes und Verfahren zum Suchen bzw. Recherchieren in Datenbankstrukturen. Ferner bezieht sich die Erfindung auf das elektronische Speichern einer n-dimensionalen Gesamtheit in Form eines n-dimensionalen Datenraumes in einem eindimensionalen Speicher eines Computers, und/oder das Übertragen und Wiederauffinden der n-dimensionalen Ganzheit in den oder aus dem Speicher des Computers.
- Räumliche Informationen können im Speicher eines Computers gespeichert werden. Eine räumliche Information besteht im wesentlichen aus Punkten in einem n- dimensionalen Datenraum. Beispielsweise können die Punkte Koordinaten der Mittelpunkte von Objekten auf einer Karte in zwei Dimensionen, oder aber die Orte eines Flugzeuges in einem dreidimensionalen Luftraum sein. Dieser Positionsinformation kann eine zusätzliche Information zugeordnet sein, die das Objekt an dem Ort - z.B. der Art eines Kartenobjektes, oder dem Rufzeichen und der Geschwindigkeit eines Flugzeuges - beschreiben.
- In klassischer Weise sind Datenstrukturen in Datenbanksystemen auf Aufzeichnungen mit fester Struktur oder auf Tupel beschränkt. Die Struktur eines Tupels ist ein Satz von Feldern oder Attributen. Die Arten der Attribute sind auf wenige einfache Typen beschränkt, z.B. auf reell, ganzzahlig und kettenförmig.
- Um einen Index zu einem Satz von Aufzeichnungen zu bauen, wird angenommen, daß alle Teile des Satzes die gleiche Struktur haben. Ein Schlüsselwert muß jedem von ihnen zugeordnet werden. Dieser Wert kann für die Aufzeichnung einmalig sein oder auch nicht. Im Prinzip kann dies der direkte Wert eines einzelnen Attributs oder mehrerer Attribute sein, oder er kann durch einen bestimmten Umwandlungsvorgang an einem oder mehreren Attributen erzeugt werden. Die Einheit des Speicheraufrufens für die Daten und den Index im Hauptspeicher oder im Sekundärspeicher ist eine Seite, und diese Seite ist praktisch gleichbleibend eine feste Größe.
- Die Erfindung betrifft einen hierarchischen Index, der die Form einer Baumstruktur hat. Eine Baumstruktur setzt sich im allgemeinen aus einem Wurzelknoten, Zweigknoten und Blattknoten zusammen. In konventioneller Weise wird der Baum in invertierter Form dargestellt, d.h. mit der Wurzel oben. Ein den Baum durchsetzender Pfad wird durch die Folge von Knoten, die längs des Pfades vorhanden sind, definiert. Die Höhe des Baumes entspricht der Länge des längsten direkten Pfades, der von der Wurzel bis zum Blatt durchlaufen wird. Das Ausgangsauffächerungs-Verhältnis ist die Anzahl von Zweigen, die von einem Knoten in Richtung der Blätter führen. Dieses Verhältnis hat üblicherweise einen Bereich von zulässigen Werten, abhängig von den Einzelheiten des Designs und der Anwendung. Die Begrenzungen dieses Bereiches sind für alle Indexknoten die gleichen.
- Die am besten bekannte und am meisten verwendete hierarchische Struktur zum dynamischen Indexieren eines Satzes von Aufzeichnungen in einer Datenbank ist der B- Baum. Der B-Baum nimmt den Wert eines einzelnen Attributs in einer Aufzeichnung, oder die lexikalische Verkettung verschiedener Attribute, wie den Indexschlüssel, an. Jeder Indexknoten entspricht einer Speicherseite und enthält einen geordneten Satz von Indexschlüsseln. Der Index ist als eine Hierarchie von Indexschlüsseln aufgebaut: Bei jedem bestimmten Pegel des Baumes enthält jeder Knoten einen geordneten Satz von Schlüsselwerten, und jedem Schlüssel ist ein Hinweis auf einen Knoten bei dem Indexpegel darunter zugeordnet. Jeder Schlüssel stellt eine obere (oder untere) Bindung an die Schlüsselwerte dar, die in dem Knoten gespeichert sind, auf den er hinweist. Bei dem niedrigsten Indexpegel weisen die Schlüssel auf die Datenseiten hin, die Aufzeichnungen innerhalb der durch die Indexschlüssel mit niedrigstem Pegel definierten Bereiche enthalten.
- Wenn das Einführen einer zusätzlichen Aufzeichnung zur Folge hat, daß eine Datenseite überfließt, wird
- 1. die Seite in zwei Seiten um den mittleren Wert des Indexschlüssel-Attributs oder der Schlüsselindex-Attribute aufgeteilt,
- 2. eine Kopie des mittleren Schlüsselattribut-Wertes wird zusammen mit einem zusätzlichen Hinweis auf die neue Seite in den Indexblattknoten eingeführt, der den Hinweis auf die ursprüngliche Seite enthält. Ein Indexknoten besteht somit aus [Schlüssel-, Hinweis-] Paaren, die in der Reihenfolge des Schlüsselwertes gespeichert sind [Plus einem zusätzlichen Hinweis für die Unterteilung im extremen oberen oder unteren Bereich].
- Wenn das Einführen in einen Indexknoten ein Überfließen zur Folge hat, wird der Indexknoten in ähnlicher Weise un seinen mittleren Schlüsselwert geteilt, und eine Kopie wird nach oben zusammen mit einem Hinweis auf die neu geschaffene Indexseite geschickt.
- Im ungünstigsten Fall kann eine einzige Einführung einer Datenaufzeichnung eine Kette von Überläufen und Einfügungen bis zu und einschließlich der Wurzel des Indexbaums auslösen. Wenn die Wurzel geteilt wird, wird eine neue Wurzel erzeugt und die Höhe des Indexbaumes nimmt um eins zu. Auf diese Weise wächst ein baumstrukturierter Index nach oben (d.h. ein invertierter Baum), wenn die Anzahl von Datenseiten zunimmt.
- Wenn alle Indexseiten die gleiche Größe haben, und wenn die maximale Anzahl von Schlüsseleingaben in jeder Indexseite den Wert F (das Ausgangsauffächerungs-Verhältnis), hat jeder Pegel des Index maximal das F-fache der Indexseiten wie der Pegel darüber, und es sind maximal F-mal soviele Datenseiten vorhanden wie Seiten in dem niedrigsten Indexpegel. Da sowohl Daten- als auch Indexseiten an ihren mittleren Werten gespalten sind, beträgt die Okkupanz im ungünstigsten Fall 50%, der statistische Mittelwert für den gesamten Index ist jedoch etwa 69%.
- Die B-Baum-Struktur weist eine Reihe von attraktiven Eigenschaften auf, was der Grund dafür ist, daß diese Struktur praktisch überall für eine dynamische Indexierung in Datenbanksystemen verwendet wird. Insbesondere sind diese Eigenschaften:
- 1. Der Baum ist immer exakt abgeglichen, d.h., daß für eine bestimmte Größe des Baumes jeder direkte Pfad von der Wurzel zum Blatt die gleiche Länge hat;
- 2. wenn der volle Schlüssel einer individuellen Aufzeichnung spezifiziert wird (eine exakte Anpassungs-Abfrage), kann die Aufzeichnung immer über einen direkten Pfad von der Wurzel zum Blatt zugegriffen werden. Die Zugriffszeit für eine einzelne Aufzeichnung ist für eine gegebene Baumgröße konstant und vorhersagbar;
- 3. die Länge des direkten Pfades von der Wurzel zum Blatt nimmt nur logarithmisch in der Gesamtzahl von indexierten Aufzeichnungen zu, so daß z.B. ein fünfpegeliger Index ausreicht, um mehrere Terabytes von Daten zu indexieren;
- 4. die maximale Aktualisierungszeit für das Einführen oder Löschen einer einzigen Aufzeichnung ist ebenfalls logarithmisch in der Gesamtanzahl von indexierten Aufzeichnungen;
- 5. es ist eine garantierte minimale Inanspruchnahme (50%) der Daten- und Indexseiten gegeben;
- 6. die maximale Größe des Index ist stets direkt proportional der Menge an Daten;
- 7. alle vorstehend beschriebenen Eigenschaften werden sowohl beim Löschen als auch beim Einführen gesichert, d.h., die Leistung der Struktur nimmt nicht mit der Benutzung ab - sie ist voll dynamisch.
- Viele Jahre lang haben Forscher versucht, eine Struktur zu finden, die die Eigenschaften des B-Baumes auf n Dimensionen verallgemeinert, d.h. einen Index bei n Attributen einer Aufzeichnung anstelle von einem. In idealer Weise sollte ein solcher Index die Eigenschaft haben, daß dann, wenn Werte für m aus n Schlüsselattributen spezifiziert werden (eine Teilanpassungs-Abfrage), die Zeit zum Auffinden aller Aufzeichnungen, die diese Kombination erfüllen, die gleiche sein soll, unabhängig davon, welche Kombination von m aus n gewählt wird.
- Um dies zu erreichen, muß der Index symmetrisch in n Dimensionen sein. Es besteht dabei nicht mehr eine direkt definierte Ordnung zwischen den individuellen Aufzeichnungen nach ihren (Einzelschlüssel) Attributwerten. Jede Aufzeichnung muß als ein Punkt in einem n-dimensionalen Datenraum angesehen werden, der das kartesische Produkt der Domänen der n Index-Attribute ist.
- Eine n-dimensionale Verallgemeinerung des B-Baumes muß diesen Datenraum in Teilräume oder Bereiche so trennen, daß die Eigenschaften des B-Baumes, wie sie vorstehend angegeben sind, erhalten bleiben. Insbesondere entspricht jeder Bereich einer Datenseite, und der Index stellt eine rekursive Unterteilung der Datenbereiche in Indexbereiche höheren Pegels dar.
- Um eine Symmetrie in den n Dimensionen im Sinne der vorstehenden Definitionen zu erzielen, wird die folgende zusätzliche Eigenschaft benötigt:
- 8. die Anzahl von rekursiven Unterteilungen des Datenraumes, die zum Definieren der Grenzen eines jeden Datenbereiches erforderlich sind, soll (so weit wie möglich) in jeder Dimension die gleiche sein.
- Für die Effizienz des Index ist es ferner wichtig, daß die folgenden Eigenschaften beibehalten werden:
- 9. die räumliche Verteilung der Datenbereiche soll so weit wie möglich der räumlichen Verteilung der Datenpunkte entsprechen;
- 10. die räumliche Verteilung der Indexbereiche bei jedem Pegel des Indexbaumes soll so weit wie möglich der räumlichen Verteilung beim nächst niedrigeren Pegel, und dem der Datenbereiche entsprechen;
- 11. die Darstellung von Leerraum soll minimiert werden.
- Es hat sich als extrem schwierig herausgestellt, alle diese Forderungen zu erfüllen. Wie sich aus der großen Anzahl von Vorschlägen, die in den vergangenen Jahren gemacht worden sind, ergibt, wurden erhebliche Fortschritte erzielt, es verbleibt jedoch bei den heutigen Konstruktionen eine zugrundeliegende Inflexibilität, und vor vorliegender Erfindung gab es keine Lösung, die für pathologische Fälle nachweisbar geeignet wäre.
- Einer der früheren Vorschläge ist eine mehrdimensionale Datei-Struktur, die als BANG- Datei (Balanced And Nested Grid file) bekannt ist. Hierzu wird beispielsweise auf "The BANG file: a new kind of grid file" von M W Freeston in Proc. ACM SIGMOD, Conference San Francisco, Juni 1987, oder "Advances in the design of the BANG file" von M W Freeston, Third International Conference on Foundations of Data Organisation and Algorithms, Paris, Juni 1989 hingewiesen. Die BANG-Datei hat ein baumstrukturiertes Inhaltsverzeichnis, das die selbstabgleichende Eigenschaft eines B-Baumes hat und das ermöglicht, daß Datenraum- und Indexbereiche ineinander verschachtelt werden. Die BANG-Datei paßt sich gut ungleichförmigen Datenverteilungen an, sie kann jedoch nicht garantierte Leistungseigenschaften in allen Fällen sicherstellen.
- Die Schwierigkeit besteht darin, wie die Tupels, die durch die Punkte in einem kleinen n-dimensionalen Datenraum dargestellt sind, einem Satz von Datenblöcken (oder Seiten) in einer Datei zugeordnet werden sollen. Geometrisch ausgedrückt bedeutet dies, daß der Datenraum in einen Satz von Hyperrechtecken oder Blockbereichen unterteilt werden, von denen jedes einer Diskettenseite entspricht. Um die Speicherleistung der Datei zu maximieren, müssen die Anzahl dieser Bereiche und die Positionen ihrer Grenzen so ausgelegt werden, daß jede entsprechende Diskettenseite eine hohe Datenokkupanz hat.
- In der BANG-Datei werden Datenseiten über ein mehrpegeliges Inhaltsverzeichnis von Blockbereichen zugegriffen, die in der gleichen Datei wie die Daten gespeichert sind. Wenn das Einführen eines Tupel in die Datei bewirkt, daß ein Diskettenblock überfließt, werden die Diskettenseite und der entsprechende Bereich in zwei aufgespalten, und das Inhaltsverzeichnis wird aktualisiert. Die Teilungsstrategie ist erforderlich, um eine "beste Balance" zu erzielen, d.h. die nächstmögliche Balance zwischen den Besetzungen der beiden resultierenden Bereiche. Die BANG-Datei unterteilt den Datenraum durch eine Folge von binären Teilungen, in denen die Dimension, die für die nächste Teilung ausgewählt wird, entsprechend einer vorbestimmten Reihenfolge des periodischen Durchlaufens aller Dimensionen gewählt wird. Während die gleiche Teilungsfolge über den gesamten Datenraum vorgenommen wird, wird der Teilungsbetrieb selektiv auf individuelle Blockbereiche angewendet. Die Teilungen können im Prinzip eine beliebige Form innerhalb der Restriktionen der folgenden Axiome haben:
- Axiom 1: Keine Teilungsgrenze darf sich selbst schneiden,
- Axiom 2: Es dürfen sich keine zwei Teilungsgrenzen schneiden.
- Insbesondere kann eine Teilung eine andere Teilung einschließen, d.h., sie können "verschachtelt" sein.
- Aufgabe der Erfindung ist es, eine Datenbankstruktur, insbesondere eine hierarchische Indexstruktur zur Verwendung in der Datenbankstruktur zu schaffen, die ermöglicht, daß n-dimensionale Informationen in den eindimensionalen Speicher eines Computers (d.h. eines Speichers, der aus einer linearen Folge von Seiten besteht) abgebildet werden, und die umgekehrt ein wirksames Wiederauffinden von Informationen aus dem Speicher ergeben, der sich auf einen speziellen Punkt im n-dimensionalen Datenraum bezieht.
- Gemäß der Erfindung ist ein Computer-Datenspeicher-Managementsystem mit einem Speicher, der eine hierarchische Datenstruktur verwendet, die die rekursive Unterteilung eines Datenraumes in zusammenhängende oder disjunkte Teilräume darstellt, derart, daß die externe Begrenzung eines jeden Teilraumes die externe oder interne Begrenzung eines beliebigen anderen Teilraumes auf dem gleichen oder einem anderen Pegel der rekursiven Unterteilung nicht schneidet, jedoch die externe Begrenzung des anderen Teilraumes einschließen oder teilweise damit zusammenfallen kann, bei dem die Datenstruktur-Hierarchie eine Vielzahl von Knoten einschließlich eines Wurzelknotens, einer Vielzahl von Zweigknoten und einer Vielzahl von Blattknoten aufweist,
- jeder Knoten in der Datenstruktur-Hierarchie einen Teilraum bei entsprechendem oder niedrigerem Pegel in der entsprechenden rekursiven Teilhierarchie darstellt,
- der Wurzelknoten den gesamten Datenraum darstellt,
- jeder Knoten mit tieferem Pegel einen Teilraum des durch einen entsprechenden Vorgängerknoten oder einen Teilraum des durch einen Nachkommen des entsprechenden Vorgängerknotens dargestellten Raumes darstellt, wobei jeder Knoten mit niedrigerem Pegel einen Nachfolgerknoten aufweist,
- die Zweigknoten in der hierarchischen Datenstruktur Indexknoten und die Blattknoten Datenknoten sind,
- jeder Datenknoten entweder einen Satz von Dateneingaben oder einen Satz von Hinweisadressen enthält, wobei die Bezugsdateneingaben anderswo gespeichert sind,
- jede Dateneingabe einen Wert oder Satz von Werten enthält, die direkt oder indirekt die Koordinaten eines Punktes spezifiziert, der die Dateneingabe im Datenraum darstellt,
- jeder Indexknoten einen Satz von Indexeingaben enthält,
- jede Indexeingabe eindeutig einem der Nachfolger des Indexknotens entspricht, der die Indexeingabe enthält, wobei jeder Indexeingabe zugeordnet ist
- (i) eine entsprechende Hinweisadresse, die sich auf die logische Adresse des Nachfolgerknotens entsprechend der Indexeingabe bezieht, und
- (ii) ein Wert oder Satz von Werten, der direkt oder indirekt die externe Begrenzung des durch die Indexeingabe dargestellten Teilraumes festlegt,
- dadurch gekennzeichnet, daß
- eine Knotenpromotion bzw. Knotenbeförderung als ein Resultat von Knotenüberläufen aufgrund der Einführung von zusätzlichen Informationen in den Speicher auftreten kann, ein nicht geförderter Knoten ein Knoten ist, der auf dem gleichen Pegel in der Datenstruktur-Hierarchie wie der Pegel des Teilraumes steht, den er in der entsprechenden rekursiven Teilungshierarchie darstellt, und ein geförderter Knoten ein Knoten ist, der auf einem höheren Pegel in der Datenstruktur-Hierarchie als der Pegel des Teilraumes steht, den er in der entsprechenden rekursiven Teilungshierarchie darstellt,
- der Teilraum, der durch einen Nachfolgerknoten dargestellt ist, welcher auf einen entsprechenden Knoten gefördert ist, der ein Teilraum der Summe aller Teilräume ist, der durch einen nicht geförderten Nachfolgerknoten des entsprechenden Knotens dargestellt ist,
- und dadurch gekennzeichnet ist, daß
- (i) bei der Einführung der zusätzlichen Informationen in den Speicher und eines resultierenden Überlaufes eines Indexknotens der Indexknoten in zwei resultierende Indexknoten durch Unterteilen des Raumes, den der Indexknoten darstellt, in zwei Teilräume aufgeteilt wird, wobei die Unterteilung entweder so beschaffen ist, daß die Anzahl von Indexeingaben in die beiden resultierenden Indexknoten so nahe einer Gleichheit wie möglich ist, oder entsprechend einem vorbestimmten Abgleichkriterium in der Verteilung der Indexeingaben zwischen den beiden resultierenden Indexknoten liegt, wobei die beiden resultierenden Indexknoten auf dem gleichen Pegel der Datenstruktur- Hierarchie wie der Indexknoten, von dem sie erzeugt wurden, angeordnet sind und jeder resultierende Indexknoten als Vorgänger den Vorgänger des Indexknotens hat, von welchem er erzeugt worden ist, und
- (ii) wenn die externe Begrenzung eines der beiden Teilräume, die durch die resultierenden Indexknoten dargestellt sind, durch die externe Begrenzung des anderen der beiden Teilräume umschlossen ist, und, wenn keine
- Indexeingabe in dem Indexknoten einen Teilraum darstellt, dessen externe Begrenzung mit der umschlossenen externen Begrenzung zusammenfällt, im Indexknoten jedoch eine nicht geförderte oder geförderte Indexeingabe vorhanden ist, die einen Teilraum darstellen, dessen externe Begrenzung direkt die umschlossene externe Begrenzung umschließt,
- dann die nicht geförderte oder geförderte Indexeingabe an den Vorgänger des Indexknotens gefördert wird,
- die externe Begrenzung eines ersten Teilraumes direkt die externe Begrenzung eines zweiten Teilraumes umschließt, wenn bei dem gleichen rekursiven Teilungspegel kein dritter Teilraum vorhanden ist, dessen externe Begrenzung durch die externe Begrenzung des ersten Teilraumes umschlossen ist und dessen externe Begrenzung die externe Begrenzung des zweiten Teilraumes umschließt,
- daß jeder Indexknoteneingabe eine Anzeige des Pegels in der Hierarchie von rekursiven Teilungen des Datenraumes des durch die Eingabe dargestellten Teilraumes zugeordnet ist, und
- daß die innere Begrenzung des Teilraumes, die durch eine Indexeingabe dargestellt ist, implizit durch das Vorhandensein einer oder mehrerer anderer Indexeingaben im Index definiert ist, die dem gleichen oder einem höheren rekursiven Teilungspegel zugehören und von denen jeder einen Teilraum darstellt, den die externe Begrenzung des Teilraumes, die durch die Indexeingabe dargestellt ist, direkt umschließt.
- Nach einem anderen Aspekt der Erfindung wird ein computergestütztes Verfahren zum Verwenden bei der Indexierung eines Datenraumes, der eine Datenbank für mehrdimensionale Informationen umfaßt, wobei das Indexieren eine hierarchische Struktur hat und der Datenraum rekursiv in Teilräume unterteilt ist, bei denen die entsprechenden Indexeingabeknoten in einem Indexbaum angeordnet sind, vorgeschlagen, daß
- bei der Einführung von zusätzlichen Informationen ein Indexeingabeknoten zum Überlaufen gebracht wird, der in zwei resultierende Indexknoten aufgeteilt wird, indem der Raum, den der Indexknoten darstellt, in zwei Teilräume geteilt wird und diese Unterteilung entweder so vorgenommen wird, daß die Anzahl von Indexeingängen in die beiden resultierenden Indexknoten so nahe wie möglich gleich ist, oder in Übereinstimmung mit einem vorbestimmten Abgleichkriterium in der Verteilung der Indexeingänge zwischen den beiden resultierenden Indexknoten liegt,
- die beiden resultierenden Indexknoten auf dem gleichen Pegel des Indexbaumes wie der Indexknoten, aus dem sie hervorgegangen sind, angeordnet sind und jeder resultierende Indexknoten als Vorgänger den Vorgänger des Indexknotens hat, aus dem er hervorgegangen ist,
- dann, wenn die externe Begrenzung eines der beiden Teilräume, der durch die resultierenden Indexknoten dargestellt wird, von der externen Begrenzung des anderen der beiden Teilräume umschlossen ist, und wenn keine Indexeingabe in den Indexknoten einen Teilraum darstellt, dessen externe Begrenzung mit der umschlossenen externen Begrenzung zusammenfällt, im Indexknoten jedoch eine nicht geförderte oder eine geförderte Indexeingabe vorhanden ist, die einen Teilraum darstellt, dessen externe Begrenzung direkt die umschlossene externe Begrenzung einschließt, dann die nicht geförderte oder geförderte Indexeingabe auf den Vorgänger des Indexknotens gefördert wird, wobei eine nicht geförderte Indexeingabe eine Indexeingabe ist, die auf dem gleichen Pegel in der Datenstruktur-Hierarchie steht wie der Pegel des Teilraumes, den er in der entsprechenden rekursiven Teilungs-Hierarchie darstellt, und eine geförderte Indexeingabe eine Indexeingabe ist, die auf einem höheren Pegel in der Datenstruktur- Hierarchie steht als der Pegel des Teilraumes, den er in der entsprechenden rekursiven Teilungs-Hierarchie darstellt, und die externe Begrenzung eines ersten Teilraumes direkt die externe Begrenzung eines zweiten Teilraumes umschließt, wenn auf dem gleichen rekursiven Teilungspegel kein dritter Teilraum vorhanden ist, dessen externe Begrenzung durch die externe Begrenzung des ersten Teilraumes umschlossen ist, und dessen externe Begrenzung die externe Begrenzung des zweiten Teilraumes umschließt, und daß jede neu gewonnene Indexeingabe mit dem Pegel des Teilraumes markiert wird, den sie in der rekursiven Teilungshierarchie darstellt, wodurch die Anzeige von Indexeingaben erleichtert wird, die auf höheren Pegeln im Indexbaum stehen als der Pegel in der rekursiven Teilungs-Hierarchie, dem sie entsprechen.
- Gegenstand der Erfindung ist ferner ein Verfahren zum Durchsuchen eines Computerspeichers mit einer hierarchischen Datenstruktur, die die rekursive Unterteilung eines Datenraumes einer Vielzahl von Dimensionen in zusammenhängende oder disjunkte Teilräume darstellt, und die so ausgelegt ist, daß die externe Begrenzung eines beliebigen Teilraumes die externe oder interne Begrenzung eines beliebigen anderen Teilraumes auf dem gleichen oder einem anderen Pegel rekursiver Unterteilung nicht schneidet, jedoch die externe Begrenzung eines solchen anderen Teilraumes umschließen oder teilweise damit zusammenfallen kann, wobei die Datenstruktur-Hierarchie eine Mehrzahl von Knoten einschließlich eines Wurzelknotens, einer Mehrzahl von Zweigknoten und einer Mehrzahl von Blattknoten in einer Baumstruktur aufweist,
- jeder Knoten in der Datenstruktur-Hierarchie einen Teilraum mit einem entsprechenden oder niedrigeren Pegel in der jeweiligen rekursiven Teilungs-Hierarchie darstellt,
- der Wurzelknoten den gesamten Datenraum darstellt,
- jeder Knoten mit niedrigerem Pegel einen Teilraum des Raumes, der durch einen entsprechenden Vorgängerknoten dargestellt ist, oder einen Teilraum des Raumes, der durch einen Nachkommen des jeweiligen Vorgängerknotens dargestellt wird, darstellt,
- und jeder Knoten mit niedrigerem Pegel einen Nachfolgerknoten umfaßt, wobei ein nicht geförderter Knoten ein Knoten ist, der auf dem gleichen Pegel in der Datenstruktur-Hierarchie wie der Pegel des Teilraumes steht, den er in der entsprechenden rekursiven Teilungs-Hierarchie darstellt, und ein geförderter Knoten ein Knoten ist, der auf einem höheren Pegel in der Datenstruktur-Hierarchie steht als der Pegel des Teilraumes, den er in der rekursiven Teilungs-Hierarchie darstellt, wobei eine Beförderung (Promotion) als Ergebnis von Knotenüberläufen aufgrund der Einführung von zusätzlichen Informationen in den Speicher auftritt,
- der durch einen Nachfolgerknoen dargestellte Teilraum, der auf einen entsprechenden Knoten gefördert wird, ein Teilraum der Summe aller Teilräume ist, die durch nicht geförderte Nachfolger des entsprechenden Knotens dargestellt sind,
- die Zweigknoten in der hierarchischen Datenstruktur Indexknoten und die Blattknoten Datenknoten sind,
- jeder Datenknoten entweder einen Satz von Dateneingaben oder einen Satz von Hinweisadressen enthält, die anderswo gespeicherte Dateneingaben betreffen; jede Dateneingabe einen Wert oder Satz von Werten enthält, der direkt oder indirekt die Koordinaten eines Punktes spezifiziert, die die Dateneingabe in den Datenraum darstellen,
- jeder Indexknoten einen Satz von Indexeingaben enthält,
- wobei
- (i) bei Einführung der zusätzlichen Information in den Speicher und resultierendem Überlauf eines Indexeingabeknotens dieser Indexeingabeknoten in zwei resultierende Indexknoten dadurch geteilt wird, daß der Raum, der den Indexknoten darstellt, in zwei Teilräume unterteilt wird, wobei diese Unterteilung entweder so vorgenommen ist, daß die Anzahl von Indexeingaben in den beiden resultierenden Indexknoten so nahe wie möglich gleich ist, oder in Übereinstimmung mit einem vorbestimmten Abgleichkriterium in der Verteilung der Indexeingaben zwischen den beiden resultierenden Indexknoten ist, wobei die beiden resultierenden Indexknoten auf dem gleichen Pegel der Datenstruktur-Hierarchie wie der Indexknoten, aus dem sie gewonnen wurden, stehen, und jeder resultierende Indexknoten als Vorgänger den Vorgänger des Indexknotens hat, aus dem er hervorgegangen ist, und
- (ii) wenn die externe Begrenzung eines der beiden Teilräume, der durch die resultierenden Indexknoten dargestellt ist, durch die externe Begrenzung des anderen der beiden Teilräume umschlossen ist, und wenn keine Indexeingabe im Indexknoten einen Teilraum darstellt, dessen externe Begrenzung mit der umschlossenen externen Begrenzung zusammenfällt, jedoch im Indexknoten eine nicht geförderte oder geförderte Indexengabe vorhanden ist, die einen Teilraum darstellt, dessen externe Begrenzung direkt die umschlossene externe Begrenzung einschließt,
- die nicht geförderte oder geförderte Indexeingabe dann an den Vorgänger des Indexknotens gefördert wird,
- jede Indexeingabe eindeutig dem einen der Nachfolger des Indexknotens entspricht, der die Indexeingabe enthält, wobei jeder Indexeingabe zugeordnet ist:
- (i) eine entsprechende Hinweisadresse, die sich auf die logische Adresse des Nachfolgerknotens entsprechend der Indexeingabe bezieht,
- (ii) eine Anzeige des Pegels des durch die Eingabe dargestellen Teilraumes in der Hierarchie von rekursiven Unterteilungen des Datenraumes, und
- (iii) ein Wert oder ein Satz von Werten, der direkt oder indirekt die externe Begrenzung des durch die Indexeingabe dargestellten Teilraumes definiert,
- und die interne Begrenzung des Teilraumes, der durch eine Indexeingabe dargestellt wird, implizit durch das Vorhandensein im Index einer oder mehrerer anderer Indexeingaben definiert ist, die den gleichen oder höheren rekursiven Unterteilungspegeln zugehören und von denen jeder einen Teilraum darstellt, den die externe Umgrenzung des durch die Indexeingabe dargestellten Teilraumes direkt umschließt,
- die externe Begrenzung eines ersten Teilraumes direkt die externe Begrenzung eines zweiten Teilraumes umschließt, wenn bei dem gleichen rekursiven Teilungspegel kein dritter Teilraum vorhanden ist, dessen externe Begrenzung durch die externe Begrenzung des ersten Teilraumes umschlossen ist, und dessen externe Begrenzung die externe Begrenzung des zweiten Teilraumes umschließt,
- das dadurch gekennzeichnet ist, daß
- schrittweise die rekursive Teilungs-Hierarchie nach dem kleinsten Teilraum durchsucht wird, die einen Punkt im Datenraum einschließt, der den gesuchten Informationsausdruck darstellt,
- die Suche durch schrittweises Rekonstituieren der relevanten Knoten in der rekursiven Teilungs-Hierarchie aus der entsprechenden Index-Hierarchie während des Suchvorganges erreicht wird,
- an dem Wurzelknoten des Indexbaumes begonnen wird, wobei die nicht geförderten Indexeingänge im Indexknoten nach einer nicht geförderten Indexeingabe durchsucht werden, die einen Teilraum darstellt, der direkt den den gesuchten Informationsausdruck darstellenden Punkt umschließt,
- für den Fall, daß keine solche, nicht geförderte Indexeingabe im Indexknoten festgestellt wird, die Suche als ergebnislos abgebrochen wird,
- für den Fall, daß eine solche nicht geförderte Indexeingabe festgestellt wird, die geförderten Indexeingaben im Indexknoten nach den geförderten Indexeingaben durchsucht werden, die entsprechend einen Teilraum darstellen, der direkt den Punkt umschließt, der den gesuchten Informationsausdruck darstellt,
- eine Kopie einer jeden solchen geförderten Indexeingabe, die direkt den den gesuchten Informationsausdruck darstellenden Punkt umschließt, weitergegeben und um einen Pegel zurückgesetzt wird, sowie zum Zweck der Suche nur mit dem Satz von Indexeingaben im nächsten indexierten, zu untersuchenden Knoten umgeschlossen wird,
- der nächste zu untersuchende Indexknoten der Indexknoten ist, auf den die Hinweisadresse bezogen ist, die der nicht geförderten Indexeingabe zugeordnet ist, welche einen Teilraum darstellt, der direkt den Punkt umschließt, welcher den gesuchten Informationsausdruck darstellt,
- die Anzahl unterschiedlicher Indexknoten, die während des Suchverlaufes für den gesuchten Informationsausdruck betrachtet werden, über eine konstante Gesamtzahl von im Datenraum enthaltenen Informationsausdrücken konstant gehalten wird.
- Ausführungsformen der Erfindung werden nachstehend in Verbindung mit den Zeichnungen erläutert.
- Figuren 1 bis 3 zeigen einen sehr einfachen zweipegeligen Index,
- Fig. 4 zeigt den entsprechenden BV-Baum,
- Fig. 5 zeigt die Organisation und den Inhalt der entsprechenden Speicherseiten;
- Figuren 6 - 15 zeigen verschiedene Definitionen und Axiome;
- Figuren 16a - 16e zeigen eine Folge von Aufteilungen eines Datenraumes (links) und der entsprechenden BV - Indexstruktur (rechts);
- Fig. 16f zeigt die Aufteilung eines geförderten Bereiches,
- Figuren 17 und 18 zeigen zwei Beispiele für eine Suche mit exakter Anpassung und
- Fig. 19 zeigt schematisch ein Computersystem.
- Die schwierige Handhabung des zugrundeliegenden Problems, nämlich die Generalisierung der B-Bäume in n Dimensionen, ist eindeutig auf die erhöhte topologische Komplexität des n-dimensionalen Falls bezogen und wird nachstehend im einzelnen erläutert.
- Zuerst wird jedoch auf die Figuren 1 - 3 bezug genommen, die ein Beispiel für einen sehr einfachen zweipegeligen Index nach der Erfindung darstellen, jedoch auch das Problem in Hinblick auf die Art und Weise zeigen, in der Fig. 2 gezeichnet ist. Ein n- dimensionaler Datenraum ist ein n-dimensionaler Raum, in welchem die Domäne von Werten einer jeden Koordinate der Domäne eines Datenattributs entspricht. Zum Beispiel kann dies im Falle einer Angestellten-Aufzeichnung: Angestellter (Identifiziernummer, Alter) als ein Punkt in einem zweidimensionalen Raum mit Koordinaten, die die Identifiziernummer und das Alter wiedergeben, dargestellt werden. Der Gedanke eines hierarchischen Index ist, den Suchraum innerhalb des gesamten Datenraumes schrittweise zu einzugrenzen. Jeder Pegel des Index unterteilt den Datenraum (oder Teilraum des Datenraumes) in kleinere Unterteilungen. Während die Teilräume eine beliebige Form haben können, sollen sie in der Praxis einfache Formen, z.B. Rechtecke haben, damit man in der Lage ist, eine einfache und kompakte Darstellung für sie zu finden.
- In den Figuren 1 - 3 werden die Teilräume eines zweidimensionalen Datenraumes durch strikte binäre Unterteilung erzeugt, d.h. durch wiederholtes Teilen des Raumes in genau gleiche Hälften in abwechselnden Dimensionen. Wenn die linke oder untere Hälfte einer Teilung durch eine Null dargestellt ist und die rechte oder obere Hälfte durch eine Eins, kann jeder Teilraum durch die Folge von Nullen und Einsen entsprechend der Teilungsfolge, die sie erzeugt hat, identifiziert werden. Ein Teilraum f beispielsweise hat die eindeutige Darstellung 10110.
- Zur Klarstellung sei angenommen, daß die Koordinaten von nur drei Punkten in jeder Speicherseite gespeichert werden können. Für die in Fig. 3 gezeigte Datenverteilung muß der Datenraum in der in Fig. 2 gezeigten Weise in fünf Teilräume unterteilt werden, da jeder Teilraum einer Speicherseite entspricht. Wird ferner angenommen, daß eine Indexseite nicht mehr als die Darstellung von vier Teilräumen in diesem Fall speichern kann, wird ein zweipegeliger Index erforderlich. Die Datenraum-Unterteilung, die der Indexseite mit dem oberen Pegel (Wurzelknoten der Hierarchie) entspricht, ist in Fig. 1 gezeigt. Diese Seite unterteilt den Datenraum in zwei Sätze von zwei Unterteilungen bei dem unteren Indexpegel. Fig. 2 zeigt alle Unterteilungen zusammen bei dem unteren Pegel. Fig. 2 sollte eigentlich in Form von zwei getrennten Diagrammen dargestellt werden, die zwei getrennte Knoten des Index darstellen, wobei einer a und e, und der andere f und g enthält. Dies kennzeichnet das Problem. In welchen der beiden soll d gehen? g ist teilweise in beiden vorhanden. In der BANG-Datei mußte die Unterteilung d in zwei Teile längs der Begrenzung der Teilung y aufgespalten werden. Alle anderen vorher vorgeschlagenen Konstruktionen haben etwas ähnliches getan.
- Die Schwierigkeit beim Aufspalten der Unterteilung d in zwei Teile besteht darin, daß das gesamte Prinzip der "abgeglichenen" Unterteilung verlorengeht. Wie oben erwähnt, muß, wenn eine eine Unterteilung darstellende Seite überläuft, die Unterteilung in zwei geteilt werden, so daß beide sich daraus ergebenden Unterteilungen so weit wie möglich die gleichen Einträge enthalten. Im umgünstigsten Fall kann stets ein Verhältnis von 1 : 2 erhalten werden, wie weiter unten beschrieben wird. Wenn dieses Prinzip nicht unter allen Umständen garantiert werden kann, ist es möglich, Anordnungen auszubilden, bei denen die meisten Unterteilungen nicht mehr als einen einzigen Eintrag enthalten. Die Anzahl von Seiten im Index explodiert dann und ist nicht länger proportional der Anzahl von Einträgen im Index. Somit ist das Prinzip entscheidend für voll vorhersagbare Leistung.
- In dem Beispiel nach Fig. 3 ist, wenn d zu einer Aufspaltung längs der Grenze von y gezwungen wird, keine Garantie gegeben, daß jede der resultierenden aufgespaltenen Unterteilungen mindestens ein Drittel der Einträge enthält, was eine Forderung nach einer praktischen, mehrdimensionalen Anordnung darstellt.
- Die Baumstruktur, die hier vorgeschlagen wird und die als BV-Baum (Abkürzung des Ausdrucks "Begriffsverzeichnis" bzw. Begriffsindex) bezeichnet wird, löst das Problem einfach dadurch, daß eine Unterteilung d um einen Pegel in der Verzeichnishierarchie nach oben geschoben wird, d.h. zu dem Zweigknoten, unterhalb dessen d sonst gespalten werden müßte.
- Fig. 4 zeigt die konzeptionelle Struktur des entsprechenden BV-Baumes. Jedes der beschrifteten Kästchen entspricht einer Speicherseite, und ein Indexzweig entspricht der Adresse der Seite, auf die der Zweig hinweist.
- Es sei jedoch auf ein besonderes Merkmal des BV-Baumes hingewiesen: Der Teilraum d - der direkt einen Teilraum des Datenraumes bei dem unteren Unterteilungspegel darstellt - ist trotzdem auf den höheren Pegel im Verzeichnis befördert worden. Die Gründe hierfür werden weiter unten erläutert.
- Fig. 5 zeigt die eigentliche Organisation und den Inhalt der entsprechenden Speicherseiten.
- Um exakt festzulegen, was mit Unterteilung eines Datenraumes in Teilräume oder Bereiche gemeint ist, ist es notwendig, eine Reihe von Definitionen einzuführen. Hierzu wird zunächst auf die Figuren 6a und 6b verwiesen.
- Ein Punkt X liegt außerhalb einer geschlossenen Begrenzung B in einem Datenraum B, wenn jede gerade Linie unbegrenzte Länge hat, die durch X geht, und B entweder Null-mal oder eine ganze Zahl mal auf jeder Seite von X schneidet.
- Ein Punkt X liegt innerhalb einer geschlossenen Begrenzung B in einem Datenraum D, wenn jede gerade Linie unbegrenzte Länge hat, die durch X geht, und B eine ungerade Zahl mal auf jeder Seite von X schneidet.
- Als nächstes wird Bezug auf die Figuren 7a und 7b genommen.
- Zwei Punkte X und Y liegen auf entgegengesetzten Seiten einer geschlossenen Begrenzung B, wenn eine gerade Linie, die X und Y miteinander verbindet, B eine ungerade Anzahl von Malen schneidet.
- Zwei Punkte X und Y liegen auf der gleichen Seite einer geschlossenen Begrenzung F, wenn eine gerade Linie, die X und Y miteinander verbindet, B entweder Null oder eine gerade Anzahl von Malen schneidet.
- Die Axiome, auf die nachstehend bezug genommen wird, sind in den Figuren 8a und 8b dargestellt.
- Axiom 1. Keine Begrenzung darf sich selbst schneiden.
- Axiom 2. Keine zwei Begrenzungen dürfen sich schneiden.
- Eine geschlossene Begrenzung B umschließt einen Teilraum DS eines Datenraumes D, wenn jeder Punkt X in DS innerhalb der Begrenzung B liegt.
- Eine geschlossene Begrenzung B umschließt ausschließlich einen Teilraum DS eines Datenraumes D, wenn B einen Teilraum DS umschließt und B keinen Punkt, der nicht im Teilraum DS liegt, umschließt.
- Ein Unterteilungsbereich P eines Datenraumes D ist ein Teilraum DS, der ausschließlich durch eine endliche oder unendliche geschlossene Begrenzung B(P) umschlossen wird.
- Der Datenraum D ist selbst ein Unterteilungsbereich, dessen geschlossene Begrenzung B(D) durch die endlichen oder unendlichen oberen und unteren Begrenzungen seiner Datendomänen oder Reichweiten festgelegt wird.
- Ein Unterteilungsbereich Pa umschließt einen Unterteilungsbereich Pb, wenn jeder Punkt in Pb auch innerhalb von Pa liegt. Somit gilt: Pa Pb = Pb und Pa Pb = Pa. (siehe Fig. 9).
- Ein Unterteilungsbereich Pa umschließt direkt einen Unterteilungsbereich Pb, wenn der Bereich Pa den Bereich Pb umschließt und kein anderer Unterteilungsbereich Pc vorhanden ist, der Pb umschließt und der von Pa umschlossen wird (s. Fig. 10).
- Ein Unterteilungsbereich Pa umschließt genau einen Unterteilungsbereich Pb, wenn der Bereich Pc den Bereich Pb umschließt und keine Stelle vorhanden ist, die den Begrenzungen sowohl des Bereiches Pa als des Bereiches Pb gemeinsam ist (siehe Fig. 11a).
- Ein Unterteilungsbereich Pa umschließt tangential einen Unterteilungsbereich Pb, wenn der Bereich Pa den Bereich Pb umschließt, Pa jedoch nicht genau Pb umschließt, d.h. mindestens ein Punkt vorhanden ist, der B(Pa) und B(Pb) gemeinsam ist (siehe Fig. 11b).
- Aus Axiom 2 ergibt sich, daß keine zwei Unterteilungsbereiche Pa und Pb sich schneiden können, wenn nicht einer den anderen umschließt:
- Pa Pb {∅, Pa, Pb}.
- Ein logischer Bereich La ist die Differenz zwischen einem Unterteilungsbereich Pa und dem Satz von Unterteilungsbereichen S = {Pb1, Pb2, ..., Pbn}, den er direkt umschließt:
- Aus dieser Definition folgt, daß ein logischer Bereich aus einem oder mehreren nicht miteinander verbundenen Teilbereichen zusammengesetzt ist, von denen jeder eine oder mehrere innere Begrenzungen wie auch eine externe Begrenzung aufweist (siehe Figuren 12, 13a und 13b).
- Die externe Begrenzung Be (La) eines logischen Bereiches La ist der Satz SB von Begrenzungen, die ausschließlich die m nicht miteinander verbundenen Teilbereiche Lau, u = 1 ..., m umschließen, der La enthält, d.h.:
- Die interne Begrenzung eines logischen Bereiches La ist der Satz von Begrenzungen der Einheit der Unterteilungsbereiche, die Pa direkt und exakt umschließt.
- Nach diesen Definitionen überspannt ein logischer Bereich immer den Raum, den er umschließt, d.h. keine Stelle, die durch einen logischen Bereich umschlossen ist, kann gleichzeitig von einem anderen logischen Bereich umschlossen sein. Im Gegensatz hierzu überspannt ein Unterteilungsbereich im allgemeinen nicht den Raum, den er umschließt. Es ist ferner festzuhalten, daß bei gegebenen zwei Unterteilungsbereichen Pa und Pb, derart, daß daraus, daß der Bereich Pa den Bereich Pb umschließt, nicht notwendigerweise folgt, daß ein logischer Bereich La Pa-Pb den Bereich Lb Pb umschließt.
- Nunmehr wird die Unterteilung der Unterteilungsbereiche betrachtet. In Verbindung mit den Figuren 14a und 14b wird davon ausgegangen, daß ein Datenraum D in einen Satz von n Unterteilungsbereichen Sp = {P&sub1;, P&sub2;, ..., Pn} (Fig. 14a) entsprechend den obigen Definitionen und Axiomen unterteilt ist.
- Es wird ferner unterstellt, daß der Satz Sp selbst in zwei Sätze Spa und Spb unterteilt werden soll, derart, daß Spa und Spb innerhalb der Unterteilungsbereiche Pa und Pb umschlossen sind, d.h.
- Wenn alle Unterteilungsbereiche nicht miteinander verbunden sind, ist es stets notwendig, den Satz vön Unterteilungsbereichen in zwei Hälften zu teilen, d .h. Sp so zu unterteilen, daß die Grundzahlen von Spa und Spb sich nicht um mehr als 1 unterscheiden (Fig. 14b). Wenn jedoch einige Unterteilungsbereiche andere umschließen, ist die Sachlage nicht so klar. Intuitiv kann man feststellen, daß, je mehr nicht miteinander in Verbindung stehende Unterteilungsbereiche vorhanden sind, die Chance, eine Aufteilung von 1:1 zu erzielen, umso besser ist. Der ungünstigste Fall tritt dann auf, wenn keine nicht miteinander in Verbindung stehenden Unterteilungsbereiche vorhanden sind, d.h. jeder Unterteilungsbereich entweder einen anderen umschließt oder von einem anderen umschlossen wird (Fig. 15a). Da nach Axiom 1 Breichsbegrenzungen einander nicht schneiden dürfen, muß der Satz Sb in Sätze unterteilt werden, von denen einer den anderen umschließt (Fig. 15B), d.h.:
- In diesem Fall läuft der Algorithmus zum Auffinden der am besten abgeglichenen Unterteilung wie folgt ab: Es sei angenommen, daß La, Lb Bruchteile f(La) und f(Lb) jeweils der Gesamtanzahl von Unterteilungsbereichen im Datenraum enthalten, d.h. daß gilt f(La) + f(Lb) = 1. Zu Beginn jedoch umschließt La nur den äußersten Teil von Sp, während der übrige Teil von Lb umschlossen wird. Wenn mehr als ein Bestandteil dieses übrigen Teiles durch Lb umschlossen wird (d.h. Pb direkt eine Anzahl von nicht in Verbindung stehenden Unterteilungsbereichen umschließt), und wenn einer dieser umschlossenen Teile Pi selbst mehr als die Hälfte des gesamten Teils von Sp umschließt, wird der Satz Sp neu so positioniert, daß Pb direkt von Pi umschlossen wird.
- Wenn keiner der Unterteilungsbereiche, der direkt von Pb umschlossen wird, mehr als die Hälfte der gesamten Anteils von Sp umschließt, kann es möglich sein, einen besseren Abgleich zwischen La und Lb durch eine weitere Neupositionierung von Pb zu erzielen, die bewirkt, daß ein oder mehrere Teile des Satzes von Lb auf La übertragen werden. Die Komplexität eines solchen Abgleich-Algorithmus ist jedoch exponential in der Größe des Satzes. Das Unterteilungsverhältnis braucht jedoch nie aus dem Rahmen eines den ungünstigsten Fall bildenden Verhältnisses von 2 : 1 zu fallen. Der nachstehende Beweis ergibt auch den Rahmen eines Algorithmus, um dieses Verhältnis aufrecht zu erhalten.
- Gilt f(La) < 1/3, ist f(Lb) > 2/3. Es wird unterstellt, daß Pb begrifflich durch zwei willkürliche Unterteilungsbereiche Pb' und Pb" ersetzt wird. Dann treten zwei getrennte Fälle auf:
- (a) f(Lb') ≤ 2/3 und f(Lb") ≤ 2/3
- (b) f(Lb') > 2/3 oder f(Lb") > 2/3
- In beiden Fällen wird Pb neu positioniert, so daß er mit dem Wert der beiden (begrifflichen) Unterteilungsbereiche Pb' und Pb" zusammenfällt, der den größeren Teil umschließt. Da f(Lb') + f(Lb") > 2/3, muß dieser größere Anteil größer sein als 1/3. Deshalb gilt im Fall (a) 1/3 < f(Lb) < 2/3. Im Falle (b) gilt weiter, daß f(Lb) > 2/3. Pb muß jedoch direkt mehr als einen Teil von S umschließen, weil kein Teil, der Pb direkt umschließt, selbst einen Bruchteil größer als ½ aufweisen kann. Es ist deshalb möglich, den (begrifflichen) Unterteilungsvorgang an Pb zu wiederholen, bis der Fall (a) eintritt - was schließlich eintreten muß, wenn nur ein Teil direkt von Pb umschlossen bleibt.
- Dies ist keinesfalls ein neues Resultat. Vielmehr ist dies eine Folge der Topologie und ist völlig unabhängig von einem besonderen Datenmodell. Der Beweis ist nicht eindeutig klar, daß das Resultat bereits intuitiv offensichtlich ist. Diese Intuition verläßt sich auf topologische Beobachtungen: Ein überlagertes Datenmodell dient üblicherweise nur zur Verschleierung.
- Nunmehr wird die logische Unterteilung bon Bereichen betrachtet. Wenn eine Unterteilungsregion Pa ein Unterteilungsbereich Pb umschließt, und eine weitere Unterteilungsgrenze zwischen denen der anderen beiden eingeführt wird, hat dies keinen Einfluß auf das Ausmaß der Datenräume, die von Pa und Pb umschlossen sind, weil Unterteilungsbereiche vollständig durch ihre (externen) Grenzen definiert sind.
- Im Gegensatz hierzu wird der logische Bereich La geändert, da er eine innere Begrenzung hat, die durch Unterteilungsbegrenzungen definiert ist, die er direkt umschließt (Lb bleibt deshalb unverändert). In der Regel wird, wenn ein neuer Unterteilungsbereich Pb direkt innerhalb Pa eingeführt wird, La in zwei logische Bereiche La' und Lb, wobei gilt La = La' Lb. Letztlich macht die Aufgabenstellung - die Konstruktion eines Index - die Unterteilung eines Datenraumes in einen Satz von sich nicht schneidenden Teilräumen erforderlich, von denen jeder so weit wie möglich eine gleiche Anzahl von Datenpunkten besitzt. Es ist deshalb klar, daß mit den oben gegebenen Definitionen diese Teilräume logische Bereiche sein müssen, da logische Bereiche sich nicht schneiden. Es sei jedoch bemerkt, daß logische Bereiche als Unterteilungsbereiche definiert sind. Es ist deshalb möglich, die Teilbereiche eines Datenraumes entweder direkt als logische Bereiche oder indirekt als Satz von Unterteilungsbereichen darzustellen: Ein Datenpunkt, der in einem bestimmten logischen Bereich liegt, liegt auch zweifelsfrei im Unterteilungsbereich, der den Punkt direkt umschließt. Somit hält in letzterem Fall eine Suche nach einem Targetdatenpunkt einfach Ausschau nach dem kleinsten Unterteilungsbereich, der den Punkt umschließt.
- Das Problem der Darstellung und Indexierung eines Satzes von Objekten mit räumlicher Erstreckung ist nicht betrachtet worden. Es kann jedoch ein fundamentales Problem, das dies aufzeigt, nicht vermieden werden, wenn eine Hierarchie von Teilräumen betrachtet wird, da die Teilräume selbst eine räumliche Erstreckung haben.
- Nunmehr wird die Konstruktion eines hierarchischen Index für die logischen Bereiche des Datenraumes betrachtet. Jeder Zweig- und Blattknoten in dem baumstrukturierten Index repräsentiert einen logischen Bereich und enthält eine Repräsentation des Satzes von logischen Bereichen, die er umschließt. Jedem Bereich ist ein Hinweis auf einen Indexknoten bei dem nächsttieferen Pegel in der Baumstruktur zugeordnet. Die Zweigknoten enthalten Sätze von Bereichen. Der einem logischen Bereich in einem Blattknoten zugeordnete Hinweis zeigt auf einen Datenknoten, der einen Satz von Datenpunkten enthält, die innerhalb dieses logischen Bereiches des Datenraums liegen. (Wenn die Darstellung eines Unterteilungsbereiches gewählt wird, ist jeder Hinweis im Baum einem Unterteilungsbereich anstatt einem logischen Bereich zugeordnet, die Indexknoten stellen jedoch immer noch logische Bereiche dar). Bei der Darstellung des Index sind keine anderen Beschränkungen gegeben, mit der Ausnahme, daß die Zahl von Einträgen in jeden Baumknoten und Datenknoten (das Auffächerungsverhältnis) einen festen oberen Grenzwert F hat.
- Wie bei einem B-Baum verläuft die Suche nach einem Datenpunkt in dem Datenraum von der Wurzel des Baums nach abwärts, es wird bei jedem Indexpegel für den logischen Bereich, der den Punkt umschließt, und dem zugeordneten Hinweis nach unten zum nächsten Pegel folgend gesucht.
- Ebenfalls wie bei einem B-Baum nimmt der Index nach oben zu, wenn die Datenknoten am Boden der Indexhierarchie überlaufen und geteilt werden. Vorausgesetzt, daß alle Datenpunkte eindeutig sind, kann immer eine Unterteilung gefunden werden, die einen überlaufenden Datenknoten in zwei halb volle Knoten unterteilt. Wenn ein Indexknoten überläuft, ist es immer möglich, die logischen Bereiche, die er enthält, in einem Verhältnis nicht kleiner als 1 : 2 zu unterteilen, wie oben nachgewiesen wurde. Diese letztere Eigenschaft ist der allgemeine n-dimensionale Fall, der mit dem 1 : 1 Teilungsverhältnis kontrastiert, das durch den B-Baum im speziellen, eindimensionalen Fall erreicht wird.
- Ein Grundproblem, das mit der Aufteilung der Indexknoten gekoppelt ist, ist jedoch bisher vernachlässigt worden. Obgleich der rekursive Unterteilungsvorgang, der vorstehend beschrieben wurde, keinen der Lehrsätze (Axiome) oder Definitionen, die früher erläutert worden sind, verletzt, wird trotzdem eine Zweideutigkeit (das Verspannungsproblem) eingeführt, wenn ein logischer oder Unterteilungsbereich als ein kontinuierlicher Teilraum interpretiert wird.
- Es sei angenommen, daß der logische Bereich L in zwei Bereiche La und Lb unterteilt werden soll, so daß gilt Pa Pb = Pa. Wenn L einem Datenknoten entspricht, können die Datenpunkte, die innerhalb von Lb liegen, auf einen neuen Knoten, der Lb repräsentiert, übertragen werden. Wenn L jedoch ein logischer Bereich bei einem höheren Indexpegel ist, enthält er einen Satz von logischen Bereichen SL des nächst niedrigeren Pegels. In diesem Fall kann die Grenze von Pb nicht willkürlich lokalisiert werden, da sie leicht eine Grenze eines oder mehrerer der Teile von SL kreuzen kann, wodurch die Beschränkung, daß keine zwei Grenzen einander schneiden dürfen, verletzt würde. Trotzdem ist bekannt, daß es immer möglich ist, eine Position für die Grenze von Pb zu finden, bei der die Größen von SLa und SLb sich nicht durch ein Verhältnis größer als 2 : 1 unterscheiden.
- Es gibt jedoch keine Garantie dafür, daß die Begrenzung von Pb nicht von einem der Teile Pai' von SPa umschlossen ist (beispielsweise können die Grenzen aller Teile von Sp ineinandergeschachtelt sein). Pai muß dann selbst längs der Grenze von Pb unterteilt werden. Wenn Pai selbst einem Indexknoten entspricht, kann die gleiche Situation bei dem nächst niedrigeren Indexpegel wiederholt werden, usw., bis ein Datenknoten erreicht wird - der stets geteilt werden kann, ohne daß eine weitere Kettenreaktion der Unterteilung in Aktion gesetzt wird.
- Die Unterteilungsgrenze der anfangs aufgerufenen Teilung von L ist die Begrenzung, die für alle anschließenden Unterteilungen bei den niedrigeren Indexpegeln verwendet wird, d.h. nur die Position der Anfangsunterteilung kann frei gewählt werden, um das Teilungsverhältnis von 2:1 aufrecht zu erhalten. Es läßt sich zeigen, daß die grundlegenden Axiome nicht verletzt werden, d.h., daß die Unterteilungsgrenze niemals Grenzen von Bereichen bei den niedrigeren Indexpegeln schneiden werden. Es können jedoch ernsthafte Unterteilungs-Ungleichheiten bei den unteren Pegeln auftreten. Ungünstiger ist, daß eine Knotensplittung bei dem unteren Pegel ein Überlaufen in einen Indexknoten darüber auslösen kann, was wiederum eine weitere Kaskade von Abwärts- Splittungen auslösen kann.
- Dies ist eine Bedingung, die auf alle multidimensionalen Indexmethoden zutrifft, die auf abgeglichenen Baumstrukturen basieren. Der größte Teil der Komplexität und Findigkeit in den Konstruktionen zielt auf das Umgehen oder Minimieren dieses Problems ab.
- Wenn ein logischer Bereich L unterteilt wird, wird der Indexknoten, der die Darstellung von L enthält, modifiziert: Die Darstellung von L wird durch die Darstellung von La und Lb vertauscht. Es besteht von Anfang an keine Inkonsistenz innerhalb des Bereiches Lai oder innerhalb eines der Bereiche, die dieser bei niedrigeren Indexwerten umschließt. Es ist lediglich eine Aufspaltung erforderlich, um das korrekte Verhalten des Suchpfades durch den neuen Indexzweig sicherzustellen, der durch Lb geschaffen wird. Es gibt jedoch eine alternative Strategie, nämlich Lai intakt zu belassen und den Suchpfad zu modifizieren.
- Es sei angenommen, daß La und Lb die Sätze von logischen Bereichen Sa und Sb enthalten. Wenn Lai in La' und Lai" längs der Begrenzung von Pb gespalten wird, gilt:
- Dies zeigt, daß Lai nicht gespalten wird, sondern intakt gehalten werden kann, wenn der Suchpfad geändert werden kann, so daß Lai stets gesucht wird, wenn die Suche in La oder Lb kein Ergebnis gebracht hat. Was erforderlich ist, bevor ein Indexknoten entsprechend dem Unterteilungs-Algorithmus aufgespalten wird, ist lediglich, daß der Knoten auf einen Eingang hin durchsucht wird, der eine Unterteilungsbegrenzung Pai repräsentiert, die direkt die Aufteilungs-Begrenzung Pb umschließt. Wenn Pai vorhanden ist, wird sie nicht gespalten, sondern zusammen mit den Einträgen für Pa und Pb auf den obigen Indexpegel befördert. Der Teilbaum von Pai wird damit automatisch befördert. Eine Markierung wird mit dem beförderten Eintrag verbunden, um ihn von einem Eintrag zu unterscheiden, der durch direkte Unterteilung geschaffen worden ist.
- Die Folgen dieser Beförderungspolitik für die Konstruktion eines und den Zugriff zu einem BV-Baum werden in dem folgenden Beispiel entwickelt und demonstriert.
- Die Figuren 16a - 16e zeigen eine Folge von Unterteilungen eines Datenraumes (links) und der entsprechenden BV-Indexstrukturen (rechts). Es werden keine Annahmen über die Form des Datenraumes oder irgendwelcher Teilräume gemacht, in die der Datenraum unterteilt wird, mit der Ausnahme, daß Unterteilungsgrenzen nicht geschnitten werden dürfen. Der Datenraum kann endlich oder unendlich sein.
- Zu Beginn ist ein einziger Unterteilungsbereich vorhanden, der der gesamte Datenraum ist. Konzeptionell werden eine Anzahl von Punkten in diesen Bereich eingesetzt (Fig. 16a). In der Praxis entsprechen diese Punkten Datenaufzeichnungen. Es werden keine Annahmen darüber gemacht, wie die Punkte repräsentiert werden, nur, daß eine maximale Anzahl P in einen beliebigen Unterteilungsbereich eingesetzt werden kann.
- Auf der rechten Seite der Fig. 16a ist ein Datenknoten dargestellt, der den die Punkte enthaltenden Unterteilungsbereich repräsentiert. In der Praxis entspricht dies einer oder mehreren Seiten eines Computerspeichers, in welchem die Aufzeichnungen gespeichert sind.
- Wenn die Anzahl von Punkten, die in einen Unterteilungsbereich eingesetzt werden, den Wert P übersteigt, muß der Bereich in zwei Teilbereiche aufgespalten werden. Es läßt sich zeigen, daß es immer möglich ist, einen überlaufenden Bereich durch zwei neue Bereiche zu ersetzen, von denen jeder mindestens 1/3 der maximalen Anzahl von Punkten P enthält, die in einem einzigen Bereich zugelassen werden.
- Fig. 16b zeigt einen Datenraum nach dem ersten Überlaufen und Teilen. Es ist ein Indexknoten geschaffen worden, der zwei Eingaben enthält, von denen jede ein eindeutiger Schlüssel ist, der einen der Unterteilungsbereiche identifiziert. Jeder Indexknoteneingabe ist eine Hinweismarke auf den Datenknoten zugeordnet, der den Unterteilungsbereich und seine umschlossenen Datenpunkte repräsentiert. Es sind keine Annahmen über die Art und Weise gemacht worden, in der die Identifizierschlüssel der Unterteilungsbereiche erzeugt oder repräsentiert werden. Es wird nur angenommen, daß ein oberer Grenzwert F (das Ausgangsauffächerungsverhältnis) für die Anzahl von Eingaben vorhanden ist, die in einem einzigen Indexknoten aufgezeichnet werden können. Die für die Index-Eingaben gezeigte Reihenfolge hat keine Bedeutung: In der Praxis hängt die jeweils gewählte Reihenfolge von der Form der Repräsentation der Unterteilungsbereich-Schlüssel und der Effizienz von Operationen auf diese Darstellung ab. Der besseren Übersicht wegen sind die Datenpunkte selbst in den nachfolgenden Figuren nicht dargestellt.
- Ohne daß dies einen Verlust an Allgemeingültigkeit bedeutet, sei angenommen, daß das Ausgangsauffächerungs-Verhältnis F der Indexknoten den Wert Vier hat. Fig. 16c zeigt die Situation nach der Erzeugung dreier zusätzlicher Unterteilungsbereiche mit Schlüsseln e, f, g. Dies bewirkt, daß der Indexknoten nach Fig. 16b überläuft. Die Bereiche, die im Knoten mit Schlüsseln a, d, e, f und g repräsentiert sind, werden dann in zwei Bereiche von Bereichen x und y unterteilt, die den Wurzelknoten eines neuen zweipegeligen Index bilden. Der linke Teil der Fig. 6c zeigt die Unterteilungsbereiche, die bei den oberen und unteren Pegeln des Index dargestellt sind.
- Der rechte Teil der Fig. 16c zeigt ferner, daß die Indexsplittung Hand in Hand mit der Beförderung (Promotion) des Eintrags d auf den Pegel darüber gegangen ist. Wenn die Begrenzung einer Teilung (in diesem Fall die Begrenzung des Bereiches y) nicht mit einer vorhandenen Bereichs-Unterteilung zusammenfällt, sondern selbst durch eine oder mehrere Bereichs-Begrenzungen umschlossen ist, wird der Bereich, dessen Begrenzung direkt die Begrenzung der Teilung (in diesem Fall den Bereich d) umschließt, auf den Indexpegel darüber gefördert bzw. angehoben. Wenn d die Wurzel eines Teilbaumes ist, wird der Teilbaum automatisch damit angehoben.
- Während sich kreuzender Operationen an der Baumstruktur werden geförderte Eingaben unterschiedlich von nichtgeförderten Eingaben behandelt. Dabei werden geförderte Eingaben als solche gekennzeichnet. Diese Kennzeichnung ist im Diagramm (Fig. 16c rechts) durch Schattieren der Eingabe für den Bereich d angezeigt.
- Fig. 16d zeigt das Resultat eines zweiten Überlauf- und Teilvorganges. Der Bereich x ist übergelaufen und in x und v unterteilt. Dies hat dazu geführt, daß ein Bereich e - der direkt den Bereich v umschließt - gefördert worden ist.
- Schließlich zeigt Fig. 1 6e das Resultat im Anschluß an mehrere weitere Teilungen, die letztlich die Erzeugung eines dritten Inhaltsverzeichnis-Pegels verursacht haben. Insbesondere ist die Erzeugung des neuen Wurzelknotens von der Förderung (Promotion) sowohl von d als y von dem Pegel darunter begleitet. Dies zeigt die allgemeine Regel, daß dann, wenn ein Bereich p in Bereiche p und q aufgespalten wird, derart, daß q von p umschlossen wird, alle Eingaben bei dem Indexpegel darunter - gleichgültig, ob gefördert oder ungefördert - die Bereiche darstellen, die direkt q umschließen, auf den Pegel der Eingaben für p und q gefördert werden (NB: Zwei Bereiche a und b können beide direkt einen dritten umschließen, wenn a und b aus unterschiedlichen Indexpegeln stammen).
- Ein geförderter Bereich p im Knoten n kann ferner überlaufen und in zwei Bereiche p¹ und p¹¹ gespalten werden. Beide resultierenden Bereiche werden dann in gleicher Weise behandelt. Wenn somit p nunmehr entweder p¹ oder p¹¹ darstellt, gilt:
- Wenn p direkt einen ungeförderten Bereich im Indexknoten n umschließt, bleibt er im Knoten (wenn nicht das Einführen einer zusätzlichen Eingabe bewirkt, daß der Knoten überläuft). Andernfalls wird eine Suche innerhalb des Knotens n nach der Eingabe e - eines geförderten Pegels, der niedriger ist als der von p, oder ungefördert - durchgeführt, die direkt p umschließt. p wird dann nach dem gleichen Algorithmus in den Knoten eingeführt, auf den die Eingabe e zeigt, d.h. wenn er nicht einen ungeförderten Bereich umschließt, wird er weiter zurückversetzt, bis er seinen eigenen ursprünglichen Indexpegel erreicht hat.
- Es sei beispielsweise angenommen, daß der Bereich d in Fig. 16e überläuft und splittet, wie in Fig. 16f dargestellt ist. Im Wurzelindexknoten umschließt der Eintrag d¹¹ direkt einen nichtgeförderten Eintrag q, und damit wird d¹¹ in den Wurzelknoten eingesetzt. d¹ umschließt keine Einträge in den Wurzelknoten, so daß ein Versuch gemacht wird, ihn in den Knoten einzuführen, auf den p zeigt, da p direkt d¹¹ umschließt.
- Der Algorithmus wird dann wiederholt: d¹ umschließt v, jedoch nicht direkt, da e den Bereich v direkt umschließt. Deshalb wird d¹ in den Knoten eingesetzt, auf den x zeigt, da x direkt d¹ umschließt. Der Algorithmus endet hier, weil der nicht geförderte Pegel der Eingabe d¹ nunmehr erreicht worden ist.
- Nunmehr wird eine Recherche mit exakter Anpassung betrachtet. Sie macht einen Algorithmus erforderlich, der aus einer Kombination einer Vorwärts- und einer Rückwärts- Recherche des Indexbaumes besteht. Die Vorwärtsrecherche beginnt an der Wurzel des Baumes. Es wird eine Recherche im Wurzelknoten nach dem kleinsten Bereich durchgeführt, der den spezifizierten Datenpunkt umschließt (d.h. den Suchschlüssel erfüllt). Wenn ein solcher Bereich festgestellt worden ist, wird dem zugeordneten Zeiger nach abwärts zum nächsten Pegel des Indexbaumes gefolgt, usw., bis ein Datenknoten erreicht ist. Der Datenknoten wird dann nach einem Datenpunkt durchsucht, der den spezifizierten Datenpunkt erfüllt. Ist eine Anpassung festgestellt worden, wird die Recherche fortgesetzt. Andernfalls wird sie abgebrochen. In jedem Fall ist die Recherche dann beendet.
- Dieser Vorwärtsrecherche ist eine Recherche überlagert, die über den Vorwärtssuchpfad denselben Weg zurückführt. Wenn ein Anpassungseintrag bei einem Indexpegel 1 während der Vorwärtsrecherche festgestellt wird, geht die Recherche bis zur Wurzel zurück, sucht bei jedem höheren Pegel i(1≤i< L) nach einem geförderten Bereich aus dem Pegel L, der direkt von dem nicht geförderten Anpassungseintragpegel i umschlossen wird, und der eine bessere Anpassung (d.h. einen kleineren Bereich) als ein vorher festgestellter Anpassungsbereich bei einem beliebigen Pegel ergibt. Wenn keine solche bessere Anpassung während des Zurückgehens festgestellt wird, wird die Vorwärtsrecherche an der Stelle wieder aufgenommen, an der das Zurückgehen eingeleitet worden war, d.h. an dem Knoten (bei dem Pegel L + 1), auf den durch den letzten, nicht geförderten Eintrag hingewiesen worden ist, der bei Pegel L festgestellt worden ist. Andernfalls wird die Vorwärtrecherche erneut an dem Knoten gestartet, auf den durch den Eintrag mit der besten Anpassung hingewiesen wird. Dieser Knoten befindet sich auch auf Pegel L1.
- Wenn die Vorwärtsrecherche an einem Zweigknoten bei Pegel L versagt, wird die Rückwärtsrecherche erneut eingeleitet, diesesmal wird jedoch eine Suche bei jedem höheren Pegel i(1≤i< L) nach einem geförderten Bereich aus dem Pegel L durchgeführt, der direkt den nichtgeförderten Anpassungseintrag beim Pegel i umschließt. Die Rückwärtsrecherche wird angehalten, sobald ein solcher erster Anpassungseintrag festgestellt worden ist, und die Vorwärtsrecherche wird an dem Knoten, auf den sie hinweist, wieder aufgenommen. Dieser Knoten hat wieder den Pegel L + 1. Wenn die Rückwärtsrecherche keinen Anpassungseintrag bei irgendeinem Pegel findet, tritt sie aus der Wurzel aus, die Suche ist ergebnislos und wird beendet.
- Nachstehend werden zwei Beispiele für eine Recherche mit exakter Anpassung gegeben.
- Zunächst wird auf Fig. 17 hingewiesen, bei der angenommen ist, daß ein Datenpunkt an einer Stelle P in einem Daten raum lokalisiert ist, der durch einen dreipegeligen Index unterteilt ist, wie in Fig. 17 gezeigt. Eine Suche nach P verläuft dann wie folgt:
- Geht man von der Wurzel aus, ist der Schlüssel, der aus dem Datenpunkt P gewonnen wird, dem Eintrag p - und nur dem Eintrag p - im Wurzelknoten angepaßt. Die Suche folgt dann dem Zeiger, der dem Eintrag p zugeordnet ist, nach abwärts zum Indexpegel 2. Bei diesem Pegel ist der Suchschlüssel nur x angepaßt.
- An dieser Stelle wird die Rückführsuche aufgerufen: Es wird eine Suche bzw. Recherche bei Pegel 1 unter den Einträgen, die aus dem Pegel 2 bevorzugt sind, durchgeführt. In diesem Fall ist y der einzige Kandidat. y wird direkt von p umschlossen, umschließt jedoch nicht den Punkt P. Die Rückführung versagt deshalb bei diesem Pegel, und da keine höheren Pegel vorhanden sind, versagt sie vollständig, und die Vorwärtsrecherche wird an dem Knoten, auf den durch x hingewiesen wird, bei Pegel 3 wieder aufgenommen.
- a ist der einzige Anpassungseintrag für P bei Pegel 3. Eine Rückführung wird erneut aufgerufen: Es wird eine Suche bei Pegel 2 unter den Einträgen, die von dem Pegel 3 aus gefördert werden, durchgeführt. e ist der einzige Kandidat. Er wird direkt von x umschlossen, er umschließt P, und er ist kleiner als a - die vorher beste Anpassung. Damit wird e die laufende beste Anpassung. Die Rückführung wird jedoch fortgesetzt. Bei Pegel list d der einzige Kandidat. Da er nicht kleiner als e ist, bleibt e die beste Anpassung. Nach Erreichen der Wurzel wird die Rückführrecherche angehalten, und die Vorwärtsrecherche wird an dem Knoten, auf den als e gezeigt wird, wieder aufgenommen. Dies ist ein Datenknoten, und damit wird die Suche fortgesetzt, wenn der Punkt p in diesem Knoten festgestellt wird.
- Nach Fig. 18 wird angenommen, daß der Punkt P wie in dieser Figur gezeigt positioniert ist. Die Suche nach P geht wie folgt vor sich: Ausgehend von der Wurzel ist der Schlüssel dem Eintrag q angepaßt. Bei Pegel 2 versagt jedoch die Suche, weil P weder in z noch w liegt. Dies bewirkt, daß eine Rückführung aufgerufen wird. Bei Pegel 1 ist y der einzige Kandidateneintrag, der vom Pegel 2 aus gefördert worden ist. Er umschließt auch direkt q, den nicht geförderten Anpassungseintrag in Pegel 1. Die Rückführung wird damit angehalten, und y wird der neue Ausgangspunkt für die Vorwärtssuche. Die Suche versagt jedoch wieder bei Pegel 3, da P weder in f noch in n liegt. Damit wird eine Rückführung erneut aufgerufen. Bei Pegel list d der einzige Kandidateneintrag, der aus dem Pegel 3 gefördert wird. Er umschließt q direkt und umschließt P. Die Rückführung wird erneut angehalten, und die Vorwärtssuche wird von d aus fortgesetzt. Da der auf d weisende Knoten ein Datenknoten ist, ist die Suche erfolgreich, wenn der Punkt p in diesem Knoten festgestellt wird.
- Für diese Lösung muß ein Preis bezahlt werden: Der Indexbaum ist nicht mehr abgeglichen. Auf den ersten Blick verletzt dies das wichtigste Prinzip der hierarchischen Indexierung: Ohne einen Suchpfad fester Länge von der Wurzel zum Blatt wird das Verhalten des ungünstigsten Falles für Abfragungen mit exakter Anpassung unkontrollierbar. Was jedoch wirklich entscheidend ist, ist nicht so sehr die Pfadlänge wie die Anzahl unterschiedlicher Baumzweigknoten, die durchlaufen werden. Diese beiden sind unterschiedlich, wenn ein Suchpfad eine Rückführung einschließt. Die gesamte Pfadlänge muß eine voraussagbare obere Grenze haben, eine vernünftige praktische Annahme besteht jedoch darin, daß bei einer Standard-Cache-Technik keine zusätzlichen Wiederauffindkosten beim erneuten Aufsuchen eines Knotens auftreten, der längs des direkten Pfades von der Wurzel zum Blatt liegt.
- Es werden die Abwärts- und Aufwärtsabschnitte eines Recherchenpfades mit exakter Anpassung entsprechend dem vorbeschriebenen Such mechanismus betrachtet. Eine Abwärtsrecherche versagt, wenn die Targetposition innerhalb eines geförderten logischen Bereiches liegt, und der Fehler tritt bei dem Pegel auf, von dem aus der Bereich ursprünglich gefördert worden ist. Die Summe aller Knoten, die während der nach abwärts durchlaufenen Phasen einer Recherche mit exakter Anpassung besucht werden, blei ben für eine gegebene Baumgröße konstant. Obgleich ein geförderter Teilbaum weiter auf einen höheren Pegel im Baum gefördert werden kann, und ein Teilbaum eines Teilbaums ebenfalls gefördert werden kann, kann gleichermaßen die gesamte Höhe, über die eine Förderung eines beliebigen logischen Bereiches auftreten kann, nicht größer sein als die Höhe des Baumes. Deshalb ist die Anzahl unterschiedlicher Zweigknoten, die in einer Recherche mit exakter Anpassung besucht werden, stets gleich der Höhe des Baumes.
- Wenn ein Teilbaum willkürlich auf einen hohen Pegel gefördert werden kann, geht eine besonders wichtige Eigenschaft einer abgeglichenen Baumstruktur verloren, nämlich die logarithmische Beziehung zwischen der Anzahl von Daten knoten und der Pfad länge von der Wurzel zum Blatt des Index. Diese Beziehung macht vor allem erforderlich, daß die direkte Pfadlänge von der Wurzel zum Blatt für einen gegebenen Zustand des Indexbaumes fest ist, d.h., daß der Baum vollkommen abgeglichen ist. Es macht weiter erforderlich, daß das Ausgangsauffächerungsverhältnis in jedem Indexknoten (mit Ausnahme der Wurzel) nie unter ein fest vorgegebenes Minimum fallen darf (das mindestens eine Größenordnung größer als 1 sein muß). Die lineare Beziehung zwischen der Anzahl von Indexknoten und der Anzahl von Datenknoten ist eine weitere Folge dieser Forderungen.
- Die Förderung (Promotion) eines Teilbaumes tritt jedoch nur unter den vorbeschriebenen Umständen auf, und auch nur dann, wenn ein Indexknoten überläuft und sich teilt. Da jeder Indexknoten mit Ausnahme des ersten durch Teilen erzeugt wird, können deshalb insgesamt nicht mehr geförderte Indexeinträge als nichtgeförderte Einträge vorhanden sein, es sei denn durch Teilen eines Eintrags, der bereits gefördert worden ist, da dies einen zweiten Eintrag bei dem gleichen (geförderten) Pegel ergibt.
- Es kann sich auch eine weitere Förderung aus dem Pegel darunter ergeben. Es läßt sich beweisen, daß es in solchen Fällen stets möglich ist, alle Einträge mit Ausnahme des einen, der sich aus einer solchen Splittung ergibt, in ihre ursprünglichen (nicht geförderten) Positionen im Indexbaum zurückzuführen. Es ist auch möglich, zu beweisen, daß dies nicht mehr Knotenzugriffe erforderlich macht als notwendig wären, wenn die Einträge nicht gefördert worden wären, d.h., wenn der Baum abgeglichen gewesen wäre.
- Dies bedeutet jedoch nicht, daß nie eine größere Anzahl von geförderten Einträgen als ungeförderten Einträgen in einem Indexknoten vorhanden sind. Es wurde weiter oben ausgeführt, daß dann, wenn ein Bereich p in Bereiche p und q aufgespalten wird, derart, daß der Wert p den Wert q umschließt, irgendwelche Einträge bei dem Indexpegel darunter - gleichgültig ob bereits gefördert oder nicht gefördert - die Bereiche repräsentieren, welche direkt q umschließen, auf den Pegel der Einträge für p und q heraufgesetzt werden. Dieser Effekt kann kumulieren, wenn Einträge den Indexbaum hinauf gefördert werden. Im allgemeinen ist die maximal mögliche Anzahl von geförderten Einträgen in einem Knoten bei einem Pegel L eines Indexbaumes maximaler Tiefe d gleich n(d -wobei n die Anzahl von nicht geförderten Einträgen im Knoten ist.
- Um sicherzustellen, daß der Suchweg exakter Anpassung von der Wurzel zum Blatt in dem BV-Baum nicht länger ist als der eines abgeglichenen Baumes mit der gleichen Anzahl von Datenknoten, brauchen die Indexknoten beim Pegel L eines BV-Baumes in der Größe nicht um einen Faktor von (d - L + 1) vergrößert werden. (Es ist jedoch zu berücksichtigen, daß die Okkupanz der Indexknoten nicht unter 1/3 fallen wird.) Es ist möglicherweise nicht notwendig, diesen Effekt in der Praxis zu berücksichtigen. Zumindest ist es möglich, dies in einer gesteuerten Weise mit voraussagbaren Folgen, falls erforderlich, durchzuführen.
- Dies ist der einzige Preis, der für die Erzielung der charakteristischen Eigenschaften des B-Baumes in n Dimensionen zu zahlen ist. Die Indexknotenokkupanz beträgt im ungünstigsten Fall nur 1/3, verglichen mit 1/2 für den B-Baum. Dies ist jedoch eine Folge von topologischen Betrachtungen anstatt einer Begrenzung einer bestimmten Indexkonstruktion. Wichtiger ist, daß dieser Okkupanzpegel für jeden Indexknoten unter allen Umständen garantiert ist, damit eine minimale Okkupanz für den gesamten Index garantiert ist. Die Okkupanz eines Datenknotens im ungünstigsten Fall bleibt bei 1/2 im ndimensionalen Fall, vorausgesetzt, daß für ein gegebenes Attribut eines Tupel keine zwei Sätze den gleichen Attributwert haben. Sonst fällt die Okkupanz im ungünstigsten Fall auf 1/3.
- Der BV-Baum (hierarchischer Index von Speicherseiten), der vorstehend beschrieben worden ist, organisiert die Inhalte der Speicherseiten und die Zugriffspfade zwischen ihnen in solcher Weise, daß die folgenden Eigenschaften erfüllt und unter allen Umständen garantiert sind.
- 1. Jede Seite entspricht einer Darstellung eines eindeutigen Tejlraumes des Datenraumes;
- 2. die Zeit für den Zugriff der Seite, die die einen einzigen, spezifizierten Punkt in dem entsprechenden Datenraum darstellenden Daten hält, hängt nur von der Gesamtanzahl von Seiten ab, die verwendet werden, um den gesamten Raum zu repräsentieren, und nimmt nur logarithmisch mit dieser Zahl zu. Insbesondere ist die Zeit unabhängig von dem gewählten Punkt;
- 3. die Datenokkupanz einer jeden Seite fällt nie unter ein festes und akzeptables Minimum (1/3);
- 4. die Verteilung von Punkten im Datenraum wird in der Verteilung der Daten in den Speicherseiten genau reflektiert, d.h., daß benachbarte Punkte im Datenraum innerhalb einer einzigen Speicherseite so weit wie möglich repräsentiert sind;
- 5. die Zeit zum Einsetzen, Löschen oder Modifizieren eines bestimmten Punktes im Datenraum in den entsprechenden Speicherseiten hängt logarithmisch von der Gesamtzahl von Seiten ab;
- 6. die Leistung von Zugriffs-, Einführungs-, Löschungs- und Modifikations-Vorgängen wird nicht als Folge der Zeitdauer und/oder des Benutzungsausmaßes verringert.
- Der BV-Baum repräsentiert die rekursive Unterteilung des Datenraumes in eine Hierarchie von Teilräumen. Ein Merkmal des BV-Baumes besteht darin, daß einige Einträge in den Indexbaum auf einen höheren Pegel des Baumes gefördert bzw. heraufgesetzt werden können, so daß die Länge eines direkten Pfades von der Spitze zum Boden des Baumes nicht notwendigerweise unabhängig von dem gewählten Pfad ist. Trotzdem ist die Anzahl von unterschiedlichen Knoten der Index-Hierarchie, die längs des Suchpfades für einen individuellen Punkt im Daten raum gesichtet werden, für eine konstante Gesamtzahl von Punkten stets gleichbleibend.
- Damit festgestellt werden kann, welche Indexeinträge auf diese Weise heraufgesetzt worden sind, wird jeder Indexeintrag mit seiner "Pegelzahl" gekennzeichnet. Dies ist der Pegel des Indexbaumes, bei dem der Eintrag "erzeugt" wurde. Da ein sich erweiternder Baum durch Splitten der Wurzel wächst, werden die Einträge in die untersten (invertierten) Baumknoten mit Pegel 1 gekennzeichnet, und die Einträge im Wurzelknoten haben den höchsten Pegel, der insoweit erzeugt wurde.
- Im Prinzip bleibt der Suchalgorithmus zum Auffinden eines Punktes im Index gegenüber der klassischen Baumsuche mit exakter Anpassung, wie im B-Baum, unverändert. Eine Suche wird iterativ bei jedem Pegel der Hierarchie von der Wurzel nach abwärts für die "kleinste" Unterteilung, in der der Punkt liegt, durchgeführt. Der kritische Unterschied zu jeder anderen derartigen Ausführung besteht darin, daß der Indexbaum nicht mehr direkt der Indexhierarchie entspricht.
- In Fig. 17 werden beispielsweise nur die Einträge, die als Pegel 3 der Index-Hierarchie gekennzeichnet sind, zu Beginn auf dem obersten Pegel des Indexbaumes geprüft. Bei diesem Beispiel sind dies Einträge p und q. Einträge d (Pegel 1) und y (Pegel 2) werden nicht berücksichtigt. Es sei angenommen, daß eine Anpassung mit dem Eintrag p festgestellt worden ist. Die Suche wird dann auf dem nächst niedrigeren hierarchischen Pegel fortgesetzt. Die Einträge bei dem nächst niedrigeren "hierarchischen" Pegel sind x, v und y. Das sind alle Einträge, die insoweit durchlaufen worden sind, die mit Pegel 2 gekennzeichnet sind, trotz der Tatsache, daß sie nicht alle den gleichen Indexbaumpegel haben. Das beim Splitten von y auftretende Problem wird durch Nicht-Splitten von y vermieden. Stattdessen wird y in die Suche einbezogen, gleichgültig, auf welcher Seite des Indexbaumes die Suche nach abwärts fortschreitet. Die Tatsache, daß d tatsächlich durch die Pegel in Fig. 17 gefördert bzw. heraufgesetzt worden ist, ist eine Folge des rekursiven Anwendens der Idee auf den gesamten Index. Wenn beispielsweise der Targetpunkt in der Unterteilung v auf dem hierarchischen Pegel 2 liegt, sind die Unterteilungen, die beim Pegel 1 gesucht werden, s, r, e und d, d.h. alle Einträge des Pegels 1 in den Knoten, die während des Abstiegs im Indexbaum durchlaufen werden. Es sei erwähnt, daß dann, wenn eine Anpassung mit der Unterteilung v festgestellt worden ist, auch eine Anpassung der Unterteilung x gegeben ist, die v umschließt. Diese Mehrdeutigkeit wird jedoch gelöst, weil der "kleinste" Anpassungseintrag im Index der ist, der genommen wird, d.h. der, der am tiefsten verschachtelt ist.
- Die Lösung für das mehrdimensionale Problem, mit dem sich vorliegende Erfindung befaßt, das durch den BV-Baum gegeben ist, ist überraschend. Es ist immer angenommen worden, daß der Indexbaum exakt abgeglichen sein muß, d.h., daß der direkte Pfad von der Wurzel zum Blatt für alle möglichen Pfade der gleiche sein muß. Dies war so, damit sichergestellt ist, daß die Anzahl von gesichteten Baumknoten für alle direkten Pfade gleich groß war. Man hat stets angenommen, daß die beiden Dinge automatisch zusammengehen. Der BV-Baum zeigt jedoch, daß dies nicht der Fall ist. Es spielt keine Rolle, wie unabgeglichen die Baumstruktur ist, wenn der Suchpfad im Baum nach oben und unten so ausgelegt ist, daß die Anzahl von unterschiedlichen, gesichteten Knoten stets die gleiche ist.
- Die Positionen der Unterteilungen, ihre Formen und die Art und Weise, in der sie repräsentiert werden, beeinflußt das Prinzip nach vorliegender Erfindung nicht. Die einzigen Beschränkungen in bezug auf die Unterteilungen sind durch Axiome 1 und 2 gegeben. Diese Axiome gelten für alle Unterteilungen im Index zusammengenommen, gleichgültig, zu welchem Pegel der Hierarchie sie gehören. Die ungewöhnlich geformten Unterteilungen der Fig. 16 wurden absichtlich gewählt, um dies zu verdeutlichen. Üblicherweise unterscheiden Indexkonstruktionen nicht zwischen den "Prinzipien" der Konstruktion und ihrer speziellen "Verwirklichung". Dies ist üblich, weil die Konstruktion ganz entscheidend von der Verwirklichung abhängt. In der Praxis sind Unterteilungsformen wie die nach Fig. 16 praktisch nicht ausführbar, weil es schwierig ist, eine kompakte und präzise Darstellung solcher Formen zu finden. Es werden deshalb üblicherweise rechteckförmige Gebilde bzw. Kästchen gewählt. Diese können auf vielfache Weise dargestellt werden. Eine besonders zweckmäßige Möglichkeit besteht darin, die Koordinalen der unteren linken und oberen rechten Ecken zu spezifizieren. Auf diese Weise kann ein Kästchen beliebiger Größe und rechteckiger Form dargestellt werden. Eine alternative Darstellung ist in den Fig. 1 - 4 gezeigt. Der Datenraum ist hier durch progressives Aufteilen exakt in Hälften in abwechselnden Dimensionen (binäre Teilung) unterteilt. Dies ergibt eine eindeutige binäre Identifizierung für jede Unterteilung, wie dargestellt.
- Der Vollständigkeit halber werden die Unterschiede zwischen der BANG-Datei und dem BV-Baum wiederholt. Es ist festzuhalten, daß die Erfindung nicht einfach eine Erweiterung der BANG-Datei ist. Das Merkmal der Heraufsetzung von Index-Eintragungen bei einer Unterteilungssplittung ist in gleicher Weise auf andere Indexe mit entsprechend vorteilhaften Effekten anwendbar.
- Im Prinzip ist die Index-Hierarchie sowohl für die BANG-Datei als auch dem BV-Baum die gleiche. Der Indexbaum ist jedoch unterschiedlich. Die binären Unterteilungen des Daten raumes, die in der BANG-Datei verwendet werden, und die Darstellung dieser Unterteilungen in der BANG-Kartei als Ketten mit sich ändernder Länge können auch in einer möglichen Darstellung des BV-Baumes verwendet werden. Wie sich aus Vorstehendem ergibt, braucht die Unterteilung nicht binär zu sein, wie dies durch die ungewöhnlich geformten Unterteilungen nach Fig. 16 usw. dargestellt ist. Der BV-Baum kann ferner beispielsweise durch eine auf Bereichen basierende Darstellung beschrieben werden, in der die Unterteilungen durch eine willkürliche Folge von Teilungen an jeder Stelle im Bereich einer Dimension des Datenraumes beschrieben sind. Es gibt hierfür viele Möglichkeiten. Die binäre, auf einer Domäne basierende Unterteilungsdarstellung der BANG-Datei ist nicht die einzige Möglichkeit, einen BV-Baum darzustellen.
- Der iterative Index-Suchalgorithmus mit exakter Anpassung im Baum von oben nach unten ist in der BANG-Datei wie im BV-Baum im wesentlichen der gleiche. Der grundlegende Unterschied besteht darin, daß die Indexeintragungen eines hierarchischen Pegels L in der BANG-Datei alle auf dem Pegel L im Baum gespeichert sind, während im BV-Baum bestimmte Einträge eines hierarchischen Pegels L bei Indexbaumpegeln auftreten können, die höher sind als L.
- Bei der BANG-Datei folgt jede Suche mit exakter Anpassung dem kürzesten Pfad von der Wurzel zu einem der Blätter des Indexbaumes. Die Anzahl der gesichteten Indexknoten ist für alle solchen Pfade die gleiche, und ist gleich der Anzahl von Pegeln in der Baumhierarchie, d.h. der Höhe des Baumes, der vollständig abgeglichen ist. Beim BV- Baum jedoch sichtet jede Suche mit exakter Anpassung die gleiche Anzahl von unterschiedlichen Baumknoten, und diese Zahl ist gleich dem längsten direkten Pfad von der Wurzel zum Blatt des Indexbaumes, wobei die maximale Höhe des Baumes h ist.
- Bei der BANG-Datei und dem BV-Baum ist es stets möglich, eine überfließende Unterteilung bei jedem Index-Baumpegel zu splitten, so daß jede der resultierenden Unterteilungen mindestens ein Drittel des Inhalts (Daten oder Teilungen) der ursprünglichen Unterteilung enthält. Bei der BANG-Datei ist es im allgemeinen jedoch nicht möglich, dies durchzuführen, ohne auch gleichzeitig mindestens eine andere Unterteilung des unteren Indexpegels zu splitten, und in diesem Fall ist es im allgemeinen nicht möglich, den vorerwähnten Splitting-Abgleich aufrecht zu erhalten. Der BV-Baum vermeidet dieses Problem durch Fördern von Unterteilungen.
- Der BV-Baum hat folgende Vorteile:
- 1. In Fällen, in denen das Schema von (relationalen) Datenbank-Abfragen nicht vorhersehbar ist, kann die mittlere Ansprechdauer eine Größenordnung schneller sein als bei einem herkömmlichen eindimensionalen Index. (Der n-dimensionale Index kann weiter als eindimensionaler Index verwendet werden, wenn ein festes Abfrageschema vorhanden ist).
- 2. Er ermöglicht eine n-dimensionale Indexierung in O(n/B), eine Abfrage exakter Anpassung mit einer I/O Dauer O (log n Basis B), und eine für den ungünstigsten Fall geltende Aktualisierungsdauer O (log n Basis B), wobei n die Gesamtanzahl von indexierten Datenpunkten und B die maximale Anzahl von Indexeinträgen pro Seite ist.
- Die hierarchische Indexstruktur, die Datenbankstruktur, die Index- und Suchtechniken, die vorstehend beschrieben wurden, können in einem beliebigen Computersystem einschließlich eines Speichers, insbesondere eines eindimensionalen Speichers, d.h. eines Speichers, der aus einer linearen Folge von Seiten besteht, eingesetzt zu werden. Das Computersystem kann so, wie schematisch in Fig. 19 dargestellt, ausgelegt sein, das einen Computer (Prozessor) 1 mit einer Speichervorrichtung 2, einer Eingabevorrichtung 3 uind einer Display-Vorrichtung 4 enthält.
Claims (3)
1. Computer-Datenspeicher-Managementsystem mit einem Speicher, der eine
hierarchische Datenstruktur verwendet, die die rekursive Unterteilung eines Daten raumes
in zusammenhängende oder disjunkte Teilräume darstellt, derart, daß die externe
Begrenzung eines jeden Teilraumes die externe oder interne Begrenzung eines
beliebigen anderen Tejlraumes auf dem gleichen oder einem anderen Pegel der
rekursiven Unterteilung nicht schneidet, jedoch die externe Begrenzung des anderen
Teilraumes einschließen oder teilweise damit zusammenfallen kann, bei dem
die Datenstruktur-Hierarchie eine Vielzahl von Knoten einschließlich eines
Wurzelknotens, einer Vielzahl von Zweigknoten und einer Vielzahl von Blattknoten
aufweist,
jeder Knoten in der Datenstruktur-Hierarchie einen Teilraum bei entsprechendem
oder niedrigerem Pegel in der entsprechenden rekursiven Teilhierarchie darstellt,
der Wurzelknoten den gesamten Datenraum darstellt,
jeder Knoten mit tieferem Pegel einen Teilraum des durch einen entsprechenden
Vorgängerknoten oder einen Teilraum des durch einen Nachkommen des
entsprechenden Vorgängerknotens dargestellten Raumes darstellt, wobei jeder Knoten mit
niedrigerem Pegel einen Nachfolgerknoten aufweist,
die Zweigknoten in der hierarchischen Datenstruktur Indexknoten und die
Blattknoten Datenknoten sind,
jeder Datenknoten entweder einen Satz von Dateneingaben oder einen Satz von
Hinweisadressen enthält, wobei die Bezugsdateneingaben anderswo gespeichert
sind,
jede Dateneingabe einen Wert oder Satz von Werten enthält, die direkt oder
indirekt die Koordinaten eines Punktes spezifiziert, der die Dateneingabe im Datenraum
darstellt,
jeder Indexknoten einen Satz von Indexeingaben enthält,
jede Indexeingabe eindeutig einem der Nachfolger des Indexknotens entspricht, der
die Indexeingabe enthält, wobei jeder Indexeingabe zugeordnet ist:
(i) eine entsprechende Hinweisadresse, die sich auf die logische Adresse des
Nachfolgerknotens entsprechend der Indexeingabe bezieht, und
(ii) ein Wert oder Satz von Werten, der direkt oder indirekt die externe
Begrenzung des durch die Indexeingabe dargestellten Teilraumes festlegt,
dadurch gekennzeichnet, daß
eine Knotenpromotion bzw. Knotenbeförderung als ein Resultat von
Knotenüberläufen aufgrund der Einführung von zusätzlichen Informationen in den Speicher
auftreten kann,
ein nicht geförderter Knoten ein Knoten ist, der auf dem gleichen Pegel in der
Datenstruktur-Hierarchie wie der Pegel des Teilraumes steht, den er in der
entsprechenden rekursiven Teilungshierarchie darstellt, und ein geförderter Knoten ein
Knoten ist, der auf einem höheren Pegel in der Datenstruktur-Hierarchie als der Pegel
des Teilraumes steht, den er in der entsprechenden rekursiven Teilungshierarchie
darstellt,
der Teilraum, der durch einen Nachfolgerknoten dargestellt ist, welcher auf einen
entsprechenden Knoten gefördert ist, der ein Teilraum der Summe aller Teilräume
ist, der durch einen nicht geförderten Nachfolgerknoten des entsprechenden
Knotens dargestellt ist,
und dadurch gekennzeichnet, daß
(i) bei der Einführung der zusätzlichen Information in den Speicher und eines
resultierenden Überlaufes eines Indexknotens der Indexknoten in zwei
resultierende Indexknoten durch Unterteilen des Raumes, den der Indexknoten
darstellt, in zwei Teilräume aufgeteilt wird, wobei die Unterteilung entweder so
beschaffen ist, daß die Anzahl von Indexeingaben in die beiden resultierenden
Indexknoten so nahe einer Gleichheit wie möglich ist, oder entsprechend
einem vorbestimmten Abgleichkriterium in der Verteilung der Indexeingaben
zwischen den beiden resultierenden Indexknoten liegt, wobei die beiden
resultierenden Indexknoten auf dem gleichen Pegel der Datenstruktur-
Hierarchie wie der Indexknoten, von dem sie erzeugt wurden, angeordnet sind
und jeder resultierende Indexknoten als Vorgänger den Vorgänger des
Indexknotens hat, von welchem er erzeugt worden ist, und
(ii) wenn die externe Begrenzung eines der beiden Teilräume, die durch die
resultierenden Indexknoten dargestellt sind, durch die externe Begrenzung des
anderen der beiden Teilräume umschlossen ist, und, wenn keine Indexeingabe in
dem Indexknoten einen Teilraum darstellt, dessen externe Begrenzung mit der
umschlossenen externen Begrenzung zusammenfällt, im Indexknoten jedoch
eine nicht geförderte oder geförderte Indexeingabe vorhanden ist, die einen
Teilraum darstellen, dessen externe Begrenzung direkt die umschlossene
externe Begrenzung umschließt,
dann die nicht geförderte oder geförderte Indexeingabe an den Vorgänger des
Indexknotens gefördert wird,
die externe Begrenzung eines ersten Teilraumes direkt die externe Begrenzung
eines zweiten Teilraumes umschließt, wenn bei dem gleichen rekursiven
Teilungspegel kein dritter Tellraum vorhanden ist, dessen externe Begrenzung
durch die externe Begrenzung des ersten Teilraumes umschlossen ist und
dessen externe Begrenzung die externe Begrenzung des zweiten Teilraumes
umschließt,
daß jeder Indexknoteneingabe eine Anzeige des Pegels in der Hierarchie von
rekursiven Teilungen des Datenraumes des durch die Eingabe dargestellten
Teilraumes zugeordnet ist, und
daß die innere Begrenzung des Teilraumes, die durch eine Indexeingabe
dargestellt ist, implizit durch das Vorhandensein einer oder mehrerer anderer
Indexeingaben im Index definiert ist, die dem gleichen oder einem höheren
rekursiven Teilungspegel zugehören und von denen jeder einen Teilraum
darstellt, den die externe Begrenzung des Tellraumes, die durch die
Indexeingabe dargestellt ist, direkt umschließt.
2. Computergestütztes Verfahren zum Verwenden bei der Indexierung eines
Datenraumes, der eine Datenbank für mehrdimensionale Informationen umfaßt, wobei
das Indexieren eine hierarchische Struktur hat und der Datenraum rekursiv in
Teilräume unterteilt ist, bei denen die entsprechenden Indexeingabeknoten in einem
Indexbaum angeordnet sind,
dadurch gekennzeichnet, daß
bei der Einführung von zusätzlichen Informationen ein Indexeingabeknoten zum
Überlaufen gebracht wird, der in zwei resultierende Indexknoten aufgeteilt wird,
indem der Raum, den der Indexknoten darstellt, in zwei Teilräume geteilt wird und
diese Unterteilung entweder so vorgenommen wird, daß die Anzahl von
Indexeingängen in die beiden resultierenden Indexknoten so nahe wie möglich gleich ist,
oder in Übereinstimmung mit einem vorbestimmten Abgleichkriterium in der
Verteilung der Indexeingänge zwischen den beiden resultierenden Indexknoten liegt,
die beiden resultierenden Indexknoten auf dem gleichen Pegel des Indexbaumes
wie der Indexknoten, aus dem sie hervorgegangen sind, angeordnet sind und jeder
resultierende Indexknoten als Vorgänger den Vorgänger des Indexknotens hat, aus
dem er hervorgegangen ist,
dann, wenn die externe Begrenzung eines der beiden Teilräume, der durch die
resultierenden Indexknoten dargestellt wird, von der externen Begrenzung des
anderen der beiden Teilräume umschlossen ist, und wenn keine Indexeingabe in den
Indexknoten einen Teilraum darstellt, dessen externe Begrenzung mit der
umschlossenen externen Begrenzung zusammenfällt, im Indexknoten jedoch eine nicht
geförderte oder eine geförderte Indexeingabe vorhanden ist, die einen Teilraum
darstellt, dessen externe Begrenzung direkt die umschlossene externe Begrenzung
einschließt, dann die nicht geförderte oder geförderte Indexeingabe auf den Vorgänger
des Indexknotens gefördert wird, wobei eine nicht geförderte Indexeingabe eine
Indexeingabe ist, die auf dem gleichen Pegel in der Datenstruktur-Hierarchie steht wie
der Pegel des Teilraumes, den er in der entsprechenden rekursiven Teilungs-
Hierarchie darstellt, und eine geförderte Indexeingabe eine Indexeingabe ist, die auf
einem höheren Pegel in der Datenstruktur-Hierarchie steht als der Pegel des
Teilraumes, den er in der entsprechenden rekursiven Teilungs-Hierarchie darstellt, und
die externe Begrenzung eines ersten Teilraumes direkt die externe Begrenzung eines
zweiten Teilraumes umschließt, wenn auf dem gleichen rekursiven Teilungspegel
kein dritter Teilraum vorhanden ist, dessen externe Begrenzung durch die externe
Begrenzung des ersten Teilraumes umschlossen ist, und dessen externe Begrenzung
die externe Begrenzung des zweiten Teilraumes umschließt, und
ferner dadurch gekennzeichnet, daß jede neu gewonnene Indexeingabe mit dem
Pegel des Teilraumes markiert wird, den sie in der rekursiven Teilungs-Hierarchie
darstellt, wodurch die Anzeige von Indexeingaben erleichtert wird, die auf höheren
Pegeln im Indexbaum stehen als der Pegel in der rekursiven Teilungs-Hierarchie,
dem sie entsprechen.
3. Verfahren zum Durchsuchen eines Computerspeichers mit einer hierarchischen
Datenstruktur, die die rekursive Unterteilung eines Datenraumes einer Vielzahl von
Dimensionen in zusammenhängende oder disjunkte Teilräume darstellt, und die so
ausgelegt ist, daß die externe Begrenzung eines beliebigen Tellraumes die externe
oder interne Begrenzung eines beliebigen anderen Teilraumes auf dem gleichen
oder einem anderen Pegel rekursiver Unterteilung nicht schneidet, jedoch die
externe Begrenzung eines solchen anderen Teilraumes einschließen oder teilweise
damit zusammenfallen kann, wobei die Datenstruktur-Hierarchie eine Mehrzahl von
Knoten einschließlich eines Wurzelknotens, einer Mehrzahl von Zweigknoten und
einer Mehrzahl von Blattknoten in einer Baumstruktur aufweist,
jeder Knoten in der Datenstruktur-Hierarchie einen Teilraum mit einem
entsprechenden oder niedrigeren Pegel in der jeweiligen rekursiven Teilungs-Hierarchie
darstellt,
der Wurzel knoten den gesamten Datenraum darstellt,
jeder Knoten mit niedrigerem Pegel einen Tellraum des Raumes, der durch einen
entsprechenden Vorgängerknoten dargestellt ist, oder einen Teilraum des Raumes,
der durch einen Nachkommen des jeweiligen Vorgängerknotens dargestellt wird,
darstellt, und jeder Knoten mit niedrigerem Pegel einen Nachfolgerknoten umfaßt,
wobei ein nicht geförderter Knoten ein Knoten ist, der auf dem gleichen Pegel in der
Datenstruktur-Hierarchie wie der Pegel des Teilraumes steht, den er in der
entsprechenden
rekursiven Teilungs-Hierarchie darstellt, und ein geförderter Knoten ein
Knoten ist, der auf einem höheren Pegel in der Datenstruktur-Hierarchie steht als der
Pegel des Teilraumes, den er in der rekursiven Teilungs-Hierarchie darstellt, wobei
eine Beförderung (Promotion) als Ergebnis von Knotenüberläufen aufgrund der
Einführung von zusätzlichen Informationen in den Speicher auftritt,
der durch einen Nachfolgerknoten dargestellte Teilraum, der auf einen
entsprechenden Knoten gefördert wird, ein Teilraum der Summe aller Teilräume ist, die durch
nicht geförderte Nachfolger des entsprechenden Knotens dargestellt sind,
die Zweigknoten in der hierarchischen Datenstruktur Indexknoten und die
Blattknoten Datenknoten sind,
jeder Datenknoten entweder einen Satz von Dateneingaben oder einen Satz von
Hinweisadressen enthält, die anderswo gespeicherte Dateneingaben betreffen; jede
Dateneingabe einen Wert oder Satz von Werten enthält, der direkt oder indirekt die
Koordinaten eines Punktes spezifiziert, die die Dateneingabe in den Datenraum
darstellen,
jeder Indexknoten einen Satz von Indexeingaben enthält,
wobei
(i) bei Einführung der zusätzlichen Information in den Speicher und resultierendem
Überlauf eines Indexeingabeknotens dieser Indexei ngabeknoten in zwei
resultierende Indexknoten dadurch geteilt wird, daß der Raum, der den
Indexknoten darstellt, in zwei Teilräume unterteilt wird, wobei diese
Unterteilung entweder so vorgenommen ist, daß die Anzahl von Indexeingaben
in den beiden resultierenden Indexknoten so nahe wie möglich gleich ist, oder
in Übereinstimmung mit einem vorbestimmten Abgleichkriterium in der
Verteilung der Indexeingaben zwischen den beiden resultierenden Indexknoten
ist, wobei die beiden resultierenden Indexknoten auf dem gleichen Pegel der
Datenstruktur-Hierarchie wie der Indexknoten, aus dem sie gewonnen wurden,
stehen, und jeder resultierende Indexknoten als Vorgänger den Vorgänger des
Indexknotens hat, aus dem er hervorgegangen ist, und
(ii) wenn die externe Begrenzung eines der beiden Teilräume, der durch die
resultierenden Indexknoten dargestellt ist, durch die externe Begrenzung des
anderen der beiden Teilräume umschlossen ist, und wenn keine Indexeingabe
im Indexknoten einen Tellraum darstellt, dessen externe Begrenzung mit der
umsch lossenen externen Begrenzung zusammenfällt, jedoch im Indexknoten
eine nicht geförderte oder geförderte Indexeingabe vorhanden ist, die einen
Teilraum darstellt, dessen externe Begrenzung direkt die umschlossene externe
Begrenzung umschließt,
die nicht geförderte oder geförderte Indexeingabe dann an den Vorgänger des
Indexknotens gefördert wird,
jede Indexeingabe eindeutig dem einen der Nachfolger des Indexknotens
entspricht, der die Indexeingabe enthält, wobei jeder Indexeingabe zugeordnet
ist:
(i) eine entsprechende Hinweisadresse, die sich auf die logische Adresse des
Nachfolgerknotens entsprechend der Indexeingabe bezieht,
(ii) eine Anzeige des Pegels des durch die Eingabe dargestellen Teilraumes in der
Hierarchie von rekursiven Unterteilungen des Datenraumes, und
(iii) ein Wert oder ein Satz von Werten, der direkt oder indirekt die externe
Begrenzung des durch die Indexeingabe dargestellten Tellraumes definiert,
und die interne Begrenzung des Teilraumes, der durch eine Indexeingabe dargestellt
wird, implizit durch das Vorhandensein im Index einer oder mehrerer anderer
Indexeingaben definiert ist, die den gleichen oder höheren rekursiven
Unterteilungspegeln zugehören und von denen jeder einen Teilraum darstellt, den die externe
Umgrenzung des durch die Indexeingabe dargestellten Teilraumes direkt umschließt,
die externe Begrenzung eines ersten Teilraumes direkt die externe Begrenzung eines
zweiten Teilraumes umschließt, wenn bei dem gleichen rekursiven Teilungspegel
kein dritter Teilraum vorhanden ist, dessen externe Begrenzung durch die externe
Begrenzung des ersten Teilraumes umschlossen ist, und dessen externe Begrenzung
die externe Begrenzung des zweiten Teilraumes umschließt,
dadurch gekennzeichnet, daß
schrittweise die rekursive Teilungs-Hierarchie nach dem kleinsten Teilraum
durchsucht wird, die einen Punkt im Datenraum einschließt, der den gesuchten
Informationsausdruck darstellt,
die Suche durch schrittweises Rekonstituieren der relevanten Knoten in der
rekursiven Teilungs-Hierarchie aus der entsprechenden Index-Hierarchie während des
Suchvorganges erreicht wird,
an dem Wurzelknoten des Indexbaumes begonnen wird, wobei die nicht
geförderten Indexeingänge im Indexknoten nach einer nicht geförderten Indexeingabe
durchsucht werden, die einen Teilraum darstellt, der direkt den den gesuchten
Informationsausdruck darstellenden Punkt umschließt,
für den Fall, daß keine solche, nicht geförderte Indexeingabe im Indexknoten
festgestellt wird, die Suche als ergebnislos abgebrochen wird,
für den Fall, daß eine solche nicht geförderte Indexeingabe festgestellt wird, die
geförderten Indexeingaben im Indexknoten nach den geförderten Indexeingaben
durchsucht werden, die entsprechend einen Teilraum darstellen, der direkt den
Punkt umschließt, der den gesuchten Informationsausdruck darstellt,
eine Kopie einer jeden solchen geförderten Indexeingabe, die direkt den den
gesuchten Informationsausd ruck darstellenden Punkt umschließt, weitergegeben und
um einen Pegel zurückgesetzt wird, sowie zum Zweck der Suche nur mit dem Satz
von Indexeingaben im nächsten indexierten, zu untersuchenden Knoten
umschlossen wird,
der nächste zu untersuchende Indexknoten der Indexknoten ist, auf den die
Hinweisadresse bezogen ist, die der nicht geförderten Indexeingabe zugeordnet ist,
welche einen Teilraum darstellt, der direkt den Punkt umschließt, welcher den
gesuchten Informationsausdruck darstellt,
die Anzahl unterschiedlicher Indexknoten, die während des Suchverlaufes für den
gesuchten Informationsausdruck betrachtet werden, über eine konstante Gesamtzahl
von im Datenraum enthaltenen Informationsausdrücken konstant gehalten wird.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP93110856 | 1993-07-07 | ||
PCT/EP1994/002166 WO1995002222A1 (en) | 1993-07-07 | 1994-07-01 | Database structures |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69401662D1 DE69401662D1 (de) | 1997-03-13 |
DE69401662T2 true DE69401662T2 (de) | 1997-08-21 |
Family
ID=8213052
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69401662T Expired - Fee Related DE69401662T2 (de) | 1993-07-07 | 1994-07-01 | Datenbankstrukturen |
Country Status (7)
Country | Link |
---|---|
US (1) | US5701467A (de) |
EP (1) | EP0707725B1 (de) |
JP (1) | JP3433803B2 (de) |
AU (1) | AU679553B2 (de) |
DE (1) | DE69401662T2 (de) |
ES (1) | ES2100082T3 (de) |
WO (1) | WO1995002222A1 (de) |
Families Citing this family (215)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5893103A (en) * | 1997-05-09 | 1999-04-06 | Motorola, Inc. | Method of reconstructing a managed information tree |
CA2205836C (en) * | 1994-11-21 | 2005-05-24 | Oracle Corporation | Method and apparatus for multidimensional database using binary hyperspatial code |
JPH0916607A (ja) * | 1995-06-26 | 1997-01-17 | Hitachi Ltd | データベース管理システムにおけるインデクス管理方法 |
US5974410A (en) * | 1996-06-28 | 1999-10-26 | Microsoft Corporation | Method and system for filtering in a uniform data interface |
IL118959A (en) | 1996-07-26 | 1999-07-14 | Ori Software Dev Ltd | Database apparatus |
US6208993B1 (en) * | 1996-07-26 | 2001-03-27 | Ori Software Development Ltd. | Method for organizing directories |
US6175835B1 (en) * | 1996-07-26 | 2001-01-16 | Ori Software Development, Ltd. | Layered index with a basic unbalanced partitioned index that allows a balanced structure of blocks |
US5923330A (en) * | 1996-08-12 | 1999-07-13 | Ncr Corporation | System and method for navigation and interaction in structured information spaces |
US5926820A (en) * | 1997-02-27 | 1999-07-20 | International Business Machines Corporation | Method and system for performing range max/min queries on a data cube |
DE19709041A1 (de) | 1997-03-06 | 1998-09-10 | Rudolf Prof Bayer | Datenbanksystem und Verfahren zum Betrieb eines Datenbanksystems |
US5848404A (en) * | 1997-03-24 | 1998-12-08 | International Business Machines Corporation | Fast query search in large dimension database |
US5937408A (en) * | 1997-05-29 | 1999-08-10 | Oracle Corporation | Method, article of manufacture, and apparatus for generating a multi-dimensional record structure foundation |
US6073134A (en) * | 1997-05-29 | 2000-06-06 | Oracle Corporation | Method article of manufacture, and apparatus for generating a multi-dimensional record management index |
US6708183B1 (en) * | 1997-05-30 | 2004-03-16 | Hitachi, Ltd. | Spatial information search system |
US6061677A (en) * | 1997-06-09 | 2000-05-09 | Microsoft Corporation | Database query system and method |
JP3087694B2 (ja) * | 1997-07-15 | 2000-09-11 | 日本電気株式会社 | 情報検索装置及びプログラムを記録した機械読み取り可能な記録媒体 |
US5983368A (en) * | 1997-08-26 | 1999-11-09 | International Business Machines Corporation | Method and system for facilitating hierarchical storage management (HSM) testing |
US6122628A (en) * | 1997-10-31 | 2000-09-19 | International Business Machines Corporation | Multidimensional data clustering and dimension reduction for indexing and searching |
US6006219A (en) * | 1997-11-03 | 1999-12-21 | Newframe Corporation Ltd. | Method of and special purpose computer for utilizing an index of a relational data base table |
US6061679A (en) * | 1997-11-25 | 2000-05-09 | International Business Machines Corporation | Creating and searching a data structure ordered by ranges of key masks associated with the data structure |
TR200002119T2 (tr) * | 1998-01-22 | 2000-12-21 | Ori Software Development Ltd. | Veri tabanı cihazı. |
US6675173B1 (en) | 1998-01-22 | 2004-01-06 | Ori Software Development Ltd. | Database apparatus |
US6003036A (en) * | 1998-02-12 | 1999-12-14 | Martin; Michael W. | Interval-partitioning method for multidimensional data |
JP3607107B2 (ja) * | 1998-03-13 | 2005-01-05 | 株式会社東芝 | データ管理装置 |
US6633863B1 (en) * | 1998-03-16 | 2003-10-14 | Array Technology Aps | Database useful for configuring and/or optimizing a system and a method for generating the database |
US6105018A (en) * | 1998-03-26 | 2000-08-15 | Oracle Corporation | Minimum leaf spanning tree |
US6125370A (en) * | 1998-04-01 | 2000-09-26 | International Business Machines Corporation | Repartitioning data |
US6081624A (en) | 1998-06-01 | 2000-06-27 | Autodesk, Inc. | Spatial index compression through spatial subdivision encoding |
US6154746A (en) * | 1998-04-22 | 2000-11-28 | At&T Corp. | High-dimensional index structure |
US6427123B1 (en) * | 1999-02-18 | 2002-07-30 | Oracle Corporation | Hierarchical indexing for accessing hierarchically organized information in a relational system |
US6353832B1 (en) * | 1999-05-11 | 2002-03-05 | Lucent Technologies Inc | Selectivity estimation in spatial databases |
US6470344B1 (en) * | 1999-05-29 | 2002-10-22 | Oracle Corporation | Buffering a hierarchical index of multi-dimensional data |
US6381605B1 (en) * | 1999-05-29 | 2002-04-30 | Oracle Corporation | Heirarchical indexing of multi-attribute data by sorting, dividing and storing subsets |
US6496830B1 (en) * | 1999-06-11 | 2002-12-17 | Oracle Corp. | Implementing descending indexes with a descend function |
US6272498B1 (en) * | 1999-07-22 | 2001-08-07 | Lucent Technologies Inc. | Method for partitioning multi-dimensional data sets into rectangular partitions |
US6380947B1 (en) * | 1999-07-22 | 2002-04-30 | At&T Corp. | Method and apparatus for displaying and tree scrolling a hierarchical data structure |
US6330003B1 (en) * | 1999-07-30 | 2001-12-11 | Microsoft Corporation | Transformable graphical regions |
US6574633B1 (en) * | 1999-11-01 | 2003-06-03 | Honeywell International Inc. | Method for dynamically grouping limited range physical entities in a topological space |
US6463500B1 (en) | 2000-01-04 | 2002-10-08 | International Business Machines Corporation | Apparatus and method to access computer memory by processing object data as sub-object and shape parameter |
WO2001067209A2 (en) | 2000-03-09 | 2001-09-13 | The Web Access, Inc. | Method and apparatus for performing a research task by interchangeably utilizing a multitude of search methodologies |
US6728694B1 (en) * | 2000-04-17 | 2004-04-27 | Ncr Corporation | Set containment join operation in an object/relational database management system |
US7428554B1 (en) * | 2000-05-23 | 2008-09-23 | Ocimum Biosolutions, Inc. | System and method for determining matching patterns within gene expression data |
IES20000407A2 (en) * | 2000-05-24 | 2001-08-08 | Nua Ltd | A System and Method for Categorising and Retrieving Documents on a Network |
US6742001B2 (en) * | 2000-06-29 | 2004-05-25 | Infoglide Corporation | System and method for sharing data between hierarchical databases |
US7165065B1 (en) * | 2000-07-14 | 2007-01-16 | Oracle Corporation | Multidimensional database storage and retrieval system |
DE10036712A1 (de) * | 2000-07-27 | 2002-02-28 | Active Mining Ag | Verfahren zur Bewertung von mit charakteristischen Merkmalen behafteten Prozessen |
AU773529B2 (en) * | 2000-08-04 | 2004-05-27 | Canon Kabushiki Kaisha | Estimating a property of one or more regions of a two dimensional set of data |
US6571249B1 (en) * | 2000-09-27 | 2003-05-27 | Siemens Aktiengesellschaft | Management of query result complexity in hierarchical query result data structure using balanced space cubes |
US7689621B1 (en) * | 2000-11-06 | 2010-03-30 | Navteq North America, Llc | Multi-dimensional spatial index for a geographic database |
US6735595B2 (en) | 2000-11-29 | 2004-05-11 | Hewlett-Packard Development Company, L.P. | Data structure and storage and retrieval method supporting ordinality based searching and data retrieval |
CA2437734A1 (en) * | 2001-02-20 | 2002-08-29 | P. Kay Wagoner | Method for screening compounds |
US6804677B2 (en) * | 2001-02-26 | 2004-10-12 | Ori Software Development Ltd. | Encoding semi-structured data for efficient search and browsing |
US7283987B2 (en) * | 2001-03-05 | 2007-10-16 | Sap Ag | Compression scheme for improving cache behavior in database systems |
US6732107B1 (en) * | 2001-03-26 | 2004-05-04 | Ncr Corporation | Spatial join method and apparatus |
US6772172B2 (en) * | 2001-04-27 | 2004-08-03 | Sun Microsystems, Inc. | Method, system, program, and computer readable medium for indexing object oriented objects in an object oriented database |
US6654760B2 (en) | 2001-06-04 | 2003-11-25 | Hewlett-Packard Development Company, L.P. | System and method of providing a cache-efficient, hybrid, compressed digital tree with wide dynamic ranges and simple interface requiring no configuration or tuning |
US6785687B2 (en) | 2001-06-04 | 2004-08-31 | Hewlett-Packard Development Company, L.P. | System for and method of efficient, expandable storage and retrieval of small datasets |
US6671694B2 (en) * | 2001-06-04 | 2003-12-30 | Hewlett-Packard Development Company, L.P. | System for and method of cache-efficient digital tree with rich pointers |
US6816856B2 (en) * | 2001-06-04 | 2004-11-09 | Hewlett-Packard Development Company, L.P. | System for and method of data compression in a valueless digital tree representing a bitset |
US6801904B2 (en) * | 2001-10-19 | 2004-10-05 | Microsoft Corporation | System for keyword based searching over relational databases |
US6792414B2 (en) * | 2001-10-19 | 2004-09-14 | Microsoft Corporation | Generalized keyword matching for keyword based searching over relational databases |
US20030120430A1 (en) * | 2001-12-03 | 2003-06-26 | Icagen, Inc. | Method for producing chemical libraries enhanced with biologically active molecules |
US7162480B2 (en) * | 2001-12-26 | 2007-01-09 | Sbc Technology Resources, Inc. | Usage-based adaptable taxonomy |
US7287033B2 (en) | 2002-03-06 | 2007-10-23 | Ori Software Development, Ltd. | Efficient traversals over hierarchical data and indexing semistructured data |
US7174382B2 (en) * | 2002-04-09 | 2007-02-06 | Hewlett-Packard Development Company, L.P. | Interest-based connections in peer-to-peer networks |
US7474657B2 (en) * | 2002-04-30 | 2009-01-06 | University Of Florida Research Foundation, Inc. | Partitioning methods for dynamic router tables |
US7523218B1 (en) | 2002-04-30 | 2009-04-21 | University Of Florida Research Foundation, Inc. | O(log n) dynamic router tables for prefixes and ranges |
US20040018237A1 (en) * | 2002-05-31 | 2004-01-29 | Perricone Nicholas V. | Topical drug delivery using phosphatidylcholine |
AU2003256391A1 (en) * | 2002-07-03 | 2004-01-23 | University Of Florida | Dynamic ip router tables using highest-priority matching |
US7444318B2 (en) * | 2002-07-03 | 2008-10-28 | University Of Florida Research Foundation, Inc. | Prefix partitioning methods for dynamic router tables |
JP2005534121A (ja) * | 2002-07-26 | 2005-11-10 | エベレット ロン | 参照を使用してジェネリック・データ・アイテムに関連するデータ管理アーキテクチャ |
US8335779B2 (en) * | 2002-08-16 | 2012-12-18 | Gamroe Applications, Llc | Method and apparatus for gathering, categorizing and parameterizing data |
US20040162712A1 (en) * | 2003-01-24 | 2004-08-19 | Icagen, Inc. | Method for screening compounds using consensus selection |
US7058640B2 (en) | 2003-02-05 | 2006-06-06 | International Business Machines Corporation | Systems, methods, and computer program products to efficiently update multidimensional databases |
US20040230554A1 (en) * | 2003-05-15 | 2004-11-18 | Ning An | Method of adding data in bulk to a spatial database |
US8229932B2 (en) | 2003-09-04 | 2012-07-24 | Oracle International Corporation | Storing XML documents efficiently in an RDBMS |
US8694510B2 (en) | 2003-09-04 | 2014-04-08 | Oracle International Corporation | Indexing XML documents efficiently |
US7366735B2 (en) | 2004-04-09 | 2008-04-29 | Oracle International Corporation | Efficient extraction of XML content stored in a LOB |
US7493305B2 (en) | 2004-04-09 | 2009-02-17 | Oracle International Corporation | Efficient queribility and manageability of an XML index with path subsetting |
US7499915B2 (en) * | 2004-04-09 | 2009-03-03 | Oracle International Corporation | Index for accessing XML data |
US7930277B2 (en) | 2004-04-21 | 2011-04-19 | Oracle International Corporation | Cost-based optimizer for an XML data repository within a database |
US7885980B2 (en) | 2004-07-02 | 2011-02-08 | Oracle International Corporation | Mechanism for improving performance on XML over XML data using path subsetting |
US8566300B2 (en) | 2004-07-02 | 2013-10-22 | Oracle International Corporation | Mechanism for efficient maintenance of XML index structures in a database system |
US7627547B2 (en) | 2004-11-29 | 2009-12-01 | Oracle International Corporation | Processing path-based database operations |
US8131766B2 (en) | 2004-12-15 | 2012-03-06 | Oracle International Corporation | Comprehensive framework to integrate business logic into a repository |
US7921076B2 (en) | 2004-12-15 | 2011-04-05 | Oracle International Corporation | Performing an action in response to a file system event |
US8285744B2 (en) * | 2005-09-30 | 2012-10-09 | Rockwell Automation Technologies, Inc. | Indexing and searching manufacturing process related information |
US8073841B2 (en) | 2005-10-07 | 2011-12-06 | Oracle International Corporation | Optimizing correlated XML extracts |
US8356053B2 (en) | 2005-10-20 | 2013-01-15 | Oracle International Corporation | Managing relationships between resources stored within a repository |
US20070161214A1 (en) * | 2006-01-06 | 2007-07-12 | International Business Machines Corporation | High k gate stack on III-V compound semiconductors |
CN101063972B (zh) * | 2006-04-28 | 2010-05-12 | 国际商业机器公司 | 用于增强映像树的可视性的方法和装置 |
US8510292B2 (en) | 2006-05-25 | 2013-08-13 | Oracle International Coporation | Isolation for applications working on shared XML data |
US7499909B2 (en) | 2006-07-03 | 2009-03-03 | Oracle International Corporation | Techniques of using a relational caching framework for efficiently handling XML queries in the mid-tier data caching |
US7555480B2 (en) * | 2006-07-11 | 2009-06-30 | Microsoft Corporation | Comparatively crawling web page data records relative to a template |
US7827177B2 (en) | 2006-10-16 | 2010-11-02 | Oracle International Corporation | Managing compound XML documents in a repository |
US9183321B2 (en) | 2006-10-16 | 2015-11-10 | Oracle International Corporation | Managing compound XML documents in a repository |
US7797310B2 (en) | 2006-10-16 | 2010-09-14 | Oracle International Corporation | Technique to estimate the cost of streaming evaluation of XPaths |
JP4933222B2 (ja) * | 2006-11-15 | 2012-05-16 | 株式会社日立製作所 | インデックス処理方法及び計算機システム |
US9940345B2 (en) | 2007-01-10 | 2018-04-10 | Norton Garfinkle | Software method for data storage and retrieval |
US8028090B2 (en) | 2008-11-17 | 2011-09-27 | Amazon Technologies, Inc. | Request routing utilizing client location information |
US7991910B2 (en) | 2008-11-17 | 2011-08-02 | Amazon Technologies, Inc. | Updating routing information based on client location |
US7836098B2 (en) | 2007-07-13 | 2010-11-16 | Oracle International Corporation | Accelerating value-based lookup of XML document in XQuery |
US7840609B2 (en) | 2007-07-31 | 2010-11-23 | Oracle International Corporation | Using sibling-count in XML indexes to optimize single-path queries |
US7991768B2 (en) | 2007-11-08 | 2011-08-02 | Oracle International Corporation | Global query normalization to improve XML index based rewrites for path subsetted index |
US8156243B2 (en) | 2008-03-31 | 2012-04-10 | Amazon Technologies, Inc. | Request routing |
US8321568B2 (en) | 2008-03-31 | 2012-11-27 | Amazon Technologies, Inc. | Content management |
US8601090B1 (en) | 2008-03-31 | 2013-12-03 | Amazon Technologies, Inc. | Network resource identification |
US8447831B1 (en) | 2008-03-31 | 2013-05-21 | Amazon Technologies, Inc. | Incentive driven content delivery |
US7970820B1 (en) | 2008-03-31 | 2011-06-28 | Amazon Technologies, Inc. | Locality based content distribution |
US8533293B1 (en) | 2008-03-31 | 2013-09-10 | Amazon Technologies, Inc. | Client side cache management |
US7962597B2 (en) | 2008-03-31 | 2011-06-14 | Amazon Technologies, Inc. | Request routing based on class |
US8606996B2 (en) | 2008-03-31 | 2013-12-10 | Amazon Technologies, Inc. | Cache optimization |
US9407681B1 (en) | 2010-09-28 | 2016-08-02 | Amazon Technologies, Inc. | Latency measurement in resource requests |
US7925782B2 (en) | 2008-06-30 | 2011-04-12 | Amazon Technologies, Inc. | Request routing using network computing components |
US9912740B2 (en) | 2008-06-30 | 2018-03-06 | Amazon Technologies, Inc. | Latency measurement in resource requests |
TWI396400B (zh) * | 2008-07-22 | 2013-05-11 | Univ Nat Sun Yat Sen | 偏斜索引樹及建立偏斜索引樹與具索引之非均勻式資料廣播循環之方法 |
US7958112B2 (en) | 2008-08-08 | 2011-06-07 | Oracle International Corporation | Interleaving query transformations for XML indexes |
US8521880B1 (en) | 2008-11-17 | 2013-08-27 | Amazon Technologies, Inc. | Managing content delivery network service providers |
US8060616B1 (en) | 2008-11-17 | 2011-11-15 | Amazon Technologies, Inc. | Managing CDN registration by a storage provider |
US8732309B1 (en) | 2008-11-17 | 2014-05-20 | Amazon Technologies, Inc. | Request routing utilizing cost information |
US8073940B1 (en) | 2008-11-17 | 2011-12-06 | Amazon Technologies, Inc. | Managing content delivery network service providers |
US8065417B1 (en) | 2008-11-17 | 2011-11-22 | Amazon Technologies, Inc. | Service provider registration by a content broker |
US8122098B1 (en) | 2008-11-17 | 2012-02-21 | Amazon Technologies, Inc. | Managing content delivery network service providers by a content broker |
US8732139B2 (en) * | 2008-12-18 | 2014-05-20 | Sap Ag | Method and system for dynamically partitioning very large database indices on write-once tables |
US8219563B2 (en) | 2008-12-30 | 2012-07-10 | Oracle International Corporation | Indexing mechanism for efficient node-aware full-text search over XML |
US8126932B2 (en) | 2008-12-30 | 2012-02-28 | Oracle International Corporation | Indexing strategy with improved DML performance and space usage for node-aware full-text search over XML |
US8688837B1 (en) | 2009-03-27 | 2014-04-01 | Amazon Technologies, Inc. | Dynamically translating resource identifiers for request routing using popularity information |
US8412823B1 (en) | 2009-03-27 | 2013-04-02 | Amazon Technologies, Inc. | Managing tracking information entries in resource cache components |
US8521851B1 (en) | 2009-03-27 | 2013-08-27 | Amazon Technologies, Inc. | DNS query processing using resource identifiers specifying an application broker |
US8756341B1 (en) | 2009-03-27 | 2014-06-17 | Amazon Technologies, Inc. | Request routing utilizing popularity information |
US8782236B1 (en) | 2009-06-16 | 2014-07-15 | Amazon Technologies, Inc. | Managing resources using resource expiration data |
US8397073B1 (en) | 2009-09-04 | 2013-03-12 | Amazon Technologies, Inc. | Managing secure content in a content delivery network |
US8433771B1 (en) | 2009-10-02 | 2013-04-30 | Amazon Technologies, Inc. | Distribution network with forward resource propagation |
US8001137B1 (en) | 2009-10-15 | 2011-08-16 | The United States Of America As Represented By The Director Of The National Security Agency | Method of identifying connected data in relational database |
US9495338B1 (en) | 2010-01-28 | 2016-11-15 | Amazon Technologies, Inc. | Content distribution network |
US10097398B1 (en) | 2010-09-28 | 2018-10-09 | Amazon Technologies, Inc. | Point of presence management in request routing |
US9003035B1 (en) | 2010-09-28 | 2015-04-07 | Amazon Technologies, Inc. | Point of presence management in request routing |
US8930513B1 (en) | 2010-09-28 | 2015-01-06 | Amazon Technologies, Inc. | Latency measurement in resource requests |
US8819283B2 (en) | 2010-09-28 | 2014-08-26 | Amazon Technologies, Inc. | Request routing in a networked environment |
US8924528B1 (en) | 2010-09-28 | 2014-12-30 | Amazon Technologies, Inc. | Latency measurement in resource requests |
US8468247B1 (en) | 2010-09-28 | 2013-06-18 | Amazon Technologies, Inc. | Point of presence management in request routing |
US9712484B1 (en) | 2010-09-28 | 2017-07-18 | Amazon Technologies, Inc. | Managing request routing information utilizing client identifiers |
US8577992B1 (en) | 2010-09-28 | 2013-11-05 | Amazon Technologies, Inc. | Request routing management based on network components |
US10958501B1 (en) | 2010-09-28 | 2021-03-23 | Amazon Technologies, Inc. | Request routing information based on client IP groupings |
US8938526B1 (en) | 2010-09-28 | 2015-01-20 | Amazon Technologies, Inc. | Request routing management based on network components |
CN101989178B (zh) * | 2010-11-05 | 2013-03-06 | 北京航空航天大学 | 多叉树数据结构的立体环状可视化方法 |
US8452874B2 (en) | 2010-11-22 | 2013-05-28 | Amazon Technologies, Inc. | Request routing processing |
US9391949B1 (en) | 2010-12-03 | 2016-07-12 | Amazon Technologies, Inc. | Request routing processing |
US10467042B1 (en) | 2011-04-27 | 2019-11-05 | Amazon Technologies, Inc. | Optimized deployment based upon customer locality |
CN102841891B (zh) * | 2011-06-21 | 2017-02-15 | 金蝶软件(中国)有限公司 | 一种树状结构节点的排序方法、装置及查询系统 |
WO2013058608A2 (ko) * | 2011-10-20 | 2013-04-25 | 아주대학교산학협력단 | 트리맵 가시화 시스템 및 방법 |
US8904009B1 (en) | 2012-02-10 | 2014-12-02 | Amazon Technologies, Inc. | Dynamic content delivery |
US10021179B1 (en) | 2012-02-21 | 2018-07-10 | Amazon Technologies, Inc. | Local resource delivery network |
CN103324642B (zh) * | 2012-03-23 | 2016-12-14 | 日电(中国)有限公司 | 为数据建立索引的系统和方法以及数据查询方法 |
US10623408B1 (en) | 2012-04-02 | 2020-04-14 | Amazon Technologies, Inc. | Context sensitive object management |
US9154551B1 (en) | 2012-06-11 | 2015-10-06 | Amazon Technologies, Inc. | Processing DNS queries to identify pre-processing information |
US9525659B1 (en) | 2012-09-04 | 2016-12-20 | Amazon Technologies, Inc. | Request routing utilizing point of presence load information |
US9323577B2 (en) | 2012-09-20 | 2016-04-26 | Amazon Technologies, Inc. | Automated profiling of resource usage |
US10205698B1 (en) | 2012-12-19 | 2019-02-12 | Amazon Technologies, Inc. | Source-dependent address resolution |
EP2973041B1 (de) | 2013-03-15 | 2018-08-01 | Factual Inc. | Vorrichtung, system und verfahren zur chargen- und echtzeit-datenverarbeitung |
US11176111B2 (en) * | 2013-03-15 | 2021-11-16 | Nuodb, Inc. | Distributed database management system with dynamically split B-tree indexes |
US10740323B1 (en) | 2013-03-15 | 2020-08-11 | Nuodb, Inc. | Global uniqueness checking in distributed databases |
US9501363B1 (en) | 2013-03-15 | 2016-11-22 | Nuodb, Inc. | Distributed database management system with node failure detection |
US10037348B2 (en) | 2013-04-08 | 2018-07-31 | Nuodb, Inc. | Database management system with database hibernation and bursting |
US10209904B2 (en) * | 2013-04-09 | 2019-02-19 | EMC IP Holding Company LLC | Multiprocessor system with independent direct access to bulk solid state memory resources |
US9294391B1 (en) | 2013-06-04 | 2016-03-22 | Amazon Technologies, Inc. | Managing network computing components utilizing request routing |
KR101593632B1 (ko) * | 2014-09-04 | 2016-02-12 | 광운대학교 산학협력단 | 데이터베이스 압축 방법 및 그 장치 |
US10091096B1 (en) | 2014-12-18 | 2018-10-02 | Amazon Technologies, Inc. | Routing mode and point-of-presence selection service |
US10097448B1 (en) | 2014-12-18 | 2018-10-09 | Amazon Technologies, Inc. | Routing mode and point-of-presence selection service |
US10033627B1 (en) | 2014-12-18 | 2018-07-24 | Amazon Technologies, Inc. | Routing mode and point-of-presence selection service |
US10225326B1 (en) | 2015-03-23 | 2019-03-05 | Amazon Technologies, Inc. | Point of presence based data uploading |
US9887932B1 (en) | 2015-03-30 | 2018-02-06 | Amazon Technologies, Inc. | Traffic surge management for points of presence |
US9819567B1 (en) | 2015-03-30 | 2017-11-14 | Amazon Technologies, Inc. | Traffic surge management for points of presence |
US9887931B1 (en) | 2015-03-30 | 2018-02-06 | Amazon Technologies, Inc. | Traffic surge management for points of presence |
US10884869B2 (en) | 2015-04-16 | 2021-01-05 | Nuodb, Inc. | Backup and restore in a distributed database utilizing consistent database snapshots |
KR101782816B1 (ko) * | 2015-05-12 | 2017-09-28 | 아주대학교산학협력단 | 트리맵 시각화 방법 및 그 방법을 이용하는 장치 |
US9832141B1 (en) | 2015-05-13 | 2017-11-28 | Amazon Technologies, Inc. | Routing based request correlation |
WO2016183539A1 (en) | 2015-05-14 | 2016-11-17 | Walleye Software, LLC | Data partitioning and ordering |
US10180954B2 (en) | 2015-05-29 | 2019-01-15 | Nuodb, Inc. | Disconnected operation within distributed database systems |
US10067969B2 (en) | 2015-05-29 | 2018-09-04 | Nuodb, Inc. | Table partitioning within distributed database systems |
US10616179B1 (en) | 2015-06-25 | 2020-04-07 | Amazon Technologies, Inc. | Selective routing of domain name system (DNS) requests |
US10097566B1 (en) | 2015-07-31 | 2018-10-09 | Amazon Technologies, Inc. | Identifying targets of network attacks |
US9794281B1 (en) | 2015-09-24 | 2017-10-17 | Amazon Technologies, Inc. | Identifying sources of network attacks |
US9742795B1 (en) | 2015-09-24 | 2017-08-22 | Amazon Technologies, Inc. | Mitigating network attacks |
US9774619B1 (en) | 2015-09-24 | 2017-09-26 | Amazon Technologies, Inc. | Mitigating network attacks |
US10270878B1 (en) | 2015-11-10 | 2019-04-23 | Amazon Technologies, Inc. | Routing for origin-facing points of presence |
US10049051B1 (en) | 2015-12-11 | 2018-08-14 | Amazon Technologies, Inc. | Reserved cache space in content delivery networks |
US10257307B1 (en) | 2015-12-11 | 2019-04-09 | Amazon Technologies, Inc. | Reserved cache space in content delivery networks |
US10348639B2 (en) | 2015-12-18 | 2019-07-09 | Amazon Technologies, Inc. | Use of virtual endpoints to improve data transmission rates |
WO2017151602A1 (en) | 2016-02-29 | 2017-09-08 | Craxel, Inc. | Efficient encrypted data management system and method |
US10075551B1 (en) | 2016-06-06 | 2018-09-11 | Amazon Technologies, Inc. | Request management for hierarchical cache |
US10110694B1 (en) | 2016-06-29 | 2018-10-23 | Amazon Technologies, Inc. | Adaptive transfer rate for retrieving content from a server |
US9992086B1 (en) | 2016-08-23 | 2018-06-05 | Amazon Technologies, Inc. | External health checking of virtual private cloud network environments |
US10033691B1 (en) | 2016-08-24 | 2018-07-24 | Amazon Technologies, Inc. | Adaptive resolution of domain name requests in virtual private cloud network environments |
US10469513B2 (en) | 2016-10-05 | 2019-11-05 | Amazon Technologies, Inc. | Encrypted network addresses |
US10831549B1 (en) | 2016-12-27 | 2020-11-10 | Amazon Technologies, Inc. | Multi-region request-driven code execution system |
US10372499B1 (en) | 2016-12-27 | 2019-08-06 | Amazon Technologies, Inc. | Efficient region selection system for executing request-driven code |
US10938884B1 (en) | 2017-01-30 | 2021-03-02 | Amazon Technologies, Inc. | Origin server cloaking using virtual private cloud network environments |
US10503613B1 (en) | 2017-04-21 | 2019-12-10 | Amazon Technologies, Inc. | Efficient serving of resources during server unavailability |
US11075987B1 (en) | 2017-06-12 | 2021-07-27 | Amazon Technologies, Inc. | Load estimating content delivery network |
US10447648B2 (en) | 2017-06-19 | 2019-10-15 | Amazon Technologies, Inc. | Assignment of a POP to a DNS resolver based on volume of communications over a link between client devices and the POP |
US11573940B2 (en) | 2017-08-15 | 2023-02-07 | Nuodb, Inc. | Index splitting in distributed databases |
US10241965B1 (en) | 2017-08-24 | 2019-03-26 | Deephaven Data Labs Llc | Computer data distribution architecture connecting an update propagation graph through multiple remote query processors |
US10742593B1 (en) | 2017-09-25 | 2020-08-11 | Amazon Technologies, Inc. | Hybrid content request routing system |
US10592578B1 (en) | 2018-03-07 | 2020-03-17 | Amazon Technologies, Inc. | Predictive content push-enabled content delivery network |
US10862852B1 (en) | 2018-11-16 | 2020-12-08 | Amazon Technologies, Inc. | Resolution of domain name requests in heterogeneous network environments |
US11025747B1 (en) | 2018-12-12 | 2021-06-01 | Amazon Technologies, Inc. | Content request pattern-based routing system |
US11983201B2 (en) * | 2019-09-27 | 2024-05-14 | International Business Machines Corporation | Creating a metatype tree for metatype introspection |
CN111209444B (zh) * | 2020-01-06 | 2023-03-31 | 电子科技大学 | 一种基于时间序列多版本图拓扑数据的存储方法 |
US20220237179A1 (en) * | 2021-01-28 | 2022-07-28 | Wood Mackenzie, Inc. | Systems and Methods for Improved Machine Learning Using Data Completeness and Collaborative Learning Techniques |
US12086161B2 (en) | 2021-07-09 | 2024-09-10 | Craxel, Inc. | Transforming relational statements into hierarchical data space operations |
US11740788B2 (en) | 2022-01-18 | 2023-08-29 | Craxel, Inc. | Composite operations using multiple hierarchical data spaces |
WO2023140966A1 (en) * | 2022-01-18 | 2023-07-27 | Craxel, Inc. | Organizing information using hierarchical data spaces |
US20230229673A1 (en) * | 2022-01-18 | 2023-07-20 | Craxel, Inc. | Executing hierarchical data space operations |
CN116304390B (zh) * | 2023-04-13 | 2024-02-13 | 北京基调网络股份有限公司 | 时序数据处理方法、装置、存储介质及电子设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63191226A (ja) * | 1987-02-03 | 1988-08-08 | Ricoh Co Ltd | B↑+tree上における同時実行制御方式 |
JPH02130647A (ja) * | 1988-11-11 | 1990-05-18 | Toshiba Corp | 索引木構造の更新方式 |
US5247666A (en) * | 1991-05-28 | 1993-09-21 | Fawnwood, Inc. | Data management method for representing hierarchical functional dependencies |
-
1994
- 1994-07-01 WO PCT/EP1994/002166 patent/WO1995002222A1/en active IP Right Grant
- 1994-07-01 AU AU74571/94A patent/AU679553B2/en not_active Ceased
- 1994-07-01 JP JP50381595A patent/JP3433803B2/ja not_active Expired - Fee Related
- 1994-07-01 US US08/583,072 patent/US5701467A/en not_active Expired - Fee Related
- 1994-07-01 ES ES94924223T patent/ES2100082T3/es not_active Expired - Lifetime
- 1994-07-01 EP EP94924223A patent/EP0707725B1/de not_active Expired - Lifetime
- 1994-07-01 DE DE69401662T patent/DE69401662T2/de not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP0707725B1 (de) | 1997-01-29 |
AU679553B2 (en) | 1997-07-03 |
JP3433803B2 (ja) | 2003-08-04 |
JPH09500746A (ja) | 1997-01-21 |
DE69401662D1 (de) | 1997-03-13 |
ES2100082T3 (es) | 1997-06-01 |
US5701467A (en) | 1997-12-23 |
WO1995002222A1 (en) | 1995-01-19 |
EP0707725A1 (de) | 1996-04-24 |
AU7457194A (en) | 1995-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69401662T2 (de) | Datenbankstrukturen | |
DE69636761T2 (de) | Speichern und wiederauffinden von geordneten schlüsselmengen in einem kompakten 0-kompletten baum | |
DE3788750T2 (de) | Schätzeinrichtung des Indexschlüsselbereiches. | |
DE3855213T2 (de) | Datenbanksystem und Verfahren für den gleichzeitigen Satzzugriff mit Hilfe eines Baumstrukturindexes | |
DE10028688B4 (de) | Methode, System und Programm für eine Verbindungsoperation in einer mehrspaltigen Tabelle sowie in Satellitentabellen mit doppelten Werten | |
DE69510962T2 (de) | Semantisches netzwerk | |
DE68926422T2 (de) | Datenbankverwaltungssystem | |
DE69524601T2 (de) | Verfahren zum daten speichern und daten wiederfinden und eine speicheranordnung | |
DE69507940T2 (de) | Rechner-verfahren und gerät für asynchrone geordnete operationen | |
DE112015000218B4 (de) | Verfahren, System und Computerprogramm zum Abtasten einer Mehrzahl von Speicherbereichen in einem Arbeitsspeicher nach einer spezifizierten Anzahl von Ergebnissen | |
DE69831246T2 (de) | Verfahren zur einrichtung eines assoziativen speichers mit digitaler trie struktur | |
DE3856055T2 (de) | Verfahren und Einrichtung, um gleichzeitigen Zugriff zu indizierten sequentiellen Dateien zu ermöglichen | |
DE60035432T2 (de) | System zur verwaltung der rdbm fragmentierungen | |
DE60132243T2 (de) | Verfahren zum indizieren von entitäten | |
DE3855212T2 (de) | Verfahren zur Berechnung eines transitiven Abschlusses | |
DE69430027T2 (de) | Effiziente Speicherung eines Objektes in einem Dateisystem | |
DE60130475T2 (de) | Durchführung von kalkulationen eines tabellenkalkulationstyps in einem datenbanksystem | |
DE68926849T2 (de) | Struktur und Verfahren zur Anordnung rekursiv abgeleiteter Daten in einer Datenbank | |
DE69031772T2 (de) | Verfahren zur Informations-Wiedergewinnung für ein Datenbanksystem | |
DE69419749T2 (de) | Speicherverwalter für ein rechnersystem und verfahren hierfür | |
DE68929132T2 (de) | Datenbankverwaltungssystem und Verfahren hierfür | |
DE19954534A1 (de) | Rückwärtsindexieren von Zeichenketten in einer relationalen Datenbank zum Suchen mit Joker | |
DE112019004387T5 (de) | Unterteilen eines wissensgraphen | |
DE19513308A1 (de) | Dreidimensionales Dateisystem unter Verwendung einer virtuellen Knotenarchitektur | |
DE60118973T2 (de) | Verfahren zum abfragen einer struktur komprimierter daten |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |