35
Introducción a SQL/XML DIT-ETSIT-UPM Bases de Datos ( BSDT ) curso 2010-11 Introducción a SQL/XML: SQL y XML funcionan conjuntamente SQL y XML funcionan conjuntamente Transparencias basadas en el sitio Web: SQLX.org, (2004) y en la parte 14 del estándar SQL: ISO/IEC 9075-14:2010. Por: C. Costilla SINBAD-UPM Research Group http://sinbad.dit.upm.es Nov, 2010 Madrid C. Costilla 1

XML-SQL Introduccion

Embed Size (px)

Citation preview

Page 1: XML-SQL Introduccion

Introducción a SQL/XML

DIT-ETSIT-UPM Bases de Datos ( BSDT ) curso 2010-11

Introducción a SQL/XML: SQL y XML funcionan conjuntamente SQL y XML funcionan conjuntamente

Transparencias basadas en el sitio Web: SQLX.org, (2004) y en la parte 14 del estándar SQL: ISO/IEC 9075-14:2010.

Por: C. CostillaSINBAD-UPM Research Group

http://sinbad.dit.upm.es

Nov, 2010 Madrid C. Costilla 1

Page 2: XML-SQL Introduccion

Introducción a SQL/XML

Índice de ContenidoÍndice de Contenido

1. SQL/XML: SQL y XML funcionan conjuntamente2. ¿Qué es SQL/XML ?3. Participantes e Implementaciones de SQL/XML.

3.1. Algunas Publicaciones3.2. XQuery 1.1: Lenguaje Consultivo de XML, (Dic, 2009)

4 SQL XML4. SQL y XML5. Tabla — XML namespace prefixes y sus URIs6 XML: Conceptos 6 1 Data Type SQL convertidos a Schema Type XML6. XML: Conceptos. 6.1. Data Type SQL convertidos a Schema Type XML7. Usando Juntos SQL y XML8 XPath 8 1 SQL y XPath8. XPath. 8.1. SQL y XPath9. Tipos XML (Operaciones Usuales). 10 Funciones XML Ejemplos y XMLQUERY10. Funciones XML. Ejemplos y XMLQUERY11. Tipos de datos y funciones de SQL:2006

Nov, 2010 Madrid C. Costilla 2

Page 3: XML-SQL Introduccion

Introducción a SQL/XML

1. SQL/XML: SQL y XML Funcionan conjuntamentey j

El 1er. estándar SQL/XML (2003), se publica por la International Organization forStandardization (ISO) como la parte 14 del estándar SQL: ISO/IEC 9075-14:2003.

El último estándar SQL/XML Part 14: XML-Related Specifications (SQL/XML) es deJunio 2010, y el inmediato anterior fue ISO/IEC 9075-14:2008.

En http://www.sqlx.org/SQL-XML-documents/5FCD-14-XML-2004-07.pdf puede verseun documento completo. Es un Final Committee Draft del estándar de Julio 2005, con 359páginas de contenido.

SQLX.org, fue el sitio Web del estándar SQL/XML y su tecnología asociada, que facilitó ladifusión de SQL y XML y los avances de cada versión SQL/XML en curso (hasta 2004).SQL/XML es el lenguaje estándar y “SQLX” es el sitio web y el nombre del primer grupo deSQL/XML es el lenguaje estándar y SQLX es el sitio web y el nombre del primer grupo detrabajo de promulgación (no confundirlos).

Para más información de SQL/XML, contactar con el responsable del grupo que propone, p g p q p pSQL/XML en USA: [email protected] (2004).

Nov, 2010 Madrid C. Costilla 3

Page 4: XML-SQL Introduccion

Introducción a SQL/XML

Especificaciones SQL / XML Recientes

Nov, 2010 Madrid C. Costilla 4

Page 5: XML-SQL Introduccion

Introducción a SQL/XML

SQL/XML es un estandard ANSI ISO que incorpora XML dentro del lenguaje SQL

2. ¿Qué es SQL/XML?

