DE10331679A1 - Verfahren für Suche in einem mehrdimensionalen Datenbestand - Google Patents

Verfahren für Suche in einem mehrdimensionalen Datenbestand Download PDF

Info

Publication number
DE10331679A1
DE10331679A1 DE10331679A DE10331679A DE10331679A1 DE 10331679 A1 DE10331679 A1 DE 10331679A1 DE 10331679 A DE10331679 A DE 10331679A DE 10331679 A DE10331679 A DE 10331679A DE 10331679 A1 DE10331679 A1 DE 10331679A1
Authority
DE
Germany
Prior art keywords
data
bigmin
search
index
litmax
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.)
Granted
Application number
DE10331679A
Other languages
English (en)
Other versions
DE10331679B4 (de
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.)
Individual
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to DE10331679A priority Critical patent/DE10331679B4/de
Publication of DE10331679A1 publication Critical patent/DE10331679A1/de
Application granted granted Critical
Publication of DE10331679B4 publication Critical patent/DE10331679B4/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/2264Multidimensional index structures
    • 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

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)

Abstract

Zur Suche in einem mehrdimensionalen Datenbestand mit einer expliziten und impliziten Abbildung der mehrdimensionalen Daten auf einen eindimensionalen Index, auf insbesondere extern gespeicherten Dateneinheiten (pages), wird für zumindest einen Teil der Dateneinheiten aufgrund einer BIGMIN- und einer LITMAX-Berechnung über den Zugriff auf die betreffende Dateneinheit entschieden.
BIGMIN ist der kleinstmögliche Index im Suchbereich, der größer ist als der kleinste Index einer (der betreffenden oder einer anderen) Dateneinheit, LITMAX der größtmögliche Index im Suchbereich, kleiner als der größte Index einer Dateneinheit.
Das Verfahren gestattet die effiziente Realisierung der mehrdimensionalen Bereichssuche und darauf basierender Suchverfahren wie die Nächste-Nachbar-Suche in hochdimensionalen Datenbanken, z. B. Bilddatenbanken.

