DE10035043A1 - Mehrdimensionale Indexierungsstruktur zur Verwendung mit linearen Optimierungsanfragen - Google Patents

Mehrdimensionale Indexierungsstruktur zur Verwendung mit linearen Optimierungsanfragen

Info

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
Application number
DE10035043A
Other languages
English (en)
Inventor
Lawrence David Bergman
Vittorio Castelli
Yuan-Chi Chang
Chung-Shen Li
John Richard Smith
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE10035043A1 publication Critical patent/DE10035043A1/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2264Multidimensional index structures
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99948Application 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

Bereich der Erfindung
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.
Der Erfindung zugrunde liegender, allgemeiner Stand der Technik
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.
Zusammenfassung der Erfindung
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.
Kurze Beschreibung der Zeichnungen
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.
Ausführliche Beschreibung von bevorzugten Ausführungsformen
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
DE10035043A 1999-07-23 2000-07-19 Mehrdimensionale Indexierungsstruktur zur Verwendung mit linearen Optimierungsanfragen Ceased DE10035043A1 (de)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104424231A (zh) * 2013-08-26 2015-03-18 腾讯科技(深圳)有限公司 多维数据的处理方法及装置

Families Citing this family (49)

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

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

Cited By (2)

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