1 / 29

XML-Werte in SQL/XML

XML-Werte in SQL/XML. Von Viktor Folmer. Inhalt. Datentyp XML Knotenfunktionen Unter- und Unter(unter)typen Validierung Prädikate Auswahl weiterer Funktionen. Der Datentyp XML in SQL/XML:2003. Seit SQL/XML:2003 Basisdatentyp in SQL

favian
Télécharger la présentation

XML-Werte in SQL/XML

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. XML-Werte in SQL/XML Von Viktor Folmer

  2. Inhalt • Datentyp XML • Knotenfunktionen • Unter- und Unter(unter)typen • Validierung • Prädikate • Auswahl weiterer Funktionen

  3. Der Datentyp XMLin SQL/XML:2003 • Seit SQL/XML:2003 Basisdatentyp in SQL • Speicherung von XML-Dokumenten als Wert in einer Tabellenspalte • Grund: steigende Praxisrelevanz von XML • … und weiterhin breiter Einsatz relationaler Datenbanken XML-Welt und SQL-Welt zusammenbringen !

  4. Der Datentyp XML • Vorher: Speicherung von XML in relationalen DBMS nur mit „Krücken“ • varchar / CLOB • shredding • extender • Seit 2003 Basisdatentyp „XML“ basiert auf Infoset

  5. Exkurs : Information Set • abstrakte Datenzusammenstellung, die festschreibt, welche Informationen ein XML-Dokument enthält • Infoset kann als Baum angesehen werden • Ein XML-Dokument hat ein Infoset, wenn : • es wohlgeformt ist und • die Anforderungen der Namensräume erfüllt • Auch ein ungültiges XML-Dokument kann ein Infoset besitzen

  6. Werte des Datentyps „XML“in SQL/XML:2003 • Zulässige Werte: • (SQL-)Nullwert • Wohlgeformtes XML-Dokument • Nicht wohlgeformtes XML-Dokument (eingeschränkt) • Validität (noch) nicht überprüfbar

  7. Datentyp „XML“ in SQL/XML:2006 • Einordnung: Erweiterung von SQL/XML:2003 seit 2006 Teil von SQL:2003 • Umstellung des Datentyps auf XQuery –Datenmodell • Vorteile: • Unterstützung von Sequenzen • Erweiterung der Datentypen im XML-Dokument

  8. Exkurs: XQuery-Datenmodell • Sequenz: Folge von Sequenzeinträgen: • Atomarer Wert • Knoten • 7 Knotenarten in Bäumen und Sequenzen • Dokumentknoten • Elementknoten • Attributknoten • Namensraumknoten • Verarbeitungsanweisungsknoten • Kommentarknoten • Textknoten • Nach bestimmten Regeln angeordnet

  9. Exkurs: XQuery-Datenmodell E P V D V N E E E E E E N N N N T T T T N T E E C A A

  10. Mehr Funktionen • Logische Konsequenz: Jede Knotenart benötigt eine Entsprechung in SQL

  11. Mehr Funktionen SELECT XMLELEMENT ( NAME "angestellte", XMLATTRIBUTES (a.Gehalt),ID) AS Geringverdiener FROM Angestellte a WHERE Gehalt < 450 Beispiel: <angestellte Gehalt=„280“ > 123456 </angestellte> <angestellte Gehalt=„330“ > 123424 </angestellte> <angestellte Gehalt=„310“ > 123434 </angestellte> <angestellte Gehalt=„315“ > 113424 </angestellte>

  12. Untertypen des Datentyps „XML“ • SEQUENCE: beliebige Sequenz (Folge von Bäumen und/oder atomaren Werten) • CONTENT: nur ein Baum mit einem D-Knoten als Wurzel in der Sequenz erlaubt. Wie viele E-Knoten Kinder des D-Knotens sind ist unwichtig • DOCUMENT: wohlgeformte XML-Dokumente, nur ein Baum mit einem D-Knoten als Wurzel und nur ein E-Knoten als Kind

  13. Untertypen des Datentyps „XML“ • Die Untertypen besitzen eine Hierarchie: • Jeder XML-Wert vom Typ XML(DOCUMENT) ist gleichzeitig auch eine Instanz von XML(CONTENT) • Jeder Wert vom Typ XML(CONTENT) ist eine Instanz von XML(SEQUENCE)

  14. Untertypen des Datentyps „XML“ • XML(SEQUENCE) • XML(CONTENT) • XML(DOCUMENT)

  15. Unter(unter)Typen des Datentyps „XML“ • Folgende Unter(unter)typen verfeinern die Untertypen XML(CONTENT) und XML(DOCUMENT): • UNTYPED: nicht validierte XML-Dokumente, E-Knoten sind vom Typ untyped und dessen A-Knoten sind vom Typ untypedAtomic • XMLSCHEMA: gegen ein bestimmtes Schema validiertes XML-Dokument • ANY: der XML-Wert ist entweder gegen ein Schema validiert oder er ist es nicht

  16. Unter(unter)Typen des Datentyps „XML“ • Syntax Beispiele: • CREATETABLEAngest ( ID integer, xml_emp_dataXML(DOCUMENT(UNTYPED))) • CREATE TABLE Angest ( ID integer, xml_emp_dataXML(DOCUMENT(XMLSCHEMAURI ’http://...’)) • CREATE TABLE Angest ( ID integer, xml_emp_dataXML(DOCUMENT(ANY)))

  17. Validierung mit SQL • Nicht nur einzelne Dokumente, sondern auch ganze Sequenzen können mit der Funktion XMLVALIDATE gegen ein bestimmtes Schema validiert werden • Sequenz wird Baum für Baum überprüft • Bei erfolgreicher Validierung werden die Knoten mit Typinformationen angereichert

  18. Validierung mit SQL Einschränkungen: • In einer Sequenz dürfen bei der Validierung … • Textknoten • Attributknoten • Namensraumknoten • Atomare Werte nicht vorkommen • Einzelne Bäume einer ungültigen Sequenz können über einen „Umweg“ doch validiert werden

  19. Prädikate • Zum Test auf bestimmte Eigenschaften von XML-Werten stehen auch neue Prädikate zur Verfügung: • IS DOCUMENT: prüft ob der XML-Wert den Eigenschaften eines XML-Dokuments (validiert oder ungültig) genügt • IS CONTENT: prüft ob der XML-Wert ein Dokument im Sinne des XQuery-Datenmodells ist • IS VALID: prüft ob ein XML-Wert einem bestimmten Schema genügt. Im Gegensatz zu XMLVALIDATE findet hier keine Typanreicherung statt.

  20. Prädikate • Für alle diese Prüfungen gilt: Es wird lediglich ein Wahrheitswert zurückgegeben und die Daten bleiben unverändert • Sie können z.B. in der WHERE –Klausel verwendet werden um nur Zeilen mit der jeweiligen Gültigkeit zu liefern • Beispiel : SELECT * FROMAngest WHERExml_emp_dataIS [NOT] DOCUMENT

  21. Übergabe von Knoten • Wird eine Sequenz zur Verarbeitung an eine SQL-Funktion übergeben, muss der Übergabemechanismus spezifiziert werden • Dazu gibt es – wie bei Programmiersprachen – zwei unterschiedliche Methoden • BY REF: Die Knoten der Sequenz selbst werden übergeben • BY VALUE: Nur Kopien der Knoten werden übergeben • Dazu wird das Konzept der Knotenidentität des XQuery-Datenmodells genutzt. Alle Knoten haben eine Knotenidentität, nutzt man BY VALUE, bekommen die Kopien eine neue Knotenidentität.

  22. XMLQuery • Bettet XQuery-Anfragen in SQL ein • Kann nach bestimmten Werten einer SQL-Tabelle in XML-Dokumenten suchen • Dies geschieht indem ein SQL-Wert an eine globale XQuery-Variable gebunden wird und diese Variable dann im XQuery-Ausdruck verwendet werden kann • Die Rückgabe des XQuery-Ausdrucks an SQL erfolgt BY REF oder BY VALUE

  23. XMLQuery • Beispiel: SELECTtop_price, XMLQUERY ( ´ for $cost in /buyer/contract/item/amount where /buyer/name = $var1 return $cost ´ PASSING BY VALUE "F.Castro", AS var1 RETURNING SEQUENCE BY VALUE ) FROMbuyers

  24. XMLTable • Referenziert einen XML-Wert als eine Tabelle • Im Gegensatz zum shredding keine Speicherung als Tabelle, sondern nur virtuell • In SQL-Abfragen lassen sich die Elemente dann als Spalten ansprechen

  25. XMLTable SELECT X.* FROMPurchaseOrders PO, XMLTable ( '//item' PASSING PO.XMLpo COLUMNS "Seqno" FOR ORDINALITY, "Part #" CHAR(6) PATH '@partnum', "ProdName" CHAR(20) PATH 'productName', "Quantity" INTEGER PATH 'quantity', "Price" DECIMAL(9,2) PATH 'USPrice', "Date" DATE PATH 'shipDate' ) AS X WHEREPO.KeyField = 1

  26. XMLTable – virtuelle Tabelle • Nutzungsmöglichkeiten von XMLTable: • Persistente Speicherung des „geshredderten“ XML-Wertes mit INSERT INTO • Joins mit anderen Tabellen

  27. XMLCAST • Konvertiert Werte von SQL nach XML und umgekehrt • existierende CAST-Funktion nicht geeignet, da in vielen Produkten das „Casten“ von/nach XML bereits als Character-String implementiert ist Syntax: XMLCAST ( xml_data AS date) • Entweder der Quell- oder der Zieldatentyp (oder auch beide) müssen XML sein • Das Schlüsselwort EMPTY kann nach XML gecastet werden, um kinderlose Dokumentenknoten oder leere Sequenzen zu erzeugen XMLCAST (EMPTY AS XML(SEQUENCE))

  28. Abschließende Worte zur Norm • Entwicklung geht Richtung Ausbau der XML-Unterstützung • Die Norm ist kein Gesetz • Viele Bereiche sind auch in der Norm „implementationdefined“

  29. Vielen Dank

More Related