• Keine Ergebnisse gefunden

Einführung

Im Dokument Indexstrukturen in XML (Seite 4-8)

1.1 Indexstrukturen

Was ist ein Index?

Ein Index ist eine Datenstruktur, welche die Stelle, an der der indexierte Wert auftritt, identi-fiziert. Für Datenbanken bedeutet das, welcher Eintrag welchen Wert enthält. Zu jedem Index gehört ein Auswertungsalgorithmus, der diese Information verwendet, und Update-Algorithmen, die den Index warten. Zweck von Indexstrukturen ist die Beschleunigung der Auswertung von Anfragen, die an das Datenbanksystem gestellt werden. Sie ermöglichen direkten Zugriff auf Daten, ohne sequentiellen Zugriff auf die Datenbank. Allerdings können Indizes einen sehr großen Platzbedarf haben, es ist daher ein Kompromiss zwischen Speichbedarf und Zeitersparnis zu treffen. Da beim Benutzen des Index kein Datenbank-zugriff er-folgt, muss bei dynamischen Datenbanken die Konsistenz zwischen Daten und Index erhalten bleiben. Daher sind regelmäßige Updates erforderlich, die im Idealfall nur die geänderten Daten betreffen, bei manchen Indizes allerdings eine Neuerstellung des Index erfordern.

Wo wird der Index eingesetzt?

Abbildung 1.1: Architektur eines Retrieval Systems

Ein Retrieval System besteht aus zwei Typen von Komponenten: Eine Query-Engine und eine Menge von Index-Engines. Die Query-Engine bearbeitet die vom Benutzer gestellten Queries und erstellt Query-Plans, durch die die Index-Lookups ausgelöst werden. Jede Index-Engine bietet ein Interface an, in dem festgelegt ist, welche Typen von Lookups sie verarbeiten kann.

Lookup-Patterns beschreiben das Interface bezüglich Input und Output. In der Query-Engine werden anhand dieser Lookup-Patterns eine oder mehrere Lookup-Queries erstellt, die von der Index-Engine ausgeführt werden. Abbildung 1.1 zeigt ein Beispiel für einen strukturba-sierten (Kapitel 2.3) und einen inhaltsbastrukturba-sierten Index (Kapitel 2.2). Die Anfrage „Suche alle Titel, die „XML“ enthalten“, wird von der Query-Engine in zwei Lookup-Queries transfor-miert. Der strukturbasierte Index beantwortet die Query „Suche alle Titel“, der inhaltsbasierte die Query „Suche alle Einträge, die „XML“ enthalten“. Die Query-Engine führt die Ergebnis-se beider Lookup-Queries zusammen und liefert „&1“ als Ergebnis zurück.

Exakte vs. Unexakte Indizes

Indizes lassen sich in exakte und unexakte Indizes unterteilen. Intuitiv ist ein Index exakt, wenn er genau die relevanten Daten für eine gegebene Query ausgibt und keine anderen.

Genauer lässt sich dies mit Hilfe von Precision und Recall beschreiben: Ein exakter Index hat optimale Precision und Recall. Sei D = Menge der Dokumente, O = Teilmenge der Dokumen-te, die zur Query passen und R = Menge der Treffer, die vom System zurückgeliefert werden.

D, O und R dienen zur Definition von Precision und Recall und werden in Abbildung 1.2 schematisch dargestellt.

Abbildung 1.2: Precision und Recall

Definition Precision: Verhältnis von relevanten Suchergebnissen zu allen Suchergebnissen

|

Definition Recall: Verhältnis von relevanten Suchergebnissen zu allen Dokumenten, die zu der Query passen

Wichtig sind für die meisten Applikationen Indizes mit optimalem Recall, aber dafür eventu-ell nicht optimaler Precision (konservative Indizes). Progressive Indizes (volle Precision, da-für partieller Recall) werden bei gewichtetem Retrieval verwendet, um niedrig bewertete Er-gebnisse auszuschließen. ErEr-gebnisse unexakter Indizes müssen von der Query-Engine verifi-ziert werden.

