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

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

Embed Size (px)

Citation preview

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

Effiziente Evaluierung von XQuery-Anfragen über

XML-Strömen

Michael Schmidt, 05.11.2007

LS Datenbanken und Informationssysteme, Prof. Georg Lausen

Graduiertenkolleg „Mathematische Logik und Anwendungen“

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

2

Inhalt

XQuery Auswertung auf XML-StrömenI. Motivation und AnforderungenII. Statische Analyse:

Effiziente Projektion von XML-Dokumenten

III. Kombination statischer & dynamischer Analyse:Effiziente Minimierung von Hauptspeicherressourcen

Christoph Koch, Stefanie Scherzinger, Michael SchmidtXML Prefiltering as a String Matching Problem. In Proc. ICDE 2008.

To appear.

Michael Schmidt, Stefanie Scherzinger, Christoph KochCombined Static and Dynamic Analysis for Effective Buffer

Minimization in Streaming XQuery Evaluation. In Proc. ICDE 2007.

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

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

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

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

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

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

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

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éonProjecting XML DocumentsIn Proc. VLDB’03, pages 213–224, 2003

S. Bréssan, B. Catania, Z. Lacroix, Y. G. Li and A. Maddalena Accelerating Queries by Pruning XML DocumentsTKDE, 54(2):211–240, 2005

V. Benzaken, G. Castagna, D. Colazzo, and K. NguyenType-Based XML ProjectionIn Proc. VLDB’06, 2006

I. Motivation und Anforderungen

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

7

<q> {for $b in /bib/bookwhere ($b/author=“A. Turing” and fn:exists($b/price))return $b/title} </q>

XQuery

Pfade{ /bib/book, /bib/book/author/

dos::node(), /bib/book/price, /bib/book/title/

dos::node() }

bib

book

author price title

book

author price title

… … … …

article

… … …isbn

isbn

… … … …

XML-Dokument

dos:=descendant-or-selfdos:=descendant-or-self(wählt Knoten und alle

descendants aus)

Projektion von XML Dokumenten

I. Motivation und Anforderungen

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

8

1. Analyse der XML-Query und Extraktion relevanter Pfade im Eingabedokument

2. Tokenizen des XML-Dokuments3. Kompilieren eines Automaten, der für eingehende

Tokens on-the-fly überprüft, ob diese relevant sind