SQL/XML es un estandard ANSI, ISO que incorpora XML dentro del lenguaje SQLde bases de datos objeto-relacionales.

SQL:2003 es el estándar para acceder y manejar datos de bases de datos objetoSQL:2003 es el estándar para acceder y manejar datos de bases de datos objeto-relacionales. Las empresas y los usuarios necesitan integrar sus datos XML en susbases de datos objeto-relacionales, aprovechando las ventajosas facilidades deSQLSQL.

SQL/XML permite almacenar sus documentos XML en sus bases de datos objeto-relacionales para consultar dichos documentos mediante “Xpath” y “Xquery” yrelacionales, para consultar dichos documentos mediante “Xpath” y “Xquery” ypara “ publicar” sus datos SQL en un formato de documentos XML.

Nov, 2010 Madrid C. Costilla 5Nov. 2006

Page 6: XML-SQL Introduccion

Introducción a SQL/XML

3. Participantes e Implementaciones de SQL/XML

En 2004, las organizaciones participantes en los grupos INCITS H2 y en ISO/IEC JTC1/ , g p p g p ySC32/WG3 de SQL/XML y su desarrollo fueron los siguientes por orden alfabético:

Computer Associates, DataDirect Technologies, Hewlett-Packard, IBM*, JCC Consulting*, Microsoft*, NCR, Northrop Grumman Information Technology, Oracle*, River City Research

Group, Sybase y textserver.com*

En rojo se destacan las organizaciones más activas en 2004.

Implementaciones SQL/XML:D t Di t T h l iDataDirect Technologies — http://www.datadirect.com/products/connectsqlxml/csqlxml-overview/index.ssp

IBM Corporation — http://www-106.ibm.com/developerworks/db2/library/techarticle/dm-0311wong/index.html

[An introduction to SQL/XML functions in DB2 UDB and the DB2 XML Extender]

Oracle Corporation — http://otn.oracle.com/tech/xml/xquery/sqlxml/index.html

Esta lista (de Mayo, 2004) viene evolucionando con alta dinámica. El último estándar es de Junio 2010.

Nov, 2010 Madrid C. Costilla 6

Page 7: XML-SQL Introduccion

Introducción a SQL/XML

3 1 Al bli i3.1. Algunas publicaciones

Columnas y Artículos:

“SQL in, XML out ”, Jonathan Gennick, http://otn oracle com/oramag/oracle/03-may/o33xml html http://otn.oracle.com/oramag/oracle/03 may/o33xml.html

“SQL/XML and the SQLX Informal Group of Companies ”, Andrew Eisenberg and Jim Melton htt // / i d/ d/i /0109/ t d d dfEisenberg and Jim Melton, http://www.acm.org/sigmod/record/issues/0109/standards.pdf

“XML Programming with SQL/XML and XQuery ”, Funderburk, M l ik R i ld Malaika, Reinwald, http://www.research.ibm.com/journal/sj/414/reinwald.pdf

Esta lista, de Marzo 2004, evolucionará con el tiempo ¡más de 5.500 artículos se habían publicado sobre XML, a mediados de 2009!

Nov, 2010 Madrid C. Costilla 7

Page 8: XML-SQL Introduccion

Introducción a SQL/XML

3.2. XQuery 1.1: Un Lenguaje Consultivo de XML, (Dic, 2009)y g j , ( , )

Como sabemos, XML es un lenguaje de marcado versátil para etiquetar el contenido de g j p qinformación de diversas fuentes de datos incluyendo:

● documentos estructurados y semi-estructurados,● RDBs, y repositorios de objetos.

● XQuery usa la estructura de XML para expresar consultas a todas estas fuentes de datos,bien estén físicamente almacenados en XML o bien sean vistos como XML vía unbien estén físicamente almacenados en XML o bien sean vistos como XML vía unmiddleware.

● XQuery 1.1 describe un lenguaje consultivo aplicado a un amplio espectro de tipos dey g j p p p pfuentes de datos XML muy diversos.

