1 / 27

XML-Unterstützung durch MS SQL Server

XML-Unterstützung durch MS SQL Server. Vortrag Nr. 11 im Seminar „XML und Datenbanken“ im SoSe 2008 (Block: 08./09.05.2008) von Mirko Zipfel. Übersicht. XML und SQL Server 2000 XML und SQL Server 2005 XML als Datentyp Schemata und Indexe XQuery und XML-DML XML und SQL Server 2008

holmes-pate
Download Presentation

XML-Unterstützung durch MS SQL Server

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-Unterstützung durch MS SQL Server Vortrag Nr. 11 im Seminar „XML und Datenbanken“ im SoSe 2008 (Block: 08./09.05.2008) von Mirko Zipfel

  2. Übersicht • XML und SQL Server 2000 • XML und SQL Server 2005 • XML als Datentyp • Schemata und Indexe • XQuery und XML-DML • XML und SQL Server 2008 • Listen und Vereinigungen, Lax Validation • XQuery- und XML-DML-Neuerungen • Zusammenfassung • Quellen

  3. XML und SQL Server 2000 • Interface zum Zugriff auf relationale Daten (Import: OpenXML, Export: FOR XML) • also nur Mapping möglich • XML in DB: CLOB oder BLOB • Keine Unterstützung für Validierung oder spezielle Indizierung • Client-API: SQLXML • Untermenge von XPath 1.0z.B. keine rekursiven XML-Schemataund Garantie für Element-Reihenfolge

  4. XML und SQL Server 2005 • XML als Datentyp • Schemata und Indexe • XQuery und XML-DML

  5. XML und SQL Server 2005XML als Datentyp • Einführung des Datentyps „xml“ • für Spalten, Variable und Parameter • Eigenes internes Format auf Basis von BLOB • 2 Arten: untyped und typed

  6. XML und SQL Server 2005XML als Datentyp • Untyped XML • an kein Schema gebunden, nur allgemeine Komformitätsprüfung • kann XML-Dokumente, Fragmente und Texte aufnehmen • Bsp.: Create Table docs ( pk int Primary Key, xCol xml not null)

  7. XML und SQL Server 2005XML als Datentyp • 5 Methoden mit XQuery-Argumenten • 4 lesende: • query(): Extraktion von Teildokumenten • value(): Extraktion eines Skalars • exists(): Existenzprüfung von Knoten • nodes(): Knotenextraktion • 1 modifizierende: • modify(): Änderung von Skalaren, Hinzufügen und Löschen von Teilbäumen

  8. XML und SQL Server 2005XML als Datentyp • Bsp. 1:SELECT xCol.query(‘/doc[@id = 123]//section‘)FROM docs WHERE xCol.exists(‘/doc[@id=123]‘) = 1

  9. XML und SQL Server 2005XML als Datentyp • Bsp. 2:UPDATE docs SET xCol.modify(‘insert <section num=“2“> <title>Background</title></section>after (/doc//section[@num=1])[1]‘)

  10. XML und SQL Server 2005XML als Datentyp • Typed XML • Bindung an Sammlung von XML-Schemata • Validierung bei Insert und Update • 2 Varianten möglich: • Document (nur eine Wurzelelement) • Content (mehrere Wurzelelemente möglich) • Bsp.: Create Table xmlCat ( id int primary key, doc xml(content myColl))

  11. XML und SQL Server 2005Schemata und Indexe • Schemata für typed XML nötig • Ablage in Collections • Möglichkeit nachträglich Collection um weitere Schemata zu erweitern • XML-Indexe: 2 Arten (primär + sekundär) • sowohl auf typed wie untyped möglich • Volltext-Index (ignoriert MarkUp-Elemente  nur Inhalte werden indiziert)

  12. XML und SQL Server 2005Schemata und Indexe • Primärer XML-Index • Gruppierter Index auf Basistabelle nötig • B+-Baum mit Einträgen für: • Elementnamen • Attributnamen • Knotenwerte • Typangaben • Knotenreihenfolge • Pfad- und Strukturangaben • Tagwerte werden durch Integer substituiert • Pfadangaben in „reverse order“(schnelles Auffinden bei vollständig geg. Pfad)

  13. XML und SQL Server 2005Schemata und Indexe • Sekundäre XML-Indexe • aufbauend auf primären XML-Index • 3 Arten für spezielle Anfragen • PATH  B+-Baum für (path, value) • PROPERTY  B+-Baum für (PK, path, value) • VALUE B+-Baum für (value, path) • Weitere Eigenschaften: • Tiefe max. 128 Ebenen • Werte bis 128 Bytes in Index, sonst interner Verweis • Cost-Based Optimizer berücksichtigt auch XML-Indexe

  14. XML und SQL Server 2005Schemata und Indexe • Bsp. Primärer XML-Index:Create Primary XML Index idx_xCol on docs (xCol) • Bsp. Sekundärer XML-Index:Create XML Index idx_xCol_Pathon docs (xCol) USING XML Index idx_xCol FOR PATH • Bsp. Volltext-Index auf XML-Spalte:Create Fulltext Catalog ft as DefaultCreate Fulltext Index on dbo.docs (xCol) Key Index PK_docs_7F60ED59

  15. XML und SQL Server 2005Schemata und Indexe • Bsp. Volltext und XQuery kombiniert:SELECT * FROM docsWHERE CONTAINS(xCol, ‘Secure‘)AND xCol.exists(‘/book/title/text()[fn:contains(.,“Secure“)]‘) = 1 • Secure im Titel (per XQuery) und irgendwo im Text (per VT-Index)

  16. XML und SQL Server 2005XQuery und XML-DML • Server-seitige Unterstützung für XQuery in T-SQL • Untermenge orientiert an Entwurf vom Juli 2004 • Untermenge von FLWOR vorhanden • Iteration per FOR (F) • Knotenprüfung per WHERE (W) • Sortierung per ORDER BY (O) • Rückgabe der Werte per RETURN (R)

  17. XML und SQL Server 2005XQuery und XML-DML • Bsp. XQuery mit FLWOR:SELECT pk, xCol.query( FOR $s in /doc[@id = 123]//section WHERE $s/@num >= 3 RETURN <topic>{data($s/title)}</topic>FROM docs

  18. XML und SQL Server 2005XQuery und XML-DML • XQuery-Abfragen mit FLWOR: • eigener XQuery-Compiler • stellt Unterabfrage-Baum im Abfragebaum der Gesamtabfrage dar • WHERE-Klausel für jede Zeile in Tabelle • Nutzung der XML-Datentyp-Methoden und Indexe • Wenn Bedingung erfüllt Sperre auf Zeile und Auswertung der SELECT-Klausel • Sonst überspringen und zu nächster Zeile

  19. XML und SQL Server 2005XQuery und XML-DML • XML-DML als Erweiterung zu XQuery für Manipulationen • Einfügen / Löschen von Teilbäumen • mit Positionsangaben beim Einfügen • Einfügen von Attributen, Elemente und Text-Knoten wird unterstützt • Ändern von Skalarwerten

  20. XML und SQL Server 2005XQuery und XML-DML • Bsp. Preisänderung bei Buch:UPDATE xmlCat SET document.modify (‘declare namespace bk = “http://myBooks“replace value of (/bk:bookstore/bk:book[@ISBN=“1-861003-11-0“]/bk:price)[1]with 49.99‘)

  21. XML und SQL Server 2008 • Listen und Vereinigungen, Lax Validation • XQuery- und XML-DML-Neuerungen

  22. XML und SQL Server 2008Listen und Vereinigungen, Lax Validation • SQL Server 2005: • Keine Unterstützung für Vereinigung von List-Typen • Größenangabe 1: S, M, L • Größenangabe 2: 22, 24, 26 • Validierung erst in SQL Server 2008 möglich von: • Vereinigungen von List-Typen • Listen von Vereinigungstypen

  23. XML und SQL Server 2008Listen und Vereinigungen, Lax Validation • Lax Validation • SQL Server 2005: • Wildcards à la any, anyType, anyAttributenur durch Angabe skip in Schema validierbar (lax wird nicht verstanden) • SQL Server 2008: • Angabe lax wird jetzt richtig berücksichtig

  24. XML und SQL Server 2008XQuery- und XML-DML-Neuerungen • XQuery: bei FLWOR nun auch LET (L) möglich • LET für Variablenzuweisung • Bsp.: SELECT @x.query(‘<Orders> { for $invoice in /Invoices/Invoicelet $count := count($invoice/Items/Item)order by $countreturn <Order>{$invoice/Customer] <ItemCount>{$count}</ItemCount> </Order>}</Orders>‘) • Einschränkung: keine Zuweisung von zusammengesetzten Elementen möglich

  25. XML und SQL Server 2008XQuery- und XML-DML-Neuerungen • XML-DML-Neuerung: • Einfügen von Subbäumen über SQL-Variablen möglich(zuvor nur für Auswertung möglich) • Bsp.: Declare @newBike xmlSet @newBike =‘<Bike>Racing Bike</Bike>‘Set @productList.modify( ‘insert sql:variable(“@newBike“) as last into (/Products)[1]‘)

  26. Zusammenfassung • SQL Server 2000: • Nur Mapping für Im-/Export • SQL Server 2005: • XML-Datentyp • Submenge von XQuery (nicht normkonformen bezeichnete Methoden) • Einschränkungen bei Schemata • Keine Vereinigungstypen von Listen, … • SQL Server 2008: • Gegenüber Version 2005 einige Nachbesserungen • Immer noch keine Normkomformität bei: • SQL/XML:2006-Typen (nur Untermenge) • Nur XQuery-Untermenge und Bezeichnungen wie query statt XMLQUERY, …

  27. Quellen • Pal, Fussell, Dolobowsky: Microsoft SQL Server 2005 – XML Support in Microsoft SQL Server 2005. Microsoft Corp.: November 2005 (http://download.microsoft.com/download/f/1/c/f1cf7b8d-7fb9-4b71-a658-e748e67f9eba/XML_Support_in_SQL.doc) • Malcolm: Microsoft SQL Server 2008 – What‘s New for XML in SQL Server 2008. Microsoft Corp.: Final Publishing should be in August 2008 (http://download.microsoft.com/download/a/c/d/acd8e043-d69b-4f09-bc9e-4168b65aaa71/WhatsNewSQL2008XML.doc) • Rys: XML and Relational Database Management Systems: Inside Microsoft SQL Server 2005. SIGMOD 2005, June 14-16, 2005. Baltimore, Maryland, USA. • Müller: Verfahren zur Verarbeitung von XML-Werten in SQL-Anfrageergebnissen. Abschnitt 2.12.2 – MS SQL Server 2005. Jena, April 2008.

More Related