Sistemas de Datos - Algebra relacional

Transcription

Sistemas de Datos - Algebra relacional
Sistemas de Datos
XML
XML
Sistemas de Datos
Esquema de la clase
1. Que es XML
2. Para que se utiliza
3. XML en las Bases
de Datos
4. Implementación
en DBMS actuales
XML
Sistemas de Datos
1. Que es XML
• EXtensible Markup Language (Lenguaje de Etiquetado Extensible).
• Es muy similar a HTML pero su función principal es describir y trasmitir datos y no
mostrarlos como es el caso de HTML.
• Los tags (marcas) de XML no están predefinidos. Es el usuario quien las define.
• Es un estándar no licenciado, independiente de plataformas, y soportado por toda
la industria de software.
XML
Sistemas de Datos
1. Que es XML
Ejemplo de un archivo XML
<menu_almuerzo>
Tag de apertura
Raiz del XML
<comida>
Elemento Padre
<nombre>Waffles</nombre>
Valor
<precio>$2.00</precio>
Atributo
<descripcion>Waffles baratos de McDonalds</descripcion>
<calorias>650</calorias>
Elemento Hijo
<ingrediente>
<descripcion>Harina</descripcion>
</ingrediente>
</comida>
<comida>
<nombre>Hamburguesa</nombre>
<precio>$5.00</precio>
<descripcion>La hamburguesa mas comun de McDonalds</descripcion>
<calorias>1500</calorias>
</comida>
</menu_almuerzo>
Tag de cierre
XML
Sistemas de Datos
2. Para que se usa XML
Datos vs. Documentos
Comunicación entre aplicaciones.
XML es el estándar de intercambio entre sistemas
heterogéneos). data-centric documents

Empresa #1
Empresa #2
Intercambio de datos con actores
externos a la organización
Web Services
 Almacenar y recuperar documentos (información
semi-estructurada). Administración de contenido y
metadata. document-centric documents
XML
Sistemas de Datos
2. Para que se usa XML
Data-Centric Documents
 XML como medio de transporte de Datos.
 XML diseñado para ser consumido por aplicaciones y/o bases de datos.
 Estructura regular, conjuntos de atributo-valor, poco o ningún contenido adicional.
 El orden en el que se presenta el contenido no es relevante.
 Las Bases de datos pueden ser origen y/o destino de este tipo de documentos.
 Ejemplos: Ordenes de Venta, Datos sobre stock, Intinerarios y horarios de vuelos.
XML
Sistemas de Datos
2. Para que se usa XML
Data-Centric Documents
<?xml version=" 1.0 " encoding=" UTF-8 " standalone= " yes "?>
<ficha>
<nombre> Angel </nombre>
<apellido> Barbero </apellido>
<direccion> Ulises, 36 </direccion>
</ficha>
Ejemplo archivo XML: Catalogo CDs
XML
Sistemas de Datos
2. Para que se usa XML
Document-Centric Documents
 XML como medio de estructurar, almacenar y recuperar documentos/información.
 XML diseñado para ser consumido por personas.
 Estructura no regular, baja granularidad en la información (la más pequeña unidad
de información tiene contenido mixto o es el documento entero), mucho contenido
mixto.
 El orden en el que se presenta el contenido es relevante.
 Usualmente son escritos a mano en XML o en otro formato que luego es convertido
a XML.
 Ejemplos: libros, leyes, email, y cualquier otro documento escrito a mano.
XML
Sistemas de Datos
2. Para que se usa XML
Document-Centric Documents
Ejemplo archivo XML: RetrieveProductSearchResultContent.XML
XML
Sistemas de Datos
3. Uso de XML en las Bases de Datos
Almacenamiento: Posibilidad #1
Mapear el XML en columnas de tipos de datos comunes (caracter,
numerico, fecha, etc.) de una o más tablas.
 Requiere más proceso.
 Solo para data-centric XML.
 Puede realizarse de varias maneras (XML/SQL, etc.)
