Académique Documents
Professionnel Documents
Culture Documents
21 21:46:21 +01'00
db4objects
BASE DE DATOS ORIENTADA A OBJETOS
v1.0
NDICE
MHProject
db4objects
Crditos Y Bibliografa
RDBMS Vs OODBMS
OODBMS
Introduccin
Caractersticas
La API
Nativas Vs No-Nativas
Tratamiento De Objetos
Consultas
QBE
NQ
SODA
19/12/2005
.2
PERSISTENCIA DE DATOS
Persistencia
VUna de las tareas ms crticas en la programacin es salvar y recuperar datos VLa persistencia es el almacenamiento de los datos en memoria, para una posterior recuperacin de los mismos VEn sistemas orientados a objetos, existen varios mtodos para hacer los objetos persistentes. VLa eleccin del mtodo es de vital importancia.
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .4
SERIALIZACIN
DATABASES
ORDMBS
PERSISTENCIA DE OBJETOS
OODBMS
RDBMS
19/12/2005
.5
RDBMS vs OODBMS
RDBMS vs OODBMS
9Tecnologa de Objetos
Orientada a Objetos Centrada en servicios
19/12/2005
.7
RDBMS vs OODBMS
VTecnologa Relacional
9Los datos constituyen un ente propio y van completamente separados de las funciones que los manejan. 9De hecho uno puede existir perfectamente sin la existencia del otro. 9Esto crea una complejidad aadida a la hora de manejar esos datos.
19/12/2005
.8
RDBMS vs OODBMS
VTecnologa de Objetos
9Los datos coexisten junto a los procesos que los tratan. 9Estas entidades son los Objetos 9Simplifica el tratamiento de los datos.
19/12/2005
.9
El Paradigma Relacional
VLos datos son independientes de las entidades que los procesan VDichos datos deben ser almacenados en bases de datos relacionales compuestas principalmente de Tablas, Filas (registros), y Campos. VDichos datos deben mantener una relacin coherente entre ellos (Relacin impuesta por la Base de datos).
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .11
El paradigma relacional
VQu pasa si queremos almacenar Objetos creados por un lenguaje orientado a Objetos en una base de datos Relacional? VEn este instante se produce lo que vamos a llamar la Inadaptacin de Impedancia (Entre Objetos y Datos Relacionales)
19/12/2005
.12
OBJETO1
OBJETO2 OBJETO3
X X X
TABLA1
RDBMS
TABLA2
ENTORNO DE OBJETOS
ENTORNO DE DATOS
19/12/2005
.13
VQu pasa si queremos almacenar Objetos creados por un lenguaje orientado a Objetos en una base de datos Relacional? VLa solucin comunmente aceptada pasa por lo que llamaremos Mapeo Objeto - Relacional
19/12/2005
.14
OBJETO2
ENTORNO DE OBJETOS
<atributo> <columna>
ENTORNO DE DATOS
19/12/2005
.15
OODBMS
VNos permiten almacenar Objetos directamente (no hay registros ni tablas). VNos dan transparencia a la hora de almacenarlos. VNos ofrecen mayor flexibilidad ante los posibles cambios. a1 VLos datos coexisten con los objetos. a2 VVelocidad OODBMS RDBMS
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .18
OODBMS Standards
V The Object Oriented Database Manifesto (1989) V Mandatory features: V Complex objects (OO feature)
9 objects can contain attributes which are themselves objects.
V V V V V V V V V V V
Object identity (OO) Encapsulation (OO) Classes (OO) Inheritance (OO): class hierarchies Overriding, Overloading, Late Binding (OO) Computational completeness (OO Persistence (DB)
9 data must remain after the process that created it has terminated
Secondary Storage Management (DB) Concurrency (DB) Recovery (DB) Ad hoc query facility (DB)
9 not necessarily a query language could be a graphical query tool
E.T.S de Ingenieros de Telecomunicacin
19/12/2005
.19
OODBMS Standards
V The ODMG Proposed Standard V One of the crucial factors in the commercial success of RDBMSs is the relative standardisation of the data model V The Object Data Management Group (ODMG) was formed by a group of industry representatives to define a proposed standard for the object data model. V It is still far from being as widely recognised as the relational database standards. V The ODMG proposed standard defines the following aspects of an OODBMS:
9 9 9 9 9 9 9 9 9 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)
E.T.S de Ingenieros de Telecomunicacin
19/12/2005
.20
OODBMS Ventajas
VObjetos y Relaciones Complej@s VJerarqua de clases VSin desadaptacin de impedancia VSin necesidad de claves primarias VUn Modelo de datos VUn Lenguaje de programacin VSin necesidad de lenguaje de Conslutas VAlto rendimiento en ciertas tareas
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .21
OODBMS Desventajas
VAplicaciones escritas para uso de JDO pueden tratar con cualquier Base de datos que implemente JDO VLas consultas (queries) estn escritas en un lenguaje parecido-a-Java (JDOQL) VEl mapeo de objetos a la base de datos estn definidos en descriptores XML VAlgunos proovedores de OODBMS basan sus productos en JDO (Lo hace db4o?)
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .23
V OODBMS Nativas
9 La interface permite el tratamiento nativo de los objetos como tales. 9 La base de datos almacena esos objetos como tales.
19/12/2005
.24
db4OBJECTS
www.db4o.com
INTRODUCCIN
Db4o: Introduccin
VBase de datos orientada a objetos completamente nativa de alto rendimiento. VDesarrollada en el corazn de Sillicon Valley. VCompacta y vlida como Base de datos embedida en la aplicacin. VSoporta aplicaciones Standalone as como Cliente/Servidor (Aplicaciones distribuidas). VDisponible para entornos Java o .Net
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .26
Db4o: Caractersticas
Db4o: Caractersticas II
VVelocidad: hasta 44 veces ms rpido que Hibernate/MySQL VSoporte al cambio de Versiones VAdministracin Nula VSoporte a JSP / Servlets VCdigo Abierto (Bajo 2 licencias)
a4
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .28
VCon db4o eliminamos el proceso de diseo, implementacin y mantenimiento de la base de datos pues:
9El modelo de clases es el esquema de base de datos.
19/12/2005
.29
db4o
19/12/2005
.30
SODA
NQ Native Queries
a9
.31
9Dispositivos mdicos y biotecnologa 9Industria del transporte 9Software enlatado 9Aplicaciones Web (JSP / Servlets) 9Sistemas en tiempo real
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .34
VPodemos utilizar db4objects para: 9Instituciones educativas y de enseanza en Colegios y/o Universidades.
(Conseguimos con ello centrarnos en el lenguaje Java o .Net sin distraernos en la BD)
Db4o: Ejemplos de Clientes Novell BMW Car IT Indra Systems Massie Labas Bosch TMT Eastern Data Electrabel Web Radiance Hertz
19/12/2005
.36
VEl motor de la base de datos consiste tan solo en un pequeo archivo .jar de menos de 400kb. VLa instalacin supone agregar el motor de la base de datos (db4o-.jar) a nuestro CLASSPATH. VLa documentacin 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 Telecomunicacin .38
La API
Db4o Por dentro: La API V En principio solo los paquetes com.db4o y com.db4o.query son necesarios para un correcto funcionamiento.
Mtodos estticos nos permiten: - Abrir y Cerrar db. - Conectarnos a servidor. - Configurar la db.
com.db4o
com.db4o. Db4o
com.db4o. ObjectContainer
19/12/2005
.40
Db4o Por dentro: La API V com.db4o.ext nos extiende y proporciona las funciones avanzadas de com.db4o. (2 pasos)
Razones: -Es ms fcil y rpido empezar a utilizar la db. -Ser ms fcil para otros productos copiar la interface bsica de la db. -Es un sencillo ejemplo de cmo de ligera puede llegar a ser nuestra dB.
com.db4o
com.db4o.ext
com.db4o.config
com.db4o.query
19/12/2005
.42
Db4o Por dentro: La API V com.db4o.config nos permite configurar y/o tunear la base de datos a nuestro gusto
-Paquete que contiene tipos y clases que nos permiten configurar y/o tunear la base de datos a nuestro gusto. -La configuracin de la base de datos se hace por norma general antes de abrir la sesin en la misma. com.db4o.query
com.db4o
com.db4o.ext
com.db4o.config
19/12/2005
.43
Db4o Por dentro: La API V com.db4o.query nos ofrece el interface de consultas mediante 3 tipos de consultas
-Paquete que alberga la clase predicado para realizar consultas mediante Native Query (NQ). -NQ permite mejor y ms rpida implementacin pero reduce el rendimiento de consultas. com.db4o.query
com.db4o
com.db4o.ext
com.db4o.config
19/12/2005
.44
TRATAMIENTO DE OBJETOS
19/12/2005
.46
VAlmacenar objetos
9Simplemente llamamos a .set( ) pasando cualquier objeto como parmetro
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
.47
VRecuperar objetos
9Lo intentamos con la sencilla interface QBE
Pilot proto = new Pilot(null,0); ObjectSet result=db.get(proto); listResult(result); Consultamos con .get() Listamos resultados Listamos todos ! Creamos un objeto prototipo con new() (con nulls y 0s)
19/12/2005
.48
19/12/2005
.49
VActualizar objetos
9Lo intentamos con la sencilla interface QBE
ObjectSet result=db.get(new Pilot("Michael",0)); Pilot found=(Pilot)result.next(); Recuperamos un objeto de la db
19/12/2005
VBorrar objetos
9Simplemente llamamos a .delete( ) pasando cualquier objeto como parmetro
ObjectSet result=db.get(new Pilot("Michael Schumacher",0)); Pilot found=(Pilot)result.next(); db.delete(found); retrieveAllPilots(db);
19/12/2005
.51
CONSULTAS DE OBJETOS
19/12/2005
.53
19/12/2005
19/12/2005
.55
19/12/2005
.57
List pilots = db.query(new Predicate( ) { public boolean match(Pilot pilot) { return pilot.getPoints() == 100; } });
19/12/2005
.61
Creamos nuevo nodo de consulta con .query() Imponemos ese nodo a Toda la clase pilot Descendemos por el nodo a name e imponemos MS con .constrain() Descendemos a points e imponemos >60
.64
Greater( 60 )
19/12/2005
VNo tenemos por qu almacenar todos los objetos subordinados si no slo el objeto de mayor nivel. team
car
Db4o database
pilot
19/12/2005
.66
VConsultas estructuradas
9Consultar un piloto por su modelo de coche
Class: Car
el mod
pilo
Equals (Ferrari) Query carquery=db.query(); carquery.constrain(Car.class); carquery.descend("model").constrain("Ferrari"); Query pilotquery=carquery.descend("pilot"); ObjectSet result=pilotquery.execute();
19/12/2005 E.T.S de Ingenieros de Telecomunicacin
Creamos nuevo nodo de consulta con .query() Descendemos por model imponemos Ferrari Descendemos por pilot.
.67
VActualizacin de profundidad
9Si queremos actualizar un objeto subordinado salvando (almacenando) su objeto superior en la dB debemos configurar la db para actualizacin de profundida con .cascadeOnUpdate() antes de abrir la db. 9Por defecto la profundidad es 1 lo cual permite actualizar atributos primitivos o Strings.
19/12/2005
.68
VBorrado recursivo
9De forma anloga a la actualizacin el borrado recursivo debe ser configurado mediante .cascadeOnDelete() antes de la apertura de la dB. 9Con esto conseguimos borrar los objetos subordinados borrando nicamente el objeto de mayor nivel. 9Pero que pasa si un objeto subordinado est referenciado por otro objeto? Cuidado!!!
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .69
V Con .cascadeOnDelete()
Borramos
X X
19/12/2005
.70
db4o: Herencia V Db4o nos devuelve los objetos del tipo consultado es decir:
9 Consultando una SuperClase nos devuelve todos los objetos padre e hijos. 9 Consultando una SubClase nos devuelve los objetos de esa SubClase.
Consulta Figuras
Consulta
19/12/2005
.72
db4o: Herencia
19/12/2005
.73
VLa transaccin es implcitamente cerrada por defecto cuando cerramos una db. VSin embargo debemos tener cuidado a la hora de hacer .rollback() con Live Objects.
9Se deben refrescar con .ext().refresh(obj,depth)
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .75
Set (
RollB ack
()
Refre sh()
Db4o database
19/12/2005
.76
VDe cara a la API no existen diferencias reales entre ejecutar transacciones concurrentes dentro de la misma VM y transacciones ejecutadas contra un server
9Para abrir una db en modo servidor dentro de la misma VM utilizamos .openServer(dbfile.yap,0) con puerto 0. 9Para acceder a esa base de datos en modo cliente Local tan solo usamos .openClient()
E.T.S de Ingenieros de Telecomunicacin
19/12/2005
.77
VCada contenedor cliente mantiene su propio cache de referencias dbiles de los objetos ya conocidos. VPara hacer que los cambios hechos por un cliente sean cometidos por todos los clientes inmediatamente debemos refrescar los objetos conocidos explcitamente con .ext().refresh(obj, depth)
19/12/2005
.78
VDesde aqu hay un pequeo paso ya para configurar nuestra db como Client/Server sobre TCP/IP.
9Tan solo especificamos un puerto de servidor mayor que 0 y abrimos los clientes garantizandoles acceso con USER Y PASS. 9Abrimos con .openServer(db.yap,PORT) 9Garantizamos con .grantAccess(USER,PASS) 9Conectamos con .openClient(Server",PORT,USER,PASS)
19/12/2005 E.T.S de Ingenieros de Telecomunicacin .79
VAlgunas veces necesitamos enviar ciertos mensajes tipo kill al servidor entonces:
9El servidor se pone como receptor de mensajes con .setMessageRecipient() pasndole como parmetro el mensaje obj. 9El mensaje es recivido y procesado por el mtodo processMessage() 9El 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 Telecomunicacin .80
db4o: Conclusin
VHemos visto como db4o nos permite hacer un sin fin de cosas con muy poco cdigo y esfuerzo y eso que tan solo hemos visto una parte de db4o. An nos quedara por mirar temas como:
Evaluaciones SODA Constructores Intrpretes Configuracin y Tuneado Indexacin Object Manager
19/12/2005
ClassLoaders ServLets Encriptacin Refactorizado de clases Optimizacin de consultas E.T.S de Ingenieros de Telecomunicacin Replicaciones
.81
Crditos y Bibliografa
Alejandro Fanjul
fanjul.35858@e.unavarra.es afanjul@mhproject.org
Mikel Sagues
mikel.sagues@unavarra.es
Javier Navallas
javier.navallas@unavarra.es
[---------- Bibliografa ----------] Db4o.com: Tutorial and Presentations Bell College: Presentations [Object Persistence]
E.T.S de Ingenieros de Telecomunicacin .82
19/12/2005