Heim  >  Artikel  >  Backend-Entwicklung  >  Die XML-Datenabfragetechnologie ist heutzutage zu einem heißen Forschungsthema geworden.

Die XML-Datenabfragetechnologie ist heutzutage zu einem heißen Forschungsthema geworden.

黄舟
黄舟Original
2017-02-13 15:49:191331Durchsuche

XML (Extensible Markup Language) ist zum Standard für die Datendarstellung und den Datenaustausch in Webanwendungen geworden. Mit der rasanten Entwicklung des Internets, insbesondere der weit verbreiteten Nutzung von E-Commerce, Webdiensten und anderen Anwendungen, haben Daten vom Typ XML stark zugenommen zur aktuellen Mainstream-Datenform werden. Daher ist die XML-Datenverwaltungstechnologie, insbesondere die XML-Datenabfragetechnologie, zu einem aktuellen Forschungsschwerpunkt geworden.


Im Vergleich zu relationalen Daten hat XML verschiedene Vorteile, sein größter Nachteil ist jedoch seine Effizienz. Denn in einer relationalen Datendatei muss der Feldname der Daten nur einmal vorkommen, während in der XML-Datendatei der Elementname wiederholt vorkommt, was sich definitiv auf die Effizienz der Abfrage auswirkt. Um die Abfrageeffizienz von XML so weit wie möglich zu verbessern, ist es notwendig, eine Indexierungsfunktion für den XML-Typ bereitzustellen.


Das World Wide Web Consortium hat am 23. Januar 2007 XPath2.0 und XQuery1.0 als empfohlene Standards identifiziert und damit den vorherigen Wettbewerb zwischen verschiedenen Abfragesprachen beendet. Basierend auf diesem Standard haben neben traditionellen Herstellern auch verschiedene wissenschaftliche Forschungseinrichtungen Implementierungen von XPath und XQuery (in der Literatur werden mehr als ein Dutzend erwähnt) mit unterschiedlichen Speichermodellen, unterschiedlichen Abfragealgorithmen und Optimierungsmethoden vorgeschlagen In diesem Zusammenhang hat die Dameng Database Company auch ein eigenes XML-Abfrage-Engine-Modell vorgeschlagen, das auf ihrer eigenen Entwicklungsstrategie basiert. Derzeit befindet sich die XML-Abfrage-Engine von Dameng in intensiver Entwicklung, und die Einrichtung effektiver Indizes für XML-Daten ist ein wichtiger Faktor Datenabfrageleistung. Basierend auf einer eingehenden Analyse der Indexierungstechnologie bestehender Datenbankprodukte wird eine sinnvollere Indexstruktur für die XML-Abfrage-Engine von Dameng entworfen, damit die Engine eine optimale Leistung erzielen kann.


Einführung in die XML-Indexierungstechnologie


Derzeit gliedert sich die Forschung zu XML hauptsächlich in zwei Aspekte. Eine davon ist eine native Datenbank für die Speicherung, Abfrage und Verwaltung halbstrukturierter Daten wie XML. Die Daten und Metadaten werden vollständig in XML-Strukturen ausgedrückt und haben nichts mit dem zugrunde liegenden Datenspeicherformat (wie Objektmodell, relationales Modell) zu tun , usw.). Das andere ist die gegenseitige Konvertierung zwischen ihr und der relationalen Datenbank, wobei die ausgereifte Technologie der relationalen Datenbank zur Verarbeitung von XML-Daten verwendet wird. Da die letztere Richtung eine größere praktische Bedeutung hat, ist sie zum Schwerpunkt der XML-Forschung geworden.


Neben der Speicherlösung ist auch die Indizierungstechnologie einer der wichtigsten Faktoren bei der Bestimmung eines Datenbanksystems. Wenn für XML-Dokumente keine Indexstruktur erstellt wird, führt jede Abfrage nach XML-Daten wahrscheinlich dazu, dass der gesamte Dokumentbaum durchlaufen wird. Mit zunehmendem XML-Datensatz ist dieser Mehraufwand nicht tolerierbar. Daher ist die Forschung zur XML-Indextechnologie von hohem theoretischen und praktischen Wert.


