Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Effiziente Evaluierung von XQuery- Anfragen über XML-Strömen Michael Schmidt, 05.11.2007 LS Datenbanken und Informationssysteme, Prof. Georg Lausen Graduiertenkolleg.

Ähnliche Präsentationen


Präsentation zum Thema: "Effiziente Evaluierung von XQuery- Anfragen über XML-Strömen Michael Schmidt, 05.11.2007 LS Datenbanken und Informationssysteme, Prof. Georg Lausen Graduiertenkolleg."—  Präsentation transkript:

1 Effiziente Evaluierung von XQuery- Anfragen über XML-Strömen Michael Schmidt, LS Datenbanken und Informationssysteme, Prof. Georg Lausen Graduiertenkolleg Mathematische Logik und Anwendungen

2 2 Inhalt XQuery Auswertung auf XML-Strömen I. Motivation und Anforderungen II. Statische Analyse: Effiziente Projektion von XML-Dokumenten III. Kombination statischer & dynamischer Analyse: Effiziente Minimierung von Hauptspeicherressourcen Christoph Koch, Stefanie Scherzinger, Michael Schmidt XML Prefiltering as a String Matching Problem. In Proc. ICDE To appear. Michael Schmidt, Stefanie Scherzinger, Christoph Koch Combined Static and Dynamic Analysis for Effective Buffer Minimization in Streaming XQuery Evaluation. In Proc. ICDE 2007.

3 3 Verarbeitung von XML-Strömen gewinnt immer mehr an Bedeutung z.B. Börsendaten, Satellitendaten, Temperaturdaten … Empfangsraten ggf. sehr hoch Zwischenspeichern auf Festplatte oft unmöglich Herkömmliche DBMS ungeeignet, da Daten üblicherweise phyikalisch gespeichert werden … … und Zwischenspeichern zudem oftmals überflüssig ist Motivation I. Motivation und Anforderungen

4 4 Daten müssen im Hauptspeicher verarbeitet werden Probleme: Datenmengen können sehr groß werden Darstellung von XML-Dokumenten im Speicher als DOM-Baum sehr platzaufwendig Effizientes Puffermanagement wird zur Schlüsselkomponente Streaming Techniken auch sehr gut geeignet für in-memory Engines Motivation I. Motivation und Anforderungen

5 5 Anforderungen an Pufferminimierung (1) Puffere lediglich die Daten, die auch zur Auswertung der Anfrage benötigt werden (2) Vermeide mehrfache Kopien der selben Daten im Hauptspeicher (3) Puffere die Daten nicht länger als notwendig I. Motivation und Anforderungen

6 6 Projektion von XML Dokumenten (1) Puffere lediglich die Daten, die auch zur Auswertung der Anfrage benötigt werden Projektion Statische Analyse der XML-Query Identifikation von Teilen des XML-Dokuments, die für die Anfrageauswertung relevant sind Nicht relevante Teile des XML-Dokuments können wegprojiziert werden A. Marian and J. Siméon Projecting XML Documents In Proc. VLDB03, pages 213–224, 2003 S. Bréssan, B. Catania, Z. Lacroix, Y. G. Li and A. Maddalena Accelerating Queries by Pruning XML Documents TKDE, 54(2):211–240, 2005 V. Benzaken, G. Castagna, D. Colazzo, and K. Nguyen Type-Based XML Projection In Proc. VLDB06, 2006 I. Motivation und Anforderungen

7 7 { for $b in /bib/book where ($b/author= A. Turing and fn:exists($b/price)) return $b/title } XQuery Pfade { /bib/book, /bib/book/author/ dos::node(), /bib/book/price, /bib/book/title/ dos::node() } bib book authorpricetitle book authorpricetitle … … … … article ……… isbn …… … … XML-Dokument dos:=descendant-or-self (wählt Knoten und alle descendants aus) Projektion von XML Dokumenten I. Motivation und Anforderungen