Description

  • Die Erfindung betrifft die Verwaltung eines mehrdimensionalen Datenbestands, speziell das Suchen darin, insbesondere mit direkter oder indirekter Durchführung einer mehrdimensionalen Bereichsanfrage.
  • Mehrdimensionale Datenbanksysteme spielen eine zunehmend wichtige Rolle, beispielsweise bei Multimedia-Datenbanken. Eine wichtige Aufgabenstellung dabei ist die effiziente Beantwortung der mehrdimensionale Bereichsanfrage (multidimensional range query). Dabei wird die Datenbank nach allen Datensätzen durchsucht, bei denen mehrere Attribute innerhalb eines vorgegebenen Suchbereichs liegen. Z.B. könnten in einer Vertriebsdatenbank alle Kunden gesucht werden, deren Alter zwischen 30 und 40 Jahren liegt, deren Postleitzahl zwischen 20000 und 29999 liegt, und deren Einkommensklasse zwischen Klasse 3 und Klasse 5 liegt. Die mehrdimensionale Bereichsanfrage ist auch Grundlage für die effiziente Realisierung einer Nächste-Nachbar-Suche in umfangreichen mehrdimensionalen Daten und für Ähnlichkeitssuchen.
  • Die aus der Literatur bekannten Verfahren mit Bezug zu dieser Erfindung müssen zunächst etwas eingehender erörtert werden, um das Wesen der Erfindung erläutern zu können.
  • Eine bekannte Methode zur effizienten Bearbeitung mehrdimensionaler Datenbanken ist die Abbildung des mehrdimensionalen Datenraums auf einen eindimensio nalen Index (mittels einer raumfüllenden Kurve) und Sortierung nach diesem Index. Dieser Ansatz hat insbesondere den Vorteil der leichten Integrierbarkeit in existierende, eindimensionale Datenbanken. Als günstige Indizierungsmethoden werden insbesondere favorisiert: der Z-Index [Tr1, Or1, Ba1, Ra1], und der Hilbert-Index [La1].
  • Die Beispiele in dieser Patentanmeldung basieren alle auf dem Z-Index, die beschriebenen Verfahren können jedoch genauso für beliebige andere Indizierungen verwendet werden, vorausgesetzt es existiert eine Methode zur Berechnung der weiter unten beschriebenen Werte BIGMIN und LITMAX.
  • 1 zeigt ein Zahlenfeld mit Z-indizierten Werten, für ein zweidimensionales System mit den Koordinaten x und y. Diese Indizes entstehen in einfacher Weise durch bitweises Verzahnen der Attributwerte x und y. Die raumfüllende Kurve durchläuft den 2D-Raum in vier Quadranten, die in der Form eines großen Z angeordnet sind diese werden rekursiv wiederum in Form eines kleinen Z durchlaufen, etc.
  • Die in der Datenbank vorhandenen Datensätze werden im folgenden auch als Datenpunkte angesprochen (im zweidimensionalen Beispiel 1 handelt es sich um Wertepaare mit je einem Wert für die Attribute x und y, wahlweise auch durch ihren Index angesprochen). Ist allgemein von Punkten die Rede, so wird keine Aussage darüber gemacht, ob sie als reale Datensätze in der Datenbank vorhanden sind oder nicht. Die im Suchbereich gefundenen Datenpunkte werden Treffer genannt.
  • Die Datenpunkte werden nun nach dem (Z-)Index sortiert abgespeichert. Dies kann einfach in eindimensionalen Feldern geschehen. Im folgenden werden bekannte, verbreitete Datenstrukturen für dynamische Datenmengen besprochen, die für die Erfindung relevant sind.
  • Diese kann man gliedern in solche, die eher günstig sind für interne Speicherung (im RAM-Arbeitsspeicher) und solche, die eher günstig sind für externe Speiche rung (insbesondere Festplatten). Beliebt sind Suchbäume, weil Balanciermechanismen bekannt sind, mit denen man auch in dynamischen Datenbeständen mit garantiert logarithmischer Anzahl von Schritten nach vorgegebenen Werten suchen kann. Für interne Speicherung werden binäre Suchbäume bevorzugt für externe Speicherung Bäume vom B-Typ.
  • Bei binären Suchbäumen (siehe Beisiel 2) besitzt jeder Knoten einen Datensatz und (bis zu) zwei Verweise auf einen linken bzw. rechten Nachfolger (Sohn); in Sonderfällen kann ein Knoten nur einen Sohn besitzen. Die Werte im linken Sohn und dessen Unterbaum sind alle kleiner oder kleinergleich dem Wert des Vaters (im folgenden ist ohne Beschränkung der Allgemeinheit "links" mit "kleiner" und "rechts" mit "größer" gleichzusetzen).
  • Bei Bäumen vom B-Typ besitzt jeder Knoten eine bestimmte Anzahl von Datensätzen und entprechend viele Verweise auf Nachfolgerknoten, also einen hohen Verzweigungsfaktor. Die Daten eines Knotens werden vorzugsweise auf je einer (externen) Speicherseite abgelegt.
  • In der Literatur werden unterschieden:
    B -Bäume (siehe Beispiel 3): Innere Knoten 1 besitzen Werte und Verweise 3 auf Nachfolgerknoten, wobei die Nachfolgerknoten Blätter 2 oder wiederum innere Knoten 1 sind. Die werte in den Knoten sind (z.B. aufsteigend) sortiert. Die Blätter besitzen nur Werte. Bei den inneren Knoten liegen. die Werte (gedanklich) zwischen je zwei Verweisen 3 auf Nachfolgerknoten. Die Werte im Unterbaum des linken Verweises sind alle kleiner (kleinergleich) als der Wert selbst. Die Werte im Unterbaum des rechten Verweises sind alle groesser (groessergleich) als der Wert selbst. Ohne Beschränkung der Allgemeinheit und ohne Beschränkung der Ansprüche darauf nehmen wir im folgenden an, daß gleiche Datensätze in einem Baum nicht erlaubt sind. Im Beispiel
  • 3 liegen im linken Unterbaum des Wertes 24 die Werte 3, 4, 6, 7, 8, 11, 12, 15, 17, 18; im linken Unterbaum des Wertes 7 befinden sich die Werte 3, 4, 6.
  • Bei B- Bäumen ist – mit Ausnahme der Wurzel – jeder Knoten mindestens bis zur Hälfte mit Werten gefüllt.
  • B* -Bäume: B* -Bäume entprechen prinzipiell den B -Bäumen, haben jedoch einen anderen Mindest-Füllgrad.
  • B+ -Bäume: (Siehe Beispiel 4) Bei B+ -Bäumen befinden sich die eigentlichen Datensätze alle in den Blattknoten, die internen Knoten besitzen einen Diskriminator 4 zwischen je zwei Verweisen, anhand dessen die Grenze zwischen den darunterliegenden Knoten erkennbar ist. Zusätzlich existieren auf Blattebene Hilfszeiger 5 zu dem jeweils nächsten Knoten. Die Werte zu dem in 4 mit 3 gekennzeichneten Verweis liegen zwischen 12 (ausschliesslich) und 18 (einschliesslich).
  • Für eine mehrdimensionale Bereichsanfrage berechnet man den minimal möglichen Index MIN und den maximal möglichen Index MAX innerhalb des mehrdimensionalen Suchbereichs. In dem Beispiel 5 sei der Suchbereich 6: x=7..8, y=1..5. Bei Z-Indizierung entpricht dies den beiden äußersten Ecken MIN = 23, MAX=98 im Suchbereich. Beim Suchen braucht man nur solche Knoten zu inspizieren, deren Werte potentiell zwischen MIN und MAX (jeweils einschließlich) liegen.
  • Diese Massnahme alleine führt jedoch noch nicht zu einer wirklich effizienten Suche. Auf die folgende Weise wird die Suche ganz erheblich beschleunigt: Trifft man bei der Suche einen Wert, der zwar innerhalb des Indexintervalls MIN...MAX liegt, aber ausserhalb des Suchbereichs, so kann man u.U. von dort aus sehr große Bereiche überspringen. Trifft man in 5 z.B. den Wert 33, der ja im Suchintervall 23..98 liegt, so ist der nächsthöhere mögliche Wert im Suchbereich der Wert 53. Von 33 aus kann man also alle Knoten mit Werten nur zwischen 34...52 (eingekreist 5) überspringen. Der nächstmögliche Wert im Suchbereich wird in [Tr1] BIGMIN genannt, da er auf der "großen" Seite des Aufpunkts der kleinstmögliche Wert im Suchbereich ist. Umgekehrt wird auf der "kleinen" Seite der größtmögliche Wert im Suchbereich "LITMAX" genannt (in 5 gilt für den Aufpunkt 33 LITMAX=31).
  • Es muss also nur anfänglich der gesamte Indexbbereich MIN..MAX angefragt werden, dieser anfängliche Indexbereich zum Suchbereich wird dynamisch eingeschränkt; der gerade aktive Indexbereich wird im folgenden Anfragebereich genannt.
  • Anmerkung: Nicht Gegenstand dieser Patentanmeldung ist die Berechnung von BIGMIN und LITMAX; sie ist schwierig, es sind aber effiziente Lösungen bekannt: In [Tr1] ein effizientes Berechnungsverfahren angegeben, das linear mit der Anzahl der Dimensionen ist. Das nach (Ba1) angegebene BIGMIN-Berechnungsverfahren für Z-indizierte Daten ist exponentiell mit der Anzahl der Dimensionen und wurde später nach (Ra1) durch ein Verfahren ("next intersection point") ersetzt, das der BIGMIN-Berechnung nach [Tr1] entpricht. Ein BIGMIN-Berechnungsverfahren ("calculate next match") für Hilbert indizierte Daten ist mit vollständigem Quellcode in [La1] angegeben.
  • Die folgenden Betrachtungen werden alleine auf Basis einer eindimensionalen Indizierung und den Funktionen BIGMIN/LITMAX; mehrdimensionale Überlegungen brauchen im folgenden nicht angestellt zu werden.
  • Bezüglich der knotenweisen Abarbeitung von Suchbäumen kann man unterscheiden:
    • a) Bearbeitung iterativ in den Blättern von 8+ -Bäumen, von links nach rechts
    • b) Bearbeitung von oben nach unten ("Top-Down"), vorzugsweise rekursiv.
  • In [Tr1] wird, zur effizienten Realisierung der mehrdimensionalen Bereichsanfrage mit Z-indizierten Daten, ein rekursives Top-Down-Verfahren angegeben. Das dort angegebene Suchverfahren wurde mit Blick auf binäre Suchbäume angegeben, also vorzugsweise für interne Speicherung; es arbeitet fallweise mit BIGMIN oder der spiegelbildlichen Funkion LITMAX.
  • Modifikationen für Bäume vom B-Typ, die knotenweise ebenfalls mit BIGMIN ODER LITMAX arbeiten, wurden in [Tr2] angegeben.
  • Für B+ Bäume ist ein iteratives, von links nach rechts arbeitendes Verfahren bekannt, das nur mit BIGMIN arbeitet, wobei [Ba1, Ra1] mit Z-indizierten B+ -Bäumen und [La1] mit Hilbert-Indizierten B+ -Bäumen arbeiten. Für B- Bäume ist dieses Verfahren nicht direkt anwendbar.
  • Die bekannten von links nach rechts arbeitenden Verfahren arbeiten wie folgt: von dem höchsten in einem Knoten gefundenen Wert als Aufpunkt ausgehend, wird BIGMIN bestimmt. Die Daten werden von links nach rechts nach dem nächsten Knoten durchsucht, dessen höchster Wirt groessergleich BIGMIN ist. Erst dieser Knoten braucht inspiziert zu werden, die dazwischen liegenden können übersprungen werden. Ein Beispiel folgt weiter unten mit 6 und 7.
  • Anmerkung; Anstelle einer direkten BIGMIN-Berechnung berechnet [Or1] die Schittmenge zwischen den Z-werten der Punkte des Suchbereichs mit denen eines Z-Indexbereichs. Diese Schnittmengenbildung arbeitet auf beiden Mengen parallel von links nach rechts und versucht dabei, zusammenhängende Indexbereiche der Suchbereichs-Indexmenge effizient zu nutzen; die Suchbereichs-Indexmenge besitzt jedoch potentiell sehr viele kleine Löcher, so daß dieses Verfahren sehr ineffizient werden kann. Das Verfahren läuft letzt lich auf eine indirekte BIGMIN-Berechnung von links nach rechts hinaus.
  • Genauere Untersuchungen zu dem für B+ -Bäume bisher eingesetzten Verfahren haben einen gravierenden Nachteil offengelegt:
  • Beispiel:
  • Die Datenbank habe die in 6 unterstrichenen Werte 24, 27, 33, 35, 38, 48, 50, 51, 56, 57, 59, 60, 61, 63, 64, 66, 67, 75, 76, 78, 88, 89, 93, .. die organisiert sind in 8 Blattknoten mit den Wertebereichen (24..27), (33..38), (48..51), (56..59), (64..67), (76..78), (88..93). Der Suchbereich 6 ist in 6 mit einem Rechteck angedeutet. Der einzige Datenpunkt im Suchbereich hat den Index 66. 7 zeigt eine dazugehörige Datenstruktur auf Basis eines B+ -Baums.
  • Bei der bekannten Suchmethode von links nach rechts wird zunächst das Blatt (24..27) aufgesucht (dies geschieht üblicherweise top down). Ausgehend von 27 gilt BIGMIN = 29. Das nächste zu besuchende Blatt ist damit (33..38). Ausgehend von 38 gilt BIGMIN = 53. Damit kann das Blatt (48..51) übersprungen werden, das nächste zu besuchende Blatt ist damit (56..59). Von dort gilt BIGMIN=66. Damit kann der Knoten (60..63) übersprungen werden und der Bereich (64..67) wird aufgesucht; dort wird der Treffer 66 gefunden. Von dort gilt BIGMIN= 72. Damit muss der Bereich (76..78) aufgesucht werden; Von dort gilt BIGMIN= 96. Damit kann zumindest der Knoten (80..83) übersprungen werden, etc. Die Inspektionsreihenfolge 10 ist mit den gestrichelten Pfeilen an den Blättern angegeben. Um diese Inspektionsreihenfolge realisieren zu können, muss der Baum auf dem mit den fett gezeichneten Pfeilen gekennzeichneten Weg 11 traversiert werden.
  • Die beiden Probleme sind anhand dieses Beispiels erkennbar:
    • a) diverse Knoten (im Beispiel die Blattknoten (24..27), (33.38), (56..59), (76..78) werden also besucht, ohne daß sich darin ein Treffer befindet.
    • b) um z.B. von (56..59) zu (64..67) zu gelangen, muß man im Suchbaum wieder hochsteigen, und von dort wieder hinab. Zum gezielten Überspringen von Indexbereichen nützen bei B+ -Bäumen die Hilfszeiger zur jeweils nächsten Blatt recht wenig; es muß der Innenbereich des B+ -Baums durchgearbeitet werden, was insbesondere dann störend ist, wenn der Innenbereich (bei B+ -Bäumen auch "Indexbereich" genannt) so groß ist, daß er nicht im Arbeitsspeicher gehalten werden kann (siehe [Ral], wonach im Innenbereich dafür spezielle Hilfszeiger 9 angelegt werden).
  • Die Probleme erscheinen bei diesem Miniatur-Beipiel natürlich wenig gravierend, multiplizieren sich jedoch in der realen Anwendung einer großen Datenbank.
  • Zudem: Bei der iterativen Vorgehensweise von links nach rechts müssen nicht nur überflüssigerweise Knoten geöffnet werden, es werden auch entprechend viele überflüssige BIGMIN-Berechnungen durchgeführt. Je nach Indexierungsweise kann die BIGMIN-Berechnung relativ aufwendig sein.
  • Aufgabe der Erfindung ist die Vermeidung dieser beiden Nachteile: bei baumartiger. Datenstrukturen, insbesondere solchen mit mehreren Datensätzen je Speicherseite, wie Bäumen vom B-Typ, sollen möglichst selten Knoten ohne Treffer inspiziert werden müssen. Nebenaufgabe ist es, möglichst wenige BIGMIN-Berechnungen durchführen zu müssen. Eine weitere Aufgabe ist es, Hilfsmechanismen wie Hilfszeiger 9 zum Überspringen von Datenbereichen verzichtbar zu machen.
  • Bei hochdimensionalen Daten kann sogar die Anzahl der Wertevergleiche, die angestellt werden müssen, von Bedeutung sein; eine weitere Aufgabe ist es daher, die Anzahl der durchzuführenden Wertevergleiche zu minimieren.
  • Die Aufgabe wird nach Anspruch 1 gelöst.
  • Um die Lösung genau beschreiben zu können, werden vorab erfindungsgemäße Modifikationen der Bäume vom B-Typ erläutert und der Begriff "Randindex" eingeführt.
  • 8 zeigt eine Erweiterung von B-Bäumen dergestalt, daß jeder Verweis, also auch die äußeren Verweise, einen linken und rechten Diskriminator besitzt. Dazu werden am linken und rechten Rand Hilfsdiskriminatoren 12 eingeführt. Damit ist beim Durchgehen des Baumes von oben nach unten bekannt, daß z.B. die Werte im Unterbaum des Verweises 3a zwischen 3 (einschließlich) und 7 (ausschließlich) liegen, und daß die Werte im Unterbaum des Verweises 3b zwischen 7 (ausschließlich) und 15 (ausschließlich) liegen, und daß die Werte im Unterbaum des Verweises 3c zwischen 3 (einschließlich) und 24 (ausschließlich) liegen.
  • Rechter und linker Diskriminator eines Verweises (z.B. die Werte 7 und 15 für Verweis 3b) nach 8 werden Randindizes genannt.
  • 9 zeigt eine entprechende Erweiterung für B+ -Bäume; ausgehend von dem Beispiel 4, wird der Hilfs-Diskrimator mit dem Wert 3 eingeführt. Beim Durchgehen des Baumes von oben nach unten ist z.B. bekannt, daß die Werte im Unterbaum des Verweises 3d zwischen 3 (einschließlich) und 7 (einschließlich) liegen.
  • Rechter und linker Diskriminator eines Verweises nach 9 werden Randindizes genannt.
  • In den bisherigen Beispielen dient ein nicht am Rand liegender Diskriminator zwei Verweisen, z.B. dient in
  • 9 der Diskriminator mit Wert 7 als Grenzangabe für die Verweise 3d und 3e.
  • Bei der zusätzlichen Modifikation von B+ – Bäumen, die im Beispiel 10 dargestellt ist, befinden sich in den inneren Knoten mehrere Werte nebeneinander. Dadurch können die Diskriminatoren die Grenzen schärfer abstecken. Beim Durchgehen des Baumes von oben nach unten ist z.B. bekannt, daß die Werte im Unterbaum des Verweises 3f zwischen 3 (einschließlich) und 7 (einschließlich) liegen, und daß die Werte im Unterbaum des Verweises 3g zwischen 8 (einschließlich) und 15 (einschließlich) liegen.
  • Rechter und linker Diskriminator eines Verweises nach 10 werden Randindizes genannt.
  • 11 zeigt eine entprechende Modifikation bei Bäumen mit der eigentlichen Information auch in inneren Knoten, wie dies bei den klassischen B- Säumen der Fall ist. Die Werte 3, 7, 8, 16, 20, 40 repräsentieren hier direkt Datensätze. Beim Durchgehen des Baumes von oben nach unten ist z.B. bekannt, daß die Werte im Unterbaum des Verweises 3h zwischen 3 (ausschließlich) und 7 (ausschließlich) liegen, und daß die Werte im Unterbaum des Verweises 3i zwischen 8 (ausschließlich) und 16 (ausschließlich) liegen.
  • Rechter und linker Diskriminator eines Verweises nach 11 werden Randindizes genannt.
  • Erfindungsgemäß kann es durchaus sinnvoll sein, daß in inneren Knoten sogar mehrere direkt aufeinanderfolgende Werte zugelassen sind, ohne daß dazwischen Verweise liegen müssen. Dabei werden vorzugsweise größere Cluster von nah zusammenliegenden Datenpunkten in den Knoten, auf die verwiesen wird, gespeichert (wie die Cluster 9..13 und 28..32 in 11), sehr kleine Cluster oder isolierte Datenpunkte als einzelne Werte (wie die Werte 16 und 20 in 11; Clusterkriterium ist hier direkt der Index, die Clusterung kann aber auch nach geometrischen Gesichtspunkten erfolgen).
  • Die in dieser Situation einem Verweis direkt benachbarten Diskriminatoren eines Verweises werden Randindizes genannt.
  • Randindizes sind Hinweise auf maximal/minimal mögliche Werte innerhalb von Speicherbereichen. Randindizes können explizit oder implizit gespeichert sein, sie können aufgrund ihrer Lage im Suchbaum (z.B. am absolut linken/rechten Rand) und/oder aus anwendungstechnischen Gesichtspunten auch nur schätzbar sein im Sinne von maximal/minimal möglichen Werten.
  • Als Dateneinheit wird im folgenden der Inhalt eines Datenbereichs, vorzugsweise eines kompletten Unterbaums bezeichnet, für den ein linker und rechter Randindex existieren. Eine Dateneinheit kann sich bei externer Speicherung beziehen auf eine Speicherseite oder mehrere Speicherseiten.
  • Wir kommen nun zur Beschreibung der Lösung.
  • Wird im Laufe der Suche eine Dateneinheit mit den Randindizes LI (links) und RE (rechts) angetroffen, die mit dem Anfragebereich mit den Grenzen LO (low) und HI (high) überlappt, so wird über den Zugriff auf die Dateneinheit erfindungsgemäß entschieden über BIGMIN und LITMAX, und zwar zunächst über BIGMIN (LI) und LITMAX (RE) (über die Möglichkeit, die Betrachtung für ein schon berechnetes BIGMIN bzw. LITMAX auch auf Nachbardatenbereiche auszudehnen, siehe weiter unten).
  • Wenn für die so berechneten Werte gilt:
    RE < BIGMIN oder LI > LITMAX,
    dann braucht die betreffende Dateineinheit nicht in spiziert zu werden.
  • Wenn ein Teil der Bedingung (RE < BIGMIN) erfüllt ist, braucht natürlich der zweite Teil der Bedingung nicht mehr geprüft zu werden (d.h. LITMAX braucht nicht mehr berechnet zu werden; und umgekehrt). Für zumindest einen Teil der Dateneinheiten werden jedoch sowohl BIGMIN- als auch LITMAX-Werte herangezogen. Dies steht im Gegensatz zu bekannten Verfahren, die entweder nur mit BIGMIN [Ba1, Ra1, La1] oder fallweise, abhängig von der Position in der Datenstruktur, mit BIGMIN bzw. LITMAX arbeiten [Tr1, Tr2].
  • Bei der erfindungsgemäßen Lösung wird vorzugsweise rekursiv von oben nach unten durchsucht.
  • 12 zeigt die erfindungsgemäße Lösung für die Daten nach 6 und im Gegensatz zur bekannten Abarbeitungsweise nach 7, für die gleiche Datenstruktur, allerdings mit je zwei Diskriminatoren für einen Verweis eines inneren Knotens.
  • Beispielsweise gilt für den Knoten (24..27):
    RE=27<BIGMIN=29,
    Beispielsweise gilt für den Knoten (33..38):
    RE=38<BIGMIN=53,
    Beispielsweise gilt für den Knoten (48..51):
    LI=48>LITMAX=31; diese Knoten brauchen also nicht besucht zu werden.
  • Im Beispiel wird nur das Blatt (64..67) besucht (in dem sich der Treffer 66 befindet); hier gilt RE=67>=BIGMIN=66; LI=64<=LITMAX=66.
  • Damit sind die o.g. Probleme gelöst:
    • Zu a): Es werden wesentlich weniger Knoten geöffnet als nach bisherigen Verfahren bekannt; es werden keine Knoten geöffnet, die aufgrund von im Suchbaum in inneren Knoten verfügbaren Informationen keine Treffer enthalten können.
    • Zu b): Es sind keine Hilfszeiger erforderlich und der Baum wird mit einer einzigen Anfrage auf natürliche Weise nur einmal traversiert (und nur insoweit, als dies aufgrund der Informationen in inneren Knoten unvermeidbar ist). wie aus 12 ersichtlich, verläuft die Traversierung 11 nur in eine Richtung, mit einem insgesamt wesentlich kürzeren weg.
  • Die dynamische Einschränkung des Anfragebereichs ist hierarchisch und dadurch entsprechend effizient. Aufgrund der vorzugsweise rekursiv realisierten Hierarchie werden automatisch viele hintereinander liegende Blattknoten übersprungen, ohne daß dafür spezielle Maßnahmen wie z.B. Hilfszeiger erforderlich wären.
  • Die Effizienzssteigerung kommt im wesentlichen durch das Zusammenwirken der beiden Massnahmen zustande:
    • a) Die Index-Suchbereiche sind durch die mehrfachen Diskriminatoren je Verweis enger gesetzt,
    • b) Die Dateneinheiten werden von zwei Seiten, mit BIGMIN UND LITMAX, gleichzeitig "angegriffen".
  • Das Enger-Setzen durch Mehrfach-Diskriminatoren alleine bringt nicht den gewünschten Effekt, wie man aus 13 entnehmen kann (gleiche Datenstruktur wie
  • 12, jedoch mit der bekannten Abarbeitungsweise, führt zu keiner Verbesserung!).
  • Umgekehrt bringt die doppelte Attacke, alleine, im wesentlichen die Möglichkeit der Top-Down Bearbeitung und Anwendbarkeit auch auf B- Bäume anstelle nur von B+ -Bäumen.
  • 14 zeigt die Situation für den konventionellen B+ -Baum als Datenstruktur, jedoch bei Top-Down-Vorgehen und Berechnung von sowohl LITMAX als auch BIGMIN. Aus 14 ist zu erkennen, daß mit der doppelten Attacke alleine und ohne Einengung der Grenzindizes die einfacher und ohne Hilfszeiger realisierbare Top-Down-Bearbeitung eingesetzt werden kann; die Anzahl der zu inspizierenden Knoten ist in diesem Beispiel identisch mit der bei den bekannten, von links nach rechts arbeitenden Verfahren.
  • Der Blattknoten (33..38) muss auch hier inspiziert werden (LITMAX(38)=31>LI=27; BIGMIN(27)=29<RE=38). Der Blattknoten (56..59) muss auch hier inspiziert werden (LITMAX (59) =55>=LI=51; BIGMIN(51) =53<RE=59).
  • Der Blattknoten (60..63) braucht nicht inspiziert zu werden (LITMAX(63)=55<LI=59).
  • Der Blattknoten (76..78) muss inspiziert werden, (LITMAX(78)=74>=LI=67; BIGMIN(67)=72<=RE=78).
  • Der Blattknoten (88..93) braucht nicht inspiziert zu werden (BIGMIN(78)=96>RE=93).
  • Wie oben beschrieben, soll zusätzlich auch die Anzahl der BIGMIN-Berechnungen weiter minimiert werden, und damit ebenso natürlich die Anzahl der LITMAX-Berechnungen:
    Dies wird wie folgt erreicht:
    Die BIGMIN-und-LITMAX-Berechnung braucht nicht für jede Dateneinheit berechnet zu werden. Ist beispielsweise bereits bekannt, daß zum Datenbereich (33..38) BIGMIN=53 gilt, so braucht für (48..51) keine Berechnung angestellt zu werden.
  • Zu Anfang der Betrachtung einer Dateneinheit werden ihre Randindizes mit bereits berechneten BIGMIN/LITMAX-Werten von direkt oder indirekt benachbarten Dateneinheiten verglichen. Ist der linke Randindex der Dateneinheit größer als der LITMAX-Index einer rechten Nachbar-Dateneinheit, so kann die Dateneinheit komplett übersprungen werden ohne weitere BIGMIN/LITMRX Berechnung; entprechendes gilt umgekehrt für BIGMIN: ist der rechte Randindex einer Dateneinheit kleiner als der BIGMIN-Index einer linken Nachbar-Dateneinheit, so kann die Dateneinheit komplett übersprungen werden.
  • Die für zumindest einen Teil der Dateneinheiten herangezogenen BIGMIN- und LITMAX-Werte können also entweder für die betreffende Dateneinheit selbst oder eine andre, vorzugsweise benachbarte Dateneinheit berechnet worden sein.
  • Um zudem sogar die Anzahl der erforderlichen Vergleiche zu reduzieren, kann man das Ganze mit binärer Suche realisieren.
  • Die erfindungsgemässe Lösung ist nicht beschränkt auf externe Speicherung.
  • Das Verfahren ist für B+ -Bäume gleichermassen anwendbar wie für B- Bäume. Das Verfahren ist nicht beschränkt auf Suchbäume, sondern kann sinngemäß auf alle Datenstrukturen angewandt werden mit den in Anspruch 1 angegebenen Eigenschaften, z.B. Skiplisten.
  • Das Verfahren ist anwendbar nicht nur für eine direkte mehrdimensionale Bereichssuche, sondern bei allen Suchaufgaben und Suchverfahren, die zumindest teilweisse auf eine mehrdimensionale Bereichssuche hinauslaufen oder damit realisiert werden können, beispielsweise eine Nächster-Nachbar-Suche, die man bekanntermassen durch iteratives Realisieren von Bereichssuchen, mit wachsendem Suchbereich, realisieren kann.
  • Die Indexberechnung kann explizit oder implizit erfolgen. Der Erfinder arbeitet u.a. mit impliziter Darstellung von Z-indizierten (bitverzahnten) Daten, Realisierung der BIGMIN/LITMAX-Berechnung durch entspr.
  • Abtasten der unverzahnten Bits. BIGMIN/LITMAX selbst sind Hilfdatensätze in normaler, unverzahnter Repräsentation. Realzahlen werden durch Abarbeiten des Exponenten, gefolgt von der Mantisse, bearbeitet. Wenn negative Werte möglich sind, wird das vorzeichenbit invertiert betrachtet
  • Z-Codierung und Hilbert-Codierung nur Beispiele. Das Prinzip der zweiseitigen Attacke ist für alle denkbaren Indizierungen anwendbar, vorausgesetzt man kennt ein effizientes Berechnungsverfahren für BIGMIN und LITMAX.
  • Nach [Ba1] (Z-codierte Daten) wird ein mehrdimensionaler Datenwürfel wiederholt iterativ in allen Dimensionen in Subwürfel unterteilt, bis aufeinanderfolgende Subwürfel zu Regionen zusammenfassbar sind, die jeweils eine Menge von Datenobjekten beinhalten, die auf einer Speicherseite gegebener Kapazität abspeicherbar sind.
  • Bei dem hier vorgeschlagenen Verfahren ist weder eine Unterteilung in Subwürfel erforderlich (die Dateneinhei ten können beliebige mehrdimensionale Formen haben oder aus solchen Formelementen zusammengesetzt sein). Die Dateneinheiten müssen allgemein lediglich Datenpunkte zwischen zwei Randindizes umfassen, entsprechend der gerade gewählten Indizierung. Es ist sogar grundsätzlich möglich, daß die Indexbereiche von Dateneinheiten überlappen. Diese letztere Methode kann unter Gesichtspunkten der Datenclusterung sinnvoll sein.
  • Durch die Speicherung von IndexClustern nah beisammen liegender Indizes auf den Speicherseiten und potentiell mehr als 2 Indizes mit wenigen, nicht clusternden Werten zwischen je zwei Verweisen von inneren H-Baum-Knoten Knoten, können erheblich viele Zugriffe auf Speicherseiten eingespart werden. Das Clusterkriterium kann sich dabei sowohl auf die Indizes, als auch auf eine räumlich gesehene Ballung beziehen.
  • Quellen:
    • [Tr1] H. Tropf, H. Herzog: Multidimensional Range Search in Dynamically Balanced Trees. Agewandte Informatik 2/1981, pp. 71-77.
    • [Tr2] www/vision-tools.com/h-tropf
    • [Or1] J. A. Orenstein: Spatial Query Processing in an Object Oriented Database System. ACM SIGMOD Int. Conf. on Management of Data. 1986. pp. 326-336.
    • [Ba1] R. Bayer: Datenbanksystem und Verfahren zum verwalten eines n-dimensionalen Datenbestands. DE 19635429 .
    • [La1] US Patentanmeldung US 2003/0004938A1
    • [Ral] F. Ramsak, V. Markl, R. Fenk, M. Zirkel, K. Elhardt, R. Bayer: Integrating the UB-tree into a Database System Kernel. Proc. of 26th Int. Conference on Very Large Databases, Sept. 2000, pp. 263-272.

