xml-unterstützung durch ms sql server
Post on 01-Jan-2016
55 Views
Preview:
DESCRIPTION
TRANSCRIPT
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 Listen und Vereinigungen, Lax Validation XQuery- und XML-DML-Neuerungen
Zusammenfassung Quellen
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
XML und SQL Server 2005
XML als Datentyp Schemata und Indexe XQuery und XML-DML
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
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)
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
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
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]‘)
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))
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)
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)
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
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
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)
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)
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
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
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
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‘)
XML und SQL Server 2008
Listen und Vereinigungen, Lax Validation
XQuery- und XML-DML-Neuerungen
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
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
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
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]‘)
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, …
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.
top related