Está en la página 1de 65

< “Ahorcado”

Demostración del uso


de
Bases de Datos XML

Orlando Sánchez
Martínez
Gabriel Morera Morera
Noviembre del 2007
>
< Agenda
<>

<xml>

>
< "Never increase,
beyond what is
necessary, the
number of entities
required to explain
anything"

 William of Ockham
(1285-1349)
>
< <>

< xml >


>
< XM L
<>

» eXtensible Markup Language


» Lenguaje para modelar lenguajes
» Contiene información sobre
estructura y significado de los
datos
» Forma estandarizada de
estructurar documentos e

>
intercambiar datos
» Ampliamente adaptable
< Un X M L se n cillo
<>

<?xml version="1.0" encoding="UTF-8"?> Ca b e ce


<libreria> AtRa
Va
r ib
Et lor
ízuut edt ea l
iq ra
o At r ib u t o Va
Etlor
iq u e t a d e
<libro lenguaje="ing">
in icio
<titulo>Data Warehousing</titulo>
<precio>50000</precio> Com e n t a r
<!-- Este Et iq uloe thizo
a d ela profe --> io
libro
Ele m e n t o Cu e r
cie r r e
com p u e st o p o
</libro>
<libro lenguaje="esp"> Ele m e n t o
<titulo>PHP & SQL</titulo>se n cillo
Ele m e n t o va c ío

>
<precio>12000</precio>
</libro>
<libro/>
< ( ár b ol) X M LSe n cillo
<>

<?xml version="1.0" encoding="UTF-8"?>


<libreria>
<libro lenguaje="ing">
<titulo>Data Warehousing</titulo>
<precio>50000</precio>
<!-- Este libro lo hizo la profe -->
</libro>
<libro lenguaje="esp">
<titulo>PHP & SQL</titulo>
<precio>12000</precio>
</libro>
<libro/>
</libreria>

>
< Un D TD se n cillo
<>

<?xml version=“1.0” encoding=“UTF-8”?>


<!ELEMENT libreria(libro*)>
<!ELEMENT libro(titulo,precio)>
<!ELEMENT titulo(#PCDATA)>
<!ELEMENT precio(#PCDATA)>
<!ATTLIST libro lenguaje “esp”>

>
< Documento XM L bien <>

formado
» Posee una raíz única
» Tiene una etiqueta de cierre para
cada etiqueta de inicio
» Sus elementos están
correctamente anidados
» Aparecen entre comillas los
valores de sus atributos

>
» No existen varios atributos con el
mismo nombre
< Documento XM L bien formado (2)
<>

» Los comentarios (<!-- … -->) o


instrucciones de proceso (<? … ?
>) no están dentro de una
etiqueta
» Sólo aparecen caracteres
compatibles con la codificación
definida en el encoding

>
» Los caracteres reservados (“<”,
“&”, …)
no aparecen en las etiquetas o
< I ncluyendo caracteres
<>

especiales y código

<código>
<![CDATA[
if ( (edad > 13) && (edad < 30) ) then

>
print “Bienvenido, joven...”
]]>
</código>
< ¿De dónde viene el XM L?
<>

>
< M ejoras de XM L
<>

con respecto a HTM L


» Noción de validez
> Puede decidir si un documento
respeta un conjunto de normas
(DTD)
» Utiliza Unicode
» Es extensible

>
> Apoya elementos y tipos definidos
por el usuario
< ¿Quétipos de datos puede <>

almacenar un XM L?
» Estructurados
> Regulares, estructura homogénea
> Válido con respecto a un esquema
● Conjuntos de filas, archivos delimitados por comas

» Semi-estructurados
> Irregulares, estructura heterogénea
> Datos esparcidos
● Documentos HTML, documentos XML

» No estructurado
● Documentos, contenido >
< Documentos XM L centrados <>

en

>
Se expone
Consumido
PocoOrden como
por la Escrito
contenido Libro
“a mano”,
Consumido
Granularidad
Estructurapor el
Estructura
Granularidad
regular
fina Contenido mixto
XML o
máquina
Cliente
mixto Documento
no seirregular
origina
humano
gruesa XHTML
en la
se guarda en la BD BD
< <>

¿Qué usos
prácticos de XML
conocen?

>
< Desventajas del uso
de XML
<>

Contienen mucho texto


Acceso lento a datos específicos

>
< Ventajas del uso de XM L
<>

Extensible
Estándar
Lectura sencilla
> Humano
> Computador
Autodescriptivo,
autodocumentado
Compatibilidad
Intercomunicación >
< <>

< >
>
< ¿Por quéuna
<>

base de datos XM L?
» ¿ Se guardan datos o se guardan
documentos?
documentos
» Necesidad » Documentos
de XML
> Almacenar > Natural
> Recuperar > Transparente
> Eficiente

>
> Consultar
> Transferir
< Exist e n d os t ip os d e
<>

Ba se s d e D a t os X M L

>
< BD que soportan XM L
<>

» Shredding
> XML relacional
» Composición
> relacional XML
» Mapeo (Relacional  XML)
> ¿Esquema?

>
> ¿Tipos y valores de datos?
> ¿Llaves e identificadores?
< BD nativas XM L
<>

» NXD (Native XML Database)


» Define un modelo para un
documento XML
» Almacena y recupera documentos
de acuerdo a ese modelo
» Tiene un documento XML como
unidad fundamental de

>
almacenamiento lógico
» No necesita estar implementada
sobre un modelo de
< Almacenamiento en NXDs
<>

» Documentos XML archivos


> Documentos son comprimidos
> Documentos son indizados
» Colecciones XML carpetas
> No necesitan un esquema asociado
» (en un sistema de archivos)
> Optimiza el espacio de
almacenamiento
> Reduce el tamaño de elementos a
transferir
>
< Arquitecturas de NXDs
<>

» NXD basadas en texto


> Sistema de archivos
> BLOB en una BD relacional
> Formato propietario de texto
» NXD basadas en modelo

>
< M apeo del esquema del <>

documento al esquema de la BD
» Incluir
> Tipos de elementos
> Atributos
> Texto
» Omitir estructura física
> <? Instrucciones de proceso ?>
> <!-- Comentarios -->
> Orden en que los elementos y
PCDATA aparecen en su padre >
< M apeo basado en tablas
<base-de-datos>
» Datos de la columna:
<>

<tabla>
hijos o atributos
<fila>
» Especificar nombres de
<col1>...</col1>
elementos o atributos
<col2>...</col2>
...
» Incluyen metadatos
</fila>
de la tabla y columna
<fila> Serializar datos
... relacionales
Documentos que no

>
</fila>
... se ajustan a este
</tabla> formato
<tabla>
< Mapeo objeto-
<>

relacional

>
< Otros aspectos
<>

relativos al mapeo
» Tipos de datos
» Datos binarios
» Valores nulos
» Conjuntos de
caracteres

>
< SQL/XM L
<>

» Conjunto de extensiones de SQL para


crear documentos XML a partir de
datos relacionales
» Añade el tipo de dato XML
» Funciones escalares para crear XML:
> XMLELEMENT > XMLATTRIBUTES
> XMLFOREST > XMLCONCAT

>
» Función de agregación (XMLAGG)
» Define cómo mapear identificadores
de la BD a identificadores XML
< Consulta SQL/XM L
<>

SELECT XML2CLOB(
XMLELEMENT(NAME "Department",
XMLATTRIBUTES(workdept AS "name"),
XMLAGG(
XMLELEMENT(NAME "employee",
XMLATTRIBUTES(lastname,firstnme,empno) )
ORDER BY lastname) ) )
FROM employee

>
WHERE workdept IN('A00', 'C01‘)
* TomadoBY
GROUP de Overview
workdeptof DB2’s XML Capabilities
http://www.ibm.com/developerworks/db2/library/techarticle/dm-0311wong/
< Consultando con XPath
<>

» Lenguaje de consultas sencillo y


poderoso
» “Especie de mezcla de expresiones
regulares
con notación de rutas”
/raíz/nodo[criterio = 'valor']
doc(“carros.xml”)//carro[anio > 2000]
» Limitado:
> No soporta agrupamiento (cross join) >
< Operadores de XPath
<>

>
< Consultando con XQuery
<>

» Incluye XPath como método de


selección de nodos
» Utiliza los tipos de datos del XML
Schema
» Permite hacer join entre varios
XML
» Permite agrupamiento y

>
ordenamiento
» Semántica semejante a SQL
< XQuery
<>

FLWOR
Pronunciado
/’flaʊəɼ/
(como el inglés
for $x in doc(“lib.xml”)//libro
let $m :=1 , $n:=10
where $x/precio>9999
order by $x/titulo
return $x/titulo
>
< Ejemplo sencillo de
<>

carros.xml XQuery
XQuery
<carros> for $c in
doc("carros.xml")//carro
<carro placa="1234">
where $c/anio > 2000
<marca>Toyota</marca> return
<modelo>Corona</modelo> <reciente>{
$c/@placa,$c/anio
<anio>1986</anio>
}</reciente>
</carro>
<carro placa="5678"> Resultado
<marca>Ford</marca> <reciente placa="5678">

>
<modelo>Edge</modelo> <anio>2005</anio>
</reciente>
<anio>2005</anio>
</carro>
< <>

< >
>
< Objetivo
<>

» Desarrollar “cualquier” aplicación


que simule un ambiente en el
cual se comuniquen mediante un
Servicio Web dos sistemas
heterogéneos cuyas fuentes de
datos sean documentos XML
> SGBD nativo XML
> SGBD con soporte XML
> Software de código libre
> Software propietario >
< Estructura del
“Ahorcado”
<>

Servicio
Hangman {

__construct();
getNewSecretWord();
Web
C#
newGuessedChar($char);
addWinner($name,$time);
getWinners();
whatTimeIsIt();
}

<xml> <xml>
>
< Desarrollo del
<>

Ahorcado
1. Desarrollar en PHP5 la parte
“lógica” de la aplicación, usando
temporalmente MySQL 5.0 como
SGBD
2. Publicar como Servicio Web el
producto del paso 1
3. Desarrollar en Microsoft Visual

>
C# 2005 la interfaz y la parte de
la aplicación que consume el
Servicio Web del paso 2
< Desarrollo del
<>

Ahorcado (2)
4. Probar diversos SGBD XML
5. Seleccionar dos SGBD XML
“heterogéneos”
6. Profundizar el conocimiento del
SGBD
a usar con PHP y portar a este
sistema

>
el producto del paso 1
7. Profundizar el conocimiento del
SGBD
< Estructura del
“Ahorcado”
<>

Servicio
Hangman {

__construct();
getNewSecretWord();
Web
C#
newGuessedChar($char);
addWinner($name,$time);
getWinners();
whatTimeIsIt();
}

<xml> <xml>
>
< Prerequisitos
<>

» WAMP 1.7.4
» Apache 2.2.6
» MySQL 5.0.45
» PHP 5.2.5
» phpMyAdmin 2.11.2.1
» SQLiteManager version
1.2.0
>
< Paso 1:
Desarrollo de la parte
<>

“l ógica”
» Clase Hangman en PHP5
> __construct()
> getNewSecretWord()
> newGuessedChar($char)
> addWinner($name="x", $time=“999")
> getWinners()
> whatTimeIsIt()
» Ver Hangman.class.php
>
< Estructura del
“Ahorcado”
<>

Servicio
Hangman {

__construct();
getNewSecretWord();
Web
C#
newGuessedChar($char);
addWinner($name,$time);
getWinners();
whatTimeIsIt();
}

<xml> <xml>
>
< Paso 2:
Servicio Web
<>

“Los Servicios Web son un


conjunto de aplicaciones o de
tecnologías con capacidad para
interoperar en la Web y que
intercambian datos entre sí con
el objetivo de ofrecer servicios.
Los proveedores ofrecen sus
servicios como procedimientos

>
remotos y los usuarios solicitan
un servicio llamando a estos
procedimientos a través de la
< Paso 2:
Servicio Web (2)
<>

“Estos servicios proporcionan


mecanismos de comunicación
estándares entre diferentes
aplicaciones, que interactúan entre sí
para presentar información dinámica
al usuario.”

>
Tomado de [W3C06] , “El W3C de la A
a la Z”
http://www.w3c.es/divulgacion/a-z/#s
< Paso 2: <>

Servicio Web (3)


» WSDL:
Web Services Description Language

» Describe los requisitos del protocolo


y
el formato y parámetros de los
mensajes necesarios para la
comunicación

» Ver Hangman.wsdl >


< Paso 2: <>

Servicio Web (4)


» Servidor SOAP:
Simple Object Access Protocol

» “Protocolo para intercambiar


mensajes, basado en XML, y de
extendido uso en servicios Web”
[W3C06]

» Ver HangmanService.php y
HangmanClient.php >
< Estructura del
“Ahorcado”
<>

Servicio
Hangman {

__construct();
getNewSecretWord();
Web
C#
newGuessedChar($char);
addWinner($name,$time);
getWinners();
whatTimeIsIt();
}

<xml> <xml>
>
< Paso 3: <>

Interfaz y uso del Servicio Web


» Ver Hangman.cs

>
< Paso 4: <>

Probar diversos SGBD XM L


» Apache Xindice
» myXMLdb
» dbXML
» Sedna XML DBMS
» Oracle Database 11g Release 1
(11.1)

>
» ...
» Para una lista completa de SGBD
XML,
< Paso 5: <>

Seleccionar dos SGBD XM L

C#
<xml> en

>
< Estructura del
“Ahorcado”
<>

Servicio
Hangman {

__construct();
getNewSecretWord();
Web
C#
newGuessedChar($char);
addWinner($name,$time);
getWinners();
whatTimeIsIt();
}

<xml> <xml>
>
< Paso 6:
Portar a eXist la parte
<>

“lógica”

>
< eXist: Open Source <>

Native XM L Database
» Base de datos nativa XML
» Código abierto (Java)
» Equipo europeo de desarrolladores
» Liderado por Wolfgang Meier
» Soporta
> Xquery > Extensiones de XQuery

>
> XSLT > Búsqueda (como texto)
> XUpdate
< eXist (2)
<>

» Viene en diferentes “distribuciones”


> Empotrado en una aplicación Java
> Como parte de un pipeline de Cocoon
> Como aplicación web en Apache/Tomcat
> Con el Jetty HTTPServer empotrado
» Múltiples interfaces
> Servlet REST – a Java
> SOAP
> XML-RPC >
< I nstalación de eXist
<>

» Bajar última versión de


http://exist.sourceforge.net/
» Ejecutar archivo eXist-1.0.X-
revXXXX.jar
» Proceso normal de instalación en
Windows
» * Recordar password administrativo

>
*
» Dar click en “Install eXist as
< PheXist
<>

» Conjunto de clases para


consultar y manipular
documentos XML en PHP5
» Usa el eXist XML:DB
» Autor: Òscar Celma
» http://query-exist.sourceforge.net/

>
< Estructura del
“Ahorcado”
<>

Servicio
Hangman {

__construct();
getNewSecretWord();
Web
C#
newGuessedChar($char);
addWinner($name,$time);
getWinners();
whatTimeIsIt();
}

<xml> <xml>
>
< Paso 7:
<>

<xml> en

>
< Conclusiones
<>

» XML es un estándar altamente


adaptable, facilita la compatibilidad
entre aplicaciones
» Las BD XML son una alternativa
viable para compartir datos
estructurados provenientes de
entornos distintos
> Modificaciones poco frecuentes
» Para usar BD XML en una
aplicación, >
< Referencias (1)
<>

» [Bour05] Bourret, Ronald. XML and


Databases. Sitio de Ronald Bourret,
Consulting, writing, and research in XML
and databases. URL:
http://www.rpbourret.com/xml/XMLAndDat
. Setiembre, 2005
» [Stak01] Staken, Kimbro. Introduction
to Native XML Databases. XML.com.

>
URL:
http://www.xml.com/pub/a/2001/10/31/
nativexmldb.html. Octubre, 2001.
< Referencias (2)
<>

» [W3C06] World Wide Web Consortium,


Oficina Española. El W3C de la A a la
Z. Sitio de la World Wide Web
Consortium, Oficina Española. URL:
http://www.w3c.es/divulgacion/a-z/#s.
Marzo, 2006.
» [Wall06] Wallace, Chris. Native XML
Databases in Information Systems.
Information Systems School, University

http://www.cems.uwe.ac.uk/ >
of the West of England, Bristol. URL:

~cjwallac/NXD/index.htm. Abril, 2006.


< “Ahorcado”
Demostración del uso
de
Bases de Datos XML

¿Alguna pregunta,
comentario, sugerencia
u otro?
Noviembre del 2007
>