<r> { /bib/book/title, /bib/book//author} </r>

XQuery

„<bib><article></article><book><title>T</title><author>A</author></book></bib>“

XML-Dokument

Pfade

{ /bib/book/title, /bib/book//author }

Existierende Ansätze

I. Motivation und Anforderungen

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

9

XML<bib><article></article><book><title>T</title><author>A</author></book></bib>

●/bib/book/title ●/bib/book//author

/bib●/book/title/bib●/book//author

/bib/book●//author/bib/book●/title

/bib/book●//author/bib/book/title●

/bib/book●//author/bib/book//author●

Pfade

{/bib/book/title, /bib/book//author} <bib>

<book><article>

<title> <author>

Existierende Ansätze1. Analyse der XML-Query und Extraktion relevanter Pfade

im Eingabedokument2. Tokenizen des XML-Dokuments3. Kompilieren eines Automaten, der für eingehende

Tokens on-the-fly überprüft, ob diese relevant sind

I. Motivation und Anforderungen

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

10

Optimierter Ansatz Projektion ohne Zerlegung in Tokens Lokalisierung der relevanten Pfade

erfolgt durch effiziente String-Matching Algorithmen

Exkurs: String Matching Techniken

S t r i n g m a t c h i n g f o r b e g i n n e

b e g i n

Suche nach

in Text; Länge des Schlüsselworts = 5

1 5 10 15 20 25

r s

Ähnliche Techniken für parallele Suche nach mehreren Keywords!

b e g i n b e g i n b e g i nb e g i n

b e g i n

b e g i n

match

II. Projektion von XML-Dokumenten

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

11

<r> { /bib/book/title, /bib//author} </r>

XQuery

Pfade

{ /bib/book/title, /bib//author }

<!ELEMENT bib (article,book)><!ELEMENT article (title*,author*)><!ELEMENT book (title*,author*)><!ELEMENT title #PCDATA><!ELEMENT author #PCDATA><!ELEMENT year #PCDATA>

DTD

XML Prefiltering mit String Matching Techniken

II. Projektion von XML-Dokumenten

bib

article book

title title title title author authorauthor author… … … …

„T1“ „T1“ „T1“ „T1“„A1“ „A2“ „A1“ „A3“

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

12

<!ELEMENT bib (article,book)><!ELEMENT article (title*,author*)><!ELEMENT book (title*,author*)><!ELEMENT title #PCDATA><!ELEMENT author #PCDATA><!ELEMENT year #PCDATA>

DTD

<bib> <article> <title> </title> <author> </author> <title> <author>

<book> <title> </title> <author> </author> <title> <author>

</article>

</book>

</bib> </book>

<author>

<author>

</article> <book> <book>

<article>

Suche „<bib>“ Suche „<author>“ und „</article>“

Suche „</author>“

XML Prefiltering mit String Matching Techniken

Pfade

{ /bib/book/title, /bib//author }

Suche „<article>“

II. Projektion von XML-Dokumenten

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

13

Vorkompilieren der Automaten/Sprungtabellen in Lookup-Tables:

State Match State

q0 <article> q1

q1 <author> q2

q1 <book> q4

q2 </author> q3

q3 <author> q2

q3 <book> q4

… … …

DFAState

Vocabulary

q0 {<article>}

q1 {<author>, <book>}

q2 {</author>}

q3 {<author>, <book>}

… …

Vokabular

State Action

q0 no operation

q1 „<bib><article>“

q2 copy on

q3 copy off

… …

Action

Kurzer, hocheffizienter Laufzeitalgorithmus, der die vorkompilierten Lookup-Tables nutzt

XML Prefiltering using String Matching Techniques

II. Projektion von XML-Dokumenten

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

14

• Prototyp-Implementierung in C++• Experimente

• Setting• Core2 Duo IBMThinkPad Z61p• T2500 2.00GHz 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

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

15

XM1 XM5 XM10 XM14 XM20

Proj.Size 67,64MB 22,10MB 307,63MB 1357,28MB 35,28MB

Memory 1,64MB 1,75MB 1,96MB 1,64MB 1,67MB

Time 4min 12s 4min 12s 4min 55s 5min 21s 4min 10s

Usr+Sys 31,00s 19,91s 54,94s 53,71s 32,67s

CPU 12,52% 8,05% 13,85% 17,07% 12,92%

Avg. Shift Size 5,72 chars 10,83 chars 5,68 chars 5,16 chars 5,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

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

16

QizX XQuery Engine

Erfolg TimeFail MemFail

1000MB unprojiziert

0 0 18

1000MB projiziert

18 0 0

5000MB unprojiziert

0 0 18

5000MB projiziert

15 2 1

Erfolgsquoten für 18 XMark Queries mit vs. ohne Projektion

TimeFail: >1 Stunde

MemFail: >1GBVerbesserung von XQuery Engines durch Projektion

XML Prefiltering using String Matching Techniques

II. Projektion von XML-Dokumenten

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

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

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

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 EvaluationIn Proc. ICDE 2007, Istanbul

III. Kombination statischer und dynamischer Analyse

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

19

Das GCX-System

XQuery

Rollen

Puffer(Knoten, annotiert

mit Rollen)

Eingabestrom

Evaluator

Ausgabestrom

UmgeschriebeneXQuery

(Rollen-Updates)

Variablen -bindung

Entfernen von Rollen, Aktive Garbage Collection

III. Kombination statischer und dynamischer Analyse

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

20

<r> { for $bib in /bib return ( for $book in $bib/book for $title in $book/title return $title, for $author in $bib//author return $author )} </r>

XQuery

Pfade

{ /bib/book/title/dos::node(), /bib//author/dos::node() }

/bib

/book

/title

//author

/descendant-or-self::node()

/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

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

21

Selektierte Dokumentknoten bekommen Rollen zugewiesen, wenn sie in den Puffer geladen werden

Unselektierte Knoten werden wegprojiziert

bib

book

authortitle

{ r1 }

{ r2 }

{ r4}{ r3 }

rr1 1 /bib /bib

rr22 /bib/book /bib/book

rr33 /bib/book/title/dos::node() /bib/book/title/dos::node()

rr44 /bib//author/dos::node() /bib//author/dos::node()

XML DokumentRollen

Verteilen von Rollen

III. Kombination statischer und dynamischer Analyse

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

22

rr1 1 /bib /bib

rr22 /bib/book /bib/book

rr33 /bib/book/title/dos::node() /bib/book/title/dos::node()

rr44 /bib//author/dos::node() /bib//author/dos::node()

<r> { for $bib in /bib return (for $book in $bib/book for $title in $book/title return $title, for $author in $bib//author return $author )} </r>

Umschreiben der XQuery: Rollenupdates

Rollen

XQuery<r> { 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) )} </r>

Entfernt Rolle r3 vom Knoten, an den

Variable $title derzeit gebunden ist incl. allen

Descendant-Knoten

III. Kombination statischer und dynamischer Analyse

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

23

Aktives Garbage Collection

<r> { 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) )} </r>

XQuery

Input Stream

Buffer

Output Stream

<book><title><bib> </title><author></author></book></bib>

<r>

bib{ r1 }

book{ r2 }

title{ r3 }

<title> </title>

{}author

{ r4 }

<author> </author>

{}

{}

{}

</r>

III. Kombination statischer und dynamischer Analyse

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

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:http://dbis.informatik.uni-freiburg.de/index.php?project=GCX

Die GCX Engine

III. Kombination statischer und dynamischer Analyse

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

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

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

26

<query1> { for $s in /site return  for $p in $s/people return   for $pe in $pe/person return   if ($pe/person_id="person0")   then <result>{ $pe/name }</result>   else ()}</query1>

XMark Q1

0

2

4

6

8

10

12

14

16

10MB 50MB 100MB 200MB

GCX

FluxQuery

MonetDB

Saxon

Qizx/open

Laufzeit (s)

Benchmarks GCX

III. Kombination statischer und dynamischer Analyse

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

27

0

100

200

300

400

500

600

700

800

900

1000

10MB 50MB 100MB 200MB

GCX

FluxQuery

MonetDB

Saxon

Qizx/open

<query1> { for $s in /site return  for $p in $s/people return   for $pe in $pe/person return   if ($pe/person_id="person0")   then <result>{ $pe/name }</result>   else ()}</query1>

XMark Q1

Benchmarks GCXSpeicherverbrauch (MB)

III. Kombination statischer und dynamischer Analyse

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

28

0

500

1000

1500

2000

2500

3000

3500

10MB 50MB 100MB 200MB

GCX

FluxQuery

MonetDB

Saxon

Qizx/open

0

100

200

300

400

500

600

700

800

900

1000

1100

1200

1300

1400

10MB 50MB 100MB 200MB

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

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

29

Vielen Dank für Ihre Aufmerksamkeit!

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

30

Additional Resources

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

31

<query6> {  for $site in //site return    for $regions in $site/regions return      $regions//item} </query6>

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

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

32

Benchmark Queries (2)

<query8> {  for $root in (/) return  for $site in $root/site return  for $people in $site/people return  for $person in $people/person return    <item> { ( <person>{ $person/name }</person>,      <items_bought> {      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 <result> { $ca } </result>         else () } </items_bought> ) } </item> } </query8>

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

33

<r> {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)} </r>

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

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

34

Benchmark Queries (1)

<query1> { for $s in /site return  for $p in $s/people return   for $pe in $pe/person return   if ($pe/person_id="person0")   then <result>{ $pe/name }</result>   else ()}</query1>

<query6> {  for $site in //site return    for $regions in $site/regions return      $regions//item} </query6>

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

35

Benchmark Queries (3)

<query13> {  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/name } </name>,            <desc> { $item/description } </desc>          )          } </item>} </query13>

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

36

Benchmark Queries (4)

<query20> {  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 ()} </query20>

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

37

<query6> {  for $site in //site return    for $regions in $site/regions return      $regions//item} </query6>

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)

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

38

<r> {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)} </r>

bib

(book|article)*

title

author

price

9 x article + 1 x book

9 x book + 1 x article

XQuery

Dokument

Buffer Plot (2)

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

39

<query8> {  for $root in (/) return  for $site in $root/site return  for $people in $site/people return  for $person in $people/person return    <item> { ( <person>{ $person/name }</person>,      <items_bought> {      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 <result> { $ca } </result>         else () } </items_bought> ) } </item> } </query8>

Buffer plot for XMark Q8 on 10MB input document

first partition of join partners:

persons

second partition of join partners:

buyers

Buffer Plot (3)

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

40

The GCX Runtime Engine

StreamPreprojector

BufferManager

Evaluator

XQueryinput stream

output stream

nodes/roles

node lookupgarbage collection

node/eos

signOff($x/π,r)

OK

node/NULL

getNext($x/π)

Buffer

nextNode()

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

41

XQuery

NormalizedXQuery

Evaluator

Buffer(nodes & roles)

role updates

input

input stream

output stream

Stream Preprojector

RewrittenXQuery

(role updates)

ProjectionPaths

Projection DFA(constructed lazily, assigns roles)

Roles

input stream

System Architecture

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

42

XML Prefiltering mit String Matching Techniken

II. Projektion von XML-Dokumenten

</author>

<author>

<title> </title> <author> </author> <title> <author>

</book>

</bib> </book>

<author>

<author>

<book> <book>

<article>

<bib><article> </article><book> …titles authors titles authors

Suche „<article>“Suche „<author>“ und „<book>“Suche „</author>“Suche „<author>“ und „<book>“Suche „<title>“, „<author>“, „</book>“

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

43

XML Prefiltering mit String Matching Techniken

II. Projektion von XML-Dokumenten

<r> { /bib/book/title, /bib//author} </r>

XQuery

Pfade

{ /bib/book/title, /bib//author }

bib

article book

title title title title author authorauthor author… … … …

„T1“ „T1“ „T1“ „T1“„A1“ „A2“ „A1“ „A3“

<bib><article> </article><book> …titles authors titles authors

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

44

Exkurs: XML und XQuery

<bib> <book> <title>T1</title> <author>A1</author> </book> <book> <title>T2</title> <author>A2</author> </book> <article> <author>A3</author> </article></bib>

XML-Dokument

XQuery

<q> { for $book in /bib/book where ($book/title=„T1“) return $book, for $author in /bib//author return $author} </q>

Ergebnis<q> <book> <title>T1</title> <author>A1</author> </book> <author>A1</author> <author>A2</author> <author>A3</author></q>

“/”: selektiert Kind-Knoten

“//”: selektiert Descendant-Knoten