Claims (5)

  1. Verfahren zur Suche in einem mehrdimensionalen Datenbestand insbesondere mit Durchführung einer mehrdimensionalen Bereichsanfrage oder darauf basierender Anfragen, mit einer expliziten oder impliziten Abbildung der mehrdimensionalen Daten auf einen eindimensionalen Index, zumindest teilweise zerlegt in Dateneinheiten, wobei für Dateneinheiten ein linker Randindex und ein rechter Randindex zugreifbar oder errechenbar oder schätzbar ist, vorzugsweise ohne auf die Einheit selbst zugreifen zu müssen, dadurch gekennzeichnet, daß für zumindest einen Teil der Dateneinheiten über den Zugriff auf die Dateneinheit entschieden wird aufgrund einer BIGMIN- und einer LITMAX-Berechnung zu dieser oder anderen, vorzugsweise benachbarten Dateneinheiten.
  2. Verfahren nach Anspruch 1, mit einer Datenstruktur mit zumindest teilweise je 2 Grenzindizes zwischen je zwei verweisen.
  3. verfahren nach Anspruch 2, mit einer Datenstruktur mit potentiell mehr als 2 Indizes, 2 davon Grenzindizes, zwischen je zwei Verweisen und Clusterweise Speicherung in Dateneinheiten.
  4. Verfahren nach Anspruch 3, wobei die Cluster nach dem Kriterium kleiner Differenzen der kleinsten und größten Indexwerte gebildet werden.
  5. Verfahren nach Anspruch 3, wobei die Cluster nach dem Kriterium kleiner umschreibender Hyperquader gebildet werden.