Ejemplo en T-SQL
INSERT INTO some_table (column1, column2, column3)
SELECT
Rows.n.value('(@column1)[1]', 'varchar(20)'),
Rows.n.value('(@column2)[1]', 'nvarchar(100)'),
Rows.n.value('(@column3)[1]', 'int'),
FROM @xml.nodes('//Rows') Rows(n)
XML
Sistemas de Datos
3. Uso de XML en las Bases de Datos
Almacenamiento: Posibilidad #2
Almacenar el XML en campos del tipo Binary Large Object (BLOB) o
Character Large Object (CLOB).
 Solución sencilla.
 Funciona con todos los motores de Bases de Datos.
 Dificultad para realizar consultas sobre el contenido de los datos de manera sencilla.
 Se pueden usar consultas del tipo full-text search, pero se pierde el uso de los tags. Por
ejemplo, si se busca en un campo BLOB con XMLs de CVs en inglés, candidatos con
experiencia en .NET se podrían obtener resultados con con candidatos que les gusta la
pesca.
XML
Sistemas de Datos
3. Uso de XML en las Bases de Datos
Almacenamiento: Posibilidad #3
Almacenar el XML en un campo especializado para guardar y/o
indexar XML.
 No todas las bases de datos tenen una forma nativa para guardar XML.
 Las técnicas utilizadas para almacenar y/o indexar XML pueden variar de un motor a
otro. Se crea una dependencia con el motor de base de datos utilizado.
XML
Sistemas de Datos
3. Uso de XML en las Bases de Datos
Casos de uso
Input
XML
XML
XML
Campo texto o numérico
Output
XML
Campo texto o numérico
Salida SQL
XML
XML
Sistemas de Datos
3. Uso de XML en las Bases de Datos
Hacer Consultas: Posibilidad #1
Usar JDBC o ODBC en conjunto con SAX o DOM (y tal vez XSLT) para
transformar los resultados de consultas SQL a XML.

Por ejemplo, el programa podría consultar los clientes, y luego hacer consultas adicionales
para consultar los proyectos asociados a cada uno de esos clientes.

Este procedimiento puede resultar ineficiente por el número de consultas requerido.
Base de Datos
Consultas SQL
Aplicación
XML
XML
Sistemas de Datos
3. Uso de XML en las Bases de Datos
Hacer Consultas: Posibilidad #2
Usar las extensiones XML provistas por el motor de base de datos
utilizado.

Estas extensiones pueden resultar más o menos sencillas y mantenibles dependiendo del
motor elegido, pero todas hacen más simple la tarea.

Se crea una dependencia con el motor de base de datos utilizado.
XML
Sistemas de Datos
3. Uso de XML en las Bases de Datos
Hacer Consultas: Posibilidad #3
Usar SQL/XML (ANSI SQL 2003).

Un pequeño set de funciones han sido agregadas al estándar SQL para publicar XML.

Para el programador SQL requiere poco aprendizaje.

SQL/XML está soportado por Oracle e IBM, pero no por Microsoft (SQL/XML es diferente de
SQLXML, una tecnología propietaria de Microsoft, y el parecido en los nombres ha causado
gran confusión en el sector).

SQL/XML puede ser usado con APIs de base de datos tradicionales como JDBC.

Incluye la definición de un tipo de datos XML nativo, formas implícitas y explícitas de
generar XML desde datos relacionales, y una manera implícita para mapear datos
relacionales a XML.
XML
Sistemas de Datos
3. Uso de XML en las Bases de Datos
Hacer Consultas: Posibilidad #4
Usar XQuery.

XQuery es un lenguaje de consultas XML nativo.

Como es un lenguaje nuevo, tiene una mayor curva de aprendizaje para los programadores
SQL, pero resulta más natural para los programadores XML.

A diferencia de XML/SQL, XQuery se encuentra optimizado para procesar XML, y es
particularmente bueno para aplicaciones que deben procesar XML junto a datos
relacionales.

Los mayores motores de Bases de datos soportan XQuery.
XML
Sistemas de Datos
3. Validación en XML
La validación de un documento en como un contrato, el
creador verifica que el documento ha sido creado
apropiadamente, y el consumidor verifica que posee
el formato esperado.
Posibilidades para validar un documento:
 Usar DTD (Document Type Definition)
 Usar XSD (XML Schema Definition
XML
Sistemas de Datos
XML
Sistemas de Datos
XML
Sistemas de Datos
XML
Sistemas de Datos
Vendor Solutions
Además de las ofertas de middleware, las bases de datos más populares están habilitadas para
XML. Es decir, que tienen soporte nativo para la conversión de datos relacionales a XML y
viceversa. De hecho, todos los proveedores principales de base de datos relacionales tienen
extensiones propietarias para el uso de XML con su producto, pero cada uno tiene un enfoque
completamente diferente, y hay poca interoperabilidad entre ellos. Los "Tres Grandes"
fabricantes (IBM, Oracle y Microsoft) tienen completo soporte de XML, el almacenamiento de
todo el documento XML, y soportan de alguna forma XQuery.
XML
Sistemas de Datos
IBM DB2
IBM provides a truly unified XML/relational database, supporting the XML data model from the client through the
database, "down to the disk and back again" through a first-class XML data type. By deeply implementing XML
into a database engine that previously was purely relational, IBM offers superior flexibility and performance
relative to other offerings.
IBM DB2 XML support
DB2 manages both conventional relational and XML data. As depicted in the Storage component of the figure,
relational and XML data are stored in different formats that match their respective models: relational as traditional
row-column structures; and XML as hierarchical node structures. Both types of storage are accessed via the DB2
engine which processes plain SQL, SQL/XML and XQuery in an integrated fashion.
SQL and XQuery are handled in a single modelling framework, avoiding the need to translate queries between
them, via so-called bilingual queries that give developers the flexibility to use the language that matches not just
application needs but also their skills. Applications can continue to use SQL to manipulate relational data or the
XML store. SQL/XML extensions enable publishing relational data in XML format based on data retrieved by
embedding XPath or XQuery into SQL statements. XML applications typically use XQuery to access the XML
store; yet XQuery queries can optionally contain SQL to combine and correlate XML with relational data.
XML
Sistemas de Datos
Oracle XML DB
Oracle has been steadily evolving its support for XML since 1998, moving toward flexible, high-performance,
scalable XML storage and processing. With new version releases every few years, they have progressed from
loosely-coupled XML APIs, to XML storage and repository support, later adding XQuery then binary XML storage
and indexing.
Oracle XML DB features
XML DB implements the major W3C standards (e.g., XML, Namespace, XPath, XML Schema, XSLT). They claim
the first major implementation of XQuery as well as support for SQL/XML. This hybrid database provides SQLcentric access to XML content, and XML-centric access to relational content. Multiple XML storage options allow
tuning for optimal application performance. An XML DB repository is a nice addition for serving document-centric
needs.
XML
Sistemas de Datos
XML
Sistemas de Datos
XML
Sistemas de Datos
XML
Sistemas de Datos
XML
Sistemas de Datos
Microsoft SQL Server
Microsoft's SQL Server architecture. This product features XML storage, indexing and query processing. The XML data type provides
a simple mechanism for storing XML data by inserting it into an untyped XML column. The XML data type preserves document order
and is useful for applications such as document management applications. Alternatively, XML Schemas may be used to define typed
XML; this helps the database engine to optimize storage and query processing in addition to providing data validation. The SQL
Server can also handle recursive XML Schemas as well as server-side XQuery.
Microsoft SQL server architecture
Microsoft still marches to its own drummer in some respects. Their SQLXML mapping technology is used to layer
an XML-centric programming model over relational data stored in tables at the server. (Note SQLXML is
completely different from SQL/XML; the similarity in names can cause quite a bit of confusion.) The mapping is
based on defining an XML schema as an XML view. This provides a bi-directional mapping of an XML Schema to
relational tables. This approach can be used for bulk loading XML data into tables and for querying the tables.
Document order is not preserved, however, so the mapping technology is useful for XML data processing as
opposed to XML document processing. Microsoft still advocates sticking with a relational model for structured
data with a known schema.
XML
Sistemas de Datos
Microsoft SQL Server
Microsoft SQL Server, currently version 2005, is a popular and powerful database server. XML
support, including XQuery support and the addition of an XML column type, is one of the primary
areas of improvement in this version
Retrieving XML
SQL Server's T-SQL dialect includes the FOR XML clause for SELECT queries. This clause, which must
be the last clause in the SELECT statement, causes the data returned from the query to be formatted
as XML. This feature was first added with SQL Server 2000, but it has been improved in SQL Server
2005. The actual format of the XML is configurable using one of the optional keywords listed in the
following table.
FOR XML Formatting
RAW
Notes
Each row in the query is returned as an XML element. Individual columns are returned as attributes of that
element. There is no root node by default, although this can be added. By default, the element name is
row. This can be changed by including the name as a parameter to RAW (FOR XML RAW(‘myrowname’) ).
AUTO
Each row is returned as an XML element named for the table providing the data. Individual columns
returned are attributes of that element. There is no root node by default. If related columns are included,
the resulting XML is nested.
EXPLICIT
The structure of the resulting XML must be defined. This provides the most flexibility in creating XML, but
also requires the most work by the developer.
PATH
The structure of the resulting XML can be defined. This method, added with SQL Server 2005, is much easier
to use than the EXPLICIT model. By default, it creates a structure similar to the AUTO output, but columns
are output as elements, not attributes.
XML
Sistemas de Datos
Microsoft SQL Server
Storing XML
SQL Server 2005 adds support for the XML column type. You can create a table containing one
of these columns just as you can for any other data type (see Listing 11-7).
After the table is created, you can populate and query it just as you do any other table:
INSERT INTO dbo.Articles(Title, Body) VALUES('Welcome', '<div class="wrapper">Welcome to
the system</div>') SELECT Body FROM dbo.Articles Simply dumping XML into an XML column,
although it is useful, has few benefits over using a text column. To improve the process, you
can add an XML Schema to the column. Then, adding data to the table triggers validation,
ensuring the column contains data of the appropriate type. To do this with SQL Server, you
create a schema collection in the database. The CREATE XML SCHEMA COLLECTION command
creates the schema collection (see Listing 11-8). In addition to adding an entry in the database
for the schema, adding a schema collection to a database creates a number of new system
tables and views to track the schemas, as well as support validation.
XML
Sistemas de Datos
Bases XML-Nativas
Xindice
Apache Xindice is a database designed from the ground up to store XML data or what is
more commonly referred to as a native XML database. The name is pronounced zeen-deechay in your best faux Italian accent. Don't worry if you get it wrong though, we won't
mind. We just care that you spell it correctly.
You might be wondering what a native XML database is good for? Well it pretty much has
one purpose, storing XML data. If you don't have any XML data, don't want any XML data
or think XML is the most over-hyped technology of the new millennium, then Xindice is not
for you. We're not out to change the way data in general is stored, only to provide a good
solution for storing XML data. If you survey your projects and see XML popping out of
every corner, then Xindice might be a real help for storing that XML.
The benefit of a native solution is that you don't have to worry about mapping your XML
to some other data structure. You just insert the data as XML and retrieve it as XML. You
also gain a lot of flexibility through the semi-structured nature of XML and the schema
independent model used by Xindice. This is especially valuable when you have very
complex XML structures that would be difficult or impossible to map to a more structured
database.
At the present time Xindice uses XPath for its query language and XML:DB XUpdate for its
update language. We provide an implementation of the XML:DB API for Java development
and it is possible to access Xindice from other languages using built in XML-RPC API. As
standards in the XML database area mature Xindice will include support for those that are
most important.
Xindice is the continuation of the project that used to be called the dbXML Core. The
dbXML source code was donated to the Apache Software Foundation in December of 2001.