Post on 14-Dec-2014
description
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 –
Mayo de 2011 CIFP Juan de Colonia
XML (III): ALMACENAMIENTO DE INFORMACIÓN.
ContenidosContenidos
Introducción
SQL Server
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
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
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
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
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
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
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;
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');
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...
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
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.
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
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/
Mayo de 2011 CIFP Juan de Colonia
XML (III): ALMACENAMIENTO DE INFORMACIÓN.
¿Dudas o cuestiones?¿Dudas o cuestiones?