SlideShare una empresa de Scribd logo
Digitally signed by Alejandro Fanjul
        DN: cn=Alejandro Fanjul, c=ES,
         o=MHProject, ou=Proyectando,
       email=fanjul.35858@unavarra.es
     'Date: 2005.12.21 21:46:21 +01'00




  db4objects

   BASE DE DATOS
ORIENTADA A OBJETOS
                v1.0
ÍNDICE

                                                              MHProject




                                                                                                                   Créditos
       Bases de datos                                                                                 db4o
                                         db4objects                                                                    Y
       (Introducción)                                                                               por dentro
                                                                                                                  Bibliografía




  RDBMS
    Vs            OODBMS      Introducción      Características                            La API
 OODBMS




                                                                                                                    Objetos
                                                                                                                                 Transacciones
   RDBMS          Nativas     Comparativas      Casos de Uso           Motor      Tratamiento                    Estructurados
                                                                                                                                    Tecnología
El paradigma        Vs         Estadísticas       Ejemplos          Instalación        De           Consultas     Colecciones
                                                                                                                                        De
 Relacional      No-Nativas     Gráficos        Casos de Éxito    Documentación     Objetos                          Arrays
                                                                                                                                 Cliente/Servidor
                                                                                                                   Herencia




                                                                                     QBE               NQ           SODA




 19/12/2005                                           E.T.S de Ingenieros de Telecomunicación                                           .2
BASES DE DATOS
     INTRODUCCIÓN



PERSISTENCIA DE DATOS
Persistencia

       Una de las tareas más críticas en la
       programación es salvar y recuperar datos
       La persistencia es el almacenamiento de
       los datos en memoria, para una posterior
       recuperación de los mismos
       En sistemas orientados a objetos, existen
       varios métodos para hacer los objetos
       persistentes.
       La elección del método es de vital
       importancia.
19/12/2005           E.T.S de Ingenieros de Telecomunicación   .4
SERIALIZACIÓN
             DATABASES




                              PERSISTENCIA
             ORDMBS                DE                              OODBMS
                                OBJETOS




                                  RDBMS


19/12/2005               E.T.S de Ingenieros de Telecomunicación            .5
BASES DE DATOS
  INTRODUCCIÓN



RDBMS vs OODBMS
RDBMS vs OODBMS


       2 Tecnologías cara a cara
             Tecnología Relacional
              • Orientada al uso de funciones
              • Centrada en los datos
             Tecnología de Objetos
              • Orientada a Objetos
              • Centrada en servicios




19/12/2005                  E.T.S de Ingenieros de Telecomunicación   .7
RDBMS vs OODBMS


       Tecnología Relacional
             Los datos constituyen un ente propio y van
             completamente separados de las funciones
             que los manejan.
             De hecho uno puede existir perfectamente sin
             la existencia del otro.
             Esto crea una complejidad añadida a la hora
             de manejar esos datos.



19/12/2005                E.T.S de Ingenieros de Telecomunicación   .8
RDBMS vs OODBMS


       Tecnología de Objetos
             Los datos coexisten junto a los procesos que
             los tratan.
             Estas entidades son los Objetos
             Simplifica el tratamiento de los datos.




19/12/2005                E.T.S de Ingenieros de Telecomunicación   .9
BASES DE DATOS
      INTRODUCCIÓN



         RDBMS
EL PARADIGMA RELACIONAL
El Paradigma Relacional


       Los datos son independientes de las
       entidades que los procesan
       Dichos datos deben ser almacenados en
       bases de datos relacionales compuestas
       principalmente de Tablas, Filas (registros),
       y Campos.
       Dichos datos deben mantener una
       relación coherente entre ellos (Relación
       impuesta por la Base de datos).

19/12/2005            E.T.S de Ingenieros de Telecomunicación   .11
El paradigma relacional


       ¿Qué pasa si queremos almacenar
       Objetos creados por un lenguaje orientado
       a Objetos en una base de datos
       Relacional?
       En este instante se produce lo que vamos
       a llamar la Inadaptación de Impedancia
       (Entre Objetos y Datos Relacionales)



19/12/2005           E.T.S de Ingenieros de Telecomunicación   .12
Esquema del Paradigma
                                          Relacional

                 CLASE               PARADIGMA


                                                                             RDBMS

                OBJETO1
                                                                         X
                                                                         TABLA1




                                                                         X
                                                                                     TABLA2




         OBJETO2

                     OBJETO3
                                                                         X
             ENTORNO DE OBJETOS                                 ENTORNO DE DATOS


19/12/2005                     E.T.S de Ingenieros de Telecomunicación                        .13
El paradigma relacional
                             Solución Adoptada

       ¿Qué pasa si queremos almacenar
       Objetos creados por un lenguaje orientado
       a Objetos en una base de datos
       Relacional?
       La solución comunmente aceptada pasa
       por lo que llamaremos
       Mapeo Objeto - Relacional



19/12/2005           E.T.S de Ingenieros de Telecomunicación   .14
Esquema del Paradigma
                                    Relacional (Solución)

                                        MAPEO
              CLASE

                                                                            RDBMS
                                    REGISTRO1
                                                                        TABLA1      TABLA2
             OBJETO1
                                   REGISTRO2


         OBJETO2                   REGISTRO3

                   OBJETO3



                                       <atributo>
  ENTORNO DE OBJETOS                                                   ENTORNO DE DATOS
                                      <columna>


19/12/2005                   E.T.S de Ingenieros de Telecomunicación                         .15
Esquema del Paradigma
                                  Relacional (Solución)

       Mapeo (Objeto – Relacional)
             Nos permite mapear los objetos a registros en
             las tablas de base de datos.
             Esto se realiza mediante una hoja de mapeo
             en la que “convertimos” cada clase en una
             tabla, cada objeto en un registro (fila) de la
             base de datos y cada atributo en una
             columna de la misma.
             Tenemos que manejar las relaciones entre
             Clases (Tablas) mediante las típicas claves
             principales, primarias y/o externas.
19/12/2005                 E.T.S de Ingenieros de Telecomunicación   .16
BASES DE DATOS
      INTRODUCCIÓN



         OODBMS
(Object oriented Data Base
    Manager System)
OODBMS


       Nos permiten almacenar Objetos
       directamente (no hay registros ni tablas).
       Nos dan transparencia a la hora de
       almacenarlos.
       Nos ofrecen mayor flexibilidad ante los
       posibles cambios. a1
       Los datos coexisten con los objetos. a2
       Velocidad OODBMS ≥ RDBMS

