12. Otras Bases de datos

El modelo entidad-relación y el modelo relacional no son los únicos tipos de modela que existen, en este capítulo se describen brevemente los demás tipos existentes actualmente.

12.1 Object-Oriented Databases

12.1.1 Object-Oriented

El primer modelado fue relacional, los DBMS lo implementaban ampliamente en RDBMS, cuando surgieron los lenguajes orientados a objetos como C++ o Java se pensó en una manera de plantear ese paradigma en bases de datos, finalmente si se programaba en un leguaje orientado a objetos, los más natural sería almacenar esa información de la misma forma.

class Movie
        (extent Movies key (title, year))
{
       attribute string title;
       attribute integer year;
       attribute integer length;
       attribute enum Film {color, b&w} filmType;
       relationship Set<Star> stars
                         inverse Star::starredIn;
       relationship Studio ownedBy
                         inverse Studio::owns;
       float lengthInHours() raises(noLengthFound);
       void starNames(out Set<String>);
       void otherMovies(in Star, out Set<Movie>)
                         raises(noSuchStar);
};

class Star
        (extent Stars key name)
{
       attribute string name;
       attribute struct Addr
                         {string street, string city} address;
       relationship Set<Movie> starredIn
                         inverse Movie::stars;
};

class Studio
        (extent Studios key name)
{
       attribute string name;
       attribute string address
       relationship Set<Movie> owns
                         inverse Movie::ownedBy;
};

     

12.1.2 OQL (Object Query Language)

SELECT m.year
FROM Movies m
WHERE m.title = "Titanic

SELECT s.name
FROM Movies m, m.stars s
WHERE m.title = "Casablanca "

SELECT DISTINCT s.name
FROM (SELECT m
         FROM Movies m
        WHERE m.ownedBy.name = "Disney") d,
         d.stars s

AVG(SELECT m.length FROM Movies m)

CREATE METHOD houseNumber() RETURNS CHAR(10)
FOR AdrdressType
BEGIN
         .....
END

 

12.1.3 Object-Relational Model

Las bases de datos orientadas a objetos tuvieron gran auge durante los 90's pero luego todos los OODBMS se desplomaron. Como se predijo alrededor de 1990, los vendedores de DBMS comerciales hicieron una mezcla que permitiera utilizar los aspectos del modelo relacional y del orientado a objetos, resultando el modelo "object-relational", surgiendo así los ORDBMS.

Las OR databases incorporan:

  • Structured types for attributes
  • Methods
  • Identifiers
  • References

Ejemplos de ORDBMS usando Oracle

create type ADDRESS_TY as object
(Street VARCHAR(50),
City     VARCHAR(25),
State   CHAR(2),
Zip     NUMBER);

create type PERSON_TY as object
(Name    VARCHAR(25),
Address  ADDRESS_TY);

create table CUSTOMER
(Customer_ID     NUMBER,
Person               PERSON_TY);

insert into CUSTOMER values
(1,
  PERSON_TY('NEIL MULLANE',
                     ADDRESS_TY('57 MT PLEASANT ST',
                                          'FINN', 'NH', 11111)));

select Name
     from CUSTOMER          /*ERROR*/

select Customer_ID, C.Person.Name
     from CUSTOMER C;

C.Person.Name    =     Correlation.Column.Attribute

12.2 Distributed Databases

12.2.1 Datos distribuidos

Aplicaciones:

  • Un banco con muchas sucursales
  • Cadena de tienda de departamentos
  • Bibliotecas digitales en consorcio

Oportunidades

  • Tiempo de respuesta y paralelismo por el número de máquinas empleadas
  • A prueba de fallas debido al replicamiento de datos

Complejidades

  • Diseño
  • Costo de procesamiento

 

12.2.2 Transacciones distribuidas

En una base distribuida, una transacción lógica quizás consista de distintos componentes, cada uno ejecutándose en diferentes sitios. Para preservar la consistencia, estos componentes deben acordar cuándo comprometer o abortar la transacción.

12.2.3 Two-phase commit

Es un enfoque que soporta el acuerdo entre los componentes de una transacción ya sea para comprometer o para abortar, brindando soluciones inclusive en caídas del sistema. En la primer fase, un coordinador invoca a todos los componentes involucrados en un commit o en un abort. En la segunda fase, el coordinador ordena a los componentes a procesar la petición si y solo si dicho componente ha expresado el deseo de hacerlo.

12.2.4 Bloqueos distribuidos

Si las transacciones requieren bloquear elementos encontrados en diferentes sitios, se debe tomar en cuenta:

  • Cada sitio tiene sus propios datos
  • Todos los datos son compartidos por los sitios
  • Una mezcla de los anteriores

Soluciones:

  • Bloqueos centralizados (lock site)
  • Bloqueos locales y globales

 

