Title: Aprovechando XML dentro de la base de datos con SQL Server 2005
1Aprovechando XML dentro de la base de datos con
SQL Server 2005
Adolfo Wiernikadolfo_at_wiernik.net
Microsoft Regional Director - http//msdn.microso
ft.com/isv/rd Mentor Solid Quality Learning -
http//www.solidqualitylearning.com Fundador,
Costa Rica User Group .NET - http//www.crug.net O
rador INETA Latinoamérica - http//www.ineta.org/l
atam Blog - http//www.wiernik.net
2Series de Webcasts
- Introducción a SQL Server 2005 para
desarrolladoreshttps//www115.livemeeting.com/cc/
msevents/viewRecordings?idMSDN072205BAroleatten
dpwmsdn072205ba - Nuevas características del lenguaje T-SQL en SQL
Server 2005https//www115.livemeeting.com/cc/msev
ents/viewRecordings?idMSDN072505BAroleattendpw
msdn072505ba - Aprovechando XML dentro de la base de datos con
SQL Server 2005https//www115.livemeeting.com/cc/
msevents/viewRecordings?idMSDN072905BAroleatten
dpwmsdn072905ba - Programando SQL Server 2005 con el CLR
Integración SQL-CLRhttps//www115.livemeeting.com
/cc/msevents/viewRecordings?idMSDN080105BArolea
ttendpwmsdn080105ba - Nuevas características en ADO.NET
2.0https//www115.livemeeting.com/cc/msevents/vie
wRecordings?idMSDN080505BAroleattendpwmsdn080
505ba
3Agenda
- XML en la naturaleza Desde 1996 al 2005
- Por qué XML en el mundo de Bases de Datos?
- Manipulando XML
- Mapeo, Composición, Cortar (Shredding)
- Qué está sucediendo en la industria?
- Soporte a XML en SQL Server
- Tipo de dato XML
- XQUERY
- Esquemas XML
- Índices XML
- Posibles Arquitecturas para manipular datos XML
en el GBDR - FOR XML Y OPENXML
4XHTML
RDFXML
XFORMS
XPOINTER
HTML
DOM
XQUERY
XSL
XKMS
XML
The Extensible Markup Language (XML) goal is to
enable generic SGML to be served, received, and
processed on the Web in the way that is now
possible with HTML. XML has been designed for
ease of implementation and for interoperability
with both SGML and HTML. Source
http//www.w3.org/TR/2004/REC-xml-20040204/ Extens
ible Markup Language (XML) 1.0 (Third
Edition) W3C Recommendation 04 February 2004
XPATH
SAX
WSDL
SOAP
SGML
XLINK
XAG
DTD
XSD
XDR
SQLXML
XSL/T
MATHML
XBASE
UDDI
5Contenido Dinámico Separación Vista/Datos
6XML
Mensajería Arquitectura Orientada a Servicios
7XML
RSS - Media XML Feed Publicación de Documentos
8XML
Documentos Etiquetados Metadata - Contexto
9XML
Recolección de Datos XForms - InfoPath
10Colaboración en capa intermedia Representación de
datos Esquemas Canónicos
Produccción
CRM
XML
XML
XML
XML
ERP
XML
Inventarios
11Creación Manipulación Búsqueda
12Por qué XML en el mundo de Bases de Datos?
- Auto-describible
- Importancia del orden
- Esquemas / Sistema de Tipos
- Esquemas abiertos / Sin esquema
- Esquemas opcionales semi-estructurada,
estructurada - Buscable
- Extendible
- Representación de datos complejos
- Árboles, Recursividad, Grafos
- Información Estructurada altamente regular,
estructuras homogéneas - Información Semi-estructurada heterogénea,
información esparcida - Información Etiquetada documentos/contenido
etiquetado
13Por qué XML en el mundo de Bases de Datos?
- Tipos de Aplicaciones
- Que Emiten Documentos XML
- Repositorio de XML
- XML puede ser luego procesado
- Que Seleccionan y Emiten Fragmentos XML
- Retorna algunos nodos de un documento XML
- Requiere habilidad de poder ver dentro del
documento XML y extraer los nodos relevantes
según una expresión de filtro - Que Consulta o Transforma Documentos XML
- Selecciona y combina piezas individuales de un
XML de entrada - Crea nuevas estructuras XML como salida
- Que Actualiza Documentos XML
- Requiere procesamiento transaccional?
- Identificar correctamente el nodo a actualizar
dentro del documento XML - Requiere modificación del esquema de datos?
14Manipulando XML
- Mapeo (Relacional ? XML)
- Identificadores
- Tipos de datos
- Valores de datos
- Esquema
- Composición
- Tomar información relacional y transformarla en
información XML - Cortar (Shredding)
- Tomar información XML y descomponerla en
información relacional
15Manipulando XMLComposición Shredding
ltpeoplegtltperson id1 fnameRocky lname
Marciano age40/gtlt/peoplegt
CREATE TABLE T (ID int, ... XML nvarchar(max))
CREATE TABLE T (ID int, fname nvarchar(25),
lname nvarchar(25), age int)
16Qué está sucediendo en la industria?
- ISO-ANSI
- SQL Part 14 XML-Related Specifications
(SQL/XML)ISO/IEC 9075, August 2002 - W3C
- XQUERY - Working Draft September 15th, 2005
- XPATH 2.0 - Working Draft September 15th, 2005
- XML SCHEMA
- Bases de Datos Comerciales
- Microsoft SQL Server 2000 up
- Oracle XML DB (9i Release 2 up)
- IBM DB2 XML Extender, XPERANTO
17Soporte a XML en SQL Server 2000
18Soporte a XML en SQL Server 2005
19Introduciendo el tipo de dato XML en SQL Server
2005
- Soporta el almacenamiento de fragmentos y
documentos XML - Representación interna binaria optimizada para
procesamiento de consultas - Valida que XML esté bien formado
- Puede ser tipificado con una colección de
esquemas de XML - Se valida que instancia esté conforme al esquema
antes de almacenarla - Fuerza reglas a través de restricciones sobre
columnas de tipo XML - Se integra completamente con todas las demás
características de SQL Server
20XQUERY
21XQUERY query()
- Permite la creación de nuevo XML
SELECT T.x.query(declare namespace n
urnexample for s in /ndoc_at_id
123//nsec_at_num gt 3 return
lttopicgtdata(s/nheading)lt/topicgt)FROM T
22XQUERY value()
- Extrae un valor de XQuery y lo convierte en un
tipo de dato de SQL - La expresión XQUERY debe retornar un singleton
- Valor del item es casteado a tipo de dato de SQL
SELECT T.x.value( (/ndoc_at_id
123//nsec_at_num gt 3/_at_num)1, int)FROM T
23XQUERY exist()
- Retorna 1 si la expresión XQuery retorna al menos
1 item, sino retorna 0
select from T where T.x.exist(/a/b_at_id42)1
24sqlcolumn()/sqlvariable()
- Permite acceso de valores y tipos de SQL al
contexto de ejecución de la expresión XQuery - sqlvariable() accede a variables SQL
- sqlcolumn() accede el valor de otra columna
declare _at_value int set _at_value42select from T
where T.x.exist(/a/b_at_idsqlvariable(_at_value)
)1
tables T(key int, x xml), S(key int, val
int)select from T join S on T.keyS.keywhere
T.x.exist(/a/b_at_idsqlcolumn(S.val))1
25Esquemas XML
- Colecciones de Esquemas XML
- Se usan para validar instancias de información
XML almacenadas dentro del tipo de dato XML - Utilizadas por el optimizado de consultas
- Los tipos de datos XSD son mapeados a tipos de
datos SQL - Se almacenan dentro del metadata del sistema
- No preserva anotaciones
26Índices XML
XML Data Type
SQL Server 2005
27Posibles Arquitecturas para manipular datos XML
en el GBDR
Manejando datos XML con una representación
relacional Partiendo datos XML a relacional en la
capa intermedia
- Beneficios
- Excelente soporte para información estructurada
- Altamente integrado con el motor de búsquedas de
SQL Server - Use FOR XML o SQLXML para recomposición de datos
relacionales
- Limitaciones
- No se conserva el orden del documento
- Difícil de soportar información semi y no
estructurada - Alto costo para composición a XML de información
relacional
28Posibles Arquitecturas para manipular datos XML
en el GBDR
Manejando datos XML como nvarchar(max) o
varbinary(max) Procesando en la capa intermedia
con System.Xml
- Beneficios
- Provee fidelidad textual
- No depende de las capacidades de la base de datos
- Disminución de carga de trabajo sobre el
servidor, mayor procesamiento en capa intermedia - El mejor rendimiento para la inclusión y
recuperación de documentos
- Limitaciones
- Complejidad de codificación para la capa
intermedia - Mayores costos de mantenimiento
- Imposible de hacer operación CRUD a nivel de nodo
- Costoso de hacer búsquedas de contenidos dentro
del XML - Validez y formato del XML deben ser validados en
la capa intermedia
29Posibles Arquitecturas para manipular datos XML
en el GBDR
Manejando datos XML con el tipo de dato XML
- Beneficios
- Información se almacena de forma nativa como XML
- Tipificada y validada según esquemas XSD
- Soporte para operaciones CRUD a nivel de nodos
- Indexado para mejorar rendimiento
- Preserva el orden y estructura del documento
- Limitaciones
- No preserva el orden de atributos, prefijos de
namespaces, espacio en blanco y declaración de
XML - Máximo nivel soportado de niveles en jerarquía es
de 128 - Tamaño máximo soportado 2GB
- Instancias de XML no pueden ser comparadas entre
ellas
30FOR XML y OpenXML
- Compatible con SQL Server 2000
- FOR XML
- Nueva directiva TYPE retorna instancia del tipo
dato XML - Soporte para FOR XML anidados
- Soporte a nuevos tipos de datos nvarchar(max),
varbinary(max) - Se puede asignar a variable de tipo de dato XML
- Nuevo modo PATH
- OpenXML
- Basado en motor de MSXML 3.0
- Soporte a nuevos tipo de datos nvarchar(max),
varbinary(max), XML
31Conclusiones
- XML en la naturaleza Desde 1996 al 2005
- Por qué XML en el mundo de Bases de Datos?
- Manipulando XML
- Mapeo, Composición, Cortar (Shredding)
- Qué está sucediendo en la industria?
- Soporte a XML en SQL Server
- Tipo de dato XML
- XQUERY
- Esquemas XML
- Índices XML
- Posibles Arquitecturas para manipular datos XML
en el GBDR - FOR XML Y OPENXML
32Gracias
- adolfo_at_wiernik.net
- adolfo_at_solidqualitylearning.com
- Weblog www.wiernik.net