8 8 1. Analyse der XML-Query und Extraktion relevanter Pfade im Eingabedokument 2. Tokenizen des XML-Dokuments 3. Kompilieren eines Automaten, der für eingehende Tokens on-the-fly überprüft, ob diese relevant sind { /bib/book/title, /bib/book//author } XQuery T A XML-Dokument Pfade { /bib/book/title, /bib/book//author } Existierende Ansätze I. Motivation und Anforderungen

9 9 XML T A /bib/book/title /bib/book//author /bib/book/title /bib/book//author /bib/book/title /bib/book//author /bib/book/title /bib/book//author Pfade {/bib/book/title, /bib/book//author} Existierende Ansätze 1. Analyse der XML-Query und Extraktion relevanter Pfade im Eingabedokument 2. Tokenizen des XML-Dokuments 3. Kompilieren eines Automaten, der für eingehende Tokens on-the-fly überprüft, ob diese relevant sind I. Motivation und Anforderungen

10 10 Optimierter Ansatz Projektion ohne Zerlegung in Tokens Lokalisierung der relevanten Pfade erfolgt durch effiziente String-Matching Algorithmen Exkurs: String Matching Techniken String m atchingforbeginne begin Suche nach in Text; L änge des Schlüsselworts = rs Ähnliche Techniken für parallele Suche nach mehreren Keywords! beginbeginbeginbegin begin begin matc h II. Projektion von XML-Dokumenten

11 11 { /bib/book/title, /bib//author } XQuery Pfade { /bib/book/title, /bib//author } DTD XML Prefiltering mit String Matching Techniken II. Projektion von XML-Dokumenten bib articlebook title author ………… T1 A1A2A1A3

12 12 DTD Suche Suche und Suche XML Prefiltering mit String Matching Techniken Pfade { /bib/book/title, /bib//author } Suche II. Projektion von XML-Dokumenten

13 13 Vorkompilieren der Automaten/Sprungtabellen in Lookup-Tables: StateMatchState q0 q1 q2 q1 q4 q2 q3 q2 q3 q4 ……… DFA StateVocabulary q0{ } q1{, } q2{ } q3{, } …… Vokabular StateAction q0no operation q1 q2copy on q3copy off …… Action Kurzer, hocheffizienter Laufzeitalgorithmus, der die vorkompilierten Lookup-Tables nutzt XML Prefiltering using String Matching Techniques II. Projektion von XML-Dokumenten

14 14 Prototyp-Implementierung in C++ Experimente Setting Core2 Duo IBMThinkPad Z61p T GHz CPU mit 1GB RAM Ubuntu Linux 6.06 LTS Verschiedene Daten: XMark, Medline, ProtSeq Verschiedene Dokumentgrößen: 1MB bis 5000MB XML Prefiltering using String Matching Techniques II. Projektion von XML-Dokumenten

15 15 XM1XM5XM10XM14XM20 Proj.Size67,64MB22,10MB307,63MB1357,28MB35,28MB Memory1,64MB1,75MB1,96MB1,64MB1,67MB Time4min 12s 4min 55s5min 21s4min 10s Usr+Sys31,00s19,91s54,94s53,71s32,67s CPU12,52%8,05%13,85%17,07%12,92% Avg. Shift Size5,72 chars10,83 chars5,68 chars5,16 chars5,75 chars Char. Comp.18,86%9,87%22,38%21,24%18,67% Projektion eines 5.000MB XMark Dokuments für verschiedene XMark Queries XML Prefiltering using String Matching Techniques II. Projektion von XML-Dokumenten

16 16 QizX XQuery Engine ErfolgTimeFailMemFail 1000MB unprojiziert MB projiziert MB unprojiziert MB projiziert 1521 Erfolgsquoten für 18 XMark Queries mit vs. ohne Projektion TimeFail: >1 Stunde MemFail: >1GB Verbesserung von XQuery Engines durch Projektion XML Prefiltering using String Matching Techniques II. Projektion von XML-Dokumenten

17 17 Durchsatzverbesserung durch Projektion für XPath Queries Datensätze: - Medline: M1-M5 - Protein Sequence: P1-P5 - Einfache XPath-Anfragen - Auswertung durch SPEX XML Prefiltering using String Matching Techniques MB/s II. Projektion von XML-Dokumenten

18 18 Kombination Statischer und Dynamischer Analyse 2. Vermeide mehrfache Kopien der selben Daten im Hauptspeicher 3. Puffere die Daten nicht länger als notwendig Behauptung: Sowohl statische als auch dynamische Analyse erforderlich, um beide Ansprüche zu erfüllen Michael Schmidt, Stefanie Scherzinger, Christoph Koch Combined Static and Dynamic Analysis for Effective Buffer Minimization in Streaming XQuery Evaluation In Proc. ICDE 2007, Istanbul III. Kombination statischer und dynamischer Analyse

19 19 Das GCX-System XQuery Rollen Puffer (Knoten, annotiert mit Rollen) Eingabestrom Evaluator Ausgabestrom Umgeschriebene XQuery (Rollen-Updates) Variablen - bindung Entfernen von Rollen, Aktive Garbage Collection III. Kombination statischer und dynamischer Analyse

20 20 { for $bib in /bib return ( for $book in $bib/book for $title in $book/title return $title, for $author in $bib//author return $author ) } XQuery Pfade { /bib/book/title/dos::node(), /bib//author/dos::node() } /bib /book /title //author /descendant-or-self::node() Projektions-Baum /bib/book/title/dos::node() r2 r1 r3 r4 Ableiten von Rollen /bib//author/dos::node() III. Kombination statischer und dynamischer Analyse

21 21 Selektierte Dokumentknoten bekommen Rollen zugewiesen, wenn sie in den Puffer geladen werden Unselektierte Knoten werden wegprojiziert bib book author title { r 1 } { r 2 } { r 4 }{ r 3 } r 1 /bib r 2 /bib/book r 3 /bib/book/title/dos::node() r 4 /bib//author/dos::node() XML Dokument Rollen Verteilen von Rollen III. Kombination statischer und dynamischer Analyse

22 22 r 1 /bib r 2 /bib/book r 3 /bib/book/title/dos::node() r 4 /bib//author/dos::node() { for $bib in /bib return (for $book in $bib/book for $title in $book/title return $title, for $author in $bib//author return $author ) } Umschreiben der XQuery: Rollenupdates Rollen XQuery { for $bib in /bib return ( for $book in $bib/book ( for $title in $book/title return ( $title, signOff($title/dos::node(),r3) ), signOff($book,r2) ), for $author in $bib//author return ( $author, signOff($author/dos::node(),r4) ) ), signOff($bib,r1) ) } Entfernt Rolle r 3 vom Knoten, an den Variable $title derzeit gebunden ist incl. allen Descendant-Knoten III. Kombination statischer und dynamischer Analyse

23 23 Aktives Garbage Collection { for $bib in /bib return ( ( for $book in $bib/book ( for $title in $book/title return ( $title, signOff($title/dos::node(),r3) ), signOff($book,r2) ), for $author in $bib//author return ( $author, signOff($author/dos::node(),r4) ) ), signOff($bib,r1) ) } XQuery Input Stream Buffer Output Stream bib { r 1 } book { r 2 } title { r 3 } {} author { r 4 } {} III. Kombination statischer und dynamischer Analyse

24 24 Garbage Collected XQuery Implementiert für ein mächtiges Fragment von XQuery Verschachtelte for-loops Child und descendant Axen For–where–return expressions If-expressions mit and, or, not, Existenzchecks Aggregationen derzeit nicht unterstützt Open Source (Berkeley Software Distribution Licence) GCX Projektseite: Die GCX Engine III. Kombination statischer und dynamischer Analyse

25 25 Messung von Zeit- und Speicherverbrauch Queries und Dokumente des XMark Benchmarks (angepasst) Experimentelles Setting: 3GHz CPU Intel Pentium IV mit 2GB RAM SuSe Linux 10.0 J2RE v1.4.2 für Java-basierte Systeme 1 Stunde Zeitlimit pro Query Benchmarks gegen verschiedene Systeme FluX: In-memory Engine für Streaming XQuery Evaluation (Java) MonetDB v4.12.0/XQuery v0.12.0: Secondary storage Engine (C++) QizX/open v1.1: Freie in-memory XQuery Engine (Java) Saxon v8.7.1: Freie in-memory XQuery Engine (Java) Benchmarks GCX III. Kombination statischer und dynamischer Analyse

26 26 { for $s in /site return for $p in $s/people return for $pe in $pe/person return if ($pe/person_id="person0") then { $pe/name } else () } XMark Q1 Laufzeit (s) Benchmarks GCX III. Kombination statischer und dynamischer Analyse

27 27 { for $s in /site return for $p in $s/people return for $pe in $pe/person return if ($pe/person_id="person0") then { $pe/name } else () } XMark Q1 Benchmarks GCX Speicherverbrauch (MB) III. Kombination statischer und dynamischer Analyse

28 28 Time Fail 100MB: MonetDB – Time Fail 200MB: GCX, FluxQuery, MonetDB Laufzeit (s) Speicherverbrauch (MB) XMark Q8: - Komplexer als Q1 - Join Query - Erfordert gewisse Menge an Pufferung Benchmarks GCX III. Kombination statischer und dynamischer Analyse

29 29 Vielen Dank für Ihre Aufmerksamkeit!

30 30 Additional Resources

31 31 { for $site in //site return for $regions in $site/regions return $regions//item } Buffer plot for XMark Q6 on 10MB input document According to the DTD: all regions occur at the beginning of the document Aktives Garbage Collection III. Kombination statischer und dynamischer Analyse

32 32 Benchmark Queries (2) { for $root in (/) return for $site in $root/site return for $people in $site/people return for $person in $people/person return { ( { $person/name }, { for $site2 in $root/site return for $cas in $site2/closed_auctions return for $ca in $cas/closed_auction return for $buyer in $ca/buyer return if ($buyer/buyer_person=$person/person_id) then { $ca } else () } ) }

33 33 { for $bib in /bib return (for $x in $bib/* return if (not(exists($x/price))) then $x else (), for $b in $bib/book return $b/title) } bib (book|article)* title author price 9 x article + 1 x book 9 x book + 1 x article XQuery Dokument Aktives Garbage Collection III. Kombination statischer und dynamischer Analyse

34 34 Benchmark Queries (1) { for $s in /site return for $p in $s/people return for $pe in $pe/person return if ($pe/person_id="person0") then { $pe/name } else () } { for $site in //site return for $regions in $site/regions return $regions//item }

35 35 Benchmark Queries (3) { for $site in /site return for $regions in $site/regions return for $australia in $regions/australia return for $item in $australia/item return { ( { $item/name }, { $item/description } ) } }

36 36 Benchmark Queries (4) { for $site in /site return for $people in $site/people return for $person in $people/person return if (fn:not(fn:exists($person/person_income))) then $person else () }

37 37 { for $site in //site return for $regions in $site/regions return $regions//item } Buffer plot for XMark Q6 on 10MB input document According to the DTD: all regions occur at the beginning of the document Buffer Plot (1)

38 38 { for $bib in /bib return (for $x in $bib/* return if (not(exists($x/price))) then $x else (), for $b in $bib/book return $b/title) } bib (book|article)* title author price 9 x article + 1 x book 9 x book + 1 x article XQuery Dokument Buffer Plot (2)

39 39 { for $root in (/) return for $site in $root/site return for $people in $site/people return for $person in $people/person return { ( { $person/name }, { for $site2 in $root/site return for $cas in $site2/closed_auctions return for $ca in $cas/closed_auction return for $buyer in $ca/buyer return if ($buyer/buyer_person=$person/person_id) then { $ca } else () } ) } Buffer plot for XMark Q8 on 10MB input document first partition of join partners: persons second partition of join partners: buyers Buffer Plot (3)

40 40 The GCX Runtime Engine Stream Preprojector Buffer Manager Evaluator XQuery input stream output stream nodes/roles node lookup garbage collection node/eos signOff($x/π,r) OK node/NULL getNext($x/π) Buffer nextNode()

41 41 XQuery Normalized XQuery Evaluator Buffer (nodes & roles) role updates input input stream output stream Stream Preprojector Rewritten XQuery (role updates) Projection Paths Projection DFA ( constructed lazily, assigns roles) Roles input stream System Architecture

42 42 XML Prefiltering mit String Matching Techniken II. Projektion von XML-Dokumenten … titlesauthorstitlesauthors Suche Suche und Suche Suche und Suche,,

43 43 XML Prefiltering mit String Matching Techniken II. Projektion von XML-Dokumenten { /bib/book/title, /bib//author } XQuery Pfade { /bib/book/title, /bib//author } bib articlebook title author ………… T1 A1A2A1A3 … titlesauthorstitlesauthors

44 44 Exkurs: XML und XQuery T1 A1 T2 A2 A3 XML-Dokument XQuery { for $book in /bib/book where ($book/title=T1) return $book, for $author in /bib//author return $author } Ergebnis T1 A1 A1 A2 A3 /: selektiert Kind-Knoten //: selektiert Descendant-Knoten


Herunterladen ppt "Effiziente Evaluierung von XQuery- Anfragen über XML-Strömen Michael Schmidt, 05.11.2007 LS Datenbanken und Informationssysteme, Prof. Georg Lausen Graduiertenkolleg."

Ähnliche Präsentationen


Google-Anzeigen