lm-ut7: almacenamiento xml

16

Click here to load reader

Upload: david-martin

Post on 14-Dec-2014

1.146 views

Category:

Education


1 download

DESCRIPTION

Lenguajes de Marcas y SGI (CFGS Administrador de Sistemas Informáticos en Red)

TRANSCRIPT

Page 1: LM-UT7: Almacenamiento XML

Lenguajes de Marcas y SGILenguajes de Marcas y SGI

UT 7: XML (III).Almacenamiento de información.

CFGS «Administración de SistemasInformáticos en Red»

CIFP Juan de Colonia (Burgos)

David H. Martín Alonso

– Curso 2010/2011 –

Page 2: LM-UT7: Almacenamiento XML

Mayo de 2011 CIFP Juan de Colonia

XML (III): ALMACENAMIENTO DE INFORMACIÓN.

ContenidosContenidos

Introducción

SQL Server

Page 3: LM-UT7: Almacenamiento XML

Mayo de 2011 CIFP Juan de Colonia

XML (III): ALMACENAMIENTO DE INFORMACIÓN.

3/16

XQueryXQueryXML Query

• Lenguaje de consulta sobre documentos XML.→ Funcionalidad comparable a SQL.

– Estándar W3C.• Lenguaje procedimental + expresiones XPath.

– No es XML, no tiene espacio de nombres, no validable...– Procedimental: variables, condicionales, bucles, funciones...

• Instrucciones FLWOR– For, Let, Where, Order by, Return !!!

– Procesadores: AltovaXML, saxonb-xquery (Saxon/Java)

■ Introducción□SQL Server

doc('nombres.xml')/grupo/nombre[1]

for $alu in doc('alumnos.xml')/grupo/alumnowhere $alu/edad > 20order by $alu/apellidosreturn $alu/nombre

Page 4: LM-UT7: Almacenamiento XML

Mayo de 2011 CIFP Juan de Colonia

XML (III): ALMACENAMIENTO DE INFORMACIÓN.

4/16

Modelo relacional / Modelo XMLModelo relacional / Modelo XML• Los sistemas gestores de bases de datos son el

software esencial en el que se apoyan la mayoría de las aplicaciones para el almacenamiento y acceso a sus datos.

– Gestión común de la información de una organización para evitar duplicidades, mejorando eficacia y reduciendo costes.

– Las bases de datos actuales se basan en el modelo relacional: estructuras tabulares interrelacionadas.

– El lenguaje SQL, a pesar de la variedad de dialectos es el lenguaje estándar de configuración, acceso y control.

• XML es un modelo de organización de datos muy extendido para usos muy variados entre los que destacan la comunicación entre aplicaciones o la transformación y representación de los datos.

– Estructura de datos en árbol, jerárquica.– Estructura de datos integrada en el propio documento.

• ¿Son compatibles los sistemas de bases de datos relacionales con las aplicaciones XML?

■ Introducción□SQL Server

Page 5: LM-UT7: Almacenamiento XML

Mayo de 2011 CIFP Juan de Colonia

XML (III): ALMACENAMIENTO DE INFORMACIÓN.

5/16

Dos enfoques: Dos enfoques:

• Sistemas de BBDD compatibles con XML.– Modelo relacional, almacenamiento de datos en tablas.

Aprovechamos la eficiencia de los motores relacionales– Acceso mediante SQL.– Soporte de entrada/salida en XML.– Conversiones, reformateo de entradas/salidas

• Sistemas de BBDD con soporte XML nativo.– Modelo XML, almacenamiento de documentos.– Almacenamiento de datos en formato nativo.

Evita conversiones– Acceso mediante lenguajes XML: XPath, XQuery.

■ Introducción□SQL Server

Page 6: LM-UT7: Almacenamiento XML

Mayo de 2011 CIFP Juan de Colonia

XML (III): ALMACENAMIENTO DE INFORMACIÓN.

6/16

XML en SQL ServerXML en SQL Server• Soporte XML ¿nativo?

– Almacenamiento colateral: relacional y XML– Modelos muy distintos, coexistencia ajustada.– Servidor: adaptaciones para el motor relacional.– Cliente: ampliación de la API de acceso (SQL y .NET).– Integración con las herramientas.

• Consultas que producen XML (MS SQLServer 2000)– SELECT con la cláusula FOR XML.– SQLXML: mapeado a vista XML

Esquema relacional/tablas ↔ Esquema XML/XPath• Importación desde XML

– Expresiones XPath → tuplas• Almacenamiento nativo XML (MS SQLServer 2005)

– Como documentos completos: columnas tipo XMLBLOBs: Large Binary Objects

– Modos: XML tipado (con esquema XML) o no tipado– Transact SQL con soporte XQuery/XPath integrado.

□Introducción■SQL Server

Page 7: LM-UT7: Almacenamiento XML

Mayo de 2011 CIFP Juan de Colonia

XML (III): ALMACENAMIENTO DE INFORMACIÓN.

7/16

SELECT … FOR XML SELECT … FOR XML

SELECT DNI,NOMBRE FROM ALUMNOS FOR XML AUTO, TYPE;<ALUMNOS DNI="13456234A" NOMBRE="Román Fernández" /><ALUMNOS DNI="9674562U" NOMBRE="Laura Ubierna" /><ALUMNOS DNI="72367890G" NOMBRE="Pedro Albacete" />

… SELECT DNI,NOMBRE FROM ALUMNOS FOR XML AUTO, ELEMENTS;

…SELECT DNI,NOMBRE FROM ALUMNOS FOR XML RAW, TYPE;

…SELECT DNI,NOMBRE FROM ALUMNOS FOR XML RAW, ELEMENTS;

• Modos– XML AUTO: jerarquía simple usando nombre de tabla.– XML RAW: jerarquía simple de elementos row (fila).

• Formatos– TYPE: Datos como atributos XML. – ELEMENTS: Datos como elementos hijo.

□Introducción■SQL Server

Page 8: LM-UT7: Almacenamiento XML

Mayo de 2011 CIFP Juan de Colonia

XML (III): ALMACENAMIENTO DE INFORMACIÓN.

8/16

El tipo XML: tipado/no tipadoEl tipo XML: tipado/no tipado– Podemos almacenar 1 documento (1 raíz) o elementos.

• XML sin tipo– Almacena XML bien formado o fragmentos.CREATE TABLE mitabla ( …misdatosxml XML NOT NULL);

• XML con tipo– Controla entradas XML bien formadas y válidas.– Incorporamos un XML Schema definido previamente:CREATE XML SCHEMA COLLECTION mischema AS '…'

– Agregamos un atributo para guardar XML.CREATE TABLE mitabla ( …misdatosxml XML (mischema) NOT NULL);

– Ahí podemos detallar si admitimos documento o elementos.… XML (DOCUMENT mischema)… XML (CONTENT mischema)

– Podemos definir restricciones con funciones de usuario.Transact SQL + XQuery/XPath

□Introducción■SQL Server

Page 9: LM-UT7: Almacenamiento XML

Mayo de 2011 CIFP Juan de Colonia

XML (III): ALMACENAMIENTO DE INFORMACIÓN.

9/16

Consultas XMLConsultas XML□Introducción■SQL Server

INSERT INTO mitabla (misdatosxml)VALUES ('<grupo>

<nombre>Juan Pérez</nombre><nombre>Marta Sánchez</nombre>

</grupo>');

CREATE TABLE mitabla (id INT IDENTITY,misdatosxml XML NOT NULL);

SELECT misdatosxml.query('/grupo/nombre')FROM mitabla;SELECT misdatosxml.value('(/grupo/nombre)[1]','nvarchar(60)') FROM mitabla;

Page 10: LM-UT7: Almacenamiento XML

Mayo de 2011 CIFP Juan de Colonia

XML (III): ALMACENAMIENTO DE INFORMACIÓN.

Ejemplo: SQL Server / XQueryEjemplo: SQL Server / XQueryINSERT INTO mitabla (misdatosxml)VALUES ('<papelería><cliente xml:id="u1"><n>Juan</n><a>Manzano</a></cliente><cliente xml:id="u2"><t>D.</t><n>Luis</n><a>Manzano</a></cliente><cliente xml:id="u3" marca="x1"><n>Adolfo</n><a marca="x2">Jambrina</a></cliente><cliente xml:id="u4"><n>Francisco</n><a>Alto</a></cliente><cliente xml:id="u5"><n>José</n><a>Mata</a></cliente><cliente xml:id="u6"><t>Dr.</t><n>Martín</n><a>Mora</a></cliente><cliente xml:id="u7" marca="x3"><t>Dª.</t><n>Petra</n><a>Masa</a></cliente><cliente xml:id="u8"><t>Dª.</t><n>María</n><a>Lucas</a></cliente></papelería>');WITH XMLNAMESPACES('http://yo.mio.es' AS ns1)SELECT id AS '@fila', misdatosxml.query('

for $i in //cliente[t]order by $i/a[1],$i/n[1]return <nombre>{data($i/a)}, {data($i/n)}</nombre>

') AS 'genéricos/papel'FROM mitablaWHERE misdatosxml.exist('/papelería')=1FOR XML PATH('comercio'), ROOT('ns1:grupos');

Page 11: LM-UT7: Almacenamiento XML

Mayo de 2011 CIFP Juan de Colonia

XML (III): ALMACENAMIENTO DE INFORMACIÓN.

11/16

MySQL y XMLMySQL y XML□Introducción□SQL Server

• mysql y mysqldump con la opcion --xml– Producen salidas en formato XML– Análogo a MS SQL Server con FOR XML y RAW– Jerarquía: resultset/row/field

+ database/table_structure en mysqldump• Se puede almacenar un documento XML

– tipo BLOB– Funciones XQuery: ExtractValue(), UpdateXML()

• Tanto en SQL Server como en MySQL podemos construir el texto XML concatenando cadenas...

Page 12: LM-UT7: Almacenamiento XML

XML (III): ALMACENAMIENTO DE INFORMACIÓN.

Mayo de 2011 CIFP Juan de Colonia

Probar los ejemplos anteriores para SQL Server y

montar ejemplos propios.

Buscar por grupos información sobre otros gestores y

tratar de hacer un ranquin de aplicación a «XML

nativo».

Actividad I: BBDD con XMLActividad I: BBDD con XML

Page 13: LM-UT7: Almacenamiento XML

Mayo de 2011 CIFP Juan de Colonia

XML (III): ALMACENAMIENTO DE INFORMACIÓN.

¿Conclusiones?¿Conclusiones?● Sería interesante disponer de una buen

integración entre bases de datos y documentos en formato XML.

● Los modelos relacional y jerárquico son radicalmente distintos y la «transparencia» real es difícil de conseguir.

● Para extraer información de estructuras XML disponemos del lenguaje XQuery que también incorpora expresiones XPath.

Page 14: LM-UT7: Almacenamiento XML

Mayo de 2011 CIFP Juan de Colonia

XML (III): ALMACENAMIENTO DE INFORMACIÓN.

ReferenciasReferenciasBoag, S et al. (2010, W3C Recommendation) XQuery 1.0http://www.w3.org/TR/xquery/

W3Schools (WWW) XQuery Tutorialhttp://www.w3schools.com/xquery/

Gabillaud, J. (2009, ENI). SQL Server 2008. SQL, Transact SQL.ISBN: 978-2-7460-4911-6.

Boulanger, T. y Lecomte, S. (2009, ENI). XML práctico: bases esenciales, conceptos y casos prácticos. ISBN: 978-2-7460-4958-1.

Bibliografía actualizada en delicious:http://www.delicious.com/dhmartin/LM-ASIR

Page 15: LM-UT7: Almacenamiento XML

Mayo de 2011 CIFP Juan de Colonia

XML (III): ALMACENAMIENTO DE INFORMACIÓN.

LicenciaLicencia

Este material está disponible bajo una Licencia Creative Commons,

http://creativecommons.org/licenses/by-nc-sa/3.0/es/

Page 16: LM-UT7: Almacenamiento XML

Mayo de 2011 CIFP Juan de Colonia

XML (III): ALMACENAMIENTO DE INFORMACIÓN.

¿Dudas o cuestiones?¿Dudas o cuestiones?