1.2 Indexstrukturen und XML

XML-Daten gehören zu den teilweise strukturierten Daten (semistructured data), d. h., sie enthalten nicht nur eine Sequenz von Worten wie im klassischen Information Retrieval, son-dern besitzen auch eine Struktur. Diese folgt aber nicht wie im Objekt-orientiertem Ansatz einem festen Schema. Abbildung 1.3 zeigt einen Ausschnitt aus einer XML- Datei, dargestellt als OEM-Graph. OEM (Object Exchange Model) dient speziell zur Darstellung teilweise strukturierter Daten als endlicher, beschrifteter und gerichteter Graph. Es wird Unvollständig-keit sowie Heterogenität in Typ und Struktur unterstützt.

Abbildung 1.3: Ausschnitt einer OEM-Datenbank

Die Abbildung 1.3 zeigt einen Ausschnitt einer Video-Datenbank.

Vor allem die Heterogenität stellt ein Problem bei der Indexierung dar. So liefert zum Beispiel die Anfrage: „Suche alle Preise“

a) Einen Real: 19.95 b) Einen String: “25”

c) Und ein komplexes Objekt.

Indexstrukturen müssen also nicht nur mit Struktur ohne festem Schema umgehen können, sondern sollten auch Typumwandlung beherrschen.

1.3 Kriterien für Auswahl und Vergleich von Index-strukturen

In [ZMR96] werden Richtlinien für die Präsentation und den Vergleich von Indexing-Techniken spezifiziert. Es folgt eine Zusammenfassung der wichtigsten Kriterien.

Das wichtigste Kriterium für Indizes ist wohl die Anwendbarkeit: Welche Typen von Anfra-gen werden von dem Index unterstützt? Jedes Index-Schema unterstützt nur eine Teilmenge aller möglichen Anfragen. Es gibt auch Klassen von Anfragen, die nur durch Scan der Daten-bank beantwortet werden können.

Bei der Bewertung ist auch die Erweiterbarkeit von Interesse. Ein Index-Schema, das auf an-dere Typen erweitert werden kann, ist wertvoller als ein Schema, das in anan-deren Aspekten vielleicht sogar besser ist. Jeder zusätzliche Index, der in einem Datenbank-System zum Ein-satz kommt, bedeutet zusätzlichen Platz- und Zeitbedarf.

Aufgrund stark anwachsender Speicherkapazitäten und Zunahme der zu speichernden Da-tenmengen ist auch die Skalierbarkeit von Interesse. Kann die Indexstruktur auch mit 100-facher Datenmenge effizient umgehen, oder ist dann eine andere Indexstruktur notwendig?

Auch die Auswertungszeit der Anfragen ist ein wichtiger Aspekt. Diese ist jedoch schwierig zu bewerten, da sie u. a. von CPU-Geschwindigkeit, Geschwindigkeit des Sekundärspeichers, Speichergröße und Systemauslastung abhängig ist.

Wichtig für dynamische Datenbanken ist das Verhalten bei Updates. Manche Indizes unter-stützen inkrementelle Updates und erneuern die von der Änderung betroffenen Ausschnitte, andere bauen jedoch unter bestimmten Umständen den Index komplett neu auf.

Weitere Aspekte:

- Wie viel Speicherplatz benötigt der Index?

- Wie lange dauert die Konstruktion des Indizes und wie viel Platz benötigt er während-dessen ?

- Wie lange dauert ein Update?

- Welche Datenstruktur wird verwendet, um den Index zu speichern?

Messzahlen für die Bewertung von Indizes:

Retrieval Latency: Zeitbedarf für die Bearbeitung einer Anfrage Storage Overhead: Verhältnis von Index-Größe zu Datenbankgröße

size database

size index

=

Throughput: Anzahl der Datenbankobjekte, die in einer bestimmten Zeit indexiert werden können

Im Dokument Indexstrukturen in XML (Seite 4-8)