19/12/2005            E.T.S de Ingenieros de Telecomunicación   .18
OODBMS Standards

       The Object Oriented Database Manifesto (1989)

       Mandatory features:
       Complex objects (OO feature)
             objects can contain attributes which are themselves objects.
       Object identity (OO)
       Encapsulation (OO)
       Classes (OO)
       Inheritance (OO): class hierarchies
       Overriding, Overloading, Late Binding (OO)
       Computational completeness (OO
       Persistence (DB)
             data must remain after the process that created it has terminated
       Secondary Storage Management (DB)
       Concurrency (DB)
       Recovery (DB)
       Ad hoc query facility (DB)
             not necessarily a query language – could be a graphical query tool

19/12/2005                           E.T.S de Ingenieros de Telecomunicación      .19
OODBMS Standards

       The ODMG Proposed Standard
       One of the crucial factors in the commercial success of RDBMSs is the
       relative standardisation of the data model
       The Object Data Management Group (ODMG) was formed by a group of
       industry representatives to define a proposed standard for the object data
       model.
       It is still far from being as widely recognised as the relational database
       standards.
       The ODMG proposed standard defines the following aspects of an
       OODBMS:
             basic terminology
             data types
             classes and inheritance
             objects
             collection objects (including sets, bags, lists, arrays)
             structured objects (Date, Interval, Time, Timestamp – similar to SQL)
             relationships
             object definition language (ODL)
             object query language (OQL)


19/12/2005                           E.T.S de Ingenieros de Telecomunicación         .20
OODBMS
                                           Ventajas

       Objetos y Relaciones Complej@s
       Jerarquía de clases
       Sin desadaptación de impedancia
       Sin necesidad de claves primarias
       Un Modelo de datos
       Un Lenguaje de programación
       Sin necesidad de lenguaje de Conslutas
       Alto rendimiento en ciertas tareas

19/12/2005          E.T.S de Ingenieros de Telecomunicación   .21
OODBMS
                                               Desventajas

       Cambios de esquemas
       Falta de consenso en standards
       Falta de ad-hoc querying a7

             En General RDMBS es más adecuando para
             bases de datos con variedad de consultas y
             requerimientos de interface de usuario (ej.
             sistema de gestión de business). Mientras que
             OODBMS es más propio de aplicaciones con
             complejos y/o irregulares datos donde se
             siguen patrones previsibles (ej. CAD/CAM)
19/12/2005                 E.T.S de Ingenieros de Telecomunicación   .22
OODBMS
                          Java Data Objects (JDO)

       Aplicaciones escritas para uso de JDO
       pueden tratar con cualquier Base de datos
       que implemente JDO
       Las consultas (queries) están escritas en
       un lenguaje parecido-a-Java (JDOQL)
       El mapeo de objetos a la base de datos
       están definidos en descriptores XML
       Algunos proovedores de OODBMS basan
       sus productos en JDO (Lo hace db4o?)
19/12/2005           E.T.S de Ingenieros de Telecomunicación   .23
OODBMS
                                     Nativas vs. No-Nativas

       OODBMS No-Nativas                             OODBMS Nativas
             La interface nos                              La interface permite el
             permite un tratamiento                        tratamiento nativo de
             transparente de los                           los objetos como tales.
             objetos como tales.                           La base de datos
             La base de datos se                           almacena esos
             encarga de                                    objetos como tales.
             transformar esos
             objetos por nosotros.




19/12/2005                   E.T.S de Ingenieros de Telecomunicación            .24
db4OBJECTS
 www.db4o.com




INTRODUCCIÓN
Db4o: Introducción

       Base de datos orientada a objetos
       completamente nativa de alto rendimiento.
       Desarrollada en el corazón de Sillicon
       Valley.
       Compacta y válida como Base de datos
       embedida en la aplicación.
       Soporta aplicaciones Standalone así
       como Cliente/Servidor (Aplicaciones
       distribuidas).
       Disponible para entornos Java o .Net
19/12/2005           E.T.S de Ingenieros de Telecomunicación   .26
Db4o: Características

        Mínimo consumo de recursos
             Pequeña FootPrint (Huella)
        Alto rendimiento
        Fácil Implementación (Mínimo código)
        Portabilidad
             Corre sobre Java 1.x hasta 5.0, en .Net
             sobre J2EE, J2SE, J2ME:CDC, Symbian…
        Confiabilidad (ACID)
        Transparencia
19/12/2005               E.T.S de Ingenieros de Telecomunicación   .27
Db4o: Características II


        Velocidad: hasta 44 veces más
       rápido que Hibernate/MySQL
        Soporte al cambio de Versiones
        Administración Nula                           a4


        Soporte a JSP / Servlets
        Código Abierto (Bajo 2 licencias)

19/12/2005        E.T.S de Ingenieros de Telecomunicación   .28
Db4o: Características III


       Con db4o eliminamos el proceso
       de diseño, implementación y
       mantenimiento de la base de
       datos pues:
             El modelo de clases es el esquema
             de base de datos.



19/12/2005             E.T.S de Ingenieros de Telecomunicación   .29
Db4o: Características III

      Db4o nos permite:
             Embeder la base de datos (applicaciones Standalone)
             Conexión parcial Cliente a Servidor
             Conexión distribuida entre servidores (Sincronización de datos)


                                                db4o




                Embedido (400kb)              Parcial                      Distribuido
                  Standalone              Client to Server               Server to Server



19/12/2005                         E.T.S de Ingenieros de Telecomunicación                  .30
Db4o: Características IIII

      Db4o nos ofrece 3 tipos de consultas:
             Query by Example (QBE): Consultas por ejemplo o prototipo
             Simple Object Database Access (SODA): Consultas dinámicas basadas en nodos

             Native Queries (NQ): Consultas a datos con lenguaje nativo
              • Con todo lo que supone esto (TypeSafe, No-Strings, No Learn…)

                                           Db4o.queries



                      QBE                       SODA                               NQ
                Query By Example                                             Native Queries


                                           Exportamos a            a9
                                               XML
                                            (Xstream)

19/12/2005                         E.T.S de Ingenieros de Telecomunicación                    .31
Db4o: Comparativas,
                                  Estadísticas y Gráficos

             Velocidad de escritura, lectura, consulta y borrado.




                     Estadísticas realizadas con PolePosition.

19/12/2005                 E.T.S de Ingenieros de Telecomunicación   .32
Db4o: Comparativas,
                          Estadísticas y Gráficos

                 Otros Bancos de Pruebas.




             Estadísticas realizadas con PolePosition.

19/12/2005         E.T.S de Ingenieros de Telecomunicación   .33
Db4o: Casos de Uso

       Podemos utilizar db4objects para:
         Dispositivos móviles
              • (Móviles,Pda’s,Tablet Pc’s…)
             Dispositivos médicos y
             biotecnología
             Industria del transporte
             Software enlatado
             Aplicaciones Web (JSP / Servlets)
             Sistemas en tiempo real


19/12/2005                     E.T.S de Ingenieros de Telecomunicación   .34
Db4o: Casos de Uso II


       Podemos utilizar db4objects para:
         Instituciones educativas y de
        enseñanza en Colegios y/o
        Universidades.
                – (Conseguimos con ello centrarnos en el
                  lenguaje Java o .Net sin distraernos en la BD)
             Juegos Standalone y Online
             Televsión Interactiva? (MHP) ?

19/12/2005                 E.T.S de Ingenieros de Telecomunicación   .35
Db4o: Ejemplos de Clientes

       Novell                               TMT
       BMW Car IT                           Eastern Data
       Indra Systems                        Electrabel
       Massie Labas                         Web Radiance
       Bosch                                Hertz




19/12/2005             E.T.S de Ingenieros de Telecomunicación   .36
Db4objects
 POR DENTRO


    MOTOR
 INSTALACION
DOCUMENTACION
Db4o por dentro
                    Motor, Instalación, Documentación


       El motor de la base de datos consiste tan
       solo en un pequeño archivo .jar de menos
       de 400kb.
       La instalación supone agregar el motor de
       la base de datos (db4o-.jar) a nuestro
       CLASSPATH.
       La documentación de la base de datos
       está creada mediante JavaDoc y viene
       incluida en el mismo paquete.

19/12/2005           E.T.S de Ingenieros de Telecomunicación   .38
Db4o POR DENTRO




   La API
Db4o Por dentro: La API

             En principio solo los paquetes com.db4o y
             com.db4o.query son necesarios para un
             correcto funcionamiento.

  Métodos estáticos                                                    La interface +
  nos permiten:                      com.db4o                          importante:
  - Abrir y Cerrar db.                                                 - Es nuestra
  - Conectarnos a                                                      propia dB ya
  servidor.                                                            sean en single o
  - Configurar la db.                                                  client mode.


                                                  com.db4o.
                         com.db4o.
                                                ObjectContainer
                           Db4o


19/12/2005                   E.T.S de Ingenieros de Telecomunicación                  .40
Db4o Por dentro: La API

             com.db4o.ObjectContainer.
               Puede ser una dB tanto en single-mode como en
               client to server connection.
               Todos los ObjectContainer manejan una
               transacción. Todo trabajo es transaccional.
               Cada ObjectContainer mantiene sus propias
               referencias a objetos almacenados e
               instanciados.
               Un ObjectContainer esta diseñado para
               permanecer abierto mientras se trabaja con ellos,
               cuando cerramos una dB todas las referencias a
               objetos desaparecen de la memoria RAM.

19/12/2005                   E.T.S de Ingenieros de Telecomunicación   .41
Db4o Por dentro: La API

              com.db4o.ext nos extiende y proporciona las
              funciones avanzadas de com.db4o. (2 pasos)

                                                                    Razones:
                     com.db4o
                                                                    -Es más fácil y rápido
                                                                    empezar a utilizar la db.
                                                                    -Será más fácil para otros
                                                                    productos copiar la interface
                                                                    básica de la db.
                                                                    -Es un sencillo ejemplo de
                                                                    cómo de ligera puede llegar
com.db4o.ext       com.db4o.config      com.db4o.query              a ser nuestra dB.




 19/12/2005                     E.T.S de Ingenieros de Telecomunicación                      .42
Db4o Por dentro: La API

              com.db4o.config nos permite configurar y/o
              tunear la base de datos a nuestro gusto

                                                                    -Paquete que contiene tipos
                      com.db4o                                      y clases que nos permiten
                                                                    configurar y/o tunear la base
                                                                    de datos a nuestro gusto.
                                                                    -La configuración de la base
                                                                    de datos se hace por norma
                                                                    general antes de abrir la
                                                                    sesión en la misma.

com.db4o.ext        com.db4o.config      com.db4o.query




 19/12/2005                      E.T.S de Ingenieros de Telecomunicación                     .43
Db4o Por dentro: La API

              com.db4o.query nos ofrece el interface de
              consultas mediante 3 tipos de consultas

                                                                    -Paquete que alberga la
                      com.db4o                                      clase predicado para
                                                                    realizar consultas mediante
                                                                    Native Query (NQ).
                                                                    -NQ permite mejor y más
                                                                    rápida implementación pero
                                                                    reduce el rendimiento de
                                                                    consultas.

com.db4o.ext        com.db4o.config      com.db4o.query




 19/12/2005                      E.T.S de Ingenieros de Telecomunicación                    .44
Db4o POR DENTRO




TRATAMIENTO
    DE
  OBJETOS
dbo4: Tratamiento de Objetos

         Abrir y cerrar la base de datos
             Simplemente llamamos a .openFile( )
             Cerramos con una llamada a .close()
 ObjectContainer db = Db4o.openFile(“Archivo.yap”);
 try {
                    // hacer algo con la db
                                                                          Representa la
 finally {                                                                base de datos


      db.close();   // cerrar la base de datos antes de salir
  }



19/12/2005                      E.T.S de Ingenieros de Telecomunicación                   .46
dbo4: Tratamiento de Objetos

       Almacenar objetos
             Simplemente llamamos a .set( ) pasando
             cualquier objeto como parámetro

 Pilot pilot1 = new Pilot("Michael Schumacher",100);


 db.set(pilot1);
                                                               Almacenamos el objeto
                                                                  con un simple set
 System.out.println("Stored "+pilot1);




19/12/2005                   E.T.S de Ingenieros de Telecomunicación                   .47
dbo4: Tratamiento de Objetos


       Recuperar objetos
             Lo intentamos con la sencilla interface QBE
                                                                          Listamos todos !
                                                                         Creamos un objeto
 Pilot proto = new Pilot(null,0);                                        prototipo con new()
                                                                          (con null’s y 0’s)
 ObjectSet result=db.get(proto);
                                                                         Consultamos con
 listResult(result);                                                          .get()

                                                                              Listamos
                                                                             resultados



19/12/2005                     E.T.S de Ingenieros de Telecomunicación                    .48
dbo4: Tratamiento de Objetos


       Recuperar objetos con QBE
             Lo intentamos con la sencilla interface QBE
                                                                          Listamos por
                                                                             nombre
 Pilot proto = new Pilot(“Michael Sumacher”,0);                        Creamos un objeto
                                                                       prototipo con new()
 ObjectSet result=db.get(proto);
                                                                       Consultamos con
 listResult(result);                                                        .get()

                                                                            Listamos
                                                                           resultados



19/12/2005                   E.T.S de Ingenieros de Telecomunicación                    .49
dbo4: Tratamiento de Objetos


       Actualizar objetos
             Lo intentamos con la sencilla interface QBE
ObjectSet result=db.get(new Pilot("Michael",0));
                                                                         Recuperamos un
Pilot found=(Pilot)result.next();                                         objeto de la db


found.addPoints(11);
                                                                           Lo tratamos
                                                                          (Actualizamos)
db.set(found);

retrieveAllPilots(db);                                                   Lo almacenamos
                                                                           En la misma
                                                                              sesión


19/12/2005                     E.T.S de Ingenieros de Telecomunicación                     .50
dbo4: Tratamiento de Objetos

       Borrar objetos
             Simplemente llamamos a .delete( ) pasando
             cualquier objeto como parámetro

 ObjectSet result=db.get(new Pilot("Michael Schumacher",0));
 Pilot found=(Pilot)result.next();


 db.delete(found);
                                                                 Borramos el objeto
                                                                      conocido
 retrieveAllPilots(db);




19/12/2005                  E.T.S de Ingenieros de Telecomunicación                   .51
Db4o POR DENTRO




CONSULTAS DE
  OBJETOS
dbo4: Consulta de Objetos


             Quering by Example (QBE) ¿Qué?
              Son consultas extremadamente fáciles y
              rápidas
              Tenemos limitaciones en las consultas
              •   No podemos ejecutar consultas con expresiones
                  avanzadas como (AND, OR, NOT, etc.)
              No se pueden imponer valores 0 o null.
              Necesitas un constructor para los objetos



19/12/2005                  E.T.S de Ingenieros de Telecomunicación   .53
dbo4: Consulta de Objetos


             Quering by Example (QBE) ¿Cómo?
         1. Creamos un objeto prototipo (Mediante
            atributos por defecto nulls y 0’s)
         2. Utilizamos el método .get( ) pasándole el
            objeto prototipo.
         3. Nos devuelve un ObjectSet que contiene los
            objetos de la consulta realizada
     Pilot proto=new Pilot(“null",0);
     ObjectSet result=db.get(proto);
     listResult(result);
                                                                         Consultamos con
                                                                              .get()

19/12/2005                     E.T.S de Ingenieros de Telecomunicación                 .54
dbo4: Consulta de Objetos


       Quering by Example (QBE) (Ejemplo 2)
             Hacemos una consulta por nombre
                                                                          Listamos por
                                                                             nombre
 Pilot proto = new Pilot(“Michael Sumacher”,0);                        Creamos un objeto
                                                                       prototipo con new()
 ObjectSet result=db.get(proto);
                                                                       Consultamos con
 listResult(result);                                                        .get()

                                                                            Listamos
                                                                           resultados



19/12/2005                   E.T.S de Ingenieros de Telecomunicación                    .55
dbo4: Consulta de Objetos


             Native Queries (NQ) ¿Qué?
              Son consultas realizadas con el mismo
              lenguaje de programación.
              Por tanto son consultas de Escritura-
              Segura, comprobadas en Tiempo de
              Compilación, y 100 % Factorizables
              Podemos incluso llamar a métodos dentro
              de las propias consultas.
              Están perfectamente standarizadas y son
              una vía de futuro seguro
19/12/2005               E.T.S de Ingenieros de Telecomunicación   .56
dbo4: Consulta de Objetos


             Native Queries (NQ) ¿Cómo?
         1. Creamos un predicado (o expresión) con
            lenguaje de código nativo. [ new predicate() ]
         2. Implementamos el método #match()
            perteneciente a la clase predicate()
         3. Devuelve true para marcar específicas
            instancias como parte del conjunto resultado
         4. Utilizamos el método .query( ) pasándole
            esa expresión de consulta.


19/12/2005               E.T.S de Ingenieros de Telecomunicación   .57
dbo4: Consulta de Objetos

           Native Queries (NQ) (Ejemplo )
              Hacemos una consulta por puntos == 100
                                                                                Creamos una
                                                                                 expresión en
                                                                              leguaje nativo con
 List pilots = db.query(new Predicate( ) {                                    nuevo Predicate()

       public boolean match(Pilot pilot) {                                    Implementamos el
                                                                               método .match()
           return pilot.getPoints() == 100;                                       que hace la
                                                                                comparación y
       }                                                                         devuelve true
 });
                                                                              Consultamos esa
                                                                                 expresión
                                                                              mediante .query()

19/12/2005                          E.T.S de Ingenieros de Telecomunicación                   .58
dbo4: Consulta de Objetos

       Native Queries (NQ) (Ejemplo 2 )
             Hacemos una consulta por puntos > 99 (AND) <199
                                                                           Creamos una
                                                                            expresión en
 List pilots = db.query( new Predicate() {
                                                                         leguaje nativo con
   public boolean match(Pilot pilot) {
                                                                         nuevo Predicate()
        return pilot.getPoints() > 99                                    Implementamos el
        && pilot.getPoints() < 199                                        método .match()
        || pilot.getName().equals("Rubens Barrichello");                     que hace la
                                                                           comparación y
             }                                                              devuelve true
 });

                                                                         Consultamos esa
                                                                            expresión
                                                                         mediante .query()

19/12/2005                     E.T.S de Ingenieros de Telecomunicación                   .59
dbo4: Consulta de Objetos

             S.O.D.A Query API ¿Qué?
              Son consultas de nodo dinámicas de bajo
              nivel que permiten directamente recorrer la
              jerarquía de clases.
              Al contrario que NQ, SODA utiliza Strings
              para identificar los campos
              Por lo tanto no tiene las características de
              Escritura-Segura, comprobadas en Tiempo
              de Compilación, y 100 % Factorizables
              Sin embargo es más rápido que NQ
              Al contrario que QBE permite consultas a 0.
19/12/2005                E.T.S de Ingenieros de Telecomunicación   .60
dbo4: Consulta de Objetos


             S.O.D.A Query API ¿Cómo?
         1. Creamo un nuevo objeto (nodo) a través del
            metodo .query() del ObjectContainer
         2. Descendemos por árbol jerárquico de clases
         3. Imponemos alguna o varias condiciones con
            .constrain(), (a uno o varios atributos)
         4. Ejecutamos esa consulta con .execute() y
            nos devuelve un ObjectSet con los objetos
            consultados.


19/12/2005              E.T.S de Ingenieros de Telecomunicación   .61
dbo4: Consulta de Objetos

       S.O.D.A Query API (Ejemplo )
             Hacemos una consulta por todos los pilotos
                                                                            Creamos nuevo
                                        Class: Pilot                       nodo de consulta
                                                                             con .query()


                                                                             Imponemos ese
                                                                             nodo a ‘Toda la
 Query query = db.query();                                                    clase pilot’ con
                                                                           .constrain() sobre
 query.constrain(Pilot.class);                                                   Pilot.class

 ObjectSet result = query.execute();
                                                                             Ejecutamos la
 listResult(result);                                                       consulta mediante
                                                                               .execute()

19/12/2005                       E.T.S de Ingenieros de Telecomunicación                    .62
dbo4: Consulta de Objetos

       S.O.D.A Query API (Ejemplo 2 )
             Hacemos una consulta por nombre de piloto
                                                                            Creamos nuevo
                                        Class: Pilot                       nodo de consulta
                                                                             con .query()
                name
                                      Equals(“MS”)                          Imponemos ese
                                                                            nodo a ‘Toda la
                                                                              clase pilot
 Query query=db.query();
                                                                           Descendemos por
 query.constrain(Pilot.class);                                             el nodo a name e
                                                                           imponemos “MS”
 query.descend("name").constrain("MS");                                     con .constrain()

 ObjectSet result=query.execute();                                           Ejecutamos la
                                                                           consulta mediante
                                                                               .execute()
19/12/2005                       E.T.S de Ingenieros de Telecomunicación                      .63
dbo4: Consulta de Objetos

       S.O.D.A Query API (Ejemplo 2 )
             Hacemos una consulta por nombre y puntos
                                                                    Creamos nuevo
                                Class: Pilot                       nodo de consulta
                                                                     con .query()
                name
                              Equals(“MS”)                          Imponemos ese
                                                                    nodo a ‘Toda la
                                                                      clase pilot
                points
                               Greater( 60 )                       Descendemos por
                                                                   el nodo a name e
                                                                   imponemos “MS”
                                                                    con .constrain()

                                                                   Descendemos a
                                                                      points e
                                                                   imponemos >60
19/12/2005               E.T.S de Ingenieros de Telecomunicación                      .64
Db4o POR DENTRO




Objetos Estructurados
Colecciones y Arrays
      Herencia
dbo4: Objetos Estructurados


       No tenemos por qué almacenar todos los
       objetos subordinados si no sólo el objeto
       de mayor nivel.                        team




                                                                  car

               Db4o
             database

                                                                  pilot


19/12/2005              E.T.S de Ingenieros de Telecomunicación           .66
dbo4: Objetos Estructurados

       Consultas estructuradas
             Consultar un piloto por su modelo de coche
                              Class: Car


                           el
                        mod                   pilo
                                                     t
Equals (“Ferrari”)
                                                                         Creamos nuevo
                                                                        nodo de consulta
 Query carquery=db.query();                                               con .query()

 carquery.constrain(Car.class);                                         Descendemos por
 carquery.descend("model").constrain("Ferrari");                        model imponemos
                                                                             Ferrari
 Query pilotquery=carquery.descend("pilot");
 ObjectSet result=pilotquery.execute();                                 Descendemos por
                                                                             pilot.
19/12/2005                    E.T.S de Ingenieros de Telecomunicación                  .67
dbo4: Objetos Estructurados


       Actualización de profundidad
             Si queremos actualizar un objeto subordinado
             salvando (almacenando) su objeto superior
             en la dB debemos configurar la db para
             actualización de profundida con
             .cascadeOnUpdate() antes de abrir la db.
             Por defecto la profundidad es 1 lo cual
             permite actualizar atributos primitivos o
             Strings.


19/12/2005                E.T.S de Ingenieros de Telecomunicación   .68
dbo4: Objetos Estructurados


       Borrado recursivo
             De forma análoga a la actualización el
             borrado recursivo debe ser configurado
             mediante .cascadeOnDelete() antes de la
             apertura de la dB.
             Con esto conseguimos borrar los objetos
             subordinados borrando únicamente el objeto
             de mayor nivel.
             Pero que pasa si un objeto subordinado está
             referenciado por otro objeto?    Cuidado!!!

19/12/2005                E.T.S de Ingenieros de Telecomunicación   .69
dbo4: Objetos Estructurados

       Sin .cascadeOnDelete()                Con .cascadeOnDelete()


   Borramos                               Borramos

                                                                  X

19/12/2005              E.T.S de Ingenieros de Telecomunicación
                                                                  X   .70
db4o: Colecciones y Arrays


       Podemos consultar arrays y almacenarlos
       de la misma forma que datos primitivos.
             Mediante QBE el orden de los valores
             consultados es irrelevante
             Con NQ simplemente consultamos como si
             hiciéramos búsquedas nativas en arrays.
       Nada nuevo en consulta y borrado de
       arrays, simplemente tener en cuenta la
       profundidad.

19/12/2005               E.T.S de Ingenieros de Telecomunicación   .71
db4o: Herencia

       Db4o nos devuelve los objetos del tipo
       consultado es decir:
             Consultando una SuperClase nos devuelve todos los
             objetos padre e hijos.
             Consultando una SubClase nos devuelve los objetos
             de esa SubClase.
                              Consulta
                Figuras


                                 Consulta




19/12/2005                  E.T.S de Ingenieros de Telecomunicación   .72
db4o: Herencia


       ¿Qué pasa con QBE si la clase a
       consultar es Abstracta o Interface?
             No podemos utilizar un constructor para
             hacer el objeto prototipo.
             Solución: Utilizamos ‘MiClase’.class lo que
             nos devuelve la clase entera.




19/12/2005                 E.T.S de Ingenieros de Telecomunicación   .73
Db4o POR DENTRO




 TRANSACCIONES
   TECNOLOGÍA
CLIENTE/SERVIDOR
db4o: Transacciones Simples


       db4o nos ofrece dos métodos para realizar
       transacciones
             .commit() Finaliza una transacción
             .rollback() Deshace una transacción
       La transacción es implícitamente cerrada
       por defecto cuando cerramos una db.
       Sin embargo debemos tener cuidado a la
       hora de hacer .rollback() con Live Objects.
             Se deben refrescar con .ext().refresh(obj,depth)

19/12/2005                 E.T.S de Ingenieros de Telecomunicación   .75
db4o: Transacciones Simples


       Proceso commit – rollback (Client/Server)
                       Pedi
                           mos
                               Coch
                                   e




                         Set (
                                 )

                           RollB
                                 ack   ()                        Db4o
                           Refre
                                                               database
                                sh()




19/12/2005           E.T.S de Ingenieros de Telecomunicación              .76
db4o: Cliente / Servidor Local


       De cara a la API no existen diferencias
       reales entre ejecutar transacciones
       concurrentes dentro de la misma VM y
       transacciones ejecutadas contra un server
             Para abrir una db en modo servidor dentro de
             la misma VM utilizamos
             .openServer(‘dbfile.yap‘,0) con puerto 0.
             Para acceder a esa base de datos en modo
             cliente Local tan solo usamos .openClient()


19/12/2005                E.T.S de Ingenieros de Telecomunicación   .77
db4o: Cliente / Servidor Local


       Cada contenedor cliente mantiene su
       propio cache de referencias débiles de los
       objetos ‘ya conocidos’.
       Para hacer que los cambios hechos por
       un cliente sean ‘cometidos’ por todos los
       clientes inmediatamente debemos
       refrescar los objetos conocidos
       explícitamente con .ext().refresh(obj, depth)


19/12/2005            E.T.S de Ingenieros de Telecomunicación   .78
db4o: Cliente / Servidor Remoto


       Desde aquí hay un pequeño paso ya para
       configurar nuestra db como Client/Server
       sobre TCP/IP.
             Tan solo especificamos un puerto de servidor
             mayor que 0 y abrimos los clientes
             garantizandoles acceso con USER Y PASS.
             Abrimos con .openServer(db.yap,PORT)
             Garantizamos con .grantAccess(USER,PASS)
             Conectamos con
             .openClient(“Server",PORT,USER,PASS)
19/12/2005                E.T.S de Ingenieros de Telecomunicación   .79
db4o: Cliente / Servidor Remoto


       Algunas veces necesitamos enviar ciertos
       mensajes tipo ‘kill’ al servidor entonces:
             El servidor se pone como receptor de
             mensajes con .setMessageRecipient()
             pasándole como parámetro el mensaje obj.
             El mensaje es recivido y procesado por el
             método processMessage()
             El cliente se pone como Mensajero con
             .getMessageSender() y manda un mensaje
             con .send() . Ejemplo msg: new StopServer()

19/12/2005                 E.T.S de Ingenieros de Telecomunicación   .80
db4o: Conclusión


       Hemos visto como db4o nos permite
       hacer un sin fin de cosas con muy poco
       código y esfuerzo y eso que tan solo
       hemos visto una parte de db4o. Aún nos
       quedaría por mirar temas como:
             •Evaluaciones SODA                       •ClassLoaders
             •Constructores                           •ServLets
             •Intérpretes                             •Encriptación
             •Configuración y                         •Refactorizado de
             Tuneado                                  clases
             •Indexación                              •Optimización de
             •Object Manager                          consultas
19/12/2005                                            •Replicaciones
                          E.T.S de Ingenieros de Telecomunicación         .81
db4o – Base de datos Orientada a Objetos
                                                       [---------- Proyecto ----------]
                                                           MHProject v1.0
                                                          www.mhproject.org

                                            E.T.S de Ingenieros de Telecomunicación


             Créditos y Bibliografía
                                                 Universidad Pública de Navarra
                                                         [---------- Autor ----------]
                                                          Alejandro Fanjul
                                                        fanjul.35858@e.unavarra.es
                                                           afanjul@mhproject.org
                                                        [---------- Tutores ----------]
                                                             Mikel Sagues
                                                        mikel.sagues@unavarra.es
                                                              Javier Navallas
                                                        javier.navallas@unavarra.es
                                                     [---------- Bibliografía ----------]
                                             Db4o.com: Tutorial and Presentations
                                        Bell College: Presentations [Object Persistence]

19/12/2005                             E.T.S de Ingenieros de Telecomunicación              .82

Más contenido relacionado

La actualidad más candente

La organización como sistema
La organización como sistemaLa organización como sistema
La organización como sistema
Claris Bradley
 
Fundamentos de BD - unidad 3 modelo relacional
Fundamentos de BD - unidad 3 modelo relacionalFundamentos de BD - unidad 3 modelo relacional
Fundamentos de BD - unidad 3 modelo relacional
José Antonio Sandoval Acosta
 
Mapa mental tgs
Mapa mental tgsMapa mental tgs
Mapa mental tgs
eduardoesp2505
 
Presentacion de propiedad de los sistemas.
Presentacion de propiedad de los sistemas.Presentacion de propiedad de los sistemas.
Presentacion de propiedad de los sistemas.
coonejo
 
Transformacion de relaciones
Transformacion de relacionesTransformacion de relaciones
Transformacion de relaciones
Memo Wars
 
Normalización de bases de datos
Normalización de bases de datosNormalización de bases de datos
Normalización de bases de datos
hugofreestyle
 
4. Normalización
4. Normalización4. Normalización
4. Normalización
Marcelo Herrera
 
OBJETO CONNECTION
OBJETO CONNECTIONOBJETO CONNECTION
OBJETO CONNECTION
Lisbeth Ocaña Bueno
 
Perspectiva de organizacion en la administracion gerencia industrial
Perspectiva de organizacion en la administracion gerencia industrialPerspectiva de organizacion en la administracion gerencia industrial
Perspectiva de organizacion en la administracion gerencia industrial
annieliz
 
Tipos de Colas en Programación en C++ - Presentación
Tipos de Colas en Programación en C++ - PresentaciónTipos de Colas en Programación en C++ - Presentación
Tipos de Colas en Programación en C++ - Presentación
Fernando Solis
 
Listas
ListasListas
Listas
pedreror1
 
Listas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de DatosListas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de Datos
Yorka Marisol Perez Feliz
 
Fila,pila y cola ..
Fila,pila y cola ..Fila,pila y cola ..
Fila,pila y cola ..
Evanyeline Brito Rojas
 
Propiedades de los sistemas
Propiedades de los sistemasPropiedades de los sistemas
Propiedades de los sistemas
kpto01
 
Escuela neohumano relacionista administración
Escuela neohumano relacionista administraciónEscuela neohumano relacionista administración
Escuela neohumano relacionista administración
Flor Leyva
 
Elementos primordiales en el modelo de objetos
Elementos primordiales en el modelo de objetosElementos primordiales en el modelo de objetos
Elementos primordiales en el modelo de objetos
Criiztiian Mendoza
 
Sistema de informacion empresarial
Sistema de informacion empresarialSistema de informacion empresarial
Sistema de informacion empresarial
Willinton Zambrano Garcia
 
Sistemas duros y suaves
Sistemas duros y suavesSistemas duros y suaves
Sistemas duros y suaves
Alejandra Zaragoza Perez
 
Estructura de Datos: Pila
Estructura de Datos: PilaEstructura de Datos: Pila
Estructura de Datos: Pila
Emerson Garay
 
Diferencias y similitudes entre los tipos de si
Diferencias y similitudes entre los tipos de siDiferencias y similitudes entre los tipos de si
Diferencias y similitudes entre los tipos de si
franciscogarcia1303
 

La actualidad más candente (20)

La organización como sistema
La organización como sistemaLa organización como sistema
La organización como sistema
 
Fundamentos de BD - unidad 3 modelo relacional
Fundamentos de BD - unidad 3 modelo relacionalFundamentos de BD - unidad 3 modelo relacional
Fundamentos de BD - unidad 3 modelo relacional
 
Mapa mental tgs
Mapa mental tgsMapa mental tgs
Mapa mental tgs
 
Presentacion de propiedad de los sistemas.
Presentacion de propiedad de los sistemas.Presentacion de propiedad de los sistemas.
Presentacion de propiedad de los sistemas.
 
Transformacion de relaciones
Transformacion de relacionesTransformacion de relaciones
Transformacion de relaciones
 
Normalización de bases de datos
Normalización de bases de datosNormalización de bases de datos
Normalización de bases de datos
 
4. Normalización
4. Normalización4. Normalización
4. Normalización
 
OBJETO CONNECTION
OBJETO CONNECTIONOBJETO CONNECTION
OBJETO CONNECTION
 
Perspectiva de organizacion en la administracion gerencia industrial
Perspectiva de organizacion en la administracion gerencia industrialPerspectiva de organizacion en la administracion gerencia industrial
Perspectiva de organizacion en la administracion gerencia industrial
 
Tipos de Colas en Programación en C++ - Presentación
Tipos de Colas en Programación en C++ - PresentaciónTipos de Colas en Programación en C++ - Presentación
Tipos de Colas en Programación en C++ - Presentación
 
Listas
ListasListas
Listas
 
Listas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de DatosListas,pilas y colas Estructura de Datos
Listas,pilas y colas Estructura de Datos
 
Fila,pila y cola ..
Fila,pila y cola ..Fila,pila y cola ..
Fila,pila y cola ..
 
Propiedades de los sistemas
Propiedades de los sistemasPropiedades de los sistemas
Propiedades de los sistemas
 
Escuela neohumano relacionista administración
Escuela neohumano relacionista administraciónEscuela neohumano relacionista administración
Escuela neohumano relacionista administración
 
Elementos primordiales en el modelo de objetos
Elementos primordiales en el modelo de objetosElementos primordiales en el modelo de objetos
Elementos primordiales en el modelo de objetos
 
Sistema de informacion empresarial
Sistema de informacion empresarialSistema de informacion empresarial
Sistema de informacion empresarial
 
Sistemas duros y suaves
Sistemas duros y suavesSistemas duros y suaves
Sistemas duros y suaves
 
Estructura de Datos: Pila
Estructura de Datos: PilaEstructura de Datos: Pila
Estructura de Datos: Pila
 
Diferencias y similitudes entre los tipos de si
Diferencias y similitudes entre los tipos de siDiferencias y similitudes entre los tipos de si
Diferencias y similitudes entre los tipos de si
 

Destacado

Curso Básico de JDBC
Curso Básico de JDBCCurso Básico de JDBC
Curso Básico de JDBC
Universidad de Occidente
 
Practica01 db4o e1
Practica01 db4o e1Practica01 db4o e1
Practica01 db4o e1
Thekavenet
 
Manual sgbdoo db4 o en c#
Manual sgbdoo db4 o en c#Manual sgbdoo db4 o en c#
Manual sgbdoo db4 o en c#
Irene Lorza
 
Universidad tecnológica de tehuacán bdoo db4o
Universidad tecnológica de tehuacán bdoo db4oUniversidad tecnológica de tehuacán bdoo db4o
Universidad tecnológica de tehuacán bdoo db4o
Victor Dolores Marcos
 
Lector de huella digital
Lector de huella digitalLector de huella digital
Lector de huella digital
Adriana Moreno
 
Edi
EdiEdi
Edi
home
 
Tarea 2
Tarea 2Tarea 2
Tarea 2
LUZ ARIZPE
 
Tutorial de bd4o
Tutorial de bd4oTutorial de bd4o
Tutorial de bd4o
Flor de la Luz
 
Bdoo base de datos orientada a objetos
Bdoo base de datos orientada a objetosBdoo base de datos orientada a objetos
Bdoo base de datos orientada a objetos
Allejo Mendez G
 
Base de Datos Orientada a Objetos
Base de Datos Orientada a ObjetosBase de Datos Orientada a Objetos
Base de Datos Orientada a Objetos
INSTITUTO TECNOLOGICO SUPERIOR DE LERDO
 
Bases de datos distribuidas y bases de datos cliente
Bases de datos distribuidas y bases de datos clienteBases de datos distribuidas y bases de datos cliente
Bases de datos distribuidas y bases de datos cliente
Gerardo
 
BASE DE DATOS ORIENTADO A OBJETOS
BASE DE DATOS ORIENTADO A OBJETOSBASE DE DATOS ORIENTADO A OBJETOS
BASE DE DATOS ORIENTADO A OBJETOS
migmorbus1
 
Base de Datos Orientada a Objetos
Base de Datos Orientada a ObjetosBase de Datos Orientada a Objetos
Base de Datos Orientada a Objetos
Andrés Felipe Montoya Ríos
 
Sistemas de gestores de base de datos
Sistemas de gestores de base de datosSistemas de gestores de base de datos
Sistemas de gestores de base de datos
Hernan Okamura
 
Sistemas gestores de base de datos (sgbd)
Sistemas gestores de base de datos (sgbd)Sistemas gestores de base de datos (sgbd)
Sistemas gestores de base de datos (sgbd)
Henry Cumbicus Rivera
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
Cesar David Fernandez Grueso
 
Clase 10 Indicadores de Desempeño
Clase 10 Indicadores de DesempeñoClase 10 Indicadores de Desempeño
Clase 10 Indicadores de Desempeño
Andres Schuschny, Ph.D
 
Programación para niños app inventor
Programación para niños app inventorProgramación para niños app inventor
Programación para niños app inventor
Universidad de Occidente
 
10 sistemas gestores de base de datos
10 sistemas gestores de base de datos10 sistemas gestores de base de datos
10 sistemas gestores de base de datos
Gusttavo Nipas
 
Upmp programación orientada a objetos-sesión 2-conceptos básicos del paradigm...
Upmp programación orientada a objetos-sesión 2-conceptos básicos del paradigm...Upmp programación orientada a objetos-sesión 2-conceptos básicos del paradigm...
Upmp programación orientada a objetos-sesión 2-conceptos básicos del paradigm...
Conalep Puebla III
 

Destacado (20)

Curso Básico de JDBC
Curso Básico de JDBCCurso Básico de JDBC
Curso Básico de JDBC
 
Practica01 db4o e1
Practica01 db4o e1Practica01 db4o e1
Practica01 db4o e1
 
Manual sgbdoo db4 o en c#
Manual sgbdoo db4 o en c#Manual sgbdoo db4 o en c#
Manual sgbdoo db4 o en c#
 
Universidad tecnológica de tehuacán bdoo db4o
Universidad tecnológica de tehuacán bdoo db4oUniversidad tecnológica de tehuacán bdoo db4o
Universidad tecnológica de tehuacán bdoo db4o
 
Lector de huella digital
Lector de huella digitalLector de huella digital
Lector de huella digital
 
Edi
EdiEdi
Edi
 
Tarea 2
Tarea 2Tarea 2
Tarea 2
 
Tutorial de bd4o
Tutorial de bd4oTutorial de bd4o
Tutorial de bd4o
 
Bdoo base de datos orientada a objetos
Bdoo base de datos orientada a objetosBdoo base de datos orientada a objetos
Bdoo base de datos orientada a objetos
 
Base de Datos Orientada a Objetos
Base de Datos Orientada a ObjetosBase de Datos Orientada a Objetos
Base de Datos Orientada a Objetos
 
Bases de datos distribuidas y bases de datos cliente
Bases de datos distribuidas y bases de datos clienteBases de datos distribuidas y bases de datos cliente
Bases de datos distribuidas y bases de datos cliente
 
BASE DE DATOS ORIENTADO A OBJETOS
BASE DE DATOS ORIENTADO A OBJETOSBASE DE DATOS ORIENTADO A OBJETOS
BASE DE DATOS ORIENTADO A OBJETOS
 
Base de Datos Orientada a Objetos
Base de Datos Orientada a ObjetosBase de Datos Orientada a Objetos
Base de Datos Orientada a Objetos
 
Sistemas de gestores de base de datos
Sistemas de gestores de base de datosSistemas de gestores de base de datos
Sistemas de gestores de base de datos
 
Sistemas gestores de base de datos (sgbd)
Sistemas gestores de base de datos (sgbd)Sistemas gestores de base de datos (sgbd)
Sistemas gestores de base de datos (sgbd)
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 
Clase 10 Indicadores de Desempeño
Clase 10 Indicadores de DesempeñoClase 10 Indicadores de Desempeño
Clase 10 Indicadores de Desempeño
 
Programación para niños app inventor
Programación para niños app inventorProgramación para niños app inventor
Programación para niños app inventor
 
10 sistemas gestores de base de datos
10 sistemas gestores de base de datos10 sistemas gestores de base de datos
10 sistemas gestores de base de datos
 
Upmp programación orientada a objetos-sesión 2-conceptos básicos del paradigm...
Upmp programación orientada a objetos-sesión 2-conceptos básicos del paradigm...Upmp programación orientada a objetos-sesión 2-conceptos básicos del paradigm...
Upmp programación orientada a objetos-sesión 2-conceptos básicos del paradigm...
 

Similar a Db4objects

Base de datos
Base de datosBase de datos
Base de datos
Diana Guadalamar
 
Bases de Datos
Bases de DatosBases de Datos
Bases de Datos
paulocsoft
 
Unidad 2-bdoo
Unidad 2-bdooUnidad 2-bdoo
Unidad 2-bdoo
Ale Sgg
 
Tipo de base de datos y funciones de un dba
Tipo de base de datos y funciones de un dbaTipo de base de datos y funciones de un dba
Tipo de base de datos y funciones de un dba
DannyNancayRamos
 
DB4O + BIRT
DB4O + BIRTDB4O + BIRT
base de datos 2013
base de datos 2013base de datos 2013
base de datos 2013
Silvia Tatiana
 
Tipo de base de datos y funciones de un dba
Tipo de base de datos y funciones de un dbaTipo de base de datos y funciones de un dba
Tipo de base de datos y funciones de un dba
DannyNancayRamos
 
Clase 2 de info 3
Clase 2 de info 3Clase 2 de info 3
Clase 2 de info 3
Deisy Vasamon
 
Bases de Datos 1.ppt
Bases de Datos 1.pptBases de Datos 1.ppt
Bases de Datos 1.ppt
ssuser6c30de1
 
Conceptos basicos(base de datos)
Conceptos basicos(base de datos)Conceptos basicos(base de datos)
Conceptos basicos(base de datos)
claudiachiri
 
Bases de Datos: Conceptos y Generalidades
Bases de Datos: Conceptos y GeneralidadesBases de Datos: Conceptos y Generalidades
Bases de Datos: Conceptos y Generalidades
Ricardo Antonio Botero Rios
 
Bdi unidad 1
Bdi unidad 1Bdi unidad 1
Bdi unidad 1
madaimenez
 
DISEÑO DE BASE DE DATOS
DISEÑO DE BASE DE DATOSDISEÑO DE BASE DE DATOS
DISEÑO DE BASE DE DATOS
nelson rodriguez huallpa
 
Conceptos de bases de datos
Conceptos de bases de datosConceptos de bases de datos
Conceptos de bases de datos
theobromacacao2013
 
Base De Datos OO y Deductivas
Base De Datos OO y DeductivasBase De Datos OO y Deductivas
Base De Datos OO y Deductivas
Darwin Gualotuña
 
Base De Datos Oo
Base De Datos OoBase De Datos Oo
Base De Datos Oo
Darwin Gualotuña
 
Base De Datos Oo
Base De Datos OoBase De Datos Oo
Base De Datos Oo
Darwin Gualotuña
 
Gestión de Bases de Datos
Gestión de Bases de DatosGestión de Bases de Datos
Gestión de Bases de Datos
Ricardo Antonio Botero Rios
 
200508 - Bases de Datos
200508 - Bases de Datos200508 - Bases de Datos
200508 - Bases de Datos
Javier Gonzalez-Sanchez
 
Base de datos orientadas a objetos
Base de datos orientadas a objetosBase de datos orientadas a objetos
Base de datos orientadas a objetos
Edgar Montes
 

Similar a Db4objects (20)

Base de datos
Base de datosBase de datos
Base de datos
 
Bases de Datos
Bases de DatosBases de Datos
Bases de Datos
 
Unidad 2-bdoo
Unidad 2-bdooUnidad 2-bdoo
Unidad 2-bdoo
 
Tipo de base de datos y funciones de un dba
Tipo de base de datos y funciones de un dbaTipo de base de datos y funciones de un dba
Tipo de base de datos y funciones de un dba
 
DB4O + BIRT
DB4O + BIRTDB4O + BIRT
DB4O + BIRT
 
base de datos 2013
base de datos 2013base de datos 2013
base de datos 2013
 
Tipo de base de datos y funciones de un dba
Tipo de base de datos y funciones de un dbaTipo de base de datos y funciones de un dba
Tipo de base de datos y funciones de un dba
 
Clase 2 de info 3
Clase 2 de info 3Clase 2 de info 3
Clase 2 de info 3
 
Bases de Datos 1.ppt
Bases de Datos 1.pptBases de Datos 1.ppt
Bases de Datos 1.ppt
 
Conceptos basicos(base de datos)
Conceptos basicos(base de datos)Conceptos basicos(base de datos)
Conceptos basicos(base de datos)
 
Bases de Datos: Conceptos y Generalidades
Bases de Datos: Conceptos y GeneralidadesBases de Datos: Conceptos y Generalidades
Bases de Datos: Conceptos y Generalidades
 
Bdi unidad 1
Bdi unidad 1Bdi unidad 1
Bdi unidad 1
 
DISEÑO DE BASE DE DATOS
DISEÑO DE BASE DE DATOSDISEÑO DE BASE DE DATOS
DISEÑO DE BASE DE DATOS
 
Conceptos de bases de datos
Conceptos de bases de datosConceptos de bases de datos
Conceptos de bases de datos
 
Base De Datos OO y Deductivas
Base De Datos OO y DeductivasBase De Datos OO y Deductivas
Base De Datos OO y Deductivas
 
Base De Datos Oo
Base De Datos OoBase De Datos Oo
Base De Datos Oo
 
Base De Datos Oo
Base De Datos OoBase De Datos Oo
Base De Datos Oo
 
Gestión de Bases de Datos
Gestión de Bases de DatosGestión de Bases de Datos
Gestión de Bases de Datos
 
200508 - Bases de Datos
200508 - Bases de Datos200508 - Bases de Datos
200508 - Bases de Datos
 
Base de datos orientadas a objetos
Base de datos orientadas a objetosBase de datos orientadas a objetos
Base de datos orientadas a objetos
 

Más de home

Aplicación métricas para evaluación diseño
Aplicación métricas para evaluación diseñoAplicación métricas para evaluación diseño
Aplicación métricas para evaluación diseño
home
 
Servidores de-aplicacion-1211055568915043-9
Servidores de-aplicacion-1211055568915043-9Servidores de-aplicacion-1211055568915043-9
Servidores de-aplicacion-1211055568915043-9
home
 
Cliente servidor
Cliente servidorCliente servidor
Cliente servidor
home
 
A charla12 arq.3-capas
A charla12 arq.3-capasA charla12 arq.3-capas
A charla12 arq.3-capas
home
 
Presentacion
PresentacionPresentacion
Presentacion
home
 
Fundamentos del diseño
Fundamentos del diseñoFundamentos del diseño
Fundamentos del diseño
home
 
Diseño del sistema
Diseño del sistemaDiseño del sistema
Diseño del sistema
home
 
Diseño orientado al flujo de datos
Diseño orientado al flujo de datosDiseño orientado al flujo de datos
Diseño orientado al flujo de datos
home
 
Diseño orientado al flujo de datos
Diseño orientado al flujo de datosDiseño orientado al flujo de datos
Diseño orientado al flujo de datos
home
 
El diseño orientado a flujo de objetos
El  diseño orientado a flujo  de objetosEl  diseño orientado a flujo  de objetos
El diseño orientado a flujo de objetos
home
 
Rad Studio 2010 Reviewer Guide
Rad Studio 2010 Reviewer GuideRad Studio 2010 Reviewer Guide
Rad Studio 2010 Reviewer Guide
home
 

Más de home (11)

Aplicación métricas para evaluación diseño
Aplicación métricas para evaluación diseñoAplicación métricas para evaluación diseño
Aplicación métricas para evaluación diseño
 
Servidores de-aplicacion-1211055568915043-9
Servidores de-aplicacion-1211055568915043-9Servidores de-aplicacion-1211055568915043-9
Servidores de-aplicacion-1211055568915043-9
 
Cliente servidor
Cliente servidorCliente servidor
Cliente servidor
 
A charla12 arq.3-capas
A charla12 arq.3-capasA charla12 arq.3-capas
A charla12 arq.3-capas
 
Presentacion
PresentacionPresentacion
Presentacion
 
Fundamentos del diseño
Fundamentos del diseñoFundamentos del diseño
Fundamentos del diseño
 
Diseño del sistema
Diseño del sistemaDiseño del sistema
Diseño del sistema
 
Diseño orientado al flujo de datos
Diseño orientado al flujo de datosDiseño orientado al flujo de datos
Diseño orientado al flujo de datos
 
Diseño orientado al flujo de datos
Diseño orientado al flujo de datosDiseño orientado al flujo de datos
Diseño orientado al flujo de datos
 
El diseño orientado a flujo de objetos
El  diseño orientado a flujo  de objetosEl  diseño orientado a flujo  de objetos
El diseño orientado a flujo de objetos
 
Rad Studio 2010 Reviewer Guide
Rad Studio 2010 Reviewer GuideRad Studio 2010 Reviewer Guide
Rad Studio 2010 Reviewer Guide
 

Db4objects

  • 1. Digitally signed by Alejandro Fanjul DN: cn=Alejandro Fanjul, c=ES, o=MHProject, ou=Proyectando, email=fanjul.35858@unavarra.es 'Date: 2005.12.21 21:46:21 +01'00 db4objects BASE DE DATOS ORIENTADA A OBJETOS v1.0
  • 2. ÍNDICE MHProject Créditos Bases de datos db4o db4objects Y (Introducción) por dentro Bibliografía RDBMS Vs OODBMS Introducción Características La API OODBMS Objetos Transacciones RDBMS Nativas Comparativas Casos de Uso Motor Tratamiento Estructurados Tecnología El paradigma Vs Estadísticas Ejemplos Instalación De Consultas Colecciones De Relacional No-Nativas Gráficos Casos de Éxito Documentación Objetos Arrays Cliente/Servidor Herencia QBE NQ SODA 19/12/2005 E.T.S de Ingenieros de Telecomunicación .2
  • 3. BASES DE DATOS INTRODUCCIÓN PERSISTENCIA DE DATOS
  • 4. Persistencia Una de las tareas más críticas en la programación es salvar y recuperar datos La persistencia es el almacenamiento de los datos en memoria, para una posterior recuperación de los mismos En sistemas orientados a objetos, existen varios métodos para hacer los objetos persistentes. La elección del método es de vital importancia. 19/12/2005 E.T.S de Ingenieros de Telecomunicación .4
  • 5. SERIALIZACIÓN DATABASES PERSISTENCIA ORDMBS DE OODBMS OBJETOS RDBMS 19/12/2005 E.T.S de Ingenieros de Telecomunicación .5
  • 6. BASES DE DATOS INTRODUCCIÓN RDBMS vs OODBMS
  • 7. RDBMS vs OODBMS 2 Tecnologías cara a cara Tecnología Relacional • Orientada al uso de funciones • Centrada en los datos Tecnología de Objetos • Orientada a Objetos • Centrada en servicios 19/12/2005 E.T.S de Ingenieros de Telecomunicación .7
  • 8. RDBMS vs OODBMS Tecnología Relacional Los datos constituyen un ente propio y van completamente separados de las funciones que los manejan. De hecho uno puede existir perfectamente sin la existencia del otro. Esto crea una complejidad añadida a la hora de manejar esos datos. 19/12/2005 E.T.S de Ingenieros de Telecomunicación .8
  • 9. RDBMS vs OODBMS Tecnología de Objetos Los datos coexisten junto a los procesos que los tratan. Estas entidades son los Objetos Simplifica el tratamiento de los datos. 19/12/2005 E.T.S de Ingenieros de Telecomunicación .9
  • 10. BASES DE DATOS INTRODUCCIÓN RDBMS EL PARADIGMA RELACIONAL
  • 11. El Paradigma Relacional Los datos son independientes de las entidades que los procesan Dichos datos deben ser almacenados en bases de datos relacionales compuestas principalmente de Tablas, Filas (registros), y Campos. Dichos datos deben mantener una relación coherente entre ellos (Relación impuesta por la Base de datos). 19/12/2005 E.T.S de Ingenieros de Telecomunicación .11
  • 12. El paradigma relacional ¿Qué pasa si queremos almacenar Objetos creados por un lenguaje orientado a Objetos en una base de datos Relacional? En este instante se produce lo que vamos a llamar la Inadaptación de Impedancia (Entre Objetos y Datos Relacionales) 19/12/2005 E.T.S de Ingenieros de Telecomunicación .12
  • 13. Esquema del Paradigma Relacional CLASE PARADIGMA RDBMS OBJETO1 X TABLA1 X TABLA2 OBJETO2 OBJETO3 X ENTORNO DE OBJETOS ENTORNO DE DATOS 19/12/2005 E.T.S de Ingenieros de Telecomunicación .13
  • 14. El paradigma relacional Solución Adoptada ¿Qué pasa si queremos almacenar Objetos creados por un lenguaje orientado a Objetos en una base de datos Relacional? La solución comunmente aceptada pasa por lo que llamaremos Mapeo Objeto - Relacional 19/12/2005 E.T.S de Ingenieros de Telecomunicación .14
  • 15. Esquema del Paradigma Relacional (Solución) MAPEO CLASE RDBMS REGISTRO1 TABLA1 TABLA2 OBJETO1 REGISTRO2 OBJETO2 REGISTRO3 OBJETO3 <atributo> ENTORNO DE OBJETOS ENTORNO DE DATOS <columna> 19/12/2005 E.T.S de Ingenieros de Telecomunicación .15
  • 16. Esquema del Paradigma Relacional (Solución) Mapeo (Objeto – Relacional) Nos permite mapear los objetos a registros en las tablas de base de datos. Esto se realiza mediante una hoja de mapeo en la que “convertimos” cada clase en una tabla, cada objeto en un registro (fila) de la base de datos y cada atributo en una columna de la misma. Tenemos que manejar las relaciones entre Clases (Tablas) mediante las típicas claves principales, primarias y/o externas. 19/12/2005 E.T.S de Ingenieros de Telecomunicación .16
  • 17. BASES DE DATOS INTRODUCCIÓN OODBMS (Object oriented Data Base Manager System)
  • 18. OODBMS Nos permiten almacenar Objetos directamente (no hay registros ni tablas). Nos dan transparencia a la hora de almacenarlos. Nos ofrecen mayor flexibilidad ante los posibles cambios. a1 Los datos coexisten con los objetos. a2 Velocidad OODBMS ≥ RDBMS 19/12/2005 E.T.S de Ingenieros de Telecomunicación .18
  • 19. OODBMS Standards The Object Oriented Database Manifesto (1989) Mandatory features: Complex objects (OO feature) objects can contain attributes which are themselves objects. Object identity (OO) Encapsulation (OO) Classes (OO) Inheritance (OO): class hierarchies Overriding, Overloading, Late Binding (OO) Computational completeness (OO Persistence (DB) data must remain after the process that created it has terminated Secondary Storage Management (DB) Concurrency (DB) Recovery (DB) Ad hoc query facility (DB) not necessarily a query language – could be a graphical query tool 19/12/2005 E.T.S de Ingenieros de Telecomunicación .19
  • 20. OODBMS Standards The ODMG Proposed Standard One of the crucial factors in the commercial success of RDBMSs is the relative standardisation of the data model The Object Data Management Group (ODMG) was formed by a group of industry representatives to define a proposed standard for the object data model. It is still far from being as widely recognised as the relational database standards. The ODMG proposed standard defines the following aspects of an OODBMS: basic terminology data types classes and inheritance objects collection objects (including sets, bags, lists, arrays) structured objects (Date, Interval, Time, Timestamp – similar to SQL) relationships object definition language (ODL) object query language (OQL) 19/12/2005 E.T.S de Ingenieros de Telecomunicación .20
  • 21. OODBMS Ventajas Objetos y Relaciones Complej@s Jerarquía de clases Sin desadaptación de impedancia Sin necesidad de claves primarias Un Modelo de datos Un Lenguaje de programación Sin necesidad de lenguaje de Conslutas Alto rendimiento en ciertas tareas 19/12/2005 E.T.S de Ingenieros de Telecomunicación .21
  • 22. OODBMS Desventajas Cambios de esquemas Falta de consenso en standards Falta de ad-hoc querying a7 En General RDMBS es más adecuando para bases de datos con variedad de consultas y requerimientos de interface de usuario (ej. sistema de gestión de business). Mientras que OODBMS es más propio de aplicaciones con complejos y/o irregulares datos donde se siguen patrones previsibles (ej. CAD/CAM) 19/12/2005 E.T.S de Ingenieros de Telecomunicación .22
  • 23. OODBMS Java Data Objects (JDO) Aplicaciones escritas para uso de JDO pueden tratar con cualquier Base de datos que implemente JDO Las consultas (queries) están escritas en un lenguaje parecido-a-Java (JDOQL) El mapeo de objetos a la base de datos están definidos en descriptores XML Algunos proovedores de OODBMS basan sus productos en JDO (Lo hace db4o?) 19/12/2005 E.T.S de Ingenieros de Telecomunicación .23
  • 24. OODBMS Nativas vs. No-Nativas OODBMS No-Nativas OODBMS Nativas La interface nos La interface permite el permite un tratamiento tratamiento nativo de transparente de los los objetos como tales. objetos como tales. La base de datos La base de datos se almacena esos encarga de objetos como tales. transformar esos objetos por nosotros. 19/12/2005 E.T.S de Ingenieros de Telecomunicación .24
  • 26. Db4o: Introducción Base de datos orientada a objetos completamente nativa de alto rendimiento. Desarrollada en el corazón de Sillicon Valley. Compacta y válida como Base de datos embedida en la aplicación. Soporta aplicaciones Standalone así como Cliente/Servidor (Aplicaciones distribuidas). Disponible para entornos Java o .Net 19/12/2005 E.T.S de Ingenieros de Telecomunicación .26
  • 27. Db4o: Características Mínimo consumo de recursos Pequeña FootPrint (Huella) Alto rendimiento Fácil Implementación (Mínimo código) Portabilidad Corre sobre Java 1.x hasta 5.0, en .Net sobre J2EE, J2SE, J2ME:CDC, Symbian… Confiabilidad (ACID) Transparencia 19/12/2005 E.T.S de Ingenieros de Telecomunicación .27
  • 28. Db4o: Características II Velocidad: hasta 44 veces más rápido que Hibernate/MySQL Soporte al cambio de Versiones Administración Nula a4 Soporte a JSP / Servlets Código Abierto (Bajo 2 licencias) 19/12/2005 E.T.S de Ingenieros de Telecomunicación .28
  • 29. Db4o: Características III Con db4o eliminamos el proceso de diseño, implementación y mantenimiento de la base de datos pues: El modelo de clases es el esquema de base de datos. 19/12/2005 E.T.S de Ingenieros de Telecomunicación .29
  • 30. Db4o: Características III Db4o nos permite: Embeder la base de datos (applicaciones Standalone) Conexión parcial Cliente a Servidor Conexión distribuida entre servidores (Sincronización de datos) db4o Embedido (400kb) Parcial Distribuido Standalone Client to Server Server to Server 19/12/2005 E.T.S de Ingenieros de Telecomunicación .30
  • 31. Db4o: Características IIII Db4o nos ofrece 3 tipos de consultas: Query by Example (QBE): Consultas por ejemplo o prototipo Simple Object Database Access (SODA): Consultas dinámicas basadas en nodos Native Queries (NQ): Consultas a datos con lenguaje nativo • Con todo lo que supone esto (TypeSafe, No-Strings, No Learn…) Db4o.queries QBE SODA NQ Query By Example Native Queries Exportamos a a9 XML (Xstream) 19/12/2005 E.T.S de Ingenieros de Telecomunicación .31
  • 32. Db4o: Comparativas, Estadísticas y Gráficos Velocidad de escritura, lectura, consulta y borrado. Estadísticas realizadas con PolePosition. 19/12/2005 E.T.S de Ingenieros de Telecomunicación .32
  • 33. Db4o: Comparativas, Estadísticas y Gráficos Otros Bancos de Pruebas. Estadísticas realizadas con PolePosition. 19/12/2005 E.T.S de Ingenieros de Telecomunicación .33
  • 34. Db4o: Casos de Uso Podemos utilizar db4objects para: Dispositivos móviles • (Móviles,Pda’s,Tablet Pc’s…) Dispositivos médicos y biotecnología Industria del transporte Software enlatado Aplicaciones Web (JSP / Servlets) Sistemas en tiempo real 19/12/2005 E.T.S de Ingenieros de Telecomunicación .34
  • 35. Db4o: Casos de Uso II Podemos utilizar db4objects para: Instituciones educativas y de enseñanza en Colegios y/o Universidades. – (Conseguimos con ello centrarnos en el lenguaje Java o .Net sin distraernos en la BD) Juegos Standalone y Online Televsión Interactiva? (MHP) ? 19/12/2005 E.T.S de Ingenieros de Telecomunicación .35
  • 36. Db4o: Ejemplos de Clientes Novell TMT BMW Car IT Eastern Data Indra Systems Electrabel Massie Labas Web Radiance Bosch Hertz 19/12/2005 E.T.S de Ingenieros de Telecomunicación .36
  • 37. Db4objects POR DENTRO MOTOR INSTALACION DOCUMENTACION
  • 38. Db4o por dentro Motor, Instalación, Documentación El motor de la base de datos consiste tan solo en un pequeño archivo .jar de menos de 400kb. La instalación supone agregar el motor de la base de datos (db4o-.jar) a nuestro CLASSPATH. La documentación de la base de datos está creada mediante JavaDoc y viene incluida en el mismo paquete. 19/12/2005 E.T.S de Ingenieros de Telecomunicación .38
  • 39. Db4o POR DENTRO La API
  • 40. Db4o Por dentro: La API En principio solo los paquetes com.db4o y com.db4o.query son necesarios para un correcto funcionamiento. Métodos estáticos La interface + nos permiten: com.db4o importante: - Abrir y Cerrar db. - Es nuestra - Conectarnos a propia dB ya servidor. sean en single o - Configurar la db. client mode. com.db4o. com.db4o. ObjectContainer Db4o 19/12/2005 E.T.S de Ingenieros de Telecomunicación .40
  • 41. Db4o Por dentro: La API com.db4o.ObjectContainer. Puede ser una dB tanto en single-mode como en client to server connection. Todos los ObjectContainer manejan una transacción. Todo trabajo es transaccional. Cada ObjectContainer mantiene sus propias referencias a objetos almacenados e instanciados. Un ObjectContainer esta diseñado para permanecer abierto mientras se trabaja con ellos, cuando cerramos una dB todas las referencias a objetos desaparecen de la memoria RAM. 19/12/2005 E.T.S de Ingenieros de Telecomunicación .41
  • 42. Db4o Por dentro: La API com.db4o.ext nos extiende y proporciona las funciones avanzadas de com.db4o. (2 pasos) Razones: com.db4o -Es más fácil y rápido empezar a utilizar la db. -Será más fácil para otros productos copiar la interface básica de la db. -Es un sencillo ejemplo de cómo de ligera puede llegar com.db4o.ext com.db4o.config com.db4o.query a ser nuestra dB. 19/12/2005 E.T.S de Ingenieros de Telecomunicación .42
  • 43. Db4o Por dentro: La API com.db4o.config nos permite configurar y/o tunear la base de datos a nuestro gusto -Paquete que contiene tipos com.db4o y clases que nos permiten configurar y/o tunear la base de datos a nuestro gusto. -La configuración de la base de datos se hace por norma general antes de abrir la sesión en la misma. com.db4o.ext com.db4o.config com.db4o.query 19/12/2005 E.T.S de Ingenieros de Telecomunicación .43
  • 44. Db4o Por dentro: La API com.db4o.query nos ofrece el interface de consultas mediante 3 tipos de consultas -Paquete que alberga la com.db4o clase predicado para realizar consultas mediante Native Query (NQ). -NQ permite mejor y más rápida implementación pero reduce el rendimiento de consultas. com.db4o.ext com.db4o.config com.db4o.query 19/12/2005 E.T.S de Ingenieros de Telecomunicación .44
  • 46. dbo4: Tratamiento de Objetos Abrir y cerrar la base de datos Simplemente llamamos a .openFile( ) Cerramos con una llamada a .close() ObjectContainer db = Db4o.openFile(“Archivo.yap”); try { // hacer algo con la db Representa la finally { base de datos db.close(); // cerrar la base de datos antes de salir } 19/12/2005 E.T.S de Ingenieros de Telecomunicación .46
  • 47. dbo4: Tratamiento de Objetos Almacenar objetos Simplemente llamamos a .set( ) pasando cualquier objeto como parámetro Pilot pilot1 = new Pilot("Michael Schumacher",100); db.set(pilot1); Almacenamos el objeto con un simple set System.out.println("Stored "+pilot1); 19/12/2005 E.T.S de Ingenieros de Telecomunicación .47
  • 48. dbo4: Tratamiento de Objetos Recuperar objetos Lo intentamos con la sencilla interface QBE Listamos todos ! Creamos un objeto Pilot proto = new Pilot(null,0); prototipo con new() (con null’s y 0’s) ObjectSet result=db.get(proto); Consultamos con listResult(result); .get() Listamos resultados 19/12/2005 E.T.S de Ingenieros de Telecomunicación .48
  • 49. dbo4: Tratamiento de Objetos Recuperar objetos con QBE Lo intentamos con la sencilla interface QBE Listamos por nombre Pilot proto = new Pilot(“Michael Sumacher”,0); Creamos un objeto prototipo con new() ObjectSet result=db.get(proto); Consultamos con listResult(result); .get() Listamos resultados 19/12/2005 E.T.S de Ingenieros de Telecomunicación .49
  • 50. dbo4: Tratamiento de Objetos Actualizar objetos Lo intentamos con la sencilla interface QBE ObjectSet result=db.get(new Pilot("Michael",0)); Recuperamos un Pilot found=(Pilot)result.next(); objeto de la db found.addPoints(11); Lo tratamos (Actualizamos) db.set(found); retrieveAllPilots(db); Lo almacenamos En la misma sesión 19/12/2005 E.T.S de Ingenieros de Telecomunicación .50
  • 51. dbo4: Tratamiento de Objetos Borrar objetos Simplemente llamamos a .delete( ) pasando cualquier objeto como parámetro ObjectSet result=db.get(new Pilot("Michael Schumacher",0)); Pilot found=(Pilot)result.next(); db.delete(found); Borramos el objeto conocido retrieveAllPilots(db); 19/12/2005 E.T.S de Ingenieros de Telecomunicación .51
  • 53. dbo4: Consulta de Objetos Quering by Example (QBE) ¿Qué? Son consultas extremadamente fáciles y rápidas Tenemos limitaciones en las consultas • No podemos ejecutar consultas con expresiones avanzadas como (AND, OR, NOT, etc.) No se pueden imponer valores 0 o null. Necesitas un constructor para los objetos 19/12/2005 E.T.S de Ingenieros de Telecomunicación .53
  • 54. dbo4: Consulta de Objetos Quering by Example (QBE) ¿Cómo? 1. Creamos un objeto prototipo (Mediante atributos por defecto nulls y 0’s) 2. Utilizamos el método .get( ) pasándole el objeto prototipo. 3. Nos devuelve un ObjectSet que contiene los objetos de la consulta realizada Pilot proto=new Pilot(“null",0); ObjectSet result=db.get(proto); listResult(result); Consultamos con .get() 19/12/2005 E.T.S de Ingenieros de Telecomunicación .54
  • 55. dbo4: Consulta de Objetos Quering by Example (QBE) (Ejemplo 2) Hacemos una consulta por nombre Listamos por nombre Pilot proto = new Pilot(“Michael Sumacher”,0); Creamos un objeto prototipo con new() ObjectSet result=db.get(proto); Consultamos con listResult(result); .get() Listamos resultados 19/12/2005 E.T.S de Ingenieros de Telecomunicación .55
  • 56. dbo4: Consulta de Objetos Native Queries (NQ) ¿Qué? Son consultas realizadas con el mismo lenguaje de programación. Por tanto son consultas de Escritura- Segura, comprobadas en Tiempo de Compilación, y 100 % Factorizables Podemos incluso llamar a métodos dentro de las propias consultas. Están perfectamente standarizadas y son una vía de futuro seguro 19/12/2005 E.T.S de Ingenieros de Telecomunicación .56
  • 57. dbo4: Consulta de Objetos Native Queries (NQ) ¿Cómo? 1. Creamos un predicado (o expresión) con lenguaje de código nativo. [ new predicate() ] 2. Implementamos el método #match() perteneciente a la clase predicate() 3. Devuelve true para marcar específicas instancias como parte del conjunto resultado 4. Utilizamos el método .query( ) pasándole esa expresión de consulta. 19/12/2005 E.T.S de Ingenieros de Telecomunicación .57
  • 58. dbo4: Consulta de Objetos Native Queries (NQ) (Ejemplo ) Hacemos una consulta por puntos == 100 Creamos una expresión en leguaje nativo con List pilots = db.query(new Predicate( ) { nuevo Predicate() public boolean match(Pilot pilot) { Implementamos el método .match() return pilot.getPoints() == 100; que hace la comparación y } devuelve true }); Consultamos esa expresión mediante .query() 19/12/2005 E.T.S de Ingenieros de Telecomunicación .58
  • 59. dbo4: Consulta de Objetos Native Queries (NQ) (Ejemplo 2 ) Hacemos una consulta por puntos > 99 (AND) <199 Creamos una expresión en List pilots = db.query( new Predicate() { leguaje nativo con public boolean match(Pilot pilot) { nuevo Predicate() return pilot.getPoints() > 99 Implementamos el && pilot.getPoints() < 199 método .match() || pilot.getName().equals("Rubens Barrichello"); que hace la comparación y } devuelve true }); Consultamos esa expresión mediante .query() 19/12/2005 E.T.S de Ingenieros de Telecomunicación .59
  • 60. dbo4: Consulta de Objetos S.O.D.A Query API ¿Qué? Son consultas de nodo dinámicas de bajo nivel que permiten directamente recorrer la jerarquía de clases. Al contrario que NQ, SODA utiliza Strings para identificar los campos Por lo tanto no tiene las características de Escritura-Segura, comprobadas en Tiempo de Compilación, y 100 % Factorizables Sin embargo es más rápido que NQ Al contrario que QBE permite consultas a 0. 19/12/2005 E.T.S de Ingenieros de Telecomunicación .60
  • 61. dbo4: Consulta de Objetos S.O.D.A Query API ¿Cómo? 1. Creamo un nuevo objeto (nodo) a través del metodo .query() del ObjectContainer 2. Descendemos por árbol jerárquico de clases 3. Imponemos alguna o varias condiciones con .constrain(), (a uno o varios atributos) 4. Ejecutamos esa consulta con .execute() y nos devuelve un ObjectSet con los objetos consultados. 19/12/2005 E.T.S de Ingenieros de Telecomunicación .61
  • 62. dbo4: Consulta de Objetos S.O.D.A Query API (Ejemplo ) Hacemos una consulta por todos los pilotos Creamos nuevo Class: Pilot nodo de consulta con .query() Imponemos ese nodo a ‘Toda la Query query = db.query(); clase pilot’ con .constrain() sobre query.constrain(Pilot.class); Pilot.class ObjectSet result = query.execute(); Ejecutamos la listResult(result); consulta mediante .execute() 19/12/2005 E.T.S de Ingenieros de Telecomunicación .62
  • 63. dbo4: Consulta de Objetos S.O.D.A Query API (Ejemplo 2 ) Hacemos una consulta por nombre de piloto Creamos nuevo Class: Pilot nodo de consulta con .query() name Equals(“MS”) Imponemos ese nodo a ‘Toda la clase pilot Query query=db.query(); Descendemos por query.constrain(Pilot.class); el nodo a name e imponemos “MS” query.descend("name").constrain("MS"); con .constrain() ObjectSet result=query.execute(); Ejecutamos la consulta mediante .execute() 19/12/2005 E.T.S de Ingenieros de Telecomunicación .63
  • 64. dbo4: Consulta de Objetos S.O.D.A Query API (Ejemplo 2 ) Hacemos una consulta por nombre y puntos Creamos nuevo Class: Pilot nodo de consulta con .query() name Equals(“MS”) Imponemos ese nodo a ‘Toda la clase pilot points Greater( 60 ) Descendemos por el nodo a name e imponemos “MS” con .constrain() Descendemos a points e imponemos >60 19/12/2005 E.T.S de Ingenieros de Telecomunicación .64
  • 65. Db4o POR DENTRO Objetos Estructurados Colecciones y Arrays Herencia
  • 66. dbo4: Objetos Estructurados No tenemos por qué almacenar todos los objetos subordinados si no sólo el objeto de mayor nivel. team car Db4o database pilot 19/12/2005 E.T.S de Ingenieros de Telecomunicación .66
  • 67. dbo4: Objetos Estructurados Consultas estructuradas Consultar un piloto por su modelo de coche Class: Car el mod pilo t Equals (“Ferrari”) Creamos nuevo nodo de consulta Query carquery=db.query(); con .query() carquery.constrain(Car.class); Descendemos por carquery.descend("model").constrain("Ferrari"); model imponemos Ferrari Query pilotquery=carquery.descend("pilot"); ObjectSet result=pilotquery.execute(); Descendemos por pilot. 19/12/2005 E.T.S de Ingenieros de Telecomunicación .67
  • 68. dbo4: Objetos Estructurados Actualización de profundidad Si queremos actualizar un objeto subordinado salvando (almacenando) su objeto superior en la dB debemos configurar la db para actualización de profundida con .cascadeOnUpdate() antes de abrir la db. Por defecto la profundidad es 1 lo cual permite actualizar atributos primitivos o Strings. 19/12/2005 E.T.S de Ingenieros de Telecomunicación .68
  • 69. dbo4: Objetos Estructurados Borrado recursivo De forma análoga a la actualización el borrado recursivo debe ser configurado mediante .cascadeOnDelete() antes de la apertura de la dB. Con esto conseguimos borrar los objetos subordinados borrando únicamente el objeto de mayor nivel. Pero que pasa si un objeto subordinado está referenciado por otro objeto? Cuidado!!! 19/12/2005 E.T.S de Ingenieros de Telecomunicación .69
  • 70. dbo4: Objetos Estructurados Sin .cascadeOnDelete() Con .cascadeOnDelete() Borramos Borramos X 19/12/2005 E.T.S de Ingenieros de Telecomunicación X .70
  • 71. db4o: Colecciones y Arrays Podemos consultar arrays y almacenarlos de la misma forma que datos primitivos. Mediante QBE el orden de los valores consultados es irrelevante Con NQ simplemente consultamos como si hiciéramos búsquedas nativas en arrays. Nada nuevo en consulta y borrado de arrays, simplemente tener en cuenta la profundidad. 19/12/2005 E.T.S de Ingenieros de Telecomunicación .71
  • 72. db4o: Herencia Db4o nos devuelve los objetos del tipo consultado es decir: Consultando una SuperClase nos devuelve todos los objetos padre e hijos. Consultando una SubClase nos devuelve los objetos de esa SubClase. Consulta Figuras Consulta 19/12/2005 E.T.S de Ingenieros de Telecomunicación .72
  • 73. db4o: Herencia ¿Qué pasa con QBE si la clase a consultar es Abstracta o Interface? No podemos utilizar un constructor para hacer el objeto prototipo. Solución: Utilizamos ‘MiClase’.class lo que nos devuelve la clase entera. 19/12/2005 E.T.S de Ingenieros de Telecomunicación .73
  • 74. Db4o POR DENTRO TRANSACCIONES TECNOLOGÍA CLIENTE/SERVIDOR
  • 75. db4o: Transacciones Simples db4o nos ofrece dos métodos para realizar transacciones .commit() Finaliza una transacción .rollback() Deshace una transacción La transacción es implícitamente cerrada por defecto cuando cerramos una db. Sin embargo debemos tener cuidado a la hora de hacer .rollback() con Live Objects. Se deben refrescar con .ext().refresh(obj,depth) 19/12/2005 E.T.S de Ingenieros de Telecomunicación .75
  • 76. db4o: Transacciones Simples Proceso commit – rollback (Client/Server) Pedi mos Coch e Set ( ) RollB ack () Db4o Refre database sh() 19/12/2005 E.T.S de Ingenieros de Telecomunicación .76
  • 77. db4o: Cliente / Servidor Local De cara a la API no existen diferencias reales entre ejecutar transacciones concurrentes dentro de la misma VM y transacciones ejecutadas contra un server Para abrir una db en modo servidor dentro de la misma VM utilizamos .openServer(‘dbfile.yap‘,0) con puerto 0. Para acceder a esa base de datos en modo cliente Local tan solo usamos .openClient() 19/12/2005 E.T.S de Ingenieros de Telecomunicación .77
  • 78. db4o: Cliente / Servidor Local Cada contenedor cliente mantiene su propio cache de referencias débiles de los objetos ‘ya conocidos’. Para hacer que los cambios hechos por un cliente sean ‘cometidos’ por todos los clientes inmediatamente debemos refrescar los objetos conocidos explícitamente con .ext().refresh(obj, depth) 19/12/2005 E.T.S de Ingenieros de Telecomunicación .78
  • 79. db4o: Cliente / Servidor Remoto Desde aquí hay un pequeño paso ya para configurar nuestra db como Client/Server sobre TCP/IP. Tan solo especificamos un puerto de servidor mayor que 0 y abrimos los clientes garantizandoles acceso con USER Y PASS. Abrimos con .openServer(db.yap,PORT) Garantizamos con .grantAccess(USER,PASS) Conectamos con .openClient(“Server",PORT,USER,PASS) 19/12/2005 E.T.S de Ingenieros de Telecomunicación .79
  • 80. db4o: Cliente / Servidor Remoto Algunas veces necesitamos enviar ciertos mensajes tipo ‘kill’ al servidor entonces: El servidor se pone como receptor de mensajes con .setMessageRecipient() pasándole como parámetro el mensaje obj. El mensaje es recivido y procesado por el método processMessage() El cliente se pone como Mensajero con .getMessageSender() y manda un mensaje con .send() . Ejemplo msg: new StopServer() 19/12/2005 E.T.S de Ingenieros de Telecomunicación .80
  • 81. db4o: Conclusión Hemos visto como db4o nos permite hacer un sin fin de cosas con muy poco código y esfuerzo y eso que tan solo hemos visto una parte de db4o. Aún nos quedaría por mirar temas como: •Evaluaciones SODA •ClassLoaders •Constructores •ServLets •Intérpretes •Encriptación •Configuración y •Refactorizado de Tuneado clases •Indexación •Optimización de •Object Manager consultas 19/12/2005 •Replicaciones E.T.S de Ingenieros de Telecomunicación .81
  • 82. db4o – Base de datos Orientada a Objetos [---------- Proyecto ----------] MHProject v1.0 www.mhproject.org E.T.S de Ingenieros de Telecomunicación Créditos y Bibliografía Universidad Pública de Navarra [---------- Autor ----------] Alejandro Fanjul fanjul.35858@e.unavarra.es afanjul@mhproject.org [---------- Tutores ----------] Mikel Sagues mikel.sagues@unavarra.es Javier Navallas javier.navallas@unavarra.es [---------- Bibliografía ----------] Db4o.com: Tutorial and Presentations Bell College: Presentations [Object Persistence] 19/12/2005 E.T.S de Ingenieros de Telecomunicación .82