210 likes | 289 Views
X Filter. …als Beispiel effizienter Filterung von XML-Dokumenten in SDI-Systemen. Michael Koth, 29.1.2002. Gliederung. Was sind SDI Systeme? Was bringt die Kombination von XML und SDI Systemen für Vorteile und Probleme? das XFilter System als effizienter Lösungsansatz. SDI Systeme.
E N D
X Filter …als Beispiel effizienter Filterung von XML-Dokumenten in SDI-Systemen Michael Koth, 29.1.2002
Gliederung • Was sind SDI Systeme? • Was bringt die Kombination von XML und SDI Systemen für Vorteile und Probleme? • das XFilter System als effizienter Lösungsansatz
SDI Systeme • Selective Dissemination of Information (SDI) • „die richtigen Daten zu den richtigen Leuten zur richtigen Zeit“ • Anwendungsbereiche: • Spezialisierte Newsticker (z.B. Sport) • Personalisierte Nachrichten • Verkehrsinformationssysteme • Echtzeit-business (Börse, e-commerce etc.)
SDI Systeme Benutzerprofile Quelldaten Dokumenten-parsing Gefilterte Daten Format-Konversion Filter-Engine Benutzer - keine Speicherung der Daten, dafür Speicherung der Anfragen
SDI Systeme • Anforderungen: • möglichst akurate Anfragen(Profile) • Skalierbarkeit (große Benutzerzahl) • hoher Datendurchsatz • Verlässlichkeit • evtl. Echtzeit-Garantie • Effizienz besonders wichtig
XMl und SDI • Vorteile: • künftiger Standard (vorhandene Tools) • strukturierte Quelldaten • sehr akurate Benutzerprofile • Nachteile: • erhöhte Komplexität beim Vergleichen mit Benutzerprofilen
X Filter • Filtermechanismus für SDI-Systeme • entwickelt von Mehmet Altinel (University of Maryland) und Michael J. Franklin (University of California at Berkeley) • vorgestellt auf der VLDB Konferenz 2000 (Kairo) • implementiert im DBIS Toolkit (Dissemination-Based Information Systems)
Benutzerprofile • System nimmt Benutzerprofile in Form von XPath Anfragen entgegen • relevant für XFilter sind nur /, //, *, [] • Beispiel: Preisvergleichs-Service Benachrichtigung bei Unterschreitung einer Preisschranke /katalog//dvdbrenner/*/details[preis/euro<200]/name • Filter ([]) können eingebettete Pfadausdrücke enthalten
X Filter XML Dokument XPath Anfragen XML Parser XPath Parser Profil Info Path Nodes Data Dissemination User ElementEvents Erfolgreiche Profile und gefilterte Daten Filter Engine Profil Info Path Nodes Query Index Erfolgreiche Profile und gefilterte Daten Erfolgr. Anfragen Profile Base Element Events
Path Nodes • Umwandlung jeder XPath Anfrage in eine Art endlichen Automaten • Elementknoten beschreiben Zustände /katalog//dvdbrenner/*/details[preis/euro<300]/name 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> … Lev.1 OK Lev.2 PN2 PN4 Lev.3 Lev.4 Level=3 El.=dvdbrenner Level=6 El.=name * Lev.5 PN1 PN3 Lev.6 Level=1 El.=katalog Level=5 El.=details
Query Index Query ID auf Element-Namen basierende Hash Tabelle mit wait und candidate Listen Position Relative Pos. Level w.list c.list w.list c.list w.list c.list w.list c.list c.list w.list
ablauf Beispiel: Lev.1 Lev.4 Lev.5 Lev.2 Lev.3 <a> <b> <d> <c> <e> </e> … Lev.1 Lev.2 Lev.4 Lev.2 Lev.1 Lev.2 Lev.4 Lev.3 Lev.4 w.list c.list Lev.5 Lev.4 w.list c.list w.list c.list w.list c.list c.list w.list
1. Verbesserung „list balancing“ • geringe Selektivität wurzelnaher tags • Unausgewogene candidate lists Ziel: • anfängliche Längen der candidate lists ausbalancieren Lösung: • Pivot-Elemente und preconditions
list balancing Query ID Position • erhöhter Aufwand durch Testen der preconditions • Ersparnis durch Ausbalancierung Relative Pos. Level w.list c.list w.list c.list w.list c.list w.list c.list c.list w.list
2. Verbesserung „prefiltering“ • fehlende Elemente im hinteren Bereich des Anfrage-Pfades • Unnötiger Aufwand Ziel: • Ausschluß von Anfragen mit Elementen, die im Dokument gar nicht vorkommen Lösung: • key based prefiltering Algorithmus
Prefiltering • Jedes Dokument muss zweimal durch den Parser • Ersparnis hängt von der Selektivität des ersten Schrittes ab Occurrence table • Ermittlung der keys wie Pivot-Elemente • Sukzessives Abarbeiten der Queries nach occurence table
Experimente • Ist XFilter praxistauglich? • Query-Generator und XML-Testfall-Generator (IBM) • unter Verwendung der NITF DTD
1. Experiment • Variation von P (Profile)
2. Experiment • Variation von D (max. Tiefe)
Variation von W („*“-Wahrscheinlichkeit) 3. Experiment
Zusammenfassend • XFilter erweist sich als hoch skalierbares System • list balancing mit prefiltering ist Methode mit größtem Performance-Gewinn • bei sehr unausgewogener Verteilung der Elemente in den Queries ist list balancing von sich aus schon sehr effektiv, evtl. der Methode mit prefiltering vorzuziehen (Ressourcen schonender) - o -