xml data in ms sql server query and modification steven blundy, duc duong, abhishek mukherji,...

Post on 21-Dec-2015

218 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

XML Data in MS SQL Server Query and Modification

Steven Blundy, Duc Duong, Abhishek Mukherji, Bartlett Shappee

CS561

Outline

Introduction XML Data Type

Structure and storageSchema, validationMethods

PublishingFORXML Queries

Approaches for XML integration to DB

Mid-tier Bi-directional XML view

Query view using XPath Schema-driven approach for shredding

Server-side rowset-to-XML aggregator for XML Publishing - FOR XML Query-driven shredding mechanism- Open XML

SQL SERVER 2005 XML Architecture

XML Storage - Native

Checks Well FormednessValidation is optional

XML Documents or Fragments

XML Storage - DB SQL BLOB

Allows for utilization BLOB optimizations Streaming Parsing Compression

Unicode (UTF-16) Strings - UNTYPED Requires Conversion

XML Schema - TYPED Encode to match schema Much more efficient

XML Storage - The Numbers

Advantages of Binary Storage20 to 30% Size ReductionFaster

Limitations2gb of stored binary per instanceHierarchy is limited to 128 Levels

Storage - Schema

Storage OptimizationSizeProcessing

Uses the XML Infoset Defined in an XMLSchemaCollection

Validation - Schema

XML Schema CollectionStores 1+ XML Schemas

Identified by Name Space Not the Same as Constraints (No Business Logic)

Metadata EntityCertain Type are Format Constrained

i.e. Date must use ISO 8601 format

Uses the XML Infoset

Validation - Schema Collection

CREATE XML SCHEMA COLLECTION myCollection AS '<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://myBooks" elementFormDefault="qualified" targetNamespace="http://myBooks"> <xsd:element name="bookstore" type="bookstoreType" /> <xsd:complexType name="bookstoreType"> <xsd:sequence maxOccurs="unbounded"> <xsd:element name="book" type="bookType" /> </xsd:sequence> </xsd:complexType> <xsd:complexType name="authorName"> <xsd:sequence> <xsd:element name="first-name" type="xsd:string" /> <xsd:element name="last-name" type="xsd:string" /> </xsd:sequence> </xsd:complexType></xsd:schema>'

Validation - How?

At Data EntryValidness checked when typed data is

inserted Checking Data

Applied using Cast Updated Schema

Does not Require re-validation

XML DT Methods

All evaluate an XQuery Methods

query() - returns XML outputexists() - checks if expression results in nodesnodes() - returns XML DT valuesvalue() - returns value as SQL DTmodify() - modify XML data

query() & nodes() methods

Both take XQuery string query() returns list of untyped XML nodes

Can be converted to strings For SELECT output

nodes() returns list of typed XML nodes All XML DT methods available count(*) works No converting to strings

exist() & value() methods

exist() returns true if XQuery returns any nodes

value() Takes 2 params: an XQuery & a SQL DTConverts xml value returned by XQuery to

specified SQL type

Example: value()

SELECT data.value(‘(/bibliograph/book/[1]/title)[1]’,‘NVARCHAR(255)’) AS Title

FROM Test

Title

Design Patterns

Example: value() w/ nodes()

SELECT book.value(‘(title)[1]’,‘NVARCHAR(255)’) AS Title

FROM Test CROSS APPLY data.nodes(‘/bibliograph/book’) AS R(book)

Title

Design Patterns

All about XML

Example: exist()

SELECT book.value(‘(title)[1]’,‘NVARCHAR(255)’) AS Title

FROM Test CROSS APPLY data.nodes(‘/bibliograph/book’) AS R(book)

WHERE data.exist(‘/bibliograph/book’) = 1

Title

Design Patterns

All about XML

modify() method

Uses extended XQuery insert, delete, and replace keywords

Used in SQL UPDATEs

Example: modify()

UPDATE docs SET xCol.modify(‘

insert

<section num="2">

<title>Background</title>

</section>

after (/doc//section[@num=1])[1]')

Example 2: modify()

UPDATE XmlCatalog

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 Publishing

select CustomerID as "@CustomerID", City as "address/city", PostalCode as "address/zip", ContactName as "contact/name", Phone as "contact/phone",

from Customers for xml path('Customer'), root('Doc')

Additional Papers Used

XML Support in Microsoft SQL Server 2005 Shankar Pal, Mark Fussell, and Irwin Dolobowsk http://msdn2.microsoft.com/en-us/library/ms345117.aspx

XML Best Practices for Microsoft SQL Server 2005 Shankar Pal, Vishesh Parikh, Vasili Zolotov, Leo Giakoumakis,

Michael Rys http://msdn2.microsoft.com/en-us/library/ms345115(d=printer).a

spx

Questions

top related