DE69401662T2 - Datenbankstrukturen - Google Patents

Datenbankstrukturen

Info

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
Application number
DE69401662T
Other languages
English (en)
Other versions
DE69401662D1 (de
Inventor
Michael Freeston
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
EUROP COMPUTER IND RES
Original Assignee
EUROP COMPUTER IND RES
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by EUROP COMPUTER IND RES filed Critical EUROP COMPUTER IND RES
Application granted granted Critical
Publication of DE69401662D1 publication Critical patent/DE69401662D1/de
Publication of DE69401662T2 publication Critical patent/DE69401662T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/953Organization of data
    • Y10S707/956Hierarchical
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/964Database arrangement
    • Y10S707/966Distributed
    • Y10S707/967Peer-to-peer
    • Y10S707/968Partitioning
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating 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

    Technisches Gebiet
  • 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.
  • Technischer Hintergrund
  • 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.
  • Kurzbeschreibung der Zeichnungen
  • 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.
  • Betriebsweisen zur Durchführung der Erfindung
  • 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.
  • Definition 1.
  • 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.
  • Definition 2.
  • 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.
  • Definition 3.
  • 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.
  • Definition 4.
  • 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.
  • Definition 5.
  • Eine geschlossene Begrenzung B umschließt einen Teilraum DS eines Datenraumes D, wenn jeder Punkt X in DS innerhalb der Begrenzung B liegt.
  • Definition 6.
  • 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.
  • Definition 7.
  • 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.
  • Definition 8.
  • 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).
  • Definition 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).
  • Definition 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).
  • Definition 11.
  • 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}.
  • Definition 12.
  • 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).
  • Definition 13.
  • 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.:
  • Definition 14.
  • 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') &le; 2/3 und f(Lb") &le; 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&le;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&le;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.
DE69401662T 1993-07-07 1994-07-01 Datenbankstrukturen Expired - Fee Related DE69401662T2 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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