● XQuery 1.1 es la siguiente versión de XQuery 1.0 (Recomendación publicada el 23 Enero de 2007) 2007).

(véase el estándar en http://www.w3.org/standards/techs/xquery)

Nov, 2010 Madrid C. Costilla 8

Page 9: XML-SQL Introduccion

Introducción a SQL/XML

4. SQL y XML

¿Cómo pueden ser “publicados” datos SQL en XML de modo que¿Cómo pueden ser publicados datos SQL en XML de modo quese conserve la máxima cantidad de información, incluyendoidentificadores, el conocimiento de tipo de datos apropiado,, p p p ,etc.?

Solución

Mapeando las Tablas SQL en Documentos XML

Mapeando identificadores SQL dentro de XML Qnames y viceversa

Mapeando SQL Data Types en XML Schema Types y viceversap Q yp yp y

Nov, 2010 Madrid C. Costilla 9

Page 10: XML-SQL Introduccion

Introducción a SQL/XML

5. Tabla — XML namespace prefixes y sus URIs

XML namespace prefix XML namespace URI

htt // 3 /2001/XMLS hxsd http://www.w3.org/2001/XMLSchema

xsi http://www.w3.org/2001/XMLSchema-instance

xdt http://www.w3.org/2003/11/xpath-datatypes

sqlxml http://standards iso org/iso/9075/2003/sqlxmlsqlxml http://standards.iso.org/iso/9075/2003/sqlxml

Nov, 2010 Madrid C. Costilla 10

Page 11: XML-SQL Introduccion

Introducción a SQL/XML

6. XML: Conceptos

<book>boo

<title>Querying XML

</title></title>

<author>Jim Melton

/ th</author>

<author>Andrew Eisenberg

</author>

<publ>MKP</publ>

<date>2002</date>

</book>

Nov, 2010 Madrid C. Costilla 11

Page 12: XML-SQL Introduccion

Introducción a SQL/XML

XML Support

Nov, 2010 Madrid C. Costilla 12

Page 13: XML-SQL Introduccion

Introducción a SQL/XML

6 1 Data Type SQL convertidos a Schema Type XML6.1 Data Type SQL convertidos a Schema Type XML

Mapear cada tipo predefinido de SQL a su XML Schema más similar usando lasMapear cada tipo predefinido de SQL a su XML Schema más similar usando lascaracteríticas (anotaciones y restricciones) de Schema XML para capturar la semántica detipos SQL tanto como sea posible.

Algunos Mappings entre SQL y XML:

del conjunto de caracteres SQL a Unicodede SQL<identifier> s a XML Namesde SQLdata types (como los usados en los esquemas SQL para definir objetos de

SQL t l l ) XML S h d t t esquemas SQL tales como columnas) a XML Schema data types de valores SQLdata types a valores de XML Schema data types

de una tabla SQL a un documento XML y a un documento XML SchemaQ yetc.

Nov, 2010 Madrid C. Costilla 13

Page 14: XML-SQL Introduccion

Introducción a SQL/XML

Tipos de datos XML en Tablas SQL

Nov, 2010 Madrid C. Costilla 14

Page 15: XML-SQL Introduccion

Introducción a SQL/XML

XML Export Format

Nov, 2010 Madrid C. Costilla 15

Page 16: XML-SQL Introduccion

Introducción a SQL/XML

Mapping Names . Ejemplo SQL --> XML

Nov, 2010 Madrid C. Costilla 16

Page 17: XML-SQL Introduccion

Introducción a SQL/XML

Mapping Names. Ejemplo SQL --> XML

"S l FY2000" S l 003A FY2000● "Salary:FY2000" Salary_x003A_FY2000

● "Work@home" Work x0040 homeWork@home Work_x0040_home

● "Work_x0040_home" Work_x005F_x0040_home

● "Work_home" Work_home

"@@" 0040 0040 /*N t d bl “ ”*/● "@@" _x0040_ _x0040_ /*Note double “_”*/

Nov, 2010 Madrid C. Costilla 17