12.3 XML Databases

12.3.1 Antecedentes

  • El analizar un documento XML no es trivial, aunque se puede hacer con SAX o DOM
  • XPath y XSLT (Xalan) permiten hacer búsquedas en un documento de una manera sencilla a través de dicho lenguaje de consulta
  • Cuando hablamos de realizae un búsqueda en una colección (conjunto de) documentos las cosas cambian, la complejidad aumenta y se deben buscar alternativas

 

12.3.2 Definición

Hablar de documentos XML es hablar de 2 categorías

  • Centrados en los datos (data-centric): usados para el transporte de datos ya que probablemente estaremos hablando de datos estructurados organizados en XML
  • Centrados en el documento (document-centric): tienen una estructura irregular y sobre todo, esa estructura es importante

 

Para cada caso la manera de realizar una consulta es diferente:


Para los documentos centrados en los datos, podemos pensar en datos estructurados que pueden extraerse del documento e indexarse con alguna base de datos convencional

Por otro lado para los datos centrados en el documento el reto no es tan trivial ya que se pretende hacer consultas pero no solo sobre el contenido, sino también sobre la estructura del documento.

De modo que una base de datos XML es aquella que define un modelo lógico de un documento XML y almacena y recupera documentos de acuerdo a ese modelo.


12.3.3 Tipos de Bases de Datos XML

XML Enabled Databases (Bases de datos habilitadas para XML): son aquellas que desglosan la información de un documento XML en su correspondiente esquema relacional o de objetos

Product Developer License DB Type
Access 2002 Microsoft Commercial Relational
Cache InterSystems Corp. Commercial Multi-valued
DB2 IBM Commercial Relational
eXtremeDB McObject Commercial Navigational
FileMaker FileMaker Commercial FileMaker
FoxPro Microsoft Commercial Relational
Informix IBM Commercial Relational
Matisse Matisse Software Commercial Object-oriented
Objectivity/DB Objectivity Commercial Object-oriented
OpenInsight Revelation Software Commercial Multi-valued
Oracle 8i, 9i Oracle Commercial Relational
SQL Server 2000 Microsoft Commercial Relational
Sybase ASE 12.5 Sybase Commercial Relational
Versant enJin Versant Corp. Commercial Object-oriented

 

 

XML Native Databases (Bases de datos nativas de XML): son aquellas que respetan la estructura del documento, se pueden hacer consultas sobre dicha estructura y es posible recuperar el documento tal como fue insertado originalmente.

 

 

Product Developer License DB Type
4Suite, 4Suite Server FourThought Open Source Object-oriented
Birdstep RDM XML Birdstep Commercial Object-oriented
Centor Interaction Server Centor Software Corp. Commercial Proprietary
Cerisent XQE Cerisent Commercial Proprietary(?)
Coherity XML Database Coherity Commercial Proprietary
DBDOM K. Ari Krupnikov Open Source Relational
dbXML dbXML Group Commercial Proprietary
DOM-Safe Ellipsis Commercial Proprietary
eXist Wolfgang Meier Open Source Relational
eXtc M/Gateway Developments Ltd. Commercial Multi-valued
eXtensible Information Server (XIS) eXcelon Corp. Commercial Object-oriented (ObjectStore). Relational and other data through Data Junction
GoXML DB XML Global Commercial Proprietary (Text-based)
Infonyte DB Infonyte Commercial Proprietary (Model-based)
Ipedo XML Database Ipedo Commercial Proprietary
Lore Stanford University Research Semi-structured
Lucid XML Data Manager Ludic'i.t. Commercial Proprietary
MindSuite XDB Wired Minds Commercial Object-oriented
Natix data ex machina Commercial File system(?)
Neocore XML Management System NeoCore Commercial Proprietary
ozone ozone-db.org Open Source Object-oriented
Sekaiju / Yggdrasill Media Fusion Commercial Proprietary
SQL/XML-IMDB QuiLogic Commercial Proprietary (native XML and relational)
Tamino Software AG Commercial Proprietary. Relational through ODBC.
TeraText DBS TeraText Solutions Commercial Proprietary
TEXTML Server IXIA, Inc. Commercial Proprietary (Text-based)
TigerLogic XDMS Raining Data Commercial Pick
TOTAL XML Cincom Commercial Object-relational?
Virtuoso OpenLink Software Commercial Proprietary. Relational through ODBC
XDBM Matthew Parry, Paul Sokolovsky Open Source Proprietary (Model-based)
XDB ZVON.org Open Source Relational (PostgreSQL only?)
X-Hive/DB X-Hive Corporation Commercial Object-oriented (Objectivity/DB). Relational through JDBC
Xindice Apache Software Foundation Open Source Proprietary (Model-based)
Xyleme Zone Server Xyleme SA Commercial Proprietary