DE10331679A 2003-06-07 2003-07-14 Verfahren für Suche in einem mehrdimensionalen Datenbestand Expired - Fee Related DE10331679B4 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE10331679A DE10331679B4 (de) 2003-06-07 2003-07-14 Verfahren für Suche in einem mehrdimensionalen Datenbestand

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE10326197.4 2003-06-07
DE10326197 2003-06-07
DE10331679A DE10331679B4 (de) 2003-06-07 2003-07-14 Verfahren für Suche in einem mehrdimensionalen Datenbestand

Publications (2)

Publication Number Publication Date
DE10331679A1 true DE10331679A1 (de) 2005-01-13
DE10331679B4 DE10331679B4 (de) 2005-06-16

Family

ID=33520528

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10331679A Expired - Fee Related DE10331679B4 (de) 2003-06-07 2003-07-14 Verfahren für Suche in einem mehrdimensionalen Datenbestand

Country Status (1)

Country Link
DE (1) DE10331679B4 (de)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19635429A1 (de) * 1996-09-02 1998-03-05 Rudolf Prof Bayer Datenbanksystem und Verfahren zum Verwalten eines n-dimensionalen Datenbestands
US5848416A (en) * 1994-06-06 1998-12-08 Nokia Telecommunications Oy Method and apparatus for storing and retrieving data and a memory arrangement
US20030004938A1 (en) * 2001-05-15 2003-01-02 Lawder Jonathan Keir Method of storing and retrieving multi-dimensional data using the hilbert curve

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5848416A (en) * 1994-06-06 1998-12-08 Nokia Telecommunications Oy Method and apparatus for storing and retrieving data and a memory arrangement
DE19635429A1 (de) * 1996-09-02 1998-03-05 Rudolf Prof Bayer Datenbanksystem und Verfahren zum Verwalten eines n-dimensionalen Datenbestands
US20030004938A1 (en) * 2001-05-15 2003-01-02 Lawder Jonathan Keir Method of storing and retrieving multi-dimensional data using the hilbert curve

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
H.Tropf, H.Herzog: Multidimensional Range Search in Dynamically Balanced Trees. Angewandte Informa- tik 2/1981, pp.71-77, www.vision-tools.com/h- tropf
H.Tropf, H.Herzog: Multidimensional Range Search in Dynamically Balanced Trees. Angewandte Informa-tik 2/1981, pp.71-77, www.vision-tools.com/h- tropf *
J.A.Orenstein: Spatial Query Processing in an Ob- ject Oriented Database System. ACM SIGMOD Int. Conf. on Management of Data. 1986. pp.326-336 *
R.Bayer: Datenbanksystem und Verfahren zum Verwal- ten eines n-dimensionalen Datenbestands.
R.Bayer: Datenbanksystem und Verfahren zum Verwal-ten eines n-dimensionalen Datenbestands. *