Page 18: XML-SQL Introduccion

Introducción a SQL/XML

6 1 Data Type SQL convertidos a Schema Type XML6.1 Data Type SQL convertidos a Schema Type XML

BOOLEAN<xsd:simpleType><xsd:restriction<xsd:restriction

base="xsd:boolean"/><xsd:annotation><sqlxml:sqltypesqlxml:sqltype

name="BOOLEAN"/></xsd:annotation></xsd:restriction></xsd:simpleType>

Nov, 2010 Madrid C. Costilla 18

Page 19: XML-SQL Introduccion

Introducción a SQL/XML

7 U d J t SQL XML7. Usando Juntos SQL y XML

● SQL más Xpath● Almacenar documentos XML en bases de datos SQL● Almacenar documentos XML en bases de datos SQL● Tipos XML● Ver datos SQL en formato o vistas XML

Nov, 2010 Madrid C. Costilla 19

Page 20: XML-SQL Introduccion

Introducción a SQL/XML

8. XPathCONSULTAS con XQueryXQuery (soportado mediante XPath) es un lenguaje consultivo para que XML pueda extraer datos, al estilo de SQL en XORDB, o como SPARQL en la Web Semántica

● Xpath: Un lenguaje para direccionar partes de un documento. p g j p p● Ejemplos:

//h d //header Todas las cabeceras en un documento

/book/author[1] El primer elemento autor que es hijo de cada elemento libro

/emp[@salary >“10000”] Cada elemento empleado cuyo atributo salario es > 10000

Nov, 2010 Madrid C. Costilla 20

Page 21: XML-SQL Introduccion

Introducción a SQL/XML

XQueryy¿Qué es y para qué sirve?

XQuery es un lenguaje estandard para combinar documentos bases de XQuery es un lenguaje estandard para combinar documentos, bases de datos, páginas Web y otras formas de representación de información.

XQuery cuenta con una amplia implementación es potente y más fácil de XQuery cuenta con una amplia implementación, es potente y más fácil de aprender y mantener que otros lenguajes alternativos.

Xq er podría reempla ar a los leng ajes propietarios del middle are del Xquery podría reemplazar a los lenguajes propietarios del middleware y del desarrollo de Aplicaciones Web .

XQ d í tit i l l j J C++ XQuery podría sustituir a los programs complejos en Java o C++ con pocas líneas de código.

