Projektarbeit
M-Tree - Eine Indexstruktur
Inhalt
"Indizierung des metrischen Raumes" heißt effizientes Antwortverhalten auf Ähnlichkeitsanfragen
zur Verfügung zu stellen. Der Zweck dieser Anfragen ist es, DB-Objekte zu erhalten, die ähnlich
zu einem gegebenen Anfrageobjekt sind. Dabei wird die (Un)Ähnlichkeit mit einer spez. metrischen
Distanzfunktion gemessen. Diese Funktion erfüllt die Eigenschaften der Metrik, nämlich:
PositivheitSymetrieDreiecksungleichheit
M-Tree ist dabei eine Indexstruktur, die einen metrischen Raum nach oben genannten Vorgaben indiziert.
Aufgabenstellung
Implememtierung der Indexstruktur M-Tree mit den Operationen insert und split für
den Baumaufbau und pointQuery, rangeQuery und knn-Query für die
Ähnlichkeitsanfragen.
Tools
Java
Personen
Arbeitsplan
| Arbeitsabschnitt |
Zeitbedarf |
| Einarbeitung in die Thematik |
5 Tage |
| Implementierung des Strukturgerüsts |
14 Tage |
| Implementierung der Methoden |
14 Tage |
| Evaluierung und Dokumentation |
7 Tage |
Ergebnis
Die Implementierung der Indexstruktur M-Tree funktioniert einwandfrei bzgl. der Baumlogik beim
Einfügen und Splitten und bzgl. der Ähnlichkeitsanfragen.
Das Wie des Splittens wird beim M-Tree durch die split-policy gegeben.
Diese bestimmt einerseits, welche zwei Objekte des zu splittenden Knotens in den Vaterknoten wandern
(promote genannt), und andererseits, welche Objekte in den neu allokierten Knoten eingefügt werden, bzw.
im zu splittenden Knoten verbleiben (partition genannt).
Da es dafür viele, verschiedene Strategien gibt, soll an dieser Stelle angemerkt werden, daß
in dieser Implementierung für das Promoten die sogenannte mM_Rad-Strategie (bestimme aus dem zu
splittenden Knoten das Pärchen deren maximaler Radius im Vergleich zum maximalen Radius eines
anderen Pärchens minimal ist) angewendet wurde. Diese ist beim Baumaufbau vergleichsweise
teuer, was sich aber bei den Anfragen durch besseres Antwortverhalten mehr als relativiert. Für
das Partition wurde Generalized Hyperplane verwendet, d.h. für alle Objekte Oj
des zu splittenden Knotens ist zu prüfen:
wenn d(Oj,Op1) ≤ d(Oj,Op2) dann
verbleibt Oj im zu splittenden Knoten, ansonsten ordne Oj dem neuen
Knoten zu, wobei Op1 und Op2 die Väter sind.
Homepages:
DBS
Institut
LMU
12.2.2003 Stefan Schönauer