Also Published As

Publication number Publication date
DE10331679B4 (de) 2005-06-16

Similar Documents

Publication Publication Date Title
DE202017007212U1 (de) System zur inkrementellen Clusterwartung einer Tabelle
DE102013204521B4 (de) Transaktionsverwaltung für Datenbanksysteme
DE10028688B4 (de) Methode, System und Programm für eine Verbindungsoperation in einer mehrspaltigen Tabelle sowie in Satellitentabellen mit doppelten Werten
DE60130475T2 (de) Durchführung von kalkulationen eines tabellenkalkulationstyps in einem datenbanksystem
DE69636761T2 (de) Speichern und wiederauffinden von geordneten schlüsselmengen in einem kompakten 0-kompletten baum
DE60035432T2 (de) System zur verwaltung der rdbm fragmentierungen
DE102013206281B4 (de) Optimieren von zerstreuten schemalosen Daten in relationalen Speichern
DE60025778T2 (de) Verfahren zum Speichern und Verwalten von Daten
DE112020000749T5 (de) Indexerstellung für sich entwickelnde umfangreiche Datensätze in Hybriden Transaktions- und Analysenverarbeitungssystemen mit mehreren Mastern
DE112016005350T5 (de) Speichern und abrufen von daten eines datenwürfels
DE112005003265T5 (de) Registerdateibereiche für ein Verarbeitungssystem
DE2324731A1 (de) Festzustandsspeicher fuer mehrdimensionalen zugriff
EP3520014B1 (de) Verfahren und system zum anonymisieren von datenbeständen
DE60118973T2 (de) Verfahren zum abfragen einer struktur komprimierter daten
DE10035043A1 (de) Mehrdimensionale Indexierungsstruktur zur Verwendung mit linearen Optimierungsanfragen
DE112017006106T5 (de) Erzeugen von, Zugreifen auf und Anzeigen von Abstammungsmetadaten
DE19954534A1 (de) Rückwärtsindexieren von Zeichenketten in einer relationalen Datenbank zum Suchen mit Joker
DE112011104005T5 (de) Verfahren und Datenverarbeitungssystem zum Kodieren von in einer spaltenorientierten Weise gespeicherten Daten, Datenverarbeitungsprogramm und Computerprogrammprodukt
DE112010000947T5 (de) Verfahren zur völlig modifizierbaren Framework-Datenverteilung im Data-Warehouse unter Berücksichtigung der vorläufigen etymologischen Separation der genannten Daten
DE112012004916T5 (de) Verbesserte Datenbankabfrage und Aufwandsschätzung
DE60300984T2 (de) Methode und Computersystem für die Optimierung eines Boolschen Ausdrucks für Anfragebearbeitung
DE10056763A1 (de) Generieren von Einschränkungsabfragen mit Hilfe von Tensordarstellungen
EP1276056B1 (de) Verfahren zum Verwalten einer Datenbank
DE202017105891U1 (de) Knoten in einem gerichteten azyklischen Graphen
DE102013210914B4 (de) Datenverarbeitungsverfahren, Datenabfrageverfahren in Datenbank und entsprechende Einheit

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20120201