DE10035043A1 - Mehrdimensionale Indexierungsstruktur zur Verwendung mit linearen Optimierungsanfragen - Google Patents
Mehrdimensionale Indexierungsstruktur zur Verwendung mit linearen OptimierungsanfragenInfo
- Publication number
- DE10035043A1 DE10035043A1 DE10035043A DE10035043A DE10035043A1 DE 10035043 A1 DE10035043 A1 DE 10035043A1 DE 10035043 A DE10035043 A DE 10035043A DE 10035043 A DE10035043 A DE 10035043A DE 10035043 A1 DE10035043 A1 DE 10035043A1
- Authority
- DE
- Germany
- Prior art keywords
- level
- convex hull
- records
- indexing structure
- levels
- 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.)
- Ceased
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2264—Multidimensional index structures
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
- Y10S707/99934—Query formulation, input preparation, or translation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99942—Manipulating data structure, e.g. compression, compaction, compilation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
- Y10S707/99945—Object-oriented database structure processing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99948—Application of database or data structure, e.g. distributed, multimedia, or image
Abstract
Lineare Optimierungsanfragen, die gewöhnlich in verschiedenen Entscheidungsunterstützungs- und Ressourcenplanungsanwendungen auftreten, sind Anfragen, welche die obersten N Datensätze (wobei N eine ganze Zahl größer null ist) abrufen, die ein bestimmtes Optimierungskriterium erfüllen. Bei dem Optimierungskriterium geht es darum, eine lineare Gleichung entweder zu maximieren oder zu minimieren. Die Koeffizienten der linearen Gleichung werden zum Zeitpunkt der Anfrage angegeben. Verfahren und eine Vorrichtung zum Aufbau, zur Verwaltung und zur Verwendung einer mehrdimensionalen Indexierungsstruktur von Datenbanksätzen werden offengelegt, um die Ausführungsgeschwindigkeit von linearen Optimierungsanfragen zu verbessern. Datenbanksätze mit numerischen Attributen werden in mehrere Ebenen gegliedert, und jede Ebene stellt eine geometrische Struktur dar, die als konvexe Hülle bezeichnet wird. Solche linearen Optimierungsanfragen werden verarbeitet, indem eine Suche von der äußersten Ebene dieser Indexierungsstruktur mit mehreren Ebenen nach innen durchgeführt wird. Mindestens ein Datensatz pro Ebene erfüllt das Anfragekriterium, und die Anzahl der Ebenen, die durchsucht werden müssen, hängt von der räumlichen Verteilung der Datensätze, der mit der Anfrage ausgegebenen linearen Koeffizienten und N, der Anzahl der Datensätze, die zurückgegeben werden müssen, ab. Wenn N im Vergleich zur Gesamtgröße der Datenbank klein ist, muss zur Beantwortung der Anfrage typischerweise nur ein ...
Description
Die vorliegende Erfindung betrifft Datenbanksysteme und
insbesondere den Aufbau, die Verwaltung und die Verwendung
einer mehrdimensionalen Indexierungsstruktur, um an eine
Datenbank gerichtete lineare Optimierungsanfragen zu
beantworten, die Datensätze mit numerischen Attributen
enthält.
Eine lineare Optimierungsanfrage ist eine spezielle Art
einer Datenbankanfrage, die Datenbanksätze zurückgibt, deren
gewichtete lineare Verknüpfung von numerischen Attributen
entweder höchstwertig oder niedrigstwertig zu den obersten N
Datensätzen der ganzen Datenbank zählen. Entsprechend kann
eine lineare Optimierungsanfrage als das Problem dargestellt
werden, Datensätze zu finden, deren gewichtete Werte einen
Schwellenwert über- oder unterschreiten. Aus den
zurückgegebenen Ergebnissen werden dann die obersten N
Datensätze ausgewählt. Während eine solche Anfrage auf der
Grundlage von bestimmten linearen Optimierungskriterien die
höchstwertigen oder die niedrigstwertigen N Datensätze
anfordern kann, setzt der Algorithmus zur Verarbeitung der
Anfrage keine getrennten Prozeduren für die beiden
Optimierungsbedingungen voraus. Der Grund dafür ist, dass
durch einfache Umkehrung der Vorzeichen der Gewichte bei der
linearen Gleichung ein Maximierungsproblem in ein
Minimierungsproblem umgesetzt wird und umgekehrt. Die
vorliegende Erfindung verarbeitet Optimierungsanfragen auf
ähnliche Weise, indem sie sie zuerst in Maximierungsanfragen
umsetzt.
Abhängig von den Anwendungsszenarien können Gewichte
(Koeffizienten) des linearen Kriteriums zum Zeitpunkt der
Datenaufnahme bekannt sein oder nicht. Wenn sie während der
Datenaufnahmezeit bekannt wären und konstant blieben, könnte
die gewichtete lineare Verknüpfung im Voraus berechnet und
zur Beantwortung zukünftiger Anfragen gespeichert werden. In
vielen Fällen sind die Koeffizienten dynamisch und dieselben
Datensatzgruppen werden von verschiedenen Anwendungen
gemeinsam benutzt. Somit ist eine Vorausberechnung für alle
Anwendungen möglicherweise nicht durchführbar. Ein
Schwerpunkt der vorliegenden Erfindung liegt auf den
dynamischen Fällen, bei denen die Koeffizienten unbekannt
sind und im Augenblick der Anfrage bestimmt werden. Ein Ziel
dieser Erfindung besteht darin, die Datensätze wirksam zu
indexieren, so dass bei der Ausgabe einer neuen Anfrage nur
ein Bruchteil der Datensätze in der Datenbank ausgewertet
werden muss, um die Anfrage zu beantworten. Obwohl ihre
Antwortzeit bei Anfragen möglicherweise nicht so schnell wie
die Antwortzeit bei einer statischen Anfrage ist, schließt
unsere Erfindung die Leistungslücke zwischen den beiden ein
weiteres Stück.
Die lineare Optimierungsanfrage ist ein allgemeiner Fall der
linear gewichteten Rangfolge, die beim Abrufen und
Zusammenfassen von Informationen in großem Umfang angewendet
wird. Statt eine lange Tabelle mit allen untersuchten
Parametern eines jeden Datensatzes zu übergeben, werden
nützliche Informationen oftmals zusammengefasst, indem eine
linear gewichtete Verknüpfung dieser Parameter genommen
wird. Die obersten N Datensätze werden dann aufgeführt und
erörtert. Beispiele für eine solche Zusammenfassung von
Informationen finden sich vielerorts. Beispielsweise führen
die Nachrichtenmagazine US News und World Report jedes Jahr
Studien über die Ausbildung am College durch und bewerten
die Qualität von Colleges durch eine lineare Gewichtung
numerischer Faktoren wie zum Beispiel des akademischen Rufs
(25%), der Mittel der Fakultäten (20%), der
Fluktuationsrate (d. h. der Anzahl von Studenten, die an eine
andere Universität wechseln) (20%), der Auswahl der
Studenten (15%), der finanziellen Ressourcen (10%), der
finanziellen Förderung durch ehemalige Studenten (5%) und
der Abschlussquote (5%). Die ranghöchsten nationalen und
regionalen Colleges werden aufgeführt. Man kann viele
ähnliche Beispiele wie zum Beispiel Großstädte mit den
höchsten Lebenshaltungskosten, Städte mit der höchsten
Kriminalitätsrate, die fünfhundert größten globalen
Unternehmen und so weiter finden. Während alle diese
Beispiele auf einer linear gewichteten Rangfolge beruhen,
sind die dem linearen Kriterium zugeordneten Koeffizienten
meistens statisch. Die Zuordnung einer linearen Gewichtung
kann die Meinung von Informations-Sammelstellen wie zum
Beispiel Nachrichtenagenturen oder Meinungsforschungsgruppen
widerspiegeln. Bezieher von Informationen wie zum Beispiel
Leser von Magazinen nehmen jedoch nicht aktiv am dem Prozess
der Zusammenfassung von Informationen teil. Wir sind der
Meinung, dass Bezieher von Informationen an dem Prozess des
Abrufs und der Zusammenfassung von Informationen aktiv
teilnehmen sollten. In den obigen Beispielen kann die
lineare Gewichtung und die Rangordnung von Datensätzen auf
Anforderung von Lesern und Beziehern von Informationen
eventuell durch eine individuell gestaltete Web-Seite
durchgeführt werden. College-Bewerber sollten eine Gruppe
von Koeffizienten wählen können, die ihre eigene Bewertung
einer Schule widerspiegeln. Bewohner von Städten sollten
nach ihrem eigenen Lebensstil entscheiden, welcher
Lebenshaltungskostenindex in dem Rangfolge-Kriterium
erscheint. Eine Formel lässt sich nicht auf jedermann
anwenden.
Die dynamische Zusammenfassung von Informationen in der
Form, dass Gewichte des linearen Kriteriums angepasst
werden, wurde bereits in vielen Geschäfts- und
wissenschaftlichen Anwendungen in der Praxis durchgeführt.
Hypothekenkreditinstitute und Banken beispielsweise
entwickeln lineare Modelle, um die Kreditwürdigkeit von
Kunden, die Wahrscheinlichkeit der Rückzahlung von
Hypothekenkrediten, des Ausfallrisikos usw. einzuschätzen.
Diese Modelle werden oftmals auf einem üblichen Satz von
Parametern aufgebaut, wie zum Beispiel der Beleihungsquote,
der Kreditlaufzeit, dem Revolving-Kredit, der
Kreditausschöpfung, der Verschuldung und dem
Kreditverhalten. Aus diesem Parametersatz können Modelle für
Finanzprodukte entwickelt werden. Im Bereich des
Gesundheitswesens und der Umweltforschung entnehmen
Wissenschaftler Satellitenbildern, digitalen Höhenkarten und
Wetterdaten Parameter, um anhand von Modellen Aussagen über
die Wahrscheinlichkeit des Ausbruchs von Krankheiten, die
Population von Nagetieren, die Luftverschmutzung usw. zu
treffen. Als Beispiel hat eine Gruppe von Forschern der John
Hopkins University, A. Das, S.R. Lele, G.E. Glass, T.
Shields und J.A. Patz, ein Modell der Verteilung der Menge
von Vektoren der Lyme-Krankheit in Maryland anhand von
digitalen Bildern des Geopgraphical Information System (GIS)
entwickelt (siehe "Spatial modeling of vector abundance
using generalized linear mixed models: application to Lyme
disease", das Biometrics zur Veröffentlichung vorgelegt
wurde). Ihre Modelle werden häufig überarbeitet, indem
verschiedene statistische Analyseverfahren und
Schulungsdatensätze angewendet werden. Außerdem passen
Wissenschaftler ihre Modelle gern an, um "was-wäre-wenn"-
Fragen zu stellen. Eine prompte und präzise Antwort von der
Datenbank würde bei der Entwicklung von Modellen und deren
Überprüfung auf Richtigkeit von großer Hilfe sein.
Die eingehende Untersuchung von mehrdimensionalen
Indexierungsstrukturen war schon immer ein Hauptthema in der
Datenbankforschung. Indexierungsstrukturen wurden
entwickelt, um schwierige Arten von Anfragen zu beantworten,
unter anderem:
- 1. finde einen Datensatz/Datensätze, bei dem/denen die Werte der indexierten Spalten angegeben sind (genaue Anfrage);
- 2. finde einen Datensatz/Datensätze, der/die innerhalb von [a1. . .a2], [b1. . .b2],. . ., [21. . .22] liegen, wobei a, b und z verschiedene Dimensionen darstellen (Bereichsanfrage);
- 3. finde die K Datensätze, die einer vom Benutzer angegebenen Schablone oder einem vom Benutzer angegebenen Beispiel am ähnlichsten sind (Abfrage des K am nächsten kommenden Nachbarn); und
- 4. finde die obersten N Datensätze, die ein vom Benutzer angegebenes lineares Optimierungskriterium erfüllen (lineare Optimierungsanfrage).
Man findet umfangreiches Material, um die letzten drei Arten
von Anfragen anzugehen, während über die vierte weitaus
weniger Material nach dem Stand der Technik zur Verfügung
steht. Nach dem Stand der Technik beziehen sich lineare
Optimierungsanfragen oft auf das Problem, einen einzigen
Dateneintrag zu finden, der das bestimmte lineare Kriterium
maximiert oder minimiert, wobei angenommen wird, dass die
Einschränkungen in Farm von linearen Ungleichheiten
angegeben werden. In solchen Fällen ist der mögliche
Lösungsraum der Schnittpunkt von Halbräumen, die von diesen
linearen Ungleichheiten definiert werden. Wenn sowohl die
Anfrage als auch die Einschränkungen zum Zeitpunkt der
Anfrage angegeben werden, ist das Problem der Verarbeitung
der Anfrage ein Problem der linearen Programmierung.
Lösungen wie zum Beispiel die Simplexmethode und die
Ellipsoidmethode wurden eingehend untersucht, und in den
meisten Lehrbüchern über lineare Programmierung finden sich
Verweise. Außerdem hat die jüngste Entdeckung bei auf
Zufallszeichen umgerechneten Algorithmen Möglichkeiten für
eine Verringerung der erwarteten Anfrage-Antwortzeit
aufgezeigt. Seidel gab an, dass die erwartete Zeit
proportional zur Anzahl der Einschränkungen ist (R. Seidel:
"Linear programming and convex hulls made easy", Proceedings
of the 6th ACM Symposium on Computational Geometry, Seiten
211 bis 215, 1990). Wenn die Einschränkungen vorher
angegeben werden, um die Vorverarbeitung von Datensätzen zu
ermöglichen, kann die Anfrage schneller beantwortet werden,
indem auf Speicherplatz verzichtet wird. Matousek berichtete
über eine Datenstruktur, die auf einem einfachen
Partitionsbaum beruht, während eine Parametersuche
durchgeführt wird, um den Partitionsbaum zu kürzen (J.
Matousek und O. Schwarzkopf: "Linear optimization queries",
Proceedings of the 8th ACM Symposium on Computational
Geometry, Seiten 16 bis 25, 1992). Matousek stellte
Komplexitätsschätzungen der Vorverarbeitungszeit, des
Speicherplatzes und der Anfrage-Antwortzeit bereit. Sein
Werk schlägt jedoch keine direkte Erweiterung vor, um
lineare Optimierungsanfragen in Bezug auf die obersten N
Datensätze zu beantworten. Chan wendete dieselbe
Datenstruktur an, während auf Zufallszeichen umgerechnete
Algorithmen angewendet werden, um einen Baum zu kürzen (T.
M. Chan: "Fixed-dimensional linear programming queries made
easy", Proceedings of the 12th ACM Symposium an Computational
Geometry, Seiten 284 bis 290, 1996).
Es ist möglich, Datenstrukturen für lineare
Einschränkungsanfragen zu verwenden und die Ausgaben
nachzuverarbeiten. Der Anfrageprozessor sucht die obersten N
Datensätze nicht direkt. Er ruft vielmehr alle Datensätze
ab, die größer als ein Schwellenwert sind. Diese Datensätze
werden dann sortiert, um die obersten N Antworten zu finden.
Eingehende Untersuchungen von linearen
Einschränkungsanfragen stützen sich gewöhnlich auf räumliche
Datenstrukturen wie zum Beispiel den R-Baum und den k-d-B-
Baum. Algorithmen werden entwickelt, um den räumlichen
Partitionsbaum zur Verbesserung der Antwortgeschwindigkeit
zu kürzen. Beispiele für solche eingehenden Untersuchungen
finden sich in der Schrift "Processing queries by linear
constraints" von J. Goldstein, R. Ramakrishnan, U. Shaft und
J. Yu, Proceedings of ACM PODS, Seiten 257 bis 267, 1997,
und in der Schrift "Efficient searching with linear
constraints" von P.K. Agarwal, L. Arge, J. Erickson, P.G.
Franciosa und J.S. Vitter, Proceedings of ACM PODS, Seiten
169 bis 177, 1998.
Wie sich zeigen wird, gibt es mehrere große Unterschiede
zwischen der vorliegenden Erfindung und dem Stand der
Technik. Erstens wendet die Erfindung beispielsweise eine
andere Indexierungsstruktur an, die allein von der
geometrischen Verteilung der Datensätze abhängt. Die
Skalierung, Rotation oder Verschiebung ihrer Attributwerte
hat keine Auswirkungen auf die indexierten Ergebnisse,
während diese Operationen jedoch die herkömmlichen
Indexierungsstrukturen erheblich verändern. Zweitens
erfordert die Erfindung beispielsweise keinen
Nachverarbeitungsschritt, um die Ausgabewerte zu sortieren,
während lineare Einschränkungsanfragen diesen Schritt
erfordern. Es wird sichergestellt, dass Ausgaben in der
gewünschten Reihenfolge zurückgegeben werden, was eine Form
des "schrittweisen" Abrufs ermöglicht. Drittens ermöglicht
diese Erfindung beispielsweise eine einfache hierarchische
Organisation des Index, um sowohl globalen als auch
eingegrenzten Anfragen Rechnung zu tragen. Ein Datenbanksatz
enthält typischerweise sowohl kategoriebezogene als auch
numerische Attribute. Eine eingegrenzte Anfrage wird
ausgegeben, um Datensätze von einer einzigen oder von
mehreren Kategorien zu durchsuchen. Eine globale Anfrage
wird andererseits ausgegeben, um Datensätze in der ganzen
Datenbank zu durchsuchen. Eine Lösung zur Indexierung der
ganzen Datenbank muss sich wirkungsvoll an beide
Erfordernisse wenden und redundanten Speicherplatz
vermeiden. Unsere Erfindung stellt eine solche Lösung
bereit.
Die vorliegende Erfindung betrifft ein Verfahren und eine
Vorrichtung zum Aufbau, zur Verwaltung und zur Verwendung
einer mehrdimensionalen Indexierungsstruktur, um lineare
Optimierungsanfragen zu verarbeiten. Die vorliegende
Erfindung ermöglicht eine schnelle Verarbeitung von Anfragen
und hat nur einen geringen zusätzlichen Speicherbedarf. In
Versuchen gewonnene Ergebnisse zeigen, dass erhebliche
Verbesserungen bei der Anfrage-Antwortzeit erzielt wurden.
Beispielsweise wurde beim Abrufen der obersten 100
Datensätze von einer Million Datensätze nachweislich eine um
zwei Größenordnungen höhere Beschleunigung gegenüber einer
linearen Datenbank erzielt.
Bekanntermaßen werden die Koeffizienten einer linearen
Gleichung zum Zeitpunkt der Anfrage angegeben, wodurch
verhindert wird, dass eine Datenbank die Antwort im Voraus
berechnet und speichert. Eine Indexierungsstruktur sollte
deshalb flexibel sein, um den Teil der Datenbank
aufzufinden, der relevante Datensätze enthält. Die
vorliegende Erfindung stellt eine solche
Indexierungsstruktur bereit, welche die Verringerung der
Antwortzeit bei Anfragen ermöglicht, indem sie nicht alle
Datensätze in der Datenbank, sondern nur einige der
Datensätze selektiv auswertet.
In einer Erscheinungsform legt die Erfindung in Ebenen
gegliederte konvexe Hüllen als grundlegenden Baustein dieser
mehrdimensionalen Indexierungsstruktur offen. Wir zeigen
Algorithmen auf, die zum Aufbau, zur Verwaltung und zur
Verwendung einer in Ebenen gegliederten konvexen Hülle
verwendet werden, um Anfragen zu verarbeiten. Ferner legen
wir eine hierarchische Struktur aus in Ebenen gegliederten
konvexen Hüllen offen, die auf mehreren konvexen Hüllen
aufgebaut wird, indem diese selektiv zu einer Hierarchie
zusammengefasst werden. Diese hierarchische Struktur stellt
eine wirksame und skalierbare Lösung sowohl für globale als
auch für eingegrenzte Anfragen bereit. Bei dieser Erfindung
wird eine in Ebenen gegliederte konvexe Hülle aufgebaut,
indem Datenbanksätze in mehrere Ebenen unterteilt werden,
wobei mindestens ein Teil einer inneren Ebene (vorzugsweise
die ganze innere Ebene) von einer vorhergehenden äußeren
Ebene geometrisch umschlossen wird (d. h. sich darin
befindet). Das heißt, jede einzelne der Ebenen stellt für
alle von der aktuellen Ebene einwärts gerichteten Datensätze
eine konvexe Hülle dar. Während bei einem bevorzugten
Aufbauverfahren Ebenen von der äußeren Ebene nach innen
erzeugt werden, dürfte klar sein, dass es einem Fachmann
auch möglich ist. Ebenen von der inneren Ebene nach außen zu
erzeugen. Das grundlegende Theorem der linearen
Programmierung gewährleistet, dass basierend auf einer
grundlegenden Eigenschaft einer konvexen Hülle das lineare
Maximum und das lineare Minimum einer Gruppe von Punkten
immer an ihrer konvexen Hülle liegen. Bei einer in Ebenen
gegliederten konvexen Hülle gehört jeder Datensatz zu einer
Ebene. Die Anfrageverarbeitung der linearen Optimierung
wertet Datensätze ebenenweise aus, bis die angeforderte
Anzahl von Datensätzen zurückgegeben wird. Zurückgegebene
Datensätze, die von dem in dieser Erfindung offengelegten
Algorithmus abgerufen werden, werden nach dem bestimmten
linearen Kriterium geordnet, und deshalb kann die
Verarbeitung von Anfragen an einer beliebigen Stelle
angehalten werden. Weitere Operationen, um die
zurückgegebenen Ergebnisse zu sortieren, sind nicht
erforderlich.
Vorteilhafterweise macht es diese Erfindung möglich, dass
eine hierarchische Indexierungsstruktur sowohl globalen als
auch eingegrenzten Anfragen Rechnung tragen kann. Globale
Anfragen gelten für alle Datensätze in einer Datenbank.
Eingegrenzte Anfragen gelten für manche Segmente oder
Kategorien von Datensätzen. Die hierarchische Struktur wird
auf mehreren "lokalen", in Ebenen gegliederten konvexen
Hüllen aufgebaut, indem ihre äußersten Ebenen entnommen
werden, aus Datensätzen dieser äußersten Ebenen eine in
Ebenen gegliederte konvexe Hülle aufgebaut und die neue
Hülle als die "übergeordnete Hülle" der "lokalen" Hüllen
gespeichert wird. Wenn eine neue Anfrage ausgegeben wird,
lokalisiert der Anfrageprozessor zuerst die übergeordnete
Hülle der interessierenden Datensatzsegmente. Ebenen in der
übergeordneten Hülle werden dann ausgewertet, um
festzustellen, ob irgendwelche ihrer lokalen Hüllen
ausgewertet werden müssen. Bei Datensätzen, die ungleiche
Verteilungen aufweisen, ist die hierarchische
Indexierungsstruktur bei der Verringerung des Suchraums und
der Begrenzung der Anfragen auf lokale Hüllen, die am
relevantesten sind, am wirkungsvollsten. Eine wirkungsvolle
Verringerung verkürzt außerdem die Antwortzeit bei Anfragen
und verbessert die Leistungsfähigkeit.
Bei noch einer anderen Erscheinungsform der Erfindung werden
auch Verfahren und eine Vorrichtung bereitgestellt, die dazu
dienen, Datensätze von in Ebenen gegliederten konvexen
Hüllen in einer kugelförmigen Shell-Darstellung zu
speichern.
Diese und andere Aufgaben, Merkmale und Vorteile der
vorliegenden Erfindung gehen aus der folgenden ausführlichen
Beschreibung von anschaulichen Ausführungsformen der
Erfindung hervor, die in Verbindung mit den beigefügten
Zeichnungen zu lesen ist.
Fig. 1A ist eine grafische Darstellung eines Problems, das
von der vorliegenden Erfindung gelöst wird, d. h. von
linearen Optimierungsanfragen von Datensätzen;
Fig. 1B ist eine grafische Darstellung der konvexen Hülle
von vier Datensätzen im zweidimensionalen Raum;
Fig. 2 ist ein Blockdiagramm einer beispielhaften Hardware-
Architektur, die mit den methodischen Vorgehensweisen der
vorliegenden Erfindung verwendet werden kann;
Fig. 3 ist ein Flussdiagramm eines Algorithmus zum Aufbau
einer in Ebenen gegliederten konvexen Hülle, der zum Aufbau
einer mehrdimensionalen Indexierungsstruktur gemäß einer
Ausführungsform der vorliegenden Erfindung verwendet wird;
Fig. 4 ist eine grafische Darstellung einer Anfrage-
Verarbeitungsprozedur an einer in Ebenen gegliederten
konvexen Hülle gemäß einer Ausführungsform der vorliegenden
Erfindung;
Fig. 5 ist ein Flussdiagramm einer Anfrage-
Verarbeitungsprozedur an einer in Ebenen gegliederten
konvexen Hülle gemäß einer Ausführungsform der vorliegenden
Erfindung;
Fig. 6 ist ein Flussdiagramm eines Verfahrens zum Hinzufügen
eines neuen Datensatzes zu einer vorhandenen in Ebenen
gegliederten konvexen Hülle gemäß einer Ausführungsform der
vorliegenden Erfindung;
Fig. 7 ist ein Flussdiagramm eines Verfahrens zum Entfernen
eines Datensatzes aus einer vorhandenen in Ebenen
gegliederten konvexen Hülle gemäß einer Ausführungsform der
vorliegenden Erfindung;
Fig. 8 ist eine grafische Darstellung von zwei Kategorien
von Datensätzen mit bestimmten Attributwerten;
Fig. 9 zeigt eine übergeordnete, in Ebenen gegliederte
konvexe Hülle, die aus Datensätzen der Ebene 1 von einem
Paar untergeordneter konvexer Hüllen aufgebaut wird;
Fig. 10 ist ein Flussdiagramm eines Verfahrens zum Aufbau
einer übergeordneten, in Ebenen gegliederten konvexen Hülle
aus einer Gruppe von untergeordneten konvexen Hüllen gemäß
einer Ausführungsform der vorliegenden Erfindung;
die Fig. 11A und 11B sind ein Flussdiagramm einer
Anfrage-Verarbeitungsprozedur an einer hierarchischen
Struktur aus in Ebenen gegliederten konvexen Hüllen gemäß
einer Ausführungsform der vorliegenden Erfindung; und
Fig. 12 ist eine grafische Darstellung der Speicherung von
Datensätzen einer in Ebenen gegliederten konvexen Hülle in
kugelförmigen Shells gemäß einer Ausführungsform der
vorliegenden Erfindung.
Es sollte klar sein, dass der Begriff "Prozessor" in der
hier verwendeten Weise für jedwede Verarbeitungseinheit, wie
zum Beispiel eine, die eine CPU (Zentraleinheit) enthält,
steht. Der Begriff "Speicher" in der hier verwendeten Weise
steht für einen Speicher, der einem Prozessor oder einer CPU
zugeordnet ist, wie zum Beispiel ein RAM, ein ROM, eine
Festspeichereinheit (z. B. ein Festplattenlaufwerk), eine
austauschbare Speichereinheit (z. B. eine Diskette) usw.
Außerdem steht der Begriff "Eingabe-/Ausgabeeinheiten" oder
"E/A-Einheiten" in der hier verwendeten Weise beispielsweise
für eine oder mehrere Eingabeeinheiten, z. B. eine Tastatur,
um Anfragen vorzunehmen und/oder Daten in die
Verarbeitungseinheit einzugeben, und/oder eine oder mehrere
Ausgabeeinheiten, z. B. einen Katodenstrahlröhren-Bildschirm
und/oder einen Drucker, um Ergebnisse von Anfragen und/oder
andere Ergebnisse in Verbindung mit der Verarbeitungseinheit
zu übergeben. Es sollte sich ebenfalls von selbst verstehen,
dass verschiedene Elemente, die zu einem Prozessor gehören,
mit anderen Prozessoren gemeinsam benutzt werden können.
Folglich können Software-Komponenten, die Befehle oder Code
zur Durchführung der methodischen Vorgehensweisen der
Erfindung, wie sie hier beschrieben sind, enthalten, in
einem oder in mehreren der zugehörigen Speichereinheiten
(z. B. ROM, Festspeicher oder austauschbarer Speicher)
abgelegt und wenn sie verwendungsbereit sind, teilweise oder
ganz (z. B. in das RAM), geladen und von einer CPU ausgeführt
werden.
Fig. 1A veranschaulicht ein Beispiel eines Problems in Form
von einer linearen Optimierungsanfrage, das von dieser
Erfindung gelöst wird. In Fig. 1A gibt es drei Datensätze
101, 102 und 103, von denen jeder zwei numerische Attribute
hat, die der Ordinate x2 und der Abszisse x1 entsprechen. Die
Erzeugung einer Darstellung der Datenbank in Form von einer
Gruppe von Tupeln ist in der Technik bekannt. Die
Darstellung kann - ohne jedoch auf diese Möglichkeiten
beschränkt zu sein - erzeugt werden, indem für jede Zeile
der Datenbank ein Längenfeld erzeugt wird, das gleich der
Anzahl der Dimensionen der zu erzeugenden Tupel ist, und
indem die in den Spalten enthaltenen Werte der
entsprechenden Zeile, für welche die Tupel erzeugt werden
muss, in die Elemente des Feldes kopiert werden. In diesem
bestimmten Beispiel hat die Tupel zwei Dimensionen. Die
Erfindung gilt jedoch für jede endliche Anzahl von
Dimensionen.
In Fig. 1A ist der Datensatz 101 durch die 2-Tupel (a1, b3)
dargestellt; der Datensatz 102 ist durch die 2-Tupel (a2, b1)
dargestellt, und der Datensatz 103 ist durch die 2-Tupel (a3,
b2) dargestellt. Das lineare Kriterium, das als Teil der
Anfrage ausgegeben wird, ist als die Linie 104 gezeigt. Wenn
diese Linie 104 den Datensatz 103 passiert, wird die
Liniengleichung als c1.x1+c2.x2 = c1.a3+c2.b2 geschrieben.
Außerdem ist (c1.a3+c2.b2) der Wert des Datensatzes 103, der
dem linearen Kriterium unterliegt. Das Ziel einer linearen
Optimierungsanfrage besteht darin, die obersten N Datensätze
zu finden, die ihre Werte entweder maximieren oder
minimieren.
Fig. 1B stellt den grundlegenden Baustein dieser Erfindung,
d. h. die konvexe Hülle, vor. Eine konvexe Hülle ist als der
kleinste konvexe Bereich definiert, der alle Punkte umfasst.
Ein Bereich ist nur dann konvex, wenn eine gerade Linie, die
zwei beliebige Punkte in dem Bereich verbindet, ebenfalls in
den Bereich fällt. Eine konvexe Hülle ist eine bekannte
Technik. Für ausführlichere Erörterungen sei auf das Buch
von G.B. Dantzig "Linear programming und extensions",
Princeton University Press, Princeton, NJ, 1963, verwiesen.
Fig. 1B zeigt die konvexe Hülle von vier Datensätzen in zwei
Dimensionen. Die drei Datensätze 111, 112 und 113, die an
der Grenze erscheinen und nicht als konvexe Verknüpfung von
zwei bestimmten anderen Datensätzen in dem konvexen Bereich
ausgedrückt werden können, sind die Scheitelpunkte dieser
Hülle. Der Datensatz 114, der sich im Innern der Hülle
befindet, ist kein Scheitelpunkt. Scheitelpunkte werden in
Lehrbüchern über lineare Programmierung häufig als
Extrempunkte bezeichnet. Bei zwei Dimensionen hat eine
konvexe Hülle die Form eines Polygons. Bei mehr Dimensionen
hat sie die Form eines Polyeders.
Das grundlegende Theorem der linearen Programmierung (S.C.
Fang und S. Puthenpura: "Linear optimization and
extensions", Prentice-Hall, Inc., Englewood Cliffs, NJ,
1993) besagt, dass sich bei einer bestimmten Satzgruppe und
einem linearen Maximierungs-(Minimierungs-)Kriterium der
maximale (minimale) Zielwert mindestens an einem
Scheitelpunkt der konvexen Hülle, die von den
Eingabedatensätzen gebildet wird, erreichen lässt. Wenn eine
Anfrage nur die Rückgabe eines Datensatzes anfordert, reicht
eine einzige konvexe Hülle zur Beantwortung solcher Anfragen
daher aus. Die meisten Anfragen fordern jedoch mehr als
einen Datensatz an, und eine einzige konvexe Hülle reicht
nicht aus.
Diese Erfindung geht das vorstehend erwähnte Erfordernis an,
indem sie aus Eingabedatensätzen eine in Ebenen gegliederte
konvexe Hülle aufbaut. Eine in Ebenen gegliederte konvexe
Hülle ist eine Struktur mit mehreren Ebenen, bei der jede
Ebene die Shell einer konvexen Hülle darstellt. Äußere
Ebenen umhüllen innere Ebenen wie Zwiebelschalen. Eine
Prozedur zum Aufbau einer in Ebenen gegliederten konvexen
Hülle ist in Fig. 3 als Flussdiagramm dargestellt. Zunächst
wird jedoch im Zusammenhang mit Fig. 2 eine beispielhafte
Hardware-Architektur zum Aufbau, zur Verwaltung und zur
Verwendung einer mehrdimensionalen Indexierungsstruktur
beschrieben, die gemäß der Erfindung gebildet wird.
Fig. 2 stellt die erfindungsgemäße Vorrichtung 200 dar, die
zum Aufbau, zur Verwaltung und/oder Verwendung einer
mehrdimensionalen erfindungsgemäßen Indexierungsstruktur
verwendet werden kann. Die mehrdimensionale
Indexierungsstruktur kann beispielsweise eine in Ebenen
gegliederte konvexe Hülle oder eine hierarchische, in Ebenen
gegliederte konvexe Hülle sein, wie nachstehend ausführlich
erklärt wird. Auch kann die mehrdimensionale
Indexierungsstruktur in einer kugelförmigen Shell-
Darstellung angeordnet werden, wie ebenfalls später erklärt
wird.
Die Vorrichtung 200 enthält einen Prozessor 202, der mit dem
Speicher 204, den E/A-Einheiten 206 und dem
Datenbankspeicher 210 verbunden ist. Es sollte klar sein,
dass der Prozessor 202 die methodischen Vorgehensweisen,
z. B. den Aufbau, die Verwaltung und die Verwendung, die mit
der mehrdimensionalen Indexierungsstruktur der Erfindung
verbunden sind, steuert und/oder durchführt. Der Speicher
204 wird vom Prozessor 202 bei der Durchführung dieser
Operationen, z. B. der Speicherung einer Liste von
Datensätzen, die der Prozessor als Antwort auf eine
bestimmte Anfrage zurückgibt, verwendet. Die E/A-Einheiten
206 können eine Tastatur, eine Maus und/oder eine beliebige
herkömmliche Dateneingabeeinheit beinhalten, die einem
Benutzer die Eingabe von Anfragen und/oder anderen Daten in
das System ermöglicht. Die E/A-Einheiten 206 können auch
einen Bildschirm, einen Drucker und/oder eine beliebige
herkömmliche Datenausgabeeinheit beinhalten, die einem
Benutzer die Überwachung von Ergebnissen in Verbindung mit
Anfragen und/oder anderen Prozessoroperationen ermöglicht.
Der Datenbankspeicher 210 kann die Datenbanksätze in Form
von einer oder mehreren der hier beschriebenen
erfindungsgemäßen mehrdimensionalen Indexierungsstrukturen
und Darstellungen enthalten. Bei solch einer Konfiguration
greift der Prozessor 202 auf den Datenbankspeicher 210 als
Antwort auf eine Benutzeranfrage zu.
Nun Bezug nehmend auf Fig. 3, ist eine Prozedur 300 zum
Aufbau einer mehrdimensionalen Indexierungsstruktur, d. h.
einer in Ebenen gegliederten konvexen Hülle, gezeigt. Nehmen
wir an, es werden N Datensätze zur Indexierung übergeben. Im
Schritt 301 setzt die Prozedur die Ebene Nummer K auf den
Anfangswert 1. Wenn N null ist, ist der Aufbau des Index
abgeschlossen (Schritt 302). Wenn N ungleich null ist,
schaltet die Prozedur zum Schritt 303. Im ersten Schritt
wird aus den Eingabedatensätzen eine konvexe Hülle aufgebaut
(Schritt 303). Aufbauschemata für konvexe Hüllen wie zum
Beispiel das Geschenkverpackungs-Verfahren (gift-wrapping
method), das Unter-und-Über-Verfahren (beneath-beyond
method) und ihre Varianten können in dem Buch von F.P.
Preparata und M.I. Shamos "Computational geometry: an
introduction", Springer-Verlag, 1991, nachgeschlagen werden.
Der Aufbau von konvexen Hüllen ist eine bekannte Technik und
nicht Teil dieser Erfindung. Im zweiten Schritt werden M
Scheitelpunkte, die im ersten Schritt erzeugt wurden, der
Ebene K zugeordnet und dort gespeichert (Schritt 304). M
kann eine beliebige ganze Zahl zwischen N und der Anzahl der
Dimensionen plus eins sein. Im dritten Schritt werden die
Datensätze der M Scheitelpunkte aus dem Eingabedatensatz
entfernt, N wird um M verringert, und K wird um 1 erhöht
(Schritt 305). Dies wird so lange wiederholt, bis jeder
Eingabedatensatz einer Ebene zugeordnet ist.
In einer in Ebenen gegliederten konvexen Hülle sind
Datensätze in der Ebene K Scheitelpunkte der konvexen Hülle,
die aus Datensätzen von der Ebene K, der Ebene K+1, der
Ebene K+2 bis zur innersten Ebene gebildet werden.
Datensätze werden nach den Ebenen, denen sie angehören,
indexiert. Die äußerste Ebene ist die Ebene 1. Die darunter
liegende Ebene ist die Ebene 2. Geometrisch betrachtet,
werden Innenebenen von Außenebenen "umhüllt".
Vorteilhafterweise hat diese Indexierungsstruktur, die aus
einer in Ebenen gegliederten konvexen Hülle aufgebaut wird,
mit Ausnahme des für die Bezeichnungen der Ebenen benötigten
Speicherplatzes keinen zusätzlichen Speicherplatzbedarf.
Fig. 4 stellt eine Anfrage-Verarbeitungsprozedur dar, die
ein Beispiel einer in Ebenen gegliederten konvexen Hülle
verwendet, während eine formale Prozedur in Fig. 5 mittels
eines Flussdiagramms beschrieben wird. In Fig. 4 ist der
schrittweise Abruf von drei Datensätzen, die eine lineare
Optimierungsanfrage beantworten, in vier Schritten gezeigt:
Schritt 0 (410), Schritt 1 (411), Schritt 2 (412) und
Schritt 3 (413). Im Schritt 0 ist eine konvexe Hülle mit
drei Ebenen im zweidimensionalen Raum gezeigt. Sowohl die
Ebene 1 (405) als auch die Ebene 2 (406) haben fünf
Datensätze, von denen jeder in der Figur durch einen
schwarzen Punkt dargestellt ist. Das lineare Kriterium 401
besteht in der Maximierung von Datensatzwerten in
Pfeilrichtung. Im Schritt 1 beginnt der Anfrageprozessor
(z. B. der Prozessor 202 in Fig. 2), indem er Datensätze in
der Ebene 1 (405) auswertet und feststellt, dass der
Datensatz 402 den Höchstwert hat. Der Datensatz 402 wird dem
Client zurückgegeben (z. B. über die E/A-Einheit 206 in Fig.
2), und die Prozedur schaltet zum Schritt 2. Man beachte im
Schritt 2, dass der Datensatz 402 aus dem Bild entfernt
wurde. Der Anfrageprozessor wertet dann Datensätze in der
Ebene 2 (406) aus. Die Datensatzwerte der Ebene 2 werden mit
Werten der in der Ebene 1 verbliebenen vier Datensätze
verglichen. Es wird festgestellt, dass der Datensatz 403 von
der Ebene 2 den Höchstwert aufweist. Der Datensatz 403 wird
dem Client zurückgegeben, und die Prozedur schaltet zum
Schritt 3. Man beachte wieder im Schritt 3, dass der
Datensatz 403 aus dem Bild entfernt wurde. Im Schritt 3 hat
der Datensatz 404 von allen Datensätzen den Höchstwert und
wird zurückgegeben. Vom Schritt 1 bis zum Schritt 3 wertet
der Anfrageprozessor Datensätze ebenenweise aus, wobei er
bei dem äußersten Datensatz beginnt.
Fig. 5 ist eine formale Beschreibung der in Fig. 4 zur
Anwendung kommenden Anfrage-Verarbeitungsprozedur 500 in
Form eines Flussdiagramms. Zu den Eingaben in die Prozedur
gehören: eine aus einer in Ebenen gegliederten konvexen
Hülle aufgebaute Indexierungsstruktur, das lineare
Optimierungskriterium und die Anzahl der zurückzugebenden
Datensätze N (Schritt 501). Ohne allgemeine Gültigkeit zu
verlieren, nehmen wir an, dass das Optimierungskriterium um
Datensätze mit dem Höchstwert bittet. Bei der äußersten
Ebene (Ebene 1) beginnend, werden die Datensätze ausgewertet
und in absteigender Reihenfolge sortiert (Schritt 502). Der
erste Eintrag (Maximum) wird an die Ergebnisliste
zurückgegeben, die zur Speicherung von Datensätzen, die
zurückgegeben werden, dient (Schritt 503). Die restlichen
Einträge der Ebene 1 werden in die Kandidatenliste
übertragen (Schritt 504). Die Kandidatenliste speichert
sortierte Datensätze, die ausgewertet wurden. Die Liste wird
immer länger, je mehr Ebenen der Anfrageprozessor
durchläuft.
Die Prüfkästchen 504 und 507 sind Abbruchbedingungen, die
das Programm anhalten, sobald N Datensätze zurückgegeben
werden. Wenn die Bedingung 504 nicht erfüllt ist, wertet der
Anfrageprozessor Datensätze in der unter der aktuellen Ebene
liegenden Ebene, der Ebene (L+1), aus und sortiert sie
(Schritt 505). Ein sehr wichtiger Teil des ganzen Prozesses
ist die aus den Blöcken 506, 507 und 508 bestehende
Innenschleife. Einträge in der Kandidatenliste werden mit
dem ersten (auch dem größten) Eintrag von der Ebene (L+1)
verglichen. Einträge in der Kandidatenliste, die größer oder
gleich diesem Eintrag sind, werden als Ergebnisse
zurückgegeben, und N wird auf N-1 gesetzt (Schritt 506). Die
Schleife wird weiter durchlaufen, bis kein Eintrag in der
Kandidatenliste größer oder gleich dem größten Eintrag von
der Ebene (L+1) ist (Schritte 507 und 508). An diesem Punkt
wird die Schleife abgebrochen, und alle Datensätze der Ebene
(L+1) werden in die Kandidatenliste aufgenommen (Schritt
509). L wird um 1 erhöht, und die Ebene, auf die zugegriffen
wurde, wird einen Schritt weiter nach innen genommen.
Ein auf der Grundlage des Flussdiagramms von Fig. 5
realisierter Anfrageprozessor wurde geprüft. Erste im
Versuch gewonnene Ergebnisse zeigten, dass bei einem kleinen
Wert von N eine beträchtliche Beschleunigung bei der
Anfrage-Antwortzeit im Vergleich zu einer linearen Suche
erzielt werden kann.
Eine neue Indexierungsstruktur muss alle Aspekte der
Operationen abdecken: den Aufbau, die Verarbeitung der
Anfrage und Aktualisierungen. Die Fig. 3 und 5 stellen
jeweils die ersten beiden Aspekte dar. Flussdiagramme von
Aktualisierungsoperationen sind in den Fig. 6 und 7
gezeigt.
Fig. 6 veranschaulicht, wie ein neuer Datensatz indexiert
und zu einer vorhandenen in Ebenen gegliederten konvexen
Hülle hinzugefügt wird. Gemäß der Definition einer konvexen
Hülle muss sich jeder neue Datensatz, der als eine konvexe
Verknüpfung von bestimmten Datensätzen ausgedrückt werden
kann, in der konvexen Hülle befinden. Wenn sich ein neuer
Datensatz in der Hülle befände, wären die Scheitelpunkte der
Hülle mit dem neuen Datensatz identisch mit den
Scheitelpunkten der Hülle ohne den neuen Datensatz. Wenn
sich ein neuer Datensatz andererseits außerhalb der Hülle
befände, wäre die Gruppe der neuen Scheitelpunkte anders.
Fig. 6 beschreibt, wie dieses Konzept im Zusammenhang mit
der Prozedur 600 realisiert werden kann. Die Eingaben in die
Hinzufüge-Prozedur beinhalten eine vorhandene in Ebenen
gegliederte konvexe Hülle und einen neuen Datensatz (Schritt
601). Es wird an der äußersten Ebene begonnen, indem L auf
eins gesetzt wird (Schritt 602). Unter Verwendung von
Datensätzen der Ebene L und dieses neuen Datensatzes wird
eine neue konvexe Hülle aufgebaut (Schritt 603). Wenn der
neue Datensatz in der neuen Gruppe der Scheitelpunkte
erscheint (Schritt 604), bedeutet dies, dass sich der
Datensatz außerhalb der Ebene L befindet und alle
innenliegenden Ebenen aktualisiert werden müssen.
Andernfalls schaltet man zur darunter liegenden Ebene
(Schritt 605) und wiederholt die Schritte 603 und 604.
Sobald die Ebene L im Schritt 604 erkannt wurde, tritt die
Aktualisierungsprozedur in eine Schleife ein, die von den
Schritten 606 und 607 gebildet wird. Das Hinzufügen eines
neuen Datensatzes zu einer Ebene kann dazu führen, dass
einige Datensätze in der Ebene ausgeschlossen werden, was
bedeutet, dass sie keine Scheitelpunkte mehr sind. Diese
ausgeschlossenen Datensätze werden dann in die darunter
liegende Ebene gedrückt (Schritt 607). Die Schleife wird
weiter durchlaufen, bis keine Datensätze mehr ausgeschlossen
werden oder die Prozedur die innerste Ebene erreicht.
Eine andere wichtige Aktualisierungsoperation ist die
Entfernung von Datensätzen. Fig. 7 veranschaulicht im
Zusammenhang mit der Prozedur 700, wie ein vorhandener
Datensatz aus seiner in Ebenen gegliederten konvexen Hülle
entfernt werden kann. Zu den Eingaben in die
Entfernungsprozedur gehören der zu entfernende Datensatz und
seine in Ebenen gegliederte konvexe Hülle (Schritt 701). Der
erste Schritt besteht darin, die Ebene zu finden, zu welcher
der Datensatz gehört (Schritt 702). Dieser Datensatz wird
dann entfernt. Die Nummer seiner Ebene wird mit L
bezeichnet. Es ist nicht mehr gewährleistet, dass die
restlichen Datensätze in der Ebene L Scheitelpunkte einer
konvexen Hülle sind, die Datensätze in inneren Ebenen
enthält. Eine iterative Prozedur wird folglich vorgesehen,
um die Ebene L und alle darunter liegenden Ebenen zu
aktualisieren. Die iterative Prozedur beginnt, indem aus
Datensätzen der Ebene L und der Ebene (L+1) eine neue
konvexe Hülle aufgebaut wird (Schritt 703). Die
Scheitelpunkte der neuen konvexen Hülle werden mit den
Datensätzen in der Ebene L verglichen (Schritt 704). Wenn
sie gleich sind, hält das Programm an. Wenn nicht, werden
die Scheitelpunkte der neuen Hülle als die Ebene L
gespeichert (Schritt 705). Diese Scheitelpunkte werden aus
der Gruppe entfernt, die aus der Ebene L und der Ebene (L+1)
besteht. Übrig gebliebene Datensätze werden der Ebene (L+1)
zugeordnet. L wird um eins erhöht, und die Iteration wird
fortgesetzt.
Die Beschreibung dieser Erfindung hat sich bisher auf
Operationen konzentriert, die sich auf eine einzige in
Ebenen gegliederte konvexe Hülle beziehen. Während diese
neue Indexierungsstruktur eine erhebliche Verbesserung der
Leistungsfähigkeit ermöglicht, zeigt sich in ihrer
Fähigkeit, sowohl globalen als auch eingegrenzten Anfragen
Rechnung zu tragen, ein noch höherer Nutzwert.
In vielen Fällen enthalten Datensätze in einer Datenbank
sowohl kategoriebezogene als auch numerische Attribute.
Kategoriebezogene Attribute wie Namen, Adressen, Nationen,
Bundesstaaten und Berufe werden häufig verwendet, um den
Umfang der Suche in Form von eingegrenzten Anfragen
einzuschränken. Bei der Untersuchung von Colleges
beispielsweise, die in US News und World Report erschien,
wurden nationale und regionale Colleges getrennt bewertet;
Bewohner von New York sind möglicherweise nur an dem Grad
der Umweltverschmutzung von Bezirken in New York, nicht aber
des ganzen Landes interessiert; Touristen, die eine Reise
nach Asien planen, möchten nur die teuersten Städte in Asien
herausfinden. Eine wirksame Indexierungsstruktur sollte die
kategoriebezogenen Daten berücksichtigen, um die
Anforderungen sowohl von globalen als auch von eingegrenzten
Anfragen zu erfüllen.
Eine einzige in Ebenen gegliederte konvexe Hülle für die
ganze Datenbank ist für solche Aufgaben möglicherweise nicht
geeignet, da sie nur auf numerischen Attributen aufgebaut
ist. In den vorstehend erwähnten Beispielen wird die
Rangfolge der Umweltverschmutzung von Bezirken in New York
verarbeitet, indem die Rangfolge von allen 50 Bundesstaaten
erzeugt und dann die Datensätze von 49 Bundesstaaten
entfernt werden. Die Rangfolge von Colleges im Mittleren
Westen wird aus einer Rangfolgeliste von Colleges im ganzen
Land herausgefiltert. Die teuersten Städte in Asien werden
aus einer Liste von Städten in der ganzen Welt
herausgefunden.
In einer anderen Ausführungsform stellt die Erfindung eine
Lösung vor, um globalen und eingegrenzten Anfragen
gleichermaßen Rechnung zu tragen. Die Lösung baut auf dem
erfindungsgemäßen grundlegenden Baustein auf, der vorstehend
erklärt wurde, d. h. in Ebenen gegliederten konvexen Hüllen.
Die Idee ist, in Ebenen gegliederte konvexe Hüllen
hierarchisch aufzubauen. Die Fig. 8 und 9
veranschaulichen die grundlegenden Konzepte.
In Fig. 8 gibt es zwei Kategorien von Daten, die in
schwarzen und weißen Punkten ausgedrückt sind. Eine in
Ebenen gegliederte konvexe Hülle wird für jede Kategorie
aufgebaut und in Fig. 8 mit 803 beziehungsweise 804
bezeichnet. Eine an die schwarze Kategorie ausgegebene
Anfrage kann verarbeitet werden, indem die schwarze konvexe
Hülle 803 abgerufen wird, während eine an die weiße
Kategorie ausgegebene Anfrage verarbeitet werden kann, indem
die weiße konvexe Hülle 804 abgerufen wird. Die Verarbeitung
von beiden eingegrenzten Anfragen zieht keinen zusätzlichen
Aufwand nach sich. Was aber, wenn eine Anfrage sowohl an die
schwarze als auch an die weiße Kategorie ausgegeben wird?
Der Aufbau einer dritten in Ebenen gegliederten konvexen
Hülle aus allen Datensätzen reicht aus, um solche globale
Anfragen zu beantworten. Dies bedeutet jedoch auch, dass
doppelt so viel Speicherplatz benötigt wird.
Man beachte in Fig. 8, dass eine lineare Optimierungsanfrage
aufgrund der bestimmten Verteilung der schwarzen und der
weißen Datensätze lediglich die meisten Datensätze von einer
einzigen Kategorie aufsuchen kann. Eine lineare Anfrage
beispielsweise, die als die Linie 801 gezeigt ist, wird
wahrscheinlich von Datensätzen in der schwarzen Kategorie
(803) beantwortet. Ebenso wird eine lineare Anfrage, die als
die Linie 802 gezeigt ist, wahrscheinlich von weißen
Datensätzen beantwortet (804). Das Beispiel in Fig. 8 stellt
die Möglichkeit dar, den Suchraum zu verringern, indem die
Gruppe der in Ebenen gegliederten konvexen Hüllen ermittelt
wird, die für die Anfrage am relevantesten sind, und andere
irrelevante konvexe Hüllen ignoriert werden. Dieses Konzept
wird bei den erfindungsgemäßen hierarchischen in Ebenen
gegliederten konvexen Hüllen realisiert.
Fig. 9 veranschaulicht ein Beispiel für eine hierarchische
in Ebenen gegliederte konvexe Hülle. Die in Ebenen
gegliederte konvexe Hülle 901 wird aus Datensätzen der Ebene
1 der konvexen Hüllen 803 und 804 von Fig. 8 gebildet. Wir
bezeichnen die neue Hülle 901 als die übergeordnete Hülle
der untergeordneten Hüllen 803 und 804. Mit einem geringen
zusätzlichen Aufwand für die Nachbildung von Datensätzen der
Ebene 1 von untergeordneten Hüllen dient eine übergeordnete
Hülle dem Zweck der Verringerung des Suchraums. Eine
Anfrage, die an beide ihrer untergeordneten Hüllen
ausgegeben wird, wird zuerst von der übergeordneten Hülle
verarbeitet, um die Anzahl der untergeordneten Hüllen zu
verringern, die aufgesucht werden müssen.
Fig. 10 ist ein Flussdiagramm einer Prozedur 1000 zum Aufbau
einer hierarchischen Struktur aus in Ebenen gegliederten
konvexen Hüllen. Der erste Schritt besteht darin, eine
Gruppe von vorhandenen in Ebenen gegliederten konvexen
Hüllen auf der Grundlage des Musters von Client-Anfragen
auszuwählen (Schritt 1001). Das Auswahlkriterium wird hier
nicht angegeben, da es von Anwendungsdomänen abhängt. In
Ebenen gegliederte konvexe Hüllen können entweder nach
kategoriebezogenen Attributen wie zum Beispiel Nationen und
Regionen oder Datensegmenten wie die Altersgruppe 19 bis 25
und die Altersgruppe 26 bis 40 zu Gruppen zusammengefasst
werden. Im zweiten Schritt wird die übergeordnete, in Ebenen
gegliederte konvexe Hülle aus den Datensätzen der Ebene 1
der untergeordneten Hüllen aufgebaut (Schritt 1002). Der
Aufbau der übergeordneten Hülle folgt der in Fig. 3
veranschaulichten Prozedur und wird hier nicht wiederholt.
In Abhängigkeit von den Mustern der Client-Anfragen können
mit Hilfe derselben Prozedur von Fig. 10 nochmals mehrere
übergeordnete Hüllen zu Gruppen zusammengefasst werden, um
eine übergeordnete Hülle der nächsten Ebene zu bilden. Eine
hierarchische Struktur von in Ebenen gegliederten konvexen
Hüllen kann auf diese Weise aufgebaut werden.
Die Fig. 11A und 11B stellen ein Flussdiagramm einer
Anfrage-Verarbeitungsprozedur 1100 an einer hierarchischen
Struktur von in Ebenen gegliederten konvexen Hüllen dar. Zu
den Eingaben in die Prozedur gehören: eine hierarchische
Struktur einer Indexierungsstruktur, die aus in Ebenen
gegliederten konvexen Hüllen aufgebaut ist, die lineare
Optimierungsgleichung und die Anzahl der Datensätze, die
zurückgegeben werden sollen, N (Schritt 1101). Ohne
allgemeine Gültigkeit zu verlieren, nehmen wir an, dass das
Optimierungskriterium um die Datensätze mit dem Höchstwert
bittet. Wir nehmen an, dass die übergeordnete Hülle, die dem
Umfang der Anfrage entspricht, aufgefunden wurde. Der
Auffinde-Mechanismus für die übergeordnete Hülle hängt von
Anwendungsdomänen ab und wird hier deshalb nicht näher
angegeben. Um zum Beispiel eine Anfrage zu beantworten, bei
der es darum geht, die bestbewerteten Colleges im Nordosten
der Vereinigten Staaten zu finden, muss der Anfrageprozessor
die übergeordnete Hülle auffinden, die aus in Ebenen
gegliederten konvexen Hüllen von Colleges in den
Bundesstaaten New York, Connecticut, Rhode Island,
Massachusetts, New Hampshire, Vermont und Maine aufgebaut
wurde.
Nachdem die übergeordnete Hülle aufgefunden wurde, werden
die Datensätze in ihrer äußersten Ebene (Ebene 1)
ausgewertet und in absteigender Reihenfolge sortiert
(Schritt 1102). Der erste Eintrag des sortierten Datensatzes
wird an die Ergebnisliste zurückgegeben (Schritt 1103). N
wird um eins erniedrigt. Es wird auf alle untergeordneten
Hüllen zugegriffen, die diesen Eintrag enthalten. Dies sind
gewöhnlich alle Knoten (untergeordneten Hüllen) auf dem Pfad
von der übergeordneten Hülle zum Blattknoten in dieser
hierarchischen Struktur. Nehmen wir an, dass auf insgesamt M
Hüllen zugegriffen wird. Lm, die Nummer der Ebene, die der m-
ten Hülle zugeordnet ist, wird auf zwei gesetzt. Für jede
Hülle, auf die zugegriffen wird, wird eine Kandidatenliste
erstellt (Schritt 1104), und ausgewertete Datensätze von der
Ebene Lm und der Ebene (Lm-1) werden zur m-ten
Kandidatenliste hinzugefügt. Bei dieser Anfrage-
Verarbeitungsprozedur ist die Anzahl der Kandidatenlisten
gleich der Anzahl der Hüllen, auf die zugegriffen wird. Im
Gegensatz dazu hat die Anfrage-Verarbeitungsprozedur einer
einzigen in Ebenen gegliederten konvexen Hülle, wie sie in
Fig. 5 beschrieben ist, nur eine Kandidatenliste.
Als nächstes tritt der Algorithmus in eine iterative
Schleife ein, um die Anzahl der angeforderten Datensätze
abzurufen. Die Schleife besteht aus den Blöcken 1105, 1106,
1107 und 1108. Wenn N auf null verringert wird, hält die
Prozedur an (Schritt 1105). Wenn N ungleich null ist,
schaltet die Prozedur zum Schritt 1106. Die Kandidatenlisten
werden zuerst sortiert (Schritt 1106), und der höchstwertige
Datensatz von allen wird in die Ergebnisliste übertragen.
Wenn der höchstwertige Eintrag von einer übergeordneten
Hülle stammt, muss auf ihre untergeordneten Hüllen, die
diesen Eintrag enthalten, zugegriffen werden (Schritt 1107).
Die übergeordnete Hülle, auf die hier Bezug genommen wird,
kann statt der "Wurzel" der Struktur ein interner Knoten der
hierarchischen Struktur sein. Ihre untergeordneten Hüllen
sind die Gruppe der Knoten, die zu dem Teilbaum gehören, der
seine Wurzeln an der übergeordneten Hülle hat. Wenn auf
manche ihrer untergeordneten Hüllen nicht zugegriffen wurde,
wird für jede eine neue Kandidatenliste erzeugt. Die ersten
beiden Ebenen von Datensätzen werden in Kandidatenlisten
geladen. Wenn der höchstwertige Eintrag von der m-ten Hülle
stammt und zur Ebene Lm gehört, wird Lm um eins erhöht
(Schritt 1108). Von der Ebene Lm werden Datensätze zur m-ten
Kandidatenliste hinzugefügt. Dann erfolgt die Rückkehr zum
Prüfkästchen 1105.
Die Aktualisierungsoperationen der hierarchischen Struktur
aus in Ebenen gegliederten konvexen Hüllen sind mit den
Prozeduren identisch, die im Zusammenhang mit Fig. 6 und
Fig. 7 für eine einzige in Ebenen gegliederte konvexe Hülle
beschrieben wurden. Die übergeordnete Hülle muss nur
wiederhergestellt werden, wenn Datensätze der Ebene 1 von
einer oder mehreren ihrer untergeordneten Hüllen geändert
werden. Die Beschreibung der Prozeduren wird hier nicht
wiederholt.
Wir beschreiben nun eine Prozedur, mit der Datensätze in
einer Ebene organisiert werden können (z. B. im
Datenbankspeicher 210 in Fig. 2), um die Verarbeitung von
Anfragen weiter zu beschleunigen. Aufgrund der grundlegenden
Eigenschaften von konvexen Hüllen erhält man durch die
Auswertung aller Datensätze in einer Ebene nicht nur den
Höchstwert, sondern auch den Mindestwert, der dem linearen
Kriterium unterliegt. Da die Client-Anforderung eine von
ihnen, aber nicht beide betrifft, sollten die Datensätze in
einer Ebene indexiert werden, um eine ganze Auswertung zu
vermeiden. Eine einfache und wirksame Lösung besteht darin,
kugelförmige Shells zu verwenden, was in Fig. 12
veranschaulicht ist.
Kugelförmige Shells drücken in Ebenen gegliederte konvexe
Hüllen in konzentrischen Shells aus, von denen jede eine
Ebene darstellt. Fig. 12 veranschaulicht die gleichwertigen
kugelförmigen Shells einer konvexen Hülle mit zwei Ebenen in
zwei Dimensionen. Die Polarkoordinate eines Datensatzes wird
berechnet, und nur sein Winkel wird verwendet, um ihn in die
richtige Reihenfolge zu bringen. Da der Radius eines
Datensatzes nicht verwendet wird, werden bei der
kugelförmigen Shell-Darstellung in Fig. 12 alle Datensätze
in derselben Ebene mit derselben Entfernung vom Ursprung
gezeigt. Im D-dimensionalen Raum wird die Polarkoordinate
durch den Radius plus (D-1) Winkel ausgedrückt. Die
kugelförmige Shell-Darstellung ordnet die Datensätze dann in
einem Bereich mit (D-1) Dimensionen.
Es sollte klar sein, dass die kugelförmige Shell-Darstellung
als Hilfe für andere methodische Vorgehensweisen der hier
beschriebenen Erfindung verwendet werden kann. Die linearen
Koeffizienten der Optimierungsanfrage werden zuerst in
Polarkoordinaten ausgedrückt, z. B. (R, Theta1, Theta2,
Theta3,. . ., Theta (D-1)). R ist der Radius, und die
restlichen Parameter sind die Winkel. Statt alle Datensätze
in einer Ebene auszuwerten, werden nur diejenigen Datensätze
ausgewertet, deren Winkel im Bereich von {(Theta1 - 90 Grad,
Theta2 - 90 Grad, Theta3 - 90 Grad,. . ., Theta (D-1) - 90
Grad)) und {(Theta1 + 90 Grad, Theta 2 + 90 Grad, Theta3 +
90 Grad,. . . Theta(D-1) + 90 Grad)} liegt. Wenn Datensätze
gleichmäßig verteilt werden, kann die kugelförmige Shell-
Darstellung die Antwortzeit bei einer Anfrage um den Faktor
zwei verringern.
Obwohl als erläuterndes Beispiel dienende Ausführungsformen
der vorliegenden Erfindung hier mit Bezug auf die
beiliegenden Zeichnungen beschrieben wurden, sollte es sich
von selbst verstehen, dass die Erfindung nicht auf diese
präzisen Ausführungsformen beschränkt ist und dass der
Fachmann daran verschiedene andere Ab- und Veränderungen
vornehmen kann, ohne vom Umfang oder Wesen der Erfindung
abzuweichen.
Claims (30)
1. Verfahren zum Aufbau einer Indexierungsstruktur für N
Eingabedatensätze, die zu einem Datenbanksystem
gehören, wobei das Verfahren die folgenden Schritte
umfasst:
Bilden einer ersten konvexen Hülle aus den N Eingabedatensätzen, wobei M Datensätze Scheitelpunkte der ersten konvexen Hülle darstellen und einer ersten Ebene der Indexierungsstruktur zugeordnet werden; und
Bilden einer zweiten konvexen Hülle aus den restlichen N minus M Datensätzen, wobei P Datensätze Scheitelpunkte der zweiten konvexen Hülle darstellen und einer zweiten Ebene der Indexierungsstruktur zugeordnet werden, wobei sich mindestens ein Teil von einer der Ebenen geometrisch in einer anderen der Ebenen befindet.
Bilden einer ersten konvexen Hülle aus den N Eingabedatensätzen, wobei M Datensätze Scheitelpunkte der ersten konvexen Hülle darstellen und einer ersten Ebene der Indexierungsstruktur zugeordnet werden; und
Bilden einer zweiten konvexen Hülle aus den restlichen N minus M Datensätzen, wobei P Datensätze Scheitelpunkte der zweiten konvexen Hülle darstellen und einer zweiten Ebene der Indexierungsstruktur zugeordnet werden, wobei sich mindestens ein Teil von einer der Ebenen geometrisch in einer anderen der Ebenen befindet.
2. Verfahren nach Anspruch 1, das des Weiteren den Schritt
der Bildung von einer oder mehreren nachfolgenden
konvexen Hüllen und der Zuordnung ihrer jeweiligen
Scheitelpunkte zu nachfolgenden jeweiligen Ebenen der
Indexierungsstruktur umfasst, wobei sich mindestens ein
Teil einer jeden nachfolgenden Ebene geometrisch auch
in der vorhergehenden Ebene befindet, bis die N
Eingabedatensätze einer Ebene der Indexierungsstruktur
zugeordnet wurden.
3. Verfahren nach Anspruch 1, das des Weiteren den Schritt
des Hinzufügens eines neuen Datensatzes zu der
vorhandenen Indexierungsstruktur umfasst.
4. Verfahren nach Anspruch 3, wobei der Schritt des
Hinzufügens die folgenden Schritte umfasst:
Bilden einer ersten neuen konvexen Hülle aus den Datensätzen der ersten Ebene und des neuen Datensatzes, wenn der neue Datensatz einen Scheitelpunkt der ersten neuen konvexen Hülle darstellt;
Aktualisieren der zweiten Ebene, indem aus den restlichen Datensätzen eine zweite neue konvexe Hülle gebildet wird, und wenn der neue Datensatz keinen Scheitelpunkt der ersten neuen konvexen Hülle darstellt;
Bilden einer dritten neuen konvexen Hülle aus den Datensätzen der zweiten Ebene und des neuen Datensatzes.
Bilden einer ersten neuen konvexen Hülle aus den Datensätzen der ersten Ebene und des neuen Datensatzes, wenn der neue Datensatz einen Scheitelpunkt der ersten neuen konvexen Hülle darstellt;
Aktualisieren der zweiten Ebene, indem aus den restlichen Datensätzen eine zweite neue konvexe Hülle gebildet wird, und wenn der neue Datensatz keinen Scheitelpunkt der ersten neuen konvexen Hülle darstellt;
Bilden einer dritten neuen konvexen Hülle aus den Datensätzen der zweiten Ebene und des neuen Datensatzes.
5. Verfahren nach Anspruch 4, das des Weiteren den Schritt
der Aktualisierung von einer oder mehreren
nachfolgenden Ebenen umfasst, wobei sich mindestens ein
Teil einer jeden nachfolgenden Ebene geometrisch auch
in der vorhergehenden Ebene befindet.
6. Verfahren nach Anspruch 1, das des Weiteren den Schritt
des Entfernens eines vorhandenen Datensatzes aus der
vorhandenen Indexierungsstruktur umfasst.
7. Verfahren nach Anspruch 6, wobei der Schritt des
Entfernens die folgenden Schritte umfasst:
Ermitteln der Ebene, die den vorhandenen Datensatz, der entfernt werden soll, enthält, und
Löschen des Datensatzes aus der Ebene;
Bilden einer ersten neuen konvexen Hülle aus den restlichen Datensätzen der ermittelten Ebene und den Datensätzen der nächsten einwärts gerichteten Ebene, wenn die erste neue konvexe Hülle vor dem Entfernen des Datensatzes mit der ermittelten Ebene identisch ist;
Beenden der Entfernungsoperation und,
wenn die erste neue konvexe Hülle vor dem Entfernen des Datensatzes nicht mit der ermittelten Ebene identisch ist;
Ersetzen der ermittelten Ebene durch die erste neue konvexe Hülle und Bilden einer zweiten neuen konvexen Hülle aus den restlichen einwärts gerichteten Datensätzen.
Ermitteln der Ebene, die den vorhandenen Datensatz, der entfernt werden soll, enthält, und
Löschen des Datensatzes aus der Ebene;
Bilden einer ersten neuen konvexen Hülle aus den restlichen Datensätzen der ermittelten Ebene und den Datensätzen der nächsten einwärts gerichteten Ebene, wenn die erste neue konvexe Hülle vor dem Entfernen des Datensatzes mit der ermittelten Ebene identisch ist;
Beenden der Entfernungsoperation und,
wenn die erste neue konvexe Hülle vor dem Entfernen des Datensatzes nicht mit der ermittelten Ebene identisch ist;
Ersetzen der ermittelten Ebene durch die erste neue konvexe Hülle und Bilden einer zweiten neuen konvexen Hülle aus den restlichen einwärts gerichteten Datensätzen.
8. Verfahren nach Anspruch 7, das des Weiteren den Schritt
der Aktualisierung von einer oder mehreren
nachfolgenden Ebenen umfasst, wobei sich mindestens ein
Teil einer jeden nachfolgenden Ebene geometrisch auch
in der vorhergehenden Ebene befindet.
9. Verfahren nach Anspruch 1, wobei die in Ebenen
gegliederte konvexe Hülle in einer kugelförmigen Shell-
Darstellung angeordnet werden kann.
10. Verfahren zur Verarbeitung einer Anfrage, die
mindestens ein angegebenes Kriterium aufweist, das in
ein Datenbanksystem eingegeben wird, wobei das
Verfahren die folgenden Schritte umfasst:
Zugreifen auf eine Indexierungsstruktur für eine Vielzahl von Datensätzen, die zu dem Datenbanksystem gehören, wobei die Indexierungsstruktur die Form einer in Ebenen gegliederten konvexen Hülle hat, bei der die Vielzahl der Datensätze Ebenen der Indexierungsstruktur zugeordnet werden, wobei darüber hinaus mindestens ein Teil einer inneren Ebene der Struktur von einer vorhergehenden äußeren Ebene der Struktur geometrisch umschlossen wird; und
Verarbeiten der Anfrage, indem Ebenen der Indexierungsstruktur ausgewertet werden, wobei man bei der äußersten Ebene beginnt und sich nach innen bewegt, bis die Anfrage beantwortet ist.
Zugreifen auf eine Indexierungsstruktur für eine Vielzahl von Datensätzen, die zu dem Datenbanksystem gehören, wobei die Indexierungsstruktur die Form einer in Ebenen gegliederten konvexen Hülle hat, bei der die Vielzahl der Datensätze Ebenen der Indexierungsstruktur zugeordnet werden, wobei darüber hinaus mindestens ein Teil einer inneren Ebene der Struktur von einer vorhergehenden äußeren Ebene der Struktur geometrisch umschlossen wird; und
Verarbeiten der Anfrage, indem Ebenen der Indexierungsstruktur ausgewertet werden, wobei man bei der äußersten Ebene beginnt und sich nach innen bewegt, bis die Anfrage beantwortet ist.
11. Verfahren nach Anspruch 10, wobei die Anfrage ein
lineares Optimierungskriterium enthält und eine Anzahl
N von Datensätzen, die zurückgegeben werden müssen,
angegeben wird und wobei der Verarbeitungsschritt
darüber hinaus die folgenden Schritte umfasst:
Auswerten von Datensätzen in der äußersten Ebene, um mindestens einen Datensatz zu ermitteln, der das lineare Optimierungskriterium erfüllt, und
Speichern des mindestens einen Datensatzes in einer Rückgabeliste; und,
wenn N Datensätze nicht in der Rückgabeliste gespeichert wurden;
Auswerten von Datensätzen in einer oder mehreren nachfolgenden einwärts gerichteten Ebenen im Hinblick auf das lineare Optimierungskriterium und eines Teils der Datensätze von vorhergehenden Ebenen, um mindestens einen weiteren Datensatz zu ermitteln, der das lineare Optimierungskriterium erfüllt, und
Speichern des mindestens einen weiteren Datensatzes in einer Rückgabeliste, bis N Datensätze in der Rückgabeliste gespeichert wurden.
Auswerten von Datensätzen in der äußersten Ebene, um mindestens einen Datensatz zu ermitteln, der das lineare Optimierungskriterium erfüllt, und
Speichern des mindestens einen Datensatzes in einer Rückgabeliste; und,
wenn N Datensätze nicht in der Rückgabeliste gespeichert wurden;
Auswerten von Datensätzen in einer oder mehreren nachfolgenden einwärts gerichteten Ebenen im Hinblick auf das lineare Optimierungskriterium und eines Teils der Datensätze von vorhergehenden Ebenen, um mindestens einen weiteren Datensatz zu ermitteln, der das lineare Optimierungskriterium erfüllt, und
Speichern des mindestens einen weiteren Datensatzes in einer Rückgabeliste, bis N Datensätze in der Rückgabeliste gespeichert wurden.
12. Verfahren zum Aufbau einer hierarchischen
Indexierungsstruktur für Eingabedatensätze, die zu
einem Datenbanksystem gehören, wobei das Verfahren die
folgenden Schritte umfasst:
Aufbauen einer ersten untergeordneten, in Ebenen gegliederten konvexen Hülle, indem:
eine erste konvexe Hülle aus N Eingabedatensätzen gebildet wird, wobei M Datensätze Scheitelpunkte der ersten konvexen Hülle darstellen und einer ersten Ebene zugeordnet werden;
eine zweite konvexe Hülle aus den restlichen N minus M Datensätzen gebildet wird, wobei P Datensätze Scheitelpunkte der zweiten konvexen Hülle darstellen und einer zweiten Ebene zugeordnet werden, wobei sich mindestens ein Teil der zweiten Ebene geometrisch in der ersten Ebene befindet;
Aufbauen einer zweiten untergeordneten, in Ebenen gegliederten konvexen Hülle, indem:
eine erste konvexe Hülle aus Q Eingabedatensätzen gebildet wird, wobei R Datensätze Scheitelpunkte der ersten konvexen Hülle darstellen und einer ersten Ebene zugeordnet werden;
eine zweite konvexe Hülle aus den restlichen Q minus R Datensätzen gebildet wird, wobei S Datensätze Scheitelpunkte der zweiten konvexen Hülle darstellen und einer zweiten Ebene zugeordnet werden, wobei sich mindestens ein Teil der zweiten Ebene geometrisch in der ersten Ebene befindet; und
Aufbauen einer übergeordneten, in Ebenen gegliederten konvexen Hülle, indem Datensätze von der ersten Ebene der ersten untergeordneten, in Ebenen gegliederten konvexen Hülle und der ersten Ebene der zweiten untergeordneten, in Ebenen gegliederten konvexen Hülle verknüpft werden.
Aufbauen einer ersten untergeordneten, in Ebenen gegliederten konvexen Hülle, indem:
eine erste konvexe Hülle aus N Eingabedatensätzen gebildet wird, wobei M Datensätze Scheitelpunkte der ersten konvexen Hülle darstellen und einer ersten Ebene zugeordnet werden;
eine zweite konvexe Hülle aus den restlichen N minus M Datensätzen gebildet wird, wobei P Datensätze Scheitelpunkte der zweiten konvexen Hülle darstellen und einer zweiten Ebene zugeordnet werden, wobei sich mindestens ein Teil der zweiten Ebene geometrisch in der ersten Ebene befindet;
Aufbauen einer zweiten untergeordneten, in Ebenen gegliederten konvexen Hülle, indem:
eine erste konvexe Hülle aus Q Eingabedatensätzen gebildet wird, wobei R Datensätze Scheitelpunkte der ersten konvexen Hülle darstellen und einer ersten Ebene zugeordnet werden;
eine zweite konvexe Hülle aus den restlichen Q minus R Datensätzen gebildet wird, wobei S Datensätze Scheitelpunkte der zweiten konvexen Hülle darstellen und einer zweiten Ebene zugeordnet werden, wobei sich mindestens ein Teil der zweiten Ebene geometrisch in der ersten Ebene befindet; und
Aufbauen einer übergeordneten, in Ebenen gegliederten konvexen Hülle, indem Datensätze von der ersten Ebene der ersten untergeordneten, in Ebenen gegliederten konvexen Hülle und der ersten Ebene der zweiten untergeordneten, in Ebenen gegliederten konvexen Hülle verknüpft werden.
13. Verfahren zur Verarbeitung einer Anfrage, die
mindestens ein angegebenes Kriterium aufweist, das in
ein Datenbanksystem eingegeben wird, wobei das
Verfahren die folgenden Schritte umfasst:
Zugreifen auf eine hierarchische Indexierungsstruktur für eine Vielzahl von Datensätzen, die zu dem Datenbanksystem gehören, wobei die hierarchische Indexierungsstruktur die Form einer übergeordneten, in Ebenen gegliederten konvexen Hülle hat, welche eine äußerste Ebene hat, die eine Verknüpfung von mindestens zwei untergeordneten, in Ebenen gegliederten konvexen Hüllen ist; und
Verarbeiten der Anfrage, indem die äußerste Ebene der übergeordneten Hülle ausgewertet und dann nur die einwärts gerichteten Ebenen der untergeordneten Hüllen ausgewertet werden, die für die Anfrage relevant sind.
Zugreifen auf eine hierarchische Indexierungsstruktur für eine Vielzahl von Datensätzen, die zu dem Datenbanksystem gehören, wobei die hierarchische Indexierungsstruktur die Form einer übergeordneten, in Ebenen gegliederten konvexen Hülle hat, welche eine äußerste Ebene hat, die eine Verknüpfung von mindestens zwei untergeordneten, in Ebenen gegliederten konvexen Hüllen ist; und
Verarbeiten der Anfrage, indem die äußerste Ebene der übergeordneten Hülle ausgewertet und dann nur die einwärts gerichteten Ebenen der untergeordneten Hüllen ausgewertet werden, die für die Anfrage relevant sind.
14. Verfahren nach Anspruch 13, wobei die in Ebenen
gegliederten konvexen Hüllen in einer kugelförmigen
Shell-Darstellung angeordnet werden können.
15. Vorrichtung zum Aufbau einer Indexierungsstruktur für N
Eingabedatensätze, die zu einem Datenbanksystem
gehören, wobei die Vorrichtung Folgendes umfasst:
mindestens einen Prozessor, der in der Lage ist, eine erste konvexe Hülle aus den N Eingabedatensätzen zu bilden, wobei M Datensätze Scheitelpunkte der ersten konvexen Hülle darstellen und einer ersten Ebene der Indexierungsstruktur zugeordnet werden, und eine zweite konvexe Hülle aus den restlichen N minus M Datensätzen zu bilden, wobei P Datensätze Scheitelpunkte der zweiten konvexen Hülle darstellen und einer zweiten Ebene der Indexierungsstruktur zugeordnet werden, wobei sich mindestens ein Teil von einer der Ebenen geometrisch in einer anderen der Ebenen befindet.
mindestens einen Prozessor, der in der Lage ist, eine erste konvexe Hülle aus den N Eingabedatensätzen zu bilden, wobei M Datensätze Scheitelpunkte der ersten konvexen Hülle darstellen und einer ersten Ebene der Indexierungsstruktur zugeordnet werden, und eine zweite konvexe Hülle aus den restlichen N minus M Datensätzen zu bilden, wobei P Datensätze Scheitelpunkte der zweiten konvexen Hülle darstellen und einer zweiten Ebene der Indexierungsstruktur zugeordnet werden, wobei sich mindestens ein Teil von einer der Ebenen geometrisch in einer anderen der Ebenen befindet.
16. Vorrichtung nach Anspruch 15, wobei der mindestens eine
Prozessor darüber hinaus in der Lage ist, eine oder
mehrere nachfolgende konvexe Hüllen zu bilden und ihre
jeweiligen Scheitelpunkte nachfolgenden jeweiligen
Ebenen der Indexierungsstruktur zuzuordnen, wobei sich
mindestens ein Teil einer jeden nachfolgenden Ebene
geometrisch auch in der vorhergehenden Ebene befindet,
bis die N Eingabedatensätze einer Ebene der
Indexierungsstruktur zugeordnet wurden.
17. Vorrichtung nach Anspruch 15, wobei der mindestens eine
Prozessor darüber hinaus in der Lage ist, einen neuen
Datensatz zu der vorhandenen Indexierungsstruktur
hinzuzufügen.
18. Vorrichtung nach Anspruch 17, wobei die
Hinzufügeoperation Folgendes umfasst:
(i) Bilden einer ersten neuen konvexen Hülle aus den Datensätzen der ersten Ebene und des neuen Datensatzes,
(ii) wenn der neue Datensatz einen Scheitelpunkt der ersten neuen konvexen Hülle darstellt, Aktualisieren der zweiten Ebene, indem aus den restlichen Datensätzen eine zweite neue konvexe Hülle gebildet wird, und
(iii) wenn der neue Datensatz keinen Scheitelpunkt der ersten neuen konvexen Hülle darstellt, Bilden einer dritten neuen konvexen Hülle aus den Datensätzen der zweiten Ebene und des neuen Datensatzes.
(i) Bilden einer ersten neuen konvexen Hülle aus den Datensätzen der ersten Ebene und des neuen Datensatzes,
(ii) wenn der neue Datensatz einen Scheitelpunkt der ersten neuen konvexen Hülle darstellt, Aktualisieren der zweiten Ebene, indem aus den restlichen Datensätzen eine zweite neue konvexe Hülle gebildet wird, und
(iii) wenn der neue Datensatz keinen Scheitelpunkt der ersten neuen konvexen Hülle darstellt, Bilden einer dritten neuen konvexen Hülle aus den Datensätzen der zweiten Ebene und des neuen Datensatzes.
19. Vorrichtung nach Anspruch 18, wobei der mindestens eine
Prozessor darüber hinaus in der Lage ist, eine oder
mehrere nachfolgende Ebenen zu aktualisieren, wobei
sich mindestens ein Teil einer jeden nachfolgenden
Ebene geometrisch auch in der vorhergehenden Ebene
befindet.
20. Vorrichtung nach Anspruch 15, wobei der mindestens eine
Prozessor darüber hinaus in der Lage ist, einen
vorhandenen Datensatz aus der vorhandenen
Indexierungsstruktur zu entfernen.
21. Vorrichtung nach Anspruch 20, wobei die
Entfernungsoperation Folgendes umfasst:
(i) Ermitteln der Ebene, die den vorhandenen Datensatz, der entfernt werden soll, enthält, und Löschen des Datensatzes aus der Ebene,
(ii) Bilden einer ersten neuen konvexen Hülle aus den restlichen Datensätzen der ermittelten Ebene und den Datensätzen der nächsten einwärts gerichteten Ebene,
(iii) wenn die erste neue konvexe Hülle vor dem Entfernen des Datensatzes mit der ermittelten Ebene identisch ist, Beenden der Entfernungsoperation, und
(iv) wenn die erste neue konvexe Hülle vor dem Entfernen des Datensatzes nicht mit der ermittelten Ebene identisch ist, Ersetzen der ermittelten Ebene durch die erste neue konvexe Hülle und Bilden einer zweiten neuen konvexen Hülle aus den restlichen einwärts gerichteten Datensätzen.
(i) Ermitteln der Ebene, die den vorhandenen Datensatz, der entfernt werden soll, enthält, und Löschen des Datensatzes aus der Ebene,
(ii) Bilden einer ersten neuen konvexen Hülle aus den restlichen Datensätzen der ermittelten Ebene und den Datensätzen der nächsten einwärts gerichteten Ebene,
(iii) wenn die erste neue konvexe Hülle vor dem Entfernen des Datensatzes mit der ermittelten Ebene identisch ist, Beenden der Entfernungsoperation, und
(iv) wenn die erste neue konvexe Hülle vor dem Entfernen des Datensatzes nicht mit der ermittelten Ebene identisch ist, Ersetzen der ermittelten Ebene durch die erste neue konvexe Hülle und Bilden einer zweiten neuen konvexen Hülle aus den restlichen einwärts gerichteten Datensätzen.
22. Vorrichtung nach Anspruch 21, wobei der mindestens eine
Prozessor darüber hinaus in der Lage ist, einen oder
mehrere nachfolgende Ebenen zu aktualisieren, wobei
sich mindestens ein Teil einer jeden nachfolgenden
Ebene geometrisch auch in der vorhergehenden Ebene
befindet.
23. Vorrichtung nach Anspruch 15, wobei die in Ebenen
gegliederte konvexe Hülle in einer kugelförmigen Shell-
Darstellung angeordnet werden kann.
24. Vorrichtung zur Verarbeitung einer Anfrage, die
mindestens ein angegebenes Kriterium aufweist, das in
ein Datenbanksystem eingegeben wird, wobei die
Vorrichtung Folgendes umfasst:
mindestens einen Prozessor, der in der Lage ist, auf eine Indexierungsstruktur für eine Vielzahl von Datensätzen zuzugreifen, die zu dem Datenbanksystem gehören, wobei die Indexierungsstruktur die Form einer in Ebenen gegliederten konvexen Hülle hat, bei der die Vielzahl der Datensätze Ebenen der Indexierungsstruktur zugeordnet werden, wobei darüber hinaus mindestens ein Teil einer inneren Ebene der Struktur von einer vorhergehenden äußeren Ebene der Struktur geometrisch umschlossen wird, und die Anfrage zu verarbeiten, indem Ebenen der Indexierungsstruktur ausgewertet werden, wobei man bei der äußersten Ebene beginnt und sich nach innen bewegt, bis die Anfrage beantwortet ist.
mindestens einen Prozessor, der in der Lage ist, auf eine Indexierungsstruktur für eine Vielzahl von Datensätzen zuzugreifen, die zu dem Datenbanksystem gehören, wobei die Indexierungsstruktur die Form einer in Ebenen gegliederten konvexen Hülle hat, bei der die Vielzahl der Datensätze Ebenen der Indexierungsstruktur zugeordnet werden, wobei darüber hinaus mindestens ein Teil einer inneren Ebene der Struktur von einer vorhergehenden äußeren Ebene der Struktur geometrisch umschlossen wird, und die Anfrage zu verarbeiten, indem Ebenen der Indexierungsstruktur ausgewertet werden, wobei man bei der äußersten Ebene beginnt und sich nach innen bewegt, bis die Anfrage beantwortet ist.
25. Vorrichtung nach Anspruch 24, wobei die Anfrage ein
lineares Optimierungskriterium enthält und eine Anzahl
N von Datensätzen, die zurückgegeben werden müssen,
angegeben wird und wobei die Verarbeitungsoperation des
Weiteren Folgendes umfasst:
(i) Auswerten von Datensätzen in der äußersten Ebene, um mindestens einen Datensatz zu ermitteln, der das lineare Optimierungskriterium erfüllt, und Speichern des mindestens einen Datensatzes in einer Rückgabeliste, und
(ii) wenn N Datensätze nicht in der Rückgabeliste gespeichert wurden, Auswerten von Datensätzen in einer oder mehreren nachfolgenden einwärts gerichteten Ebenen im Hinblick auf das lineare Optimierungskriterium und eines Teils der Datensätze von vorhergehenden Ebenen, um mindestens einen weiteren Datensatz zu ermitteln, der das lineare Optimierungskriterium erfüllt, und Speichern des mindestens einen weiteren Datensatzes in einer Rückgabeliste, bis N Datensätze in der Rückgabeliste gespeichert wurden.
(i) Auswerten von Datensätzen in der äußersten Ebene, um mindestens einen Datensatz zu ermitteln, der das lineare Optimierungskriterium erfüllt, und Speichern des mindestens einen Datensatzes in einer Rückgabeliste, und
(ii) wenn N Datensätze nicht in der Rückgabeliste gespeichert wurden, Auswerten von Datensätzen in einer oder mehreren nachfolgenden einwärts gerichteten Ebenen im Hinblick auf das lineare Optimierungskriterium und eines Teils der Datensätze von vorhergehenden Ebenen, um mindestens einen weiteren Datensatz zu ermitteln, der das lineare Optimierungskriterium erfüllt, und Speichern des mindestens einen weiteren Datensatzes in einer Rückgabeliste, bis N Datensätze in der Rückgabeliste gespeichert wurden.
26. Vorrichtung zum Aufbau einer hierarchischen
Indexierungsstruktur für Eingabedatensätze, die zu
einem Datenbanksystem gehören, wobei die Vorrichtung
mindestens einen Prozessor umfasst, der in der Lage
ist,
- a) eine erste untergeordnete, in Ebenen
gegliederte konvexe Hülle aufzubauen, indem:
eine erste konvexe Hülle aus N Eingabedatensätzen gebildet wird, wobei M Datensätze Scheitelpunkte der ersten konvexen Hülle darstellen und einer ersten Ebene zugeordnet werden;
eine zweite konvexe Hülle aus den restlichen N minus M Datensätzen gebildet wird, wobei P Datensätze Scheitelpunkte der zweiten konvexen Hülle darstellen und einer zweiten Ebene zugeordnet werden, wobei sich mindestens ein Teil der zweiten Ebene geometrisch in der ersten Ebene befindet; - b) eine zweite untergeordnete, in Ebenen
gegliederte konvexe Hülle aufzubauen, indem:
eine erste konvexe Hülle aus Q Eingabedatensätzen gebildet wird, wobei R Datensätze Scheitelpunkte der ersten konvexen Hülle darstellen und einer ersten Ebene zugeordnet werden;
eine zweite konvexe Hülle aus den restlichen Q minus R Datensätzen gebildet wird, wobei S Datensätze Scheitelpunkte der zweiten konvexen Hülle darstellen und einer zweiten Ebene zugeordnet werden, wobei sich mindestens ein Teil der zweiten Ebene geometrisch in der ersten Ebene befindet; und - c) eine übergeordnete, in Ebenen gegliederte konvexe Hülle aufzubauen, indem Datensätze von der ersten Ebene der ersten untergeordneten, in Ebenen gegliederten konvexen Hülle und der ersten Ebene der zweiten untergeordneten, in Ebenen gegliederten konvexen Hülle verknüpft werden.
27. Vorrichtung zur Verarbeitung einer Anfrage, die
mindestens ein angegebenes Kriterium aufweist, das in
ein Datenbanksystem eingegeben wird, wobei die
Vorrichtung Folgendes umfasst:
mindestens einen Prozessor, der in der Lage ist, auf eine hierarchische Indexierungsstruktur für eine Vielzahl von Datensätzen zuzugreifen, die zu dem Datenbanksystem gehören, wobei die hierarchische Indexierungsstruktur die Form einer übergeordneten, in Ebenen gegliederten konvexen Hülle hat, welche eine äußerste Ebene hat, die eine Verknüpfung von mindestens zwei untergeordneten, in Ebenen gegliederten konvexen Hüllen ist, und die Anfrage zu verarbeiten, indem die äußerste Ebene der übergeordneten Hülle ausgewertet und dann nur die einwärts gerichteten Ebenen der untergeordneten Hüllen ausgewertet werden, die für die Anfrage relevant sind.
mindestens einen Prozessor, der in der Lage ist, auf eine hierarchische Indexierungsstruktur für eine Vielzahl von Datensätzen zuzugreifen, die zu dem Datenbanksystem gehören, wobei die hierarchische Indexierungsstruktur die Form einer übergeordneten, in Ebenen gegliederten konvexen Hülle hat, welche eine äußerste Ebene hat, die eine Verknüpfung von mindestens zwei untergeordneten, in Ebenen gegliederten konvexen Hüllen ist, und die Anfrage zu verarbeiten, indem die äußerste Ebene der übergeordneten Hülle ausgewertet und dann nur die einwärts gerichteten Ebenen der untergeordneten Hüllen ausgewertet werden, die für die Anfrage relevant sind.
28. Vorrichtung nach Anspruch 27, wobei die in Ebenen
gegliederten konvexen Hüllen in einer kugelförmigen
Shell-Darstellung angeordnet werden können.
29. Erzeugnis zur Verarbeitung einer Anfrage, die
mindestens ein angegebenes Kriterium aufweist, das in
ein Datenbanksystem eingegeben wird, welcher einen
maschinenlesbaren Datenträger umfasst, der ein oder
mehrere Programme enthält, die bei ihrer Ausführung die
folgenden Schritte durchführen:
Zugreifen auf eine Indexierungsstruktur für eine Vielzahl von Datensätzen, die zu dem Datenbanksystem gehören, wobei die Indexierungsstruktur die Form einer in Ebenen gegliederten konvexen Hülle hat, bei der die Vielzahl der Datensätze Ebenen der Indexierungsstruktur zugeordnet werden, wobei darüber hinaus mindestens ein Teil einer inneren Ebene der Struktur von einer vorhergehenden äußeren Ebene der Struktur geometrisch umschlossen wird; und
Verarbeiten der Anfrage, indem Ebenen der Indexierungsstruktur ausgewertet werden, wobei man bei der äußersten Ebene beginnt und sich nach innen bewegt, bis die Anfrage beantwortet ist.
Zugreifen auf eine Indexierungsstruktur für eine Vielzahl von Datensätzen, die zu dem Datenbanksystem gehören, wobei die Indexierungsstruktur die Form einer in Ebenen gegliederten konvexen Hülle hat, bei der die Vielzahl der Datensätze Ebenen der Indexierungsstruktur zugeordnet werden, wobei darüber hinaus mindestens ein Teil einer inneren Ebene der Struktur von einer vorhergehenden äußeren Ebene der Struktur geometrisch umschlossen wird; und
Verarbeiten der Anfrage, indem Ebenen der Indexierungsstruktur ausgewertet werden, wobei man bei der äußersten Ebene beginnt und sich nach innen bewegt, bis die Anfrage beantwortet ist.
30. Erzeugnis zur Verarbeitung einer Anfrage, die
mindestens ein angegebenes Kriterium aufweist, das in
ein Datenbanksystem eingegeben wird, welcher einen
maschinenlesbaren Datenträger umfasst, der ein oder
mehrere Programme enthält, die bei ihrer Ausführung die
folgenden Schritte durchführen:
Zugreifen auf eine hierarchische Indexierungsstruktur für eine Vielzahl von Datensätzen, die zu dem Datenbanksystem gehören, wobei die hierarchische Indexierungsstruktur die Form einer übergeordneten, in Ebenen gegliederten konvexen Hülle hat, welche eine äußerste Ebene hat, die eine Verknüpfung von mindestens zwei untergeordneten, in Ebenen gegliederten konvexen Hüllen ist; und
Verarbeiten der Anfrage, indem die äußerste Ebene der übergeordneten Hülle ausgewertet wird und indem dann nur die einwärts gerichteten Ebenen der untergeordneten Hüllen ausgewertet werden, die für die Anfrage relevant sind.
Zugreifen auf eine hierarchische Indexierungsstruktur für eine Vielzahl von Datensätzen, die zu dem Datenbanksystem gehören, wobei die hierarchische Indexierungsstruktur die Form einer übergeordneten, in Ebenen gegliederten konvexen Hülle hat, welche eine äußerste Ebene hat, die eine Verknüpfung von mindestens zwei untergeordneten, in Ebenen gegliederten konvexen Hüllen ist; und
Verarbeiten der Anfrage, indem die äußerste Ebene der übergeordneten Hülle ausgewertet wird und indem dann nur die einwärts gerichteten Ebenen der untergeordneten Hüllen ausgewertet werden, die für die Anfrage relevant sind.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/360,366 US6408300B1 (en) | 1999-07-23 | 1999-07-23 | Multidimensional indexing structure for use with linear optimization queries |
Publications (1)
Publication Number | Publication Date |
---|---|
DE10035043A1 true DE10035043A1 (de) | 2001-03-01 |
Family
ID=23417684
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE10035043A Ceased DE10035043A1 (de) | 1999-07-23 | 2000-07-19 | Mehrdimensionale Indexierungsstruktur zur Verwendung mit linearen Optimierungsanfragen |
Country Status (2)
Country | Link |
---|---|
US (2) | US6408300B1 (de) |
DE (1) | DE10035043A1 (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104424231A (zh) * | 2013-08-26 | 2015-03-18 | 腾讯科技(深圳)有限公司 | 多维数据的处理方法及装置 |
Families Citing this family (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2782183B1 (fr) * | 1998-08-05 | 2000-10-13 | Geofermat Sarl | Procede et systeme de traitement d'informations a reference spatiale, notamment d'informations cartographiques, applications et appareils implementant ce procede |
US8452776B2 (en) * | 1999-12-22 | 2013-05-28 | Celeritasworks, Llc | Spatial data portal |
US7447509B2 (en) * | 1999-12-22 | 2008-11-04 | Celeritasworks, Llc | Geographic management system |
US6915289B1 (en) | 2000-05-04 | 2005-07-05 | International Business Machines Corporation | Using an index to access a subject multi-dimensional database |
US7269786B1 (en) | 2000-05-04 | 2007-09-11 | International Business Machines Corporation | Navigating an index to access a subject multi-dimensional database |
JP4483034B2 (ja) * | 2000-06-06 | 2010-06-16 | 株式会社日立製作所 | 異種データソース統合アクセス方法 |
CA2313803A1 (en) * | 2000-07-11 | 2002-01-11 | Dong-Chan He | Automatic extraction of linear features from digital imagery |
KR100419575B1 (ko) * | 2000-12-05 | 2004-02-19 | 한국전자통신연구원 | 고차원 색인구조를 위한 벌크 로딩방법 |
JP3357665B2 (ja) * | 2001-03-07 | 2002-12-16 | 株式会社ビーコンインフォメーションテクノロジー | データ検索システム、データ検索結果の表示方法、コンピュータプログラム及び記録媒体 |
US6952700B2 (en) * | 2001-03-22 | 2005-10-04 | International Business Machines Corporation | Feature weighting in κ-means clustering |
US6721737B2 (en) * | 2001-04-04 | 2004-04-13 | International Business Machines Corporation | Method of ranking items using efficient queries |
US6892204B2 (en) * | 2001-04-16 | 2005-05-10 | Science Applications International Corporation | Spatially integrated relational database model with dynamic segmentation (SIR-DBMS) |
JP4152611B2 (ja) * | 2001-09-13 | 2008-09-17 | 株式会社日立製作所 | 経営改革のための対策案立案支援方法およびそのためのシステム |
US7266484B2 (en) * | 2001-12-04 | 2007-09-04 | The Johns Hopkins University | Techniques for early detection of localized exposure to an agent active on a biological population |
US20030144933A1 (en) * | 2001-12-31 | 2003-07-31 | Xiao-Ming Huang | Method and apparatus for determining a customer's likelihood of reusing a financial account |
US7472127B2 (en) | 2002-12-18 | 2008-12-30 | International Business Machines Corporation | Methods to identify related data in a multidimensional database |
US7313563B2 (en) * | 2003-07-30 | 2007-12-25 | International Business Machines Corporation | Method, system and recording medium for maintaining the order of nodes in a heirarchical document |
US7529814B2 (en) * | 2003-10-15 | 2009-05-05 | International Business Machines Corporation | Autonomic computing algorithm for identification of an optimum configuration for a web infrastructure |
US20070011121A1 (en) * | 2005-06-03 | 2007-01-11 | Jinbo Bi | System and method for learning rankings via convex hull separation |
US20070271250A1 (en) * | 2005-10-19 | 2007-11-22 | Monro Donald M | Basis selection for coding and decoding of data |
US8674855B2 (en) * | 2006-01-13 | 2014-03-18 | Essex Pa, L.L.C. | Identification of text |
US7986827B2 (en) * | 2006-02-07 | 2011-07-26 | Siemens Medical Solutions Usa, Inc. | System and method for multiple instance learning for computer aided detection |
US7783079B2 (en) * | 2006-04-07 | 2010-08-24 | Monro Donald M | Motion assisted data enhancement |
US7756973B2 (en) * | 2006-04-27 | 2010-07-13 | International Business Machines Corporation | Identifying a configuration for an application in a production environment |
US7586424B2 (en) * | 2006-06-05 | 2009-09-08 | Donald Martin Monro | Data coding using an exponent and a residual |
US7770091B2 (en) * | 2006-06-19 | 2010-08-03 | Monro Donald M | Data compression for use in communication systems |
US7845571B2 (en) * | 2006-06-19 | 2010-12-07 | Monro Donald M | Data compression |
US7689049B2 (en) * | 2006-08-31 | 2010-03-30 | Donald Martin Monro | Matching pursuits coding of data |
US20080084924A1 (en) * | 2006-10-05 | 2008-04-10 | Donald Martin Monro | Matching pursuits basis selection design |
US7974488B2 (en) * | 2006-10-05 | 2011-07-05 | Intellectual Ventures Holding 35 Llc | Matching pursuits basis selection |
US7707214B2 (en) * | 2007-02-21 | 2010-04-27 | Donald Martin Monro | Hierarchical update scheme for extremum location with indirect addressing |
US7707213B2 (en) * | 2007-02-21 | 2010-04-27 | Donald Martin Monro | Hierarchical update scheme for extremum location |
US20080205505A1 (en) * | 2007-02-22 | 2008-08-28 | Donald Martin Monro | Video coding with motion vectors determined by decoder |
US10194175B2 (en) | 2007-02-23 | 2019-01-29 | Xylon Llc | Video coding with embedded motion |
US20090063328A1 (en) * | 2007-09-03 | 2009-03-05 | Cuscovitch Samuel T | Systems and Methods for Consumer Mortgage Debt Decision Support |
US8332411B2 (en) * | 2007-10-19 | 2012-12-11 | Microsoft Corporation | Boosting a ranker for improved ranking accuracy |
US7779019B2 (en) * | 2007-10-19 | 2010-08-17 | Microsoft Corporation | Linear combination of rankers |
US8161036B2 (en) * | 2008-06-27 | 2012-04-17 | Microsoft Corporation | Index optimization for ranking using a linear model |
US8171031B2 (en) * | 2008-06-27 | 2012-05-01 | Microsoft Corporation | Index optimization for ranking using a linear model |
US7864086B2 (en) * | 2008-10-06 | 2011-01-04 | Donald Martin Monro | Mode switched adaptive combinatorial coding/decoding for electrical computers and digital data processing systems |
US7786907B2 (en) * | 2008-10-06 | 2010-08-31 | Donald Martin Monro | Combinatorial coding/decoding with specified occurrences for electrical computers and digital data processing systems |
US7786903B2 (en) * | 2008-10-06 | 2010-08-31 | Donald Martin Monro | Combinatorial coding/decoding with specified occurrences for electrical computers and digital data processing systems |
US7791513B2 (en) * | 2008-10-06 | 2010-09-07 | Donald Martin Monro | Adaptive combinatorial coding/decoding with specified occurrences for electrical computers and digital data processing systems |
US8254697B2 (en) | 2009-02-02 | 2012-08-28 | Microsoft Corporation | Scalable near duplicate image search with geometric constraints |
US8543574B2 (en) * | 2009-06-05 | 2013-09-24 | Microsoft Corporation | Partial-matching for web searches |
US8140537B2 (en) * | 2009-07-21 | 2012-03-20 | International Business Machines Corporation | Block level tagging with file level information |
WO2013058608A2 (ko) * | 2011-10-20 | 2013-04-25 | 아주대학교산학협력단 | 트리맵 가시화 시스템 및 방법 |
US9183407B2 (en) * | 2011-10-28 | 2015-11-10 | Microsoft Technology Licensing Llc | Permission based query processing |
US20170199845A1 (en) * | 2016-01-08 | 2017-07-13 | Rehabilitation Institute Of Chicago | Convex Relaxation Regression Systems and Related Methods |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6134541A (en) * | 1997-10-31 | 2000-10-17 | International Business Machines Corporation | Searching multidimensional indexes using associated clustering and dimension reduction information |
US6154746A (en) * | 1998-04-22 | 2000-11-28 | At&T Corp. | High-dimensional index structure |
-
1999
- 1999-07-23 US US09/360,366 patent/US6408300B1/en not_active Expired - Fee Related
-
2000
- 2000-07-19 DE DE10035043A patent/DE10035043A1/de not_active Ceased
-
2002
- 2002-01-15 US US10/047,129 patent/US6529916B2/en not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104424231A (zh) * | 2013-08-26 | 2015-03-18 | 腾讯科技(深圳)有限公司 | 多维数据的处理方法及装置 |
CN104424231B (zh) * | 2013-08-26 | 2019-07-16 | 腾讯科技(深圳)有限公司 | 多维数据的处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
US20020069206A1 (en) | 2002-06-06 |
US6529916B2 (en) | 2003-03-04 |
US6408300B1 (en) | 2002-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE10035043A1 (de) | Mehrdimensionale Indexierungsstruktur zur Verwendung mit linearen Optimierungsanfragen | |
DE69938339T2 (de) | Ein skalierbares system zum gruppieren von grossen datenbänken | |
DE60130475T2 (de) | Durchführung von kalkulationen eines tabellenkalkulationstyps in einem datenbanksystem | |
DE10195968B4 (de) | System und Verfahren zur Bereitstellung einer Kreuzdimensionalen Berechnung und eines Kreuzdimensionalen Datenzugriffs in einer Online-Analytischen Verarbeitungs-Umgebung (ON-LINE ANALYTICAL PROCESSING = OLAP) | |
DE602004003361T2 (de) | System und verfahren zur erzeugung von verfeinerungskategorien für eine gruppe von suchergebnissen | |
DE102008034519B4 (de) | Aufgeteilte Datenstruktur, und Verfahren zum Laden einer Partikel-basierten Simulation unter Verwendung der aufgeteilten Datenstruktur in GPU, usw. | |
DE112016001796T5 (de) | Feinkörnige bildklassifizierung durch erforschen von etiketten von einem bipartiten graphen | |
DE112018006189T5 (de) | Robuste gradienten-gewichtskomprimierungsschemata für deep-learning-anwendungen | |
DE112021004197T5 (de) | Semantisches Lernen in einem System für ein föderiertes Lernen | |
DE60030735T2 (de) | Voraussage der realisierbarkeit eines verbindungsweges | |
DE112017006106T5 (de) | Erzeugen von, Zugreifen auf und Anzeigen von Abstammungsmetadaten | |
DE10251440A1 (de) | Reproduzierbare Auswahl von Elementen in einer Hierarchie | |
DE10239292A1 (de) | Konflikterfassung und -lösung in Zusammenhang mit einer Datenzuweisung | |
DE112020001774T5 (de) | Datensatzabhängiges niedrigrang-zerlegen von neuronalen netzwerken | |
DE102021109468A1 (de) | Hardware beschleuniger mit analog-inhaltlichem adressierbarem speicher (a-cam) für entscheidungsbaumrechnung | |
DE19914326A1 (de) | Verfahren zur Nutzung von fraktalen semantischen Netzen für alle Arten von Datenbank-Anwendungen | |
EP1154369A2 (de) | Verfahren zur zyklischen, interaktiven Bildanalyse sowie Computersystem und Computerprogramm zur Ausführung des Verfahrens | |
DE112021001743T5 (de) | Vektoreinbettungsmodelle für relationale tabellen mit null- oder äquivalenten werten | |
DE19817583B4 (de) | Verfahren und System zur Datenverarbeitung für dreidimensionale Objekte | |
DE102012025349A1 (de) | Bestimmung eines Ähnlichkeitsmaßes und Verarbeitung von Dokumenten | |
EP0912952B1 (de) | Datenbanksystem und verfahren zum verwalten eines n-dimensionalen datenbestands | |
DE102021127398A1 (de) | Beziehungserkennung und -quantifizierung | |
EP1324218A1 (de) | Kategorisierungsystem für Datenobjekte und Verfahren zum Prüfen der Konsistenz von Zuordnungen von Datenobjekten zu Kategorien | |
DE112021003003T5 (de) | Kontinuierliches lernen mit querverbindungen | |
DE69913182T2 (de) | Transaktions-rechnersystem |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8131 | Rejection |