( é(véanse:

● http://www.w3.org/standards/xml/query

● http://www.w3.org/standards/techs/xquery)

Nov, 2010 Madrid C. Costilla 21

Page 22: XML-SQL Introduccion

Introducción a SQL/XML

8.1. SQL y XPath

CREATE_TABLE my_docs (doc_no INTEGERd VARCHAR(50)doc_owner VARCHAR(50)document CLOB(2G) )

SELECT doc_no, xpath(document, ‘/publ/name’)FROM dFROM my_docsWHERE xpath (document, ‘//author[“Jim Melton”]’)

Nov, 2010 Madrid C. Costilla 22

Page 23: XML-SQL Introduccion

Introducción a SQL/XML

9. Tipos XML (Operaciones Usuales)

XMLEXTRACT (XMLType, XPath [, Namespace])Utiliza el argumento de Xpath para localizar un nodo en la instancia del Tipo XML

(XML Type) usando la información del espacio de Namespace

XMLCONCAT (XMLval, XMLval [, XMLval]...)( , [, ] )Concatena los valores XMLval

XMLAGG (XMLval ORDER BY sortexpr)XMLAGG (XMLval ORDER BY sortexpr)Concatena valores XML traídos de una tabla agrupada después de evaluar sortexprp

Nov, 2010 Madrid C. Costilla 23

Page 24: XML-SQL Introduccion

Introducción a SQL/XML

XML soporta las siguientes funciones:

Nov, 2010 Madrid C. Costilla 24

Page 25: XML-SQL Introduccion

Introducción a SQL/XML

10. Funciones de publicación XML

Funciones llamadas en SQL ordinario que generan XMLFunciones llamadas en SQL ordinario que generan XML.Sirven para producir: documentos XML, elementos, fragmentos o bosques; a partir de datos SQLbosques; a partir de datos SQL.

Funciones: XMLELEMENTXMLATTRIBUTESXMLCOLELEMXMLCOLATTVALXMLGEN

Nov, 2010 Madrid C. Costilla 25

Page 26: XML-SQL Introduccion

Introducción a SQL/XML

Ejemplo 1

SELECT e.id,XMLELEMENT ( "Emp"XMLELEMENT ( Emp ,

XMLATTRIBUTES ( e.id ),'Employee ', Resultado 1XMLELEMENT ("name",

e.fname || ' ' || e.lname ),' was hired on = ' <emp id="1234">Employee was hired on = ,XMLELEMENT ( "hiredate",

e.hiredate ) ) AS "result"

<emp id 1234 >Employee<name>J. Pérez</name> was hired on = <hiredate>1980-06-17 </hiredate>

FROM employees AS e </emp><emp id="2341">Employee

<name>T. Martín</name> was hired on = <hiredate>1978-02-25 </hiredate>

</emp></emp>

Nov, 2010 Madrid C. Costilla 26

Page 27: XML-SQL Introduccion

Introducción a SQL/XML

Ejemplo 2

SELECT e.id,XMLGEN ( '<Emp name='"{name}">XMLGEN ( <Emp name= {name} ><hiredate>{hire}</hiredate><department>{dept}</department>

Resultado 2

<emp id "1234">Emplo eep { p } p</Emp>',e.name AS name,e hire

<emp id="1234">Employee<emp><name>J. Pérez</name><hiredate>1980-06-17</hiredate>e.hire,

e.dept ) AS "result"FROM employees e

hiredate 1980 06 17 /hiredate<dept>Databases</dept></emp>

id "2341" p yWHERE ... <emp id="2341">

<emp><name>T. Martín</name><hiredate>1978-25-02</hiredate>hiredate 1978 25 02 /hiredate<dept>Engineering</dept></emp>

Nov, 2010 Madrid C. Costilla 27

Page 28: XML-SQL Introduccion

Introducción a SQL/XML

Ejemplo 3SELECT XMLELEMENT ( "Department",XMLATTRIBUTES ( e.dept AS "name" ),XMLAGG ( XMLELEMENT (" " l )

Devuelve un elemento ‘emp’ porXMLAGG ( XMLELEMENT ("emp", e.lname)

ORDER BY e.lname )) AS "dept list“

empleado de cada dept, ordenadopor su apellido generando un soloelemento por ‘dept’) AS dept_list

FROM employees eGROUP BY dept

elemento por dept

Resultado 3

<department name=“Databases"><emp>Tomás</emp><emp>Martín<emp>Tomás</emp><emp>Martín</emp></department>

<department name="Engineering"><emp>Juan</emp><emp>Pérez</ ></d t t></emp></department>

Nov, 2010 Madrid C. Costilla 28

Page 29: XML-SQL Introduccion

Introducción a SQL/XML

Ot F i SQL XML (2 0)Otras Funciones SQL que generan XML (2.0)

XMLCOMMENT(‘ t t t’ [RETURNING {CONTENT | SEQUENCE }])XMLCOMMENT(‘comment content’ [RETURNING {CONTENT | SEQUENCE }])Permite a la aplicación generar comentarios XML.

XMLPI(NAME tartet {, string-expression ][RETURNING { CONTENT | SEQUENCE}])Permite a la aplicación crear instrucciones de procesamiento XMLPermite a la aplicación crear instrucciones de procesamiento XML

XMLCAST( value-expresion AS type)Permite a la aplicación convertir un valor (cualquier tipo XML o algún otro tipo) a uno de los tipos XML definidos en el segundo estándar.

Nov, 2010 Madrid C. Costilla 29

Page 30: XML-SQL Introduccion

Introducción a SQL/XML

Otras Funciones (2.0)

XMLQUERY evalúa una expresión Xquery y devuelve el resultado a SQla aplicación SQL.

Al contrario que XMLCOMMENT y XMLPI el valor devuelto porAl contrario que XMLCOMMENT y XMLPI, el valor devuelto porXMLQUERY puede ser una referencia al resultado o una copia del valor

Nov, 2010 Madrid C. Costilla 30

Page 31: XML-SQL Introduccion

Introducción a SQL/XML

11 Ej l d XM QUERY11. Ejemplo de XMLQUERY

SELECT top priceSELECT top_price,XMLQUERY (

'for $cost in/buyer/contract/item/amount

where /buyer/name = $var1return $cost'return $costPASSING BY VALUE

‘A.Eisenberg’ AS var1,buying_agentsRETURNING SEQUENCE BY VALUE )FROM buyersFROM buyers

Nov, 2010 Madrid C. Costilla 31

Page 32: XML-SQL Introduccion

Introducción a SQL/XML

SQL:2006

Nov, 2010 Madrid C. Costilla 32

Page 33: XML-SQL Introduccion

Introducción a SQL/XML

Estándar SQL 9075 ‘al día de hoy’Information technology -- Database languages – SQL, “Corrigenda, Amendments

and other parts”

● ISO/IEC 9075-1:2008; hoy tenemos la versión ISO/IEC 9075-1:2008/Cor 1:2010

● ISO/IEC 9075-2:2008; hoy tenemos la versión de 2009-01-27y

● ISO/IEC 9075-3:2008 Part 3: Call-Level Interface (SQL/CLI)

● ISO/IEC 9075-4:2008 Part 4: Persistent Stored Modules (SQL/PSM)● ISO/IEC 9075 4:2008 Part 4: Persistent Stored Modules (SQL/PSM)

● ISO/IEC 9075-9:2008 Part 9: Management of External Data (SQL/MED)

ISO/IEC 9075 10:2008 Part 10: Object Language Bindings (SQL/OLB)● ISO/IEC 9075-10:2008 Part 10: Object Language Bindings (SQL/OLB)

● ISO/IEC 9075-11:2008 Part 11: Information and Definition Schemas (SQL/Schemata)

● ISO/IEC 9075-13:2008 Part 13: SQL Routines and Types Using the Java TM Prog.Lang. (SQL/JRT)

ISO/IEC 9075 14:2008 Part 14: XML Related Specifications (SQL/XML)● ISO/IEC 9075-14:2008 Part 14: XML-Related Specifications (SQL/XML)

Nov, 2010 Madrid C. Costilla 33

Page 34: XML-SQL Introduccion

Introducción a SQL/XML

Estándar SQL 9075 ‘al día de hoy’ISO/IEC 9075 define el lenguaje SQL. Su alcance es la definición de la

estructura de los datos, y las operaciones sobre los datos almacenados enesa estructura.

ISO/IEC 9075-1:2008 (hoy es ISO/IEC 9075-1:2008/Cor 1:2010), especifica elmarco conceptual utilizado en otras partes de ISO/IEC 9075 para definir lagramática de SQL y el resultado del procesamiento de sus sentencias en unaimplementación de SQLimplementación de SQL.

ISO/IEC 9075-2:2008 (hoy es ISO/IEC 9075-2:2008/Cor 1:2009), define laestructura de los datos y las operaciones básicas sobre ellos Proporcionaestructura de los datos, y las operaciones básicas sobre ellos. Proporcionacapacidades funcionales para la: creación, acceso, mantenimiento, control yprotección de los datos SQL, tanto estáticos como dinámicos. Además de lap ,invocación interactiva, provee ligaduras con los PL: Ada, C, COBOL, Fortran,M, Pascal, and PL/I

ISO/IEC 9075-3:2008 …….. Call-Level Interface (SQL/CLI)….

Nov, 2010 Madrid C. Costilla 34

Page 35: XML-SQL Introduccion

Introducción a SQL/XML

Nov, 2010 Madrid C. Costilla 35