X FilterX Filter……als Beispiel effizienter Filterungals Beispiel effizienter Filterung
von XML-Dokumenten in SDI-Systemenvon XML-Dokumenten in SDI-Systemen
Michael Koth, 29.1.2002Michael Koth, 29.1.2002
22
GliederungGliederung
Was sind SDI Systeme?Was sind SDI Systeme?
Was bringt die Kombination von XML Was bringt die Kombination von XML und SDI Systemen für Vorteile und und SDI Systemen für Vorteile und Probleme?Probleme?
das XFilter System als effizienter das XFilter System als effizienter LösungsansatzLösungsansatz
33
SDI SystemeSDI Systeme
Selective Dissemination of Information Selective Dissemination of Information (SDI)(SDI)
„„die richtigen Daten zu den richtigen die richtigen Daten zu den richtigen Leuten zur richtigen Zeit“Leuten zur richtigen Zeit“
Anwendungsbereiche:Anwendungsbereiche:• Spezialisierte Newsticker (z.B. Sport)Spezialisierte Newsticker (z.B. Sport)• Personalisierte NachrichtenPersonalisierte Nachrichten• VerkehrsinformationssystemeVerkehrsinformationssysteme• Echtzeit-business (Börse, e-commerce etc.)Echtzeit-business (Börse, e-commerce etc.)
44
SDI SystemeSDI Systeme
Quelldaten
Format-Konversion
Dokumenten-parsing
Filter-Engine
Gefilterte Daten
Benutzerprofile
Benutzer
- keine Speicherung der Daten, dafür Speicherung der Anfragen
55
SDI SystemeSDI Systeme
Anforderungen:Anforderungen:
• möglichst akurate Anfragen(Profile)möglichst akurate Anfragen(Profile)• Skalierbarkeit (große Benutzerzahl)Skalierbarkeit (große Benutzerzahl)• hoher Datendurchsatzhoher Datendurchsatz• VerlässlichkeitVerlässlichkeit• evtl. Echtzeit-Garantieevtl. Echtzeit-Garantie
Effizienz besonders wichtigEffizienz besonders wichtig
66
XMXMl und SDIl und SDI
Vorteile:Vorteile:
• künftiger Standard (vorhandene Tools)künftiger Standard (vorhandene Tools)• strukturierte Quelldatenstrukturierte Quelldaten• sehr akurate Benutzerprofilesehr akurate Benutzerprofile
Nachteile:Nachteile:
• erhöhte Komplexität beim Vergleichen erhöhte Komplexität beim Vergleichen mit Benutzerprofilenmit Benutzerprofilen
77
X FilterX Filter
Filtermechanismus für SDI-SystemeFiltermechanismus für SDI-Systeme entwickelt von Mehmet Altinel (University entwickelt von Mehmet Altinel (University
of Maryland) und Michael J. Franklin of Maryland) und Michael J. Franklin (University of California at Berkeley)(University of California at Berkeley)
vorgestellt auf der VLDB Konferenz 2000 vorgestellt auf der VLDB Konferenz 2000 (Kairo)(Kairo)
implementiert im DBIS Toolkit implementiert im DBIS Toolkit (Dissemination-Based Information (Dissemination-Based Information Systems)Systems)
88
BenutzerprofileBenutzerprofile System nimmt Benutzerprofile in Form von System nimmt Benutzerprofile in Form von
XPathXPath Anfragen entgegen Anfragen entgegen relevant für XFilter sind nur relevant für XFilter sind nur //, , ////, , **, , [][] Beispiel: Preisvergleichs-Service Beispiel: Preisvergleichs-Service
Benachrichtigung bei Unterschreitung Benachrichtigung bei Unterschreitung einer Preisschrankeeiner Preisschranke
//katalogkatalog////dvdbrennerdvdbrenner/*//*/detailsdetails[[preispreis//euro<200euro<200]/]/namename
Filter (Filter ([][]) können eingebettete ) können eingebettete Pfadausdrücke enthaltenPfadausdrücke enthalten
99
X FilterX FilterXPath Anfragen
XPath ParserXML Parser
FilterEngine
DataDissemination
User
ProfileBase
XML Dokument
Path Nodes
Element
Events
Profil Info
Erfolgreiche Profile und gefilterte Daten
Erfolgr.
Anfragen
Profi
l Inf
o
Path
Nod
es
ElementEvents
Erfolgreiche Profile und gefilterte Daten
Query Index
1010
Path NodesPath Nodes Umwandlung jeder XPath Anfrage in eine Art Umwandlung jeder XPath Anfrage in eine Art
endlichen Automatenendlichen Automaten Elementknoten beschreiben ZuständeElementknoten beschreiben Zustände
//katalogkatalog////dvdbrennerdvdbrenner/*//*/detailsdetails[[preispreis//euro<300euro<300]/]/namename
Path Node 1 Rel.Dist. ? Level 1
Path Node 2 Rel.Dist. ? Level ?
Path Node 3 Rel.Dist. 2 Level ? Filter Expr.
Path Node 4 Rel.Dist. 1 Level ?
<katalog><produkte><dvdbrenner><plextor><details><name>P54800d</name>…
PN1
PN2 PN4
PN3
Level=1 El.=katalog
Level=3 El.=dvdbrenner
Level=5 El.=details
Level=6 El.=name
OK
*
Lev.1Lev.2Lev.3Lev.4Lev.5Lev.6
1111
Query IndexQuery IndexQ1Q1
11
00
11
Q1Q1
22
11
00
Q1Q1
33
-1-1
-1-1
Query ID
Position
Relative Pos.
Level
aa
bb
cc
dd
ee
auf Element-Namen basierende Hash Tabelle mit wait und candidate Listen
Q1-1Q1-1
Q1-2Q1-2
Q1-3Q1-3
Q1 = / a / b // c
Q2Q2
11
-1-1
-1-1
Q2Q2
22
22
00
Q2Q2
33
11
00
Q2 = // b /*/ c / d
Q2-2Q2-2
Q2-3Q2-3
Q2-1Q2-1
Q3Q3
11
00
22
Q3Q3
22
11
00
Q3Q3
33
-1-1
-1-1
Q3 = /*/ a / c // d
Q3-1Q3-1
Q3-2Q3-2
Q3-3Q3-3
Q4Q4
11
-1-1
-1-1
Q4Q4
22
11
00
Q4Q4
33
11
00
Q4 = b / d / e
Q4-2Q4-2
Q4-3Q4-3
Q4-1Q4-1
Q5Q5
11
00
11
Q5Q5
22
33
00
Q5Q5
33
-1-1
-1-1
Q5 = a /*/*/ c// e
Q5-1Q5-1
Q5-2Q5-2
Q5-3Q5-3
w.list c.list
w.list
w.list
w.list
w.list
c.list
c.list
c.list
c.list
1212
Q1Q1
11
00
11
Q1Q1
22
11
00
Q1Q1
33
-1-1
-1-1
Q2Q2
11
-1-1
-1-1
Q2Q2
11
-1-1
22
ablaufablauf
aa
bb
cc
dd
ee
Q1-1Q1-1
Q1-2Q1-2
Q1-3Q1-3Q2-2Q2-2
Q2-3Q2-3
Q2-1Q2-1
Q3-1Q3-1
Q3-2Q3-2
Q3-3Q3-3Q4-2Q4-2
Q4-3Q4-3
Q4-1Q4-1
Q5-1Q5-1
Q5-2Q5-2
Q5-3Q5-3
w.list c.list
w.list
w.list
w.list
w.list
c.list
c.list
c.list
c.list
Q2Q2
22
22
00
Q2Q2
33
11
00
Q3Q3
11
00
22
Q3Q3
22
11
00
Q3Q3
33
-1-1
-1-1
Q4Q4
11
-1-1
-1-1
Q4Q4
22
11
00
Q4Q4
33
11
00
Q5Q5
11
00
11
Q5Q5
22
33
00
Q5Q5
33
-1-1
-1-1
<a><b><d><c><e></e>…
Lev.1Lev.2Lev.3Lev.4Lev.5Lev.4
Beispiel:
Lev.1
Q1-2Q1-2
Lev.1
Q5-2Q5-2
Lev.2
Q2-2Q2-2
Q4Q4
11
-1-1
22
Q4Q4
22
11
00
Q4Q4
33
11
00Lev.2
Q4-2Q4-2
Q1Q1
11
00
11
Q1Q1
22
11
22
Q1Q1
33
-1-1
-1-1Lev.2
Q1-3Q1-3
Q4Q4
22
11
33Lev.3
Q4-3Q4-3
Q5Q5
11
00
11
Q5Q5
22
33
44
Q5Q5
33
-1-1
-1-1Lev.4
Q5-3Q5-3
Q2Q2
11
-1-1
22
Q2Q2
22
22
44
Q2Q2
33
11
00Lev.4
Q2-3Q2-3
Q1Q1
11
00
11
Q1Q1
22
11
22
Q1Q1
33
-1-1
44
Q4Q4
11
-1-1
22
Q4Q4
33
11
44
Q4Q4
22
11
33
Q5Q5
11
00
11
Q5Q5
22
33
44
Q5Q5
33
-1-1
55Lev.5
Lev.4 Q1 = / a / b // cQ3 = /*/ a / c // dQ5 = a /*/*/ c// eQ2 = // b /*/ c / dQ4 = b / d / eQ1 = / a / b // cQ4 = b / d / eQ5 = a /*/*/ c// eQ2 = // b /*/ c / dQ1 = / a / b // cQ4 = b / d / eQ5 = a /*/*/ c// e
1313
1. Verbesserung1. Verbesserung„„list balancing“list balancing“
geringe Selektivität wurzelnaher tagsgeringe Selektivität wurzelnaher tags UnausgewogeneUnausgewogene candidate lists candidate lists
Ziel:Ziel: anfängliche Längen der anfängliche Längen der candidate lists candidate lists
ausbalancierenausbalancieren
Lösung:Lösung: Pivot-ElementePivot-Elemente und und preconditionspreconditions
1414
list balancing list balancing Q1Q1
11
00
11
Q1Q1
22
11
00
Q1Q1
33
-1-1
-1-1
Query ID
Position
Relative Pos.
Level
aa
bb
cc
dd
ee
Q1-1Q1-1
Q1-2Q1-2
Q1-3Q1-3
Q1 = / a / b // c
Q2Q2
11
-1-1
-1-1
Q2Q2
22
22
00
Q2Q2
33
11
00
Q2 = // b /*/ c / d
Q2-2Q2-2
Q2-3Q2-3
Q2-1Q2-1
Q3Q3
11
00
11
aa
Q3Q3
22
-1-1
-1-1
Q3 = /*/ a / c // d
Q3-1Q3-1Q3-2Q3-2
Q4Q4
11
00
11
bb
Q4Q4
22
11
00
Q4 = b / d / e
Q4-2Q4-2
Q4-1Q4-1
Q5Q5
11
-1-1
-1-1
a,ca,c
Q5 = a /*/*/ c// e
Q5-1Q5-1
w.list c.list
w.list
w.list
w.list
w.list
c.list
c.list
c.list
c.list
erhöhter Aufwand durch Testen der preconditions
Ersparnis durch Ausbalancierung
1515
2. Verbesserung2. Verbesserung„„prefiltering“prefiltering“
fehlende Elemente im hinteren Bereich fehlende Elemente im hinteren Bereich des Anfrage-Pfadesdes Anfrage-Pfades
Unnötiger AufwandUnnötiger Aufwand
Ziel:Ziel: Ausschluß von Anfragen mit Elementen, Ausschluß von Anfragen mit Elementen,
die im Dokument gar nicht vorkommendie im Dokument gar nicht vorkommen
Lösung:Lösung: key based prefilteringkey based prefiltering Algorithmus Algorithmus
1616
PrefilteringPrefilteringaa
bb
cc
dd
ee
Jedes Dokument muss zweimal durch den Parser
Ersparnis hängt von der Selektivität des ersten Schrittes ab
Q1 = / a / b // c
Q2 = // b /*/ c / d
Q3 = /*/ a / c // d
Q4 = b / d / e
Q5 = a /*/*/ c / e
Q1
Q2
Q3
Q4
Q5
Occurrence table
Ermittlung der keys wie Pivot-Elemente
Sukzessives Abarbeiten der Queries nach occurence table
1717
ExperimenteExperimente
ParameterParameter BereichBereich BeschreibungBeschreibung
PP 1.000–100.0001.000–100.000 Anzahl der BenutzerprofileAnzahl der Benutzerprofile
DD 1-101-10 Maximale Tiefe des XML Dokuments Maximale Tiefe des XML Dokuments und der XPath Anfragenund der XPath Anfragen
WW 20%-80%20%-80%Wahrscheinlichkeit für Wildcards Wahrscheinlichkeit für Wildcards („*“) in den Anfrage-Knoten(„*“) in den Anfrage-Knoten
0 und 10 und 1 Unausgewogenheit von Element-Unausgewogenheit von Element-Namen in der Anfrage-GenerierungNamen in der Anfrage-Generierung
Ist XFilter praxistauglich? Query-Generator und XML-Testfall-Generator (IBM) unter Verwendung der NITF DTD
1818
1. Experiment1. Experiment Variation von P (Profile)Variation von P (Profile)
1919
2. Experiment2. Experiment Variation von D (max. Tiefe)Variation von D (max. Tiefe)
2020
3. Experiment3. Experiment Variation von W („*“-Wahrscheinlichkeit)Variation von W („*“-Wahrscheinlichkeit)
2121
ZusammenfassendZusammenfassend
XFilter erweist sich als hoch skalierbares XFilter erweist sich als hoch skalierbares SystemSystem
list balancinglist balancing mit mit prefilteringprefiltering ist Methode ist Methode mit größtem Performance-Gewinnmit größtem Performance-Gewinn
bei sehr unausgewogener Verteilung der bei sehr unausgewogener Verteilung der Elemente in den Queries ist Elemente in den Queries ist list balancinglist balancing von sich aus schon sehr effektiv, evtl. der von sich aus schon sehr effektiv, evtl. der Methode mit Methode mit prefilteringprefiltering vorzuziehen vorzuziehen (Ressourcen schonender)(Ressourcen schonender)
- o -