Physische XML-Speicherstrukturen und Indizes Holger Meyer Database Research Group University of Rostock E-Mail: hm@guug.de Physische XML-Speicherstrukturen und Indizes p. 1
Inhalt 1. Überblick XML-Dateiorganisation und Zugriffpfade 2. Werteindizes 3. Volltextindizes 4. XML-Dateiorganisation 5. Struktur- und Pfadindizes 6. Zusammenfassung Physische XML-Speicherstrukturen und Indizes p. 2
Zugriffspfade Werteindex, atomar Elementinhalte, Attributwerte, strukturierte Anteile eins XML-Dokumentes Volltextindex einzelnen Worte des Volltextes, ganzen Sätzen oder Phrasen einer natürlichen Sprache, Zugriff mit Information Retrieval-Techniken. Struktur- und Pfadindex effiziente Auswertung von Anfragen unter Einbeziehung der Dokumentstruktur. physische Speicherstrukturen zur Ablage von XML- Fragmenten Physische XML-Speicherstrukturen und Indizes p. 3
1.1 Kriterien Dateiorganisationsform oder Zugriffspfad Primärindex oder Sekundärindizes Statische oder dynamische Strukturen Ein- oder Mehrattributindex, ein- oder mehrdimensionaler Index Erhaltung einer Ordnung Form der unterstützen Anfragen: Punktanfragen, Bereichsanfragen, partielle Anfragen, vage Anfragen Pfadindex: Schemainformation vorhanden oder nicht Pfadindex: akkurat, eindeutig, vollständig Physische XML-Speicherstrukturen und Indizes p. 4
2 Werteindex Hash-Strukturen am Beispiel Erweiterbares Hashing Punktanfragen, O(c) dynamische Index-Bäume am Beispiel B + -Baum Bereichsanfragen, Präfixsuche Signatur-Bäume n-dimensionaler Zugriff, Ähnlichkeitssuche Physische XML-Speicherstrukturen und Indizes p. 5
2.1 Erweiterbares Hashing d = 3 d = 3 A I N d = 2 00 01 10 11 d = 2 A I M N d = 2 B d = 2 C d = 2 D O T H S Q 000 001 010 011 100 101 110 111 d = 2 B d = 2 C d = 2 D O T H d = 3 M R S Q (a) vor (b) nach dem Einfügen von R Physische XML-Speicherstrukturen und Indizes p. 6
2.2 B + -Baum B H P A B D E F H J K M P R S T U Abbildung 2: B + -Baum, Ordnung M = 4 Physische XML-Speicherstrukturen und Indizes p. 7
B + -Baum (cont d) L B H P A B D E F H R S T U J K L M P Abbildung 3: nach dem Einfügen von L Physische XML-Speicherstrukturen und Indizes p. 8
2.3 Signaturbaum 1100 1100 1100 1000 1000 1100 1100 1110 1100 1110 0100 1100 0100 1000 1000 0110 0100 1100 1100 1110 0111 0011 1000 1000 1000 0010 0110 0100 0001 0010 0000 0001 0010 0001 0011 0001 0111 0011 0111 0001 0111 0001 0111 0010 0111 0011 Abbildung 4: Baum, Ordnung M = 4 und m = 2 Physische XML-Speicherstrukturen und Indizes p. 9
Signaturbaum (cont d) 1100 1110 0111 0011 0001 0000 0010 0001 0011 0001 0010 0001 0111 0011 0111 0001 0111 0001 0111 0010 0111 0011 Abbildung 5: Suche nach der Signatur 00100001 Physische XML-Speicherstrukturen und Indizes p. 10
3 Volltextindex Anfragen an Volltext kann man grob in drei Formen unterteilen: Stichwortbasierte Suche, Mustersuche und Strukturierte Anfragen. Physische XML-Speicherstrukturen und Indizes p. 11
3.1 Invertierte Datei <hotel 1 > <name 2 >Am 3 Leuchtturm 4 </name 5 > <beschreibung 6 > Das 7 Hotel 8 befindet 9 sich 10 gegenüber 11 dem 12 Hotel 13 <hotel 14 ><name 15 >Neptun 16 </name 17 ></hotel 18 >. 19 </beschreibung 20 > </hotel 21 > Physische XML-Speicherstrukturen und Indizes p. 12
Invertierte Listen Beispiel Word Vorkommen. { 19 } am { 3 } befindet { 9 } beschreibung { 6, 20 } das { 7 } dem { 12 } gegenber { 11 } hotel { 1, 8, 13, 14, 18, 21 } leuchtturm { 4 } name { 2, 5, 15, 17 } neptun { 16 } Physische XML-Speicherstrukturen und Indizes p. 13
B + -Baum, Ordnung M = 4 doc1 19. am befindet beschreibung doc1 3 doc1 9 doc1 6 20 das das dem doc1 doc1 7 12 leuchtturm gegenüber hotel doc1 11 doc1 1 8 13 14 18 21 leuchtturm name doc1 4 neptun doc1 2 5 15 17 doc1 16 Physische XML-Speicherstrukturen und Indizes p. 14
3.2 Tries H Hotel L e i u Leitung e c h t t Leuchten Leuchtturm Physische XML-Speicherstrukturen und Indizes p. 15
3.3 Patricia-Baum H Hotel 0 i Leitung L 2 u 5 e Leuchten t Leuchtturm Physische XML-Speicherstrukturen und Indizes p. 16
3.4 Suffixbaum leuchtturm euchtturm u chtturm htturm t rm m chtturm rm turm urm Physische XML-Speicherstrukturen und Indizes p. 17
3.5 Suffix Arrays l e u c h t t u r m 4 2 5 1 10 9 6 7 3 8 Physische XML-Speicherstrukturen und Indizes p. 18
Vergleich Volltextindizes Kriterium Invert. Suffix Signatur- Datei Array baum exakte Suche Bereichsanfragen Präfixsuche Teilzeichenketten partielle Anfragen Physische XML-Speicherstrukturen und Indizes p. 19
4 Dokumentspeicherung komplette physische Speicherung von XML- Dokumenten Speicherung der (DOM-)Knoten, Clustering Indizierung der Baum- oder Graphenstruktur eines XML-Dokumentes Pfadindizes, XPath sind nicht General Path Expression (GPE) Physische XML-Speicherstrukturen und Indizes p. 20
4.1 Persistentes DOM in Infonyte-DB persistente Speicherung der durch DOM implizierten Struktur pro XML-Dokument eine Datei seitenorganisiert: Knotenseite aus 128 DOM-Knoten Knotenindex (Node page index, NPI), Elementindex (Dictionary, DICT) Strukturindex auf Basis Knotensignatur Volltextindex auf Basis invertierter Dateien Xpath, XSLT, XQL, XQuery Physische XML-Speicherstrukturen und Indizes p. 21
Aufbau einer PDOM-Datei DICT NPI DICT NPI (a) vor DICT NPI (b) nach Reorganisation Physische XML-Speicherstrukturen und Indizes p. 22
4.2 Hybride Speicherung in Natix Knotenstruktur analog DOM, seitenbasierte Speicherung, Clustering: Teilbäume, Proxy-Knoten, B-Baum-ähnliche Struktur, Splitting, Merging Physische XML-Speicherstrukturen und Indizes p. 23
Dokument und Clustering in Natix Proxy Knoten Physische XML-Speicherstrukturen und Indizes p. 24
5 Struktur-/Pfadindizes allgemeine Pfadausdrücke (GPE) mit oder ohne Schema (DTD, XML Schema) eindeutig, jeder Pfad genau einmal akkurat, alle Pfade exakt abgebildet vollständig, ganze Pfade, nicht nur Teilpfade Physische XML-Speicherstrukturen und Indizes p. 25
6 Pfadauswertung einfache Pfade: /a/b, a/b/c Achsennavigation: Vorgänger, Nachfolger, Geschwister,... einfache Muster: a//b, a/*/b komplizierter: // und * in Kombination allgemein: Pattern matching in Bäumen, reguläre Ausdrücke, NFA (O(nm)) Physische XML-Speicherstrukturen und Indizes p. 26
6.1 XML-sensitiver Volltextindex <hotel 1 > <name 2 >Am 3 Leuchtturm 4 </name 5 > <beschreibung 6 > Das 7 Hotel 8 befindet 9 sich 10 gegenüber 11 dem 12 Hotel 13 <hotel 14 ><name 15 >Neptun 16 </name 17 ></hotel 18 >. 19 </beschreibung 20 > </hotel 21 > / hotel name beschreibung hotel name text() text() text() text() "Am Leuchtturm" "Neptun" "." "Das Hotel befindet sich gegenüber dem Hotel" Physische XML-Speicherstrukturen und Indizes p. 27
Numerierungsschemata Kodierung der Knotenabfolge Achsenavigation, Volltextoperationen Dietz (pre-, post-order), Element-Subelement, Vorgänger/Nachfolger, Phrasen, Position-Size, Updates, Bitvektor, Element-Subelement, Vorgänger/Nachfolger, Subskript, Hierarchie Grundlagen: Bereichsalgebren, Suche in metrischen Räumen Physische XML-Speicherstrukturen und Indizes p. 28
Numerierungsschemata (cont d) <1, 21> (1, 100) 1 <2, 5> <6, 20> (10, 30) (45, 40) 1.1 1.2 <3, 4> <7, 13> <14, 18> <19, 19> (15, 5) (50, 10) (65,14) (80, 2) 1.1.1 1.2.1 1.2.2 1.2.3 <15, 17> (70, 7) 1.2.2.1 <16, 16> (72, 3) 1.2.2.1.1 (c) Dietz (d) Size (e) Bitvektor Physische XML-Speicherstrukturen und Indizes p. 29
Numerierungsschemata (cont d) y (post) descendant(13,19) 20 15 10 ancestor(11,11) 5 0 0 5 10 15 20 x (pre) Physische XML-Speicherstrukturen und Indizes p. 30
Elementindizierung Wortposition (Start-Tag, Ende-Tag) CONTAINS-Anfragen, SQL/MM Fulltext einfache Pfadanfragen, Element-Subelement Aufbau analog Volltextindex mit Wortpositionen Element Vorkommen beschreibung {(6, 20)} hotel {(1, 21), (14, 18)} name {(2, 5), (15, 17)} Physische XML-Speicherstrukturen und Indizes p. 31
Anfragen Anfragetyp: elem//subelem select sub.* from element e, element sub where e.begin < sub.begin and sub.end < e.end and e.name = elem and sub.name = subelem Physische XML-Speicherstrukturen und Indizes p. 32
6.2 XASR Pfadindizierung, Pre-Post-Order, Vaterknoten, Element-Subelement-Anfragen Verbundfolgen docid position dparent element dmin dmax 4711 1 21 0 hotel 4711 2 5 1 name 4711 6 20 1 beschreibung 4711 14 18 6 hotel 4711 17 17 14 name Physische XML-Speicherstrukturen und Indizes p. 33
Anfragen Anfragetyp: elem/subelem select sub.* from element e, element sub where e.dmin = sub.dparent and e.name = elem and sub.name = subelem Physische XML-Speicherstrukturen und Indizes p. 34
6.3 Index Fabric Vollständige Pfade, ausgewählte Teilpfade für häufige Anfragen akkurat, eindeutig kein Schema Mehr-Ebenen-Patricia-Baum spezielle Elementkodierung Elementnamen als Zeichen eines erweiterten Alphabets Präfixnotation Beispiel Hotelnamen: hotel H, name N H N Am Leuchtturm H N Neptun Physische XML-Speicherstrukturen und Indizes p. 35
Mehr-Ebenen-Patricia-Baum Layer 1 Layer 0 "" 0 H "" 0 L L "Le" 2 u i 2 u "Leucht" 5 e t Hotel Leitung Leuchten Leuchtturm Physische XML-Speicherstrukturen und Indizes p. 36
6.4 Pfad-Indizierung in SphinX Schema notwendig Schemagraph und B + -Baum akkurat, eindeutige Pfadindizierung GPE Physische XML-Speicherstrukturen und Indizes p. 37
SphinX Index-Struktur name Dokument Graph hotel beschreibung Schema Graph hotel hotel name beschreibung Am Leuchtturm Das Hotel befindet sich gegenuber dem Hotel name Neptun B+ Baum B+ Baum Abbildung 6: Dokument- und Schemagraph Physische XML-Speicherstrukturen und Indizes p. 38
7 Zusammenfassung Vielzahl weiterer Techniken: Dataguides, 1-Index, 2-Index, T-Index, ToXin,... Unterstützung nicht nur für einfache Pfadausdrücke, sondern GPE Aufwand für GPE: analog zu regulären Ausdrücken, NFA, DFA Verbesserung wenn Schema vorhanden (Dokumentvs. Schemagraph) Physische XML-Speicherstrukturen und Indizes p. 39