XML-Unterstützung durch MS SQL Server

27
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

description

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 - PowerPoint PPT Presentation

Transcript of XML-Unterstützung durch MS SQL Server

Page 1: 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

Page 2: XML-Unterstützung  durch MS SQL Server

Ü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

Page 3: XML-Unterstützung  durch MS SQL Server

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

Page 4: XML-Unterstützung  durch MS SQL Server

XML und SQL Server 2005

XML als Datentyp Schemata und Indexe XQuery und XML-DML

Page 5: XML-Unterstützung  durch MS SQL Server

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

Page 6: XML-Unterstützung  durch MS SQL Server

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)

Page 7: XML-Unterstützung  durch MS SQL Server

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

Page 8: XML-Unterstützung  durch MS SQL Server

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

Page 9: XML-Unterstützung  durch MS SQL Server

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]‘)

Page 10: XML-Unterstützung  durch MS SQL Server

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))

Page 11: XML-Unterstützung  durch MS SQL Server

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)

Page 12: XML-Unterstützung  durch MS SQL Server

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)

Page 13: XML-Unterstützung  durch MS SQL Server

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

Page 14: XML-Unterstützung  durch MS SQL Server

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

Page 15: XML-Unterstützung  durch MS SQL Server

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)

Page 16: XML-Unterstützung  durch MS SQL Server

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)

Page 17: XML-Unterstützung  durch MS SQL Server

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

Page 18: XML-Unterstützung  durch MS SQL Server

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

Page 19: XML-Unterstützung  durch MS SQL Server

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

Page 20: XML-Unterstützung  durch MS SQL Server

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‘)

Page 21: XML-Unterstützung  durch MS SQL Server

XML und SQL Server 2008

Listen und Vereinigungen, Lax Validation

XQuery- und XML-DML-Neuerungen

Page 22: XML-Unterstützung  durch MS SQL Server

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

Page 23: XML-Unterstützung  durch MS SQL Server

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

Page 24: XML-Unterstützung  durch MS SQL Server

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

Page 25: XML-Unterstützung  durch MS SQL Server

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]‘)

Page 26: XML-Unterstützung  durch MS SQL Server

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, …

Page 27: XML-Unterstützung  durch MS SQL Server

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.