LM-UT7: Almacenamiento XML

1,437 views
1,330 views

Published on

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

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,437
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
57
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

LM-UT7: Almacenamiento XML

  1. 1. Lenguajes de Marcas y SGILenguajes de Marcas y SGI UT 7: XML (III). Almacenamiento de información. CFGS «Administración de Sistemas Informáticos en Red» CIFP Juan de Colonia (Burgos) David H. Martín Alonso – Curso 2010/2011 –
  2. 2. Mayo de 2011 CIFP Juan de Colonia XML (III): ALMACENAMIENTO DE INFORMACIÓN. ContenidosContenidos Introducción SQL Server
  3. 3. Mayo de 2011 CIFP Juan de Colonia XML (III): ALMACENAMIENTO DE INFORMACIÓN. 3/16 XQueryXQuery XML 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/alumno where $alu/edad > 20 order by $alu/apellidos return $alu/nombre
  4. 4. 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
  5. 5. 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
  6. 6. 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 XML BLOBs: Large Binary Objects – Modos: XML tipado (con esquema XML) o no tipado – Transact SQL con soporte XQuery/XPath integrado. □Introducción ■SQL Server
  7. 7. Mayo de 2011 CIFP Juan de Colonia XML (III): ALMACENAMIENTO DE INFORMACIÓN. 7/16 SELECT … FOR XMLSELECT … 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
  8. 8. 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
  9. 9. 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;
  10. 10. Mayo de 2011 CIFP Juan de Colonia XML (III): ALMACENAMIENTO DE INFORMACIÓN. Ejemplo: SQL Server / XQueryEjemplo: SQL Server / XQuery INSERT 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 mitabla WHERE misdatosxml.exist('/papelería')=1 FOR XML PATH('comercio'), ROOT('ns1:grupos');
  11. 11. 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...
  12. 12. 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
  13. 13. 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.
  14. 14. Mayo de 2011 CIFP Juan de Colonia XML (III): ALMACENAMIENTO DE INFORMACIÓN. ReferenciasReferencias Boag, S et al. (2010, W3C Recommendation) XQuery 1.0 http://www.w3.org/TR/xquery/ W3Schools (WWW) XQuery Tutorial http://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
  15. 15. 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/
  16. 16. Mayo de 2011 CIFP Juan de Colonia XML (III): ALMACENAMIENTO DE INFORMACIÓN. ¿Dudas o cuestiones?¿Dudas o cuestiones?

×