Obwohl die traditionelle Indexierungstechnologie nach langfristiger Akkumulation relativ ausgereift ist, basiert diese Art der Indexierungstechnologie hauptsächlich auf Werten (und nicht auf Mustern mit bestimmten Beziehungen). Die Funktion zum Auffinden von Datensätzen achtet nicht besonders auf die logische Beziehung zwischen Datensätzen. Die grundlegende Funktion der XML-Datenabfrage besteht darin, Daten zu extrahieren, die dem Muster entsprechen, basierend auf der Eingabe von Mustermerkmalen (strukturelle Beziehungen, die in Form von Regelmäßigkeiten beschrieben werden). Daher besteht der Hauptinhalt der Indizierung in XML darin, Techniken zu entwerfen, die für den Mustervergleich geeignet sind.


XML-Indexklassifizierung


Pfadbasierter XML-Index


Der pfadbasierte Index basiert auf den Pfadinformationen von Knoten in der XML-Baumstruktur und verwendet eine bestimmte Reduktionsmethode, sodass die reduzierte Baumstruktur nur unterschiedliche Pfadinformationen beibehält und es keine zwei Dateien mit demselben Pfad gibt . Knoten. Zu den vorgeschlagenen Indizes gehören: DataGuides-Index, Index Fabric-Index, Adaptive Path Index für XML-Daten (APEX)


Der Dataguides-Index ist eine strukturelle Zusammenfassung des verfeinerten Pfadanfangs vom Wurzelknoten. Die durch die Verkettung von Kantenbeschriftungen gebildeten Zeichenfolgenpfade werden in den Datenleitfäden nur einmal beschrieben. Datenführer reduzieren die Anzahl der erforderlichen Knoten beim Durchlaufen von Pfadabfragen und sind beim Durchlaufen von XML-Dokumenten vom Stamm aus effizient. Allerdings erfordern Pfadabfragen, die Platzhalterzeichen enthalten, oder Pfadabfragen mit der im XPath-Standard definierten Nachkommen-oder-Selbst-Achse mehrere Verbindungsvorgänge, was zu einer geringen Abfrageeffizienz und Datenredundanz führt.


Schreiben Sie dann die Java-Objektdatei TestLob.java über diese beiden großen Felder und definieren Sie den Typ als CLOB- und BLOB-Attributfelder als String- bzw. Byte[]-Typen, sofern erforderlich to CLOB verarbeitet große Texttypen und entspricht daher dem String-Typ in Java. BLOB verarbeitet einige große Dateien, die nicht streng definiert sind und in einem binären Stream-Format gespeichert werden. Lassen Sie ihn daher den Typ byte [] verwenden und definieren Sie ihn Getter dieser beiden Attribute bzw. Setter-Methode, der relevante Code lautet wie folgt:


Der Dataguides-Index ist eine strukturelle Zusammenfassung des verfeinerten Pfads ausgehend vom Wurzelknoten. Die durch die Verkettung von Kantenbeschriftungen gebildeten Zeichenfolgenpfade werden in den Datenleitfäden nur einmal beschrieben. Datenführer reduzieren die Anzahl der erforderlichen Knoten beim Durchlaufen von Pfadabfragen und sind beim Durchlaufen von XML-Dokumenten vom Stamm aus effizient. Allerdings erfordern Pfadabfragen, die Platzhalterzeichen enthalten, oder Pfadabfragen mit der im XPath-Standard definierten Nachkommen-oder-Selbst-Achse mehrere Verbindungsvorgänge, was zu einer geringen Abfrageeffizienz und Datenredundanz führt.


Index Fabric ist eine auf dem Patricia Trie-Baum entwickelte Indexstruktur. Sie codiert jeden Markierungspfad zu jedem Elementknoten und fügt diese codierten Werte dann in den Patricia Trie-Baum ein XML-Daten entsprechend dem Pfad in der Abfrage der Zeichenfolge. Codieren Sie bei der Abfrage zunächst den Abfragepfad in eine Zeichenfolgenform und durchsuchen Sie ihn dann im Indexbaum. Der Vorteil des Index Fabric-Index besteht darin, dass er die hierarchischen Strukturinformationen von XML-Daten speichert, den Abruf von XML-Daten mit Schema- und schemalosen Informationen einheitlich handhabt und den Zeitaufwand für die Abfrage und Aktualisierung von XML-Daten im Zusammenhang mit der Hierarchie verringert Die Länge des Indexschlüssels hängt damit zusammen. Der Nachteil des Index Fabric-Index besteht darin, dass die strukturelle Beziehung zwischen Elementknoten verloren geht, da nur die Informationen von Elementknoten mit Textwerten gespeichert werden. Aus diesem Grund sind Index Fabric-Indizes, ähnlich wie DataGuides-Indizes, nicht effizient bei der Verarbeitung von Teilübereinstimmungsabfrageausdrücken mit Nachkommen-oder-Selbst-Achsen, die im XPath-Standard


definiert sind. APEX [14] führt Informationen ein, die von der Verteilung von XML-Datenabfragen abhängen: Label-Knoten, die häufig vorkommenden XML-Abfrageanweisungen entsprechen, werden vorab in einer Hash-Struktur gespeichert. Seine Funktion ähnelt der Funktion von Cache: Wenn eine neue Abfrage verarbeitet werden muss, durchsucht es zunächst die Hash-Tabelle, um festzustellen, ob ein zufriedenstellender Knotensatz vorhanden ist. Für Abfrageausdrücke mit Elementwerten oder Attributwerten ist es jedoch weniger effizient.


Knotenbasierter Index


Knotenbasierter Index zerlegt XML-Daten im Wesentlichen in Dateneinheiten. Datensatzerfassung und -speicherung die Standortinformationen der Einheit in den XML-Daten im Datensatz. Im Gegensatz zu pfadbasierten Indizes durchbrechen knotenbasierte Indizes die Einschränkung, dass Knoten über Etikettenpfade gefunden werden müssen, und zerlegen XML-Daten in kanonischer Form in Knotendatensätze. Da er die Standortinformationen von Knoten speichert und sich gut in ausgereifte relationale Datenbankverwaltungssysteme integrieren lässt, ist er derzeit der am weitesten verbreitete Index.


Je nach den verschiedenen Kodierungsmethoden von Standortinformationen können knotenbasierte Indizes im Allgemeinen in die folgenden Kategorien unterteilt werden:


1. Präfixbasierter Index


Der präfixbasierte Index ist hauptsächlich ein Index, der auf der Kodierung von Dewey[12] im Dokument [13] basiert. verwendet ebenfalls eine ähnliche Methode und bietet eine Methode zum Komprimieren von ORDPATH, die auf die Indexorganisation von SQL Server 2005 angewendet wurde.



Die Grundidee der Präfixkodierung besteht darin, die Kodierung des übergeordneten Knotens eines Knotens direkt als Präfix der Knotenkodierung zu verwenden Um zu bestimmen, ob ein Knoten v ein Nachkomme eines anderen Knotens u ist, muss für die Präfixkodierung einfach ermittelt werden, ob der Code von u das Präfix des Codes von v ist. Eine wichtige Eigenschaft von Präfix-Kodierungsindizes ist ihre Wörterbuchreihenfolge: Für jeden Knoten u im Teilbaum mit Wurzel am Knoten r ist seine Präfix-Kodierung c(u) größer (kleiner als) sein linker Geschwister-Teilbaum (rechter Geschwister-Teilbaum). Die Präfix-Kodierung aller Knoten in . Daher können präfixbasierte Indizes nicht nur die Berechnung von Einschlussbeziehungen, sondern auch die Berechnung von Dokumentpositionsbeziehungen effektiv unterstützen.


2. Index basierend auf Intervallcodierung


Für den Intervallcodierungsindex ist jeder Knoten im Baum T angegeben ein Intervallcode [Anfang, Ende], der Folgendes erfüllt: Der Intervallcode eines Knotens enthält den Intervallcode seiner Nachkommenknoten. Mit anderen Worten: Knoten u im Baum T ist genau dann der Vorfahre von Knoten v, wenn Start (u)


Das erste Intervallcodierungsschema ist die Dietz-Codierung. Jedem Knoten im Baum T wird eine Durchlaufsequenznummer vor der Bestellung und eine Durchlaufsequenznummer nach der Bestellung zugewiesen. Da ein Vorfahrenknoten u im Baum T vor (nach) seinem Nachkommenknoten v in der Durchquerung vor der Bestellung (Durchquerung nach der Bestellung) erscheinen muss, sind die Knoten u und v Vorfahren/Nachkommen-Beziehungen, wenn PRe(u)


Ein weiteres typisches Beispiel für einen intervallcodierten Index ist der XISS-Index, der jedem Knoten ein Zahlenpaar zuweist, wobei die Reihenfolge erweitert wird. Vorbestellungscodierung, Größe ist der Bereich der Nachkommen des Knotens. Für alle Knoten X und Y in einem Dokumentbaum gilt genau dann, wenn order(x)


XISS-Index die ursprüngliche Abfrageanweisung in Unterausdrücke zerlegt. Implementieren Sie dann die Abfrage für diese Unterausdrücke und verknüpfen Sie schließlich diese Zwischenergebnisse, um den Abfrageergebnissatz zu erhalten. Dadurch können Abfrageanweisungen mit Platzhalterzeichen besser unterstützt werden. Das endgültige Abfrageergebnis wird jedoch nach der Verkettung der einzelnen Zwischenergebnisse erhalten. Obwohl eine solche Methode tatsächlich alle Wildcard-Probleme lösen kann, dürfte die Verkettung solcher Zwischenergebnisse insbesondere bei einfachen Ausdrücken mit langen Pfaden sehr zeitaufwändig sein.


Vergleich zweier Indizierungsmechanismen


Die pfadbasierte Indizierung basiert hauptsächlich auf der Strategie der Knotenverschmelzung durch Knoten usw. Mit Techniken wie Valenz und Pfadäquivalenz können wir eine Indexstruktur erhalten, die viel kleiner ist als das Originaldokument. Ihre Struktur ist immer noch baumförmig, sodass wir bei der Verarbeitung von Abfragen grundsätzlich immer noch den gesamten Index durchlaufen müssen Baum, um die Ergebnisse zu erhalten. Pfadbasierte Indizes können einfache Pfadausdrucksabfragen sehr gut unterstützen, bei regulären Pfadausdrücken funktioniert dies jedoch nicht sehr gut.


Knotenbasierter Index indiziert jeden Knoten durch Kodierung. Die strukturelle Beziehung zwischen Knoten kann durch Kodierung in konstanter Zeit bestimmt werden. Er kann reguläre Pfadausdrücke gut unterstützen, insbesondere wenn die Abfrage viele Zwischenergebnisse liefert , der Join-Vorgang des Knotenindex ist teuer.


Pfadbasierte Indizierung und knotenbasierte Indizierung haben jeweils ihre eigenen Vor- und Nachteile, können sich jedoch gegenseitig ergänzen. Derzeit wird die knotenbasierte Indizierung in praktischen Anwendungen häufiger verwendet und die Forschung ist relativ ausgereift. Daher konzentriert sich die Forschung der Dameng Company zur XML-Indexstruktur hauptsächlich auf die knotenbasierte Indizierung und führt entsprechende Verbesserungen in Bezug auf die pfadbasierte Indizierung durch .

Das Obige ist der Inhalt der XML-Datenabfragetechnologie, der heute zu einem heißen Forschungsthema geworden ist. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn