Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
LM-UT7: Almacenamiento XML
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. Mayo de 2011 CIFP Juan de Colonia
XML (III): ALMACENAMIENTO DE INFORMACIÓN.
ContenidosContenidos
Introducción
SQL Server
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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Mayo de 2011 CIFP Juan de Colonia
XML (III): ALMACENAMIENTO DE INFORMACIÓN.
¿Dudas o cuestiones?¿Dudas o cuestiones?