XML-Unterstützung durch MS SQL Server
date post
01-Jan-2016Category
Documents
view
41download
0
Embed Size (px)
description
Transcript of XML-Unterstützung durch MS SQL Server
XML-Untersttzung durch MS SQL ServerVortrag Nr. 11 im Seminar XML und Datenbankenim SoSe 2008 (Block: 08./09.05.2008)
von Mirko Zipfel
bersichtXML und SQL Server 2000XML und SQL Server 2005XML als DatentypSchemata und IndexeXQuery und XML-DMLXML und SQL Server 2008Listen und Vereinigungen, Lax ValidationXQuery- und XML-DML-NeuerungenZusammenfassung Quellen
XML und SQL Server 2000Interface zum Zugriff auf relationale Daten (Import: OpenXML, Export: FOR XML)also nur Mapping mglichXML in DB: CLOB oder BLOBKeine Untersttzung fr Validierung oder spezielle IndizierungClient-API: SQLXMLUntermenge von XPath 1.0 z.B. keine rekursiven XML-Schemata und Garantie fr Element-Reihenfolge
XML und SQL Server 2005XML als DatentypSchemata und IndexeXQuery und XML-DML
XML und SQL Server 2005XML als DatentypEinfhrung des Datentyps xmlfr Spalten, Variable und ParameterEigenes internes Format auf Basis von BLOB2 Arten: untyped und typed
XML und SQL Server 2005XML als DatentypUntyped XMLan kein Schema gebunden, nur allgemeine Komformittsprfungkann XML-Dokumente, Fragmente und Texte aufnehmenBsp.: Create Table docs ( pk int Primary Key, xCol xml not null)
XML und SQL Server 2005XML als Datentyp5 Methoden mit XQuery-Argumenten4 lesende:query(): Extraktion von Teildokumentenvalue(): Extraktion eines Skalarsexists(): Existenzprfung von Knotennodes(): Knotenextraktion1 modifizierende:modify(): nderung von Skalaren, Hinzufgen und Lschen von Teilbumen
XML und SQL Server 2005XML als DatentypBsp. 1: SELECT xCol.query( /doc[@id = 123]//section) FROM docs WHERE xCol.exists(/doc[@id=123]) = 1
XML und SQL Server 2005XML als DatentypBsp. 2: UPDATE docs SET xCol.modify( insert Background after (/doc//section[@num=1])[1])
XML und SQL Server 2005XML als DatentypTyped XMLBindung an Sammlung von XML-Schemata Validierung bei Insert und Update2 Varianten mglich: Document (nur eine Wurzelelement)Content (mehrere Wurzelelemente mglich)Bsp.:Create Table xmlCat ( id int primary key, doc xml(content myColl))
XML und SQL Server 2005Schemata und IndexeSchemata fr typed XML ntigAblage in CollectionsMglichkeit nachtrglich Collection um weitere Schemata zu erweiternXML-Indexe: 2 Arten (primr + sekundr)sowohl auf typed wie untyped mglichVolltext-Index (ignoriert MarkUp-Elemente nur Inhalte werden indiziert)
XML und SQL Server 2005Schemata und IndexePrimrer XML-IndexGruppierter Index auf Basistabelle ntigB+-Baum mit Eintrgen fr:ElementnamenAttributnamenKnotenwerteTypangabenKnotenreihenfolgePfad- und StrukturangabenTagwerte werden durch Integer substituiertPfadangaben in reverse order (schnelles Auffinden bei vollstndig geg. Pfad)
XML und SQL Server 2005Schemata und IndexeSekundre XML-Indexeaufbauend auf primren XML-Index3 Arten fr spezielle AnfragenPATH B+-Baum fr (path, value)PROPERTY B+-Baum fr (PK, path, value)VALUE B+-Baum fr (value, path)Weitere Eigenschaften:Tiefe max. 128 EbenenWerte bis 128 Bytes in Index, sonst interner VerweisCost-Based Optimizer bercksichtigt auch XML-Indexe
XML und SQL Server 2005Schemata und IndexeBsp. Primrer XML-Index: Create Primary XML Index idx_xCol on docs (xCol)Bsp. Sekundrer XML-Index: Create XML Index idx_xCol_Path on docs (xCol) USING XML Index idx_xCol FOR PATHBsp. Volltext-Index auf XML-Spalte: Create Fulltext Catalog ft as Default Create Fulltext Index on dbo.docs (xCol) Key Index PK_docs_7F60ED59
XML und SQL Server 2005Schemata und IndexeBsp. Volltext und XQuery kombiniert: SELECT * FROM docs WHERE CONTAINS(xCol, Secure) AND xCol.exists( /book/title/text() [fn:contains(.,Secure)]) = 1Secure im Titel (per XQuery) und irgendwo im Text (per VT-Index)
XML und SQL Server 2005XQuery und XML-DMLServer-seitige Untersttzung fr XQuery in T-SQLUntermenge orientiert an Entwurf vom Juli 2004Untermenge von FLWOR vorhandenIteration per FOR (F)Knotenprfung per WHERE (W)Sortierung per ORDER BY (O)Rckgabe der Werte per RETURN (R)
XML und SQL Server 2005XQuery und XML-DMLBsp. XQuery mit FLWOR: SELECT pk, xCol.query( FOR $s in /doc[@id = 123]//section WHERE $s/@num >= 3 RETURN {data($s/title)} FROM docs
XML und SQL Server 2005XQuery und XML-DMLXQuery-Abfragen mit FLWOR:eigener XQuery-Compilerstellt Unterabfrage-Baum im Abfragebaum der Gesamtabfrage darWHERE-Klausel fr jede Zeile in TabelleNutzung der XML-Datentyp-Methoden und IndexeWenn Bedingung erfllt Sperre auf Zeile und Auswertung der SELECT-KlauselSonst berspringen und zu nchster Zeile
XML und SQL Server 2005XQuery und XML-DMLXML-DML als Erweiterung zu XQuery fr ManipulationenEinfgen / Lschen von Teilbumen mit Positionsangaben beim EinfgenEinfgen von Attributen, Elemente und Text-Knoten wird untersttztndern von Skalarwerten
XML und SQL Server 2005XQuery und XML-DMLBsp. Preisnderung 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)
XML und SQL Server 2008Listen und Vereinigungen, Lax ValidationXQuery- und XML-DML-Neuerungen
XML und SQL Server 2008Listen und Vereinigungen, Lax ValidationSQL Server 2005: Keine Untersttzung fr Vereinigung von List-TypenGrenangabe 1: S, M, LGrenangabe 2: 22, 24, 26 Validierung erst in SQL Server 2008 mglich von:Vereinigungen von List-TypenListen von Vereinigungstypen
XML und SQL Server 2008Listen und Vereinigungen, Lax ValidationLax ValidationSQL Server 2005:Wildcards la any, anyType, anyAttribute nur durch Angabe skip in Schema validierbar (lax wird nicht verstanden)SQL Server 2008:Angabe lax wird jetzt richtig bercksichtig
XML und SQL Server 2008XQuery- und XML-DML-NeuerungenXQuery: bei FLWOR nun auch LET (L) mglichLET fr VariablenzuweisungBsp.: SELECT @x.query( { for $invoice in /Invoices/Invoice let $count := count($invoice/Items/Item) order by $count return {$invoice/Customer] {$count} } )Einschrnkung: keine Zuweisung von zusammengesetzten Elementen mglich
XML und SQL Server 2008XQuery- und XML-DML-NeuerungenXML-DML-Neuerung:Einfgen von Subbumen ber SQL-Variablen mglich (zuvor nur fr Auswertung mglich)Bsp.: Declare @newBike xml Set @newBike =Racing Bike Set @productList.modify( insert sql:variable(@newBike) as last into (/Products)[1])
ZusammenfassungSQL Server 2000:Nur Mapping fr Im-/ExportSQL Server 2005:XML-DatentypSubmenge von XQuery (nicht normkonformen bezeichnete Methoden)Einschrnkungen bei SchemataKeine Vereinigungstypen von Listen, SQL Server 2008:Gegenber Version 2005 einige NachbesserungenImmer noch keine Normkomformitt bei:SQL/XML:2006-Typen (nur Untermenge)Nur XQuery-Untermenge und Bezeichnungen wie query statt XMLQUERY,
QuellenPal, 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 Whats 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.Mller: Verfahren zur Verarbeitung von XML-Werten in SQL-Anfrageergebnissen. Abschnitt 2.12.2 MS SQL Server 2005. Jena, April 2008.