• Keine Ergebnisse gefunden

Diskussion dieser Anfrage

Verteilung von XML-Daten auf Textbasis

3.2 Deterministische Endliche Automaten als Basis für eine Anfragespracheeine Anfragesprache

3.2.2 Diskussion dieser Anfrage

Auf Basis der oben dargestellten Automaten lassen sich passende reguläre Ausdrücke aus-werten. Reguläre Ausdrücke haben allerdings nur die Mächtigkeit, reguläre Sprachen zu erfassen. Eine Folge von verschiedenen Tags kann allerdings rekursiv definiert sein. Diese rekursiven Aufeinanderfolgen definieren kontextfreie Sprachen. Diese können wiederum nicht mit Hilfe von deterministischen endlichen Automaten evaluiert werden [HMU00].

Listing 3.4: Beispiel rekursive DTD 1 <! E L E M E N T d e s c r i p t i o n ( parlist , text ) >

2 <! E L E M E N T text (# P C D A T A ) >

3 <! E L E M E N T p a r l i s t ( l i s t i t e m ) >

4 <! E L E M E N T l i s t i t e m ( parlist , text ) >

Eine Suche nach <parlist> und <listitem> im XML-Datensatz dargestellt in Li-sting 3.5, welches auf einer DTD dargestellt in LiLi-sting 3.4 basiert, kann somit nicht evaluiert werden, wie im Folgenden gezeigt wird:

Bei der Suche nach <text> Tags wechselt der Automat immer dann in einen gültigen Zustand wenn der gegebene Tag gelesen wird. Der Zustand wird dann verlassen, wenn ein korrespondierender closing Tag verarbeitet wird. Da auf einen <text> immer auch

183.2. Deterministische Endliche Automaten als Basis für eine Anfragesprache

ein </text> folgen muss, arbeitet der Automat korrekt.

Bei einer Suche nach <parlist> oder<listitem> funktioniert die Auswertung anhand regulärer Ausdrücke allerdings nicht. Durch das nicht-deterministische Aufeinanderfol-gen der verschiedenen Tags untereinander verarbeitet der gegebene Automat die Eingabe nicht korrekt.

Listing 3.5: Ausschnitt aus XML 1 < d e s c r i p t i o n >

Die Lösung besteht in der Verwendung eines Kellerautomaten (KA) anstelle eines DEA, da dieser die Mächtigkeit besitzt, kontextfreie Sprachen zu erkennen [HMU00].

Dadurch ergibt sich die Möglichkeit, kontextfreie Anfragen an das XML zu stellen. Dies ist anhand regulärer Ausdrücke nicht möglich. Eine passendere Anfragesprache hierfür ist XPath [CD+99]. Es gibt hierzu Ansätze, XML-Ströme anhand von Automaten mit XPath anzufragen [GGM+04, GS03, PC03, PC05, DFFT02]. Die Ansätze haben dabei gemein, dass die Anfrage auf den Vorwärtsachsen von XPath erfolgen muss, damit eine Auswertung auf Basis eines Datenstroms erfolgen kann. Dafür muss die Symmetrie zwi-schen verschiedenen Achsen ausgenutzt werden [OMFB02a, OMFB02b]. Zusätzlich zu einer eventuellen Modifikation der Anfrage müssen die bisherigen evaluierten Elemente vorgehalten werden. Dies resultiert in einem zusätzlichen Speicheraufwand. Grundlegend lässt sich festhalten werden dass es möglich ist, alle XPath-Anfragen mit konstantem Speicheraufwand auf einem Datenstrom zu evaluieren. Da der Fokus hier auf der paral-lelen Evaluation von fragmentiertem XML liegt, müssen weitere Überlegungen angestellt werden.

• Es muss davon ausgegangen werden, dass die Fragmente keine valide Baumstruktur haben. So kann eine parallele Evaluation nur auf den Bestandteilen des Fragments basieren, welche für sich wohlgeformt sind. Um eine parallele Verarbeitung zu ge-währleisten, müssen diese Strukturen allerdings bekannt sein. Das bedeutet, dass bei der hier vorgestellten Fragmentierung zuerst diese validen Substrukturen her-ausgefunden werden müssen. Diese müssen anschliessend in einem strukturierten Format verfügbar gehalten werden welches Anfragen erlaubt.

• Die Anfrage selbst muss dahingehend modifiziert werden, dass sie einzelne Teile des Fragments in Form der validen Substrukturen evaluieren kann. Diese Anpas-sung muss speziell die validen Strukturen innerhalb der Fragmente mit einbezie-hen. Zusätzlich muss eine geeignete Lösung für die Kombination der Ergebnisse der Fragmente und der nicht evaluierten Zeichen bereitgestellt werden. Da dieser Schritt abhängig von der Anfrage ist, muss diese Analyse und Modifikation vor jeder Evaluation des Fragments stattfinden.

• Durch diese Art der Verteilung wird nicht gewährleistet, dass die resultierten Frag-mente eine parallele Evaluation abhängig von der Anfrage generell möglich machen.

So kann es passieren, dass ein Großteil von Elementen mit gleichem Tagnamen in einem Fragment abgelegt wird. Eine Evaluation dieses Tags kann nicht parallel ausgeführt werden. Zusätzlich ist eine parallele Evaluation der Fragmente, welche keine valide Struktur besitzen, nicht möglich.

Es ist davon auszugehen dass bei einem grossen XML-Datensatz die Fragmente ganze Bäume beinhalten. Dennoch müssen diese identifiziert werden. Unabhängig vom Ergeb-nis dieser Analyse muss jeder XPath-Ausdruck entsprechend passend zur vorhandenen Substruktur im Hinblick auf eine ideale parallele Evaluation modifiziert werden. Dies hat wiederum einen hohen Aufwand zur Folge da die Anfragen entsprechend umformuliert werden müssen und die vorzuhaltenden Informationen über vorhandene Baumstruktu-ren innerhalb des Fragments vorgehalten werden müssen. Dieser Aufwand muss ohne die Garantie betrieben werden, dass zur Anfrage passende Substrukturen in den Fragmenten enthalten sind.

Diese Argumente sprechen gegen eine Partitionierung von XML-Daten auf Basis der Zeichenkettenrepräsentation. Der Aufwand eines intelligenten Teilens mit Fokus auf eine parallele Evaluation ist ungleich kleiner als eine Handhabung ungleicher Fragmente de-ren Aufteilung auf Anzahl Zeichen basiert. Die Aufteilung der Daten wird in der Regel einmalig vorgenommen. Eine entsprechende Umformulierung der Anfrage abhängig von eventuell vorhandenen Substrukturen muss aber bei jeder Anfrage vorgenommen wer-den. Kombiniert mit der Extraktion und der Speicherung von Informationen über valide Strukturen innerhalb der Fragmente erscheint dieser Aufwand im Vergleich zu einer strukturbasierten Partitionierung von XML-Daten ungerechtfertigt. Aus diesen Grün-den wird dieser Ansatz nicht weiterverfolgt und der Fokus stattdessen auf verschieGrün-dene Arten der Verteilung gelegt, welche abhängig von der Struktur des Originaldokuments die Baumstruktur in valide Substrukturen zerteilen.

203.2. Deterministische Endliche Automaten als Basis für eine Anfragesprache

Kapitel 4

Verteilung von XML-Daten auf