PROYECTO APROXIMACIONES INICIALES PARA EL ESTUDIO DEL PROCESO DE ESPORULACIÓN DE LA BACTERIA BACILLUS THURINGIENSIS PARA AUMENTAR LA EFICIENCIA EN LA PRODUCCIÓN DE
LA DELTA ENDOTOXINA USANDO UNA APROXIMACIÓN DE CINÉTICA ESTOCÁSTICA
MANUAL DE LA BASE DE DATOS ‐ APLICACIÓN BacteriumSimulatorGrid
ELABORADO POR:
ING. MARIO JOSÉ VILLAMIZAR CANO
UNIVERSIDAD DE LOS ANDES FACULTAD DE INGENIERÍA
CENTRO DE INVESTIGACIÓN DE LA FACULTAD DE INGENIERÍA (CIFI) BOGOTÁ D.C.
TABLA DE CONTENIDO
INTRODUCCIÓN ... 3
1. DIAGRAMA ENTIDAD ‐ RELACION ... 3
2. DIAGRAMA DE VISTAS MATERIALIZADAS ... 5
3. TAMAÑO Y TIPOS DE DATOS DE LOS REGISTROS DE LAS TABLAS ... 6
4. SCRIPT PARA LA CREACIÓN DE LA TABLAS ... 7
5. SCRIPT PARA LA CREACIÓN DE LAS VISTAS MATERIALIZADAS ... 9
6. FORZAR LA SINCRONIZACION DE LAS VISTAS MATERIALIZADAS ... 10
7. INFORMACIÓN SOBRE LAS MEJORAS EN LOS TIEMPOS DE RESPUESTA AL UTILIZAR VISTAS MATERIALIZADAS ... 10
MANUAL DE LA BASE DE DATOS ‐ APLICACIÓN BacteriumSimulatorGrid INTRODUCCIÓN
El objetivo de este documento es dar una descripción global de la forma como fue diseñada la base de datos donde se almacena la información de las poblaciones de bacterias ejecutada a través de la aplicación.
El motor de base de datos utilizados es Oracle 10g Entreprise Edition, la información generada durante la ejecución de poblaciones de bacterias es almacenada mediante tablas de un modelo relacional y el acceso a dicha información desde la aplicación es realizado a través de vistas materializadas.
1. DIAGRAMA ENTIDAD ‐ RELACION
El diagrama entidad relación de la base de datos se ilustra en la siguiente figura:
2. DIAGRAMA DE VISTAS MATERIALIZADAS
El diagrama de las vistas materializadas utilizadas para acceder a los datos desde de la aplicación se ilustra en la siguiente figura:
3. TAMAÑO Y TIPOS DE DATOS DE LOS REGISTROS DE LAS TABLAS
• Tabla poblacion
• Tabla Bacteria
• Tabla Bac_RegValFuncion
• Tabla Bac_RegistroReaccion
Nombre de la tabla:
Nombre del campo: Tipo de Datos en JAVA Tipo de Dato en Oracle 10G Tamaño del Tipo de Dato Oracle 10G (bytes)
IDPoblacion int Number(10) 10
nombreBacteria String Varchar2(100) 100
fechaCreacionPoblacion String TimeStamp 6
estructuraBacteriaXML XML Clob 20000
20116 Poblacion
Tamaño de cada registro de esta tabla:
Nombre de la tabla:
Nombre del campo: Tipo de Datos en JAVA Tipo de Dato en Oracle 10G Tamaño del Tipo de Dato Oracle 10G (bytes)
IDPoblacion int Number(10) 10
IDBacteria int Number(10) 10
fechaFinalizacionEjecucion Date Date 7
duracionEjecucionAlgoritmo long Number(20) 20
numeroReaccionesEjec utadas long Number(20) 20
Tamaño de cada registro de esta tabla: 67
Bacteria
Nombre de la tabla:
Nombre del campo: Tipo de Datos en JAVA Tipo de Dato en Oracle 10G Tamaño del Tipo de Dato Oracle 10G (bytes)
IDPoblacion int Number(10) 10
IDBacteria int Number(10) 10
IDFuncion String Varchar(4) 4
intervalo int Number(10) 10
tiempo double binary_double 8
valor double binary_double 8
50 Bac_RegValFuncion
Tamaño de cada registro de esta tabla:
Nombre de la tabla:
Nombre del campo: Tipo de Datos en JAVA Tipo de Dato en Oracle 10G Tamaño del Tipo de Dato Oracle 10G (bytes)
IDPoblacion int Number(10) 10
IDBacteria int Number(10) 10
IDReaccion int Number(10) 10
Bac_RegistroReaccion
4. SCRIPT PARA LA CREACIÓN DE LA TABLAS
• Tabla Poblacion
CREATE TABLE "Poblacion"
( "IDPoblacion" NUMBER(10,0),
"nombreBacteria" VARCHAR2(100) NOT NULL ENABLE,
"fechaCreacionPoblacion" TIMESTAMP (6) NOT NULL ENABLE,
"estructuraBacteriaXml" CLOB,
CONSTRAINT "Poblacion_IDPoblacion_pk" PRIMARY KEY ("IDPoblacion") ENABLE
) /
• Tabla Bacteria
CREATE TABLE "Bacteria"
( "IDPoblacion" NUMBER(10,0),
"IDBacteria" NUMBER(10,0),
"fechaFinalizacionEjecucion" DATE NOT NULL ENABLE,
"duracionEjecucionAlgortimo" NUMBER(20,0) NOT NULL ENABLE,
"numeroReaccionesEjecutadas" NUMBER(20,0) NOT NULL ENABLE, CONSTRAINT "Bacteria_IDP_IDB_pk" PRIMARY KEY
("IDPoblacion", "IDBacteria") ENABLE,
CONSTRAINT "Bacteria_IDP_fk" FOREIGN KEY ("IDPoblacion") REFERENCES "Poblacion" ("IDPoblacion") ON DELETE CASCADE ENABLE
) /
• Tabla Bac_RegValFuncion
CREATE TABLE "Bac_RegValFuncion"
( "IDPoblacion" NUMBER(10,0) NOT NULL ENABLE,
"IDBacteria" NUMBER(10,0) NOT NULL ENABLE,
"IDFuncion" VARCHAR2(4) NOT NULL ENABLE,
"intervalo" NUMBER(10,0) NOT NULL ENABLE,
"tiempo" BINARY_DOUBLE NOT NULL ENABLE,
"valor" BINARY_DOUBLE NOT NULL ENABLE,
CONSTRAINT "Bac_RegValFuncion_pk" PRIMARY KEY
("IDPoblacion", "IDBacteria", "IDFuncion", "intervalo") ENABLE, CONSTRAINT "Bac_RegValFuncion_IDP_IDB_fk" FOREIGN KEY ("IDPoblacion", "IDBacteria")
REFERENCES "Bacteria" ("IDPoblacion", "IDBacteria") ON DELETE CASCADE ENABLE
) /
• Tabla Bac_RegistroReaccion
CREATE TABLE "Bac_RegistroReaccion"
( "IDPoblacion" NUMBER(10,0) NOT NULL ENABLE,
"IDBacteria" NUMBER(10,0) NOT NULL ENABLE,
"IDReaccion" NUMBER(10,0) NOT NULL ENABLE,
"numeroVecesEjecutada" NUMBER(20,0) NOT NULL ENABLE,
CONSTRAINT "Bac_RegReaccion_pk" PRIMARY KEY ("IDPoblacion",
"IDBacteria", "IDReaccion") ENABLE,
CONSTRAINT "Bac_RegReaccion_IDP_IDB_fk" FOREIGN KEY ("IDPoblacion", "IDBacteria")
REFERENCES "Bacteria" ("IDPoblacion", "IDBacteria") ON DELETE CASCADE ENABLE
) /
• Tabla Bac_RegPobEspecie
CREATE TABLE "Bac_RegPobEspecie"
( "IDPoblacion" NUMBER(10,0) NOT NULL ENABLE,
"IDBacteria" NUMBER(10,0) NOT NULL ENABLE,
"IDEspecie" VARCHAR2(4) NOT NULL ENABLE,
"intervalo" NUMBER(10,0) NOT NULL ENABLE,
"tiempo" BINARY_DOUBLE NOT NULL ENABLE,
"cantidad" NUMBER(10,0) NOT NULL ENABLE, CONSTRAINT "Bac_RegPobEspecie_pk" PRIMARY KEY
("IDPoblacion", "IDBacteria", "IDEspecie", "intervalo") ENABLE, CONSTRAINT "Bac_RegPobEspecie_IDP_IDB_fk" FOREIGN KEY ("IDPoblacion", "IDBacteria")
REFERENCES "Bacteria" ("IDPoblacion", "IDBacteria") ON DELETE CASCADE ENABLE
) /
5. SCRIPT PARA LA CREACIÓN DE LAS VISTAS MATERIALIZADAS
• POBLACION
CREATE MATERIALIZED VIEW "ResumenPoblacion"
BUILD IMMEDIATE USING INDEX REFRESH COMPLETE AS
SELECT "IDPoblacion", COUNT("IDBacteria") AS "numeroBacterias", MIN("IDBacteria") AS "minimoIDBacteria", MAX("IDBacteria") AS
"maximoIDBacteria", AVG("duracionEjecucionAlgortimo") AS
"promedioDuracionAlgoritmo", AVG("numeroReaccionesEjecutadas") AS
"promedioNumeroReacciones"
FROM "Bacteria"
GROUP BY "IDPoblacion"
ORDER BY "IDPoblacion";
• REACCIONES
CREATE MATERIALIZED VIEW "ResumenReaccion"
BUILD IMMEDIATE USING INDEX REFRESH COMPLETE AS
SELECT "IDPoblacion", "IDReaccion", COUNT("IDBacteria") AS
"numeroBacterias", AVG("numeroVecesEjecutada") AS
"numeroPromedioVecesEjecutada"
FROM "Bac_RegistroReaccion"
GROUP BY "IDPoblacion", "IDReaccion"
ORDER BY "IDPoblacion", "IDReaccion";
• ESPECIES DE LA POBLACION
CREATE MATERIALIZED VIEW "ResumenEspeciePoblacion"
BUILD IMMEDIATE USING INDEX REFRESH COMPLETE AS
SELECT "IDPoblacion", "IDEspecie", "intervalo" AS "intervalo", COUNT(*) AS "numeroBacteriaTenidasEnCuenta", AVG("tiempo") AS
"tiempoPromedio", AVG("cantidad") AS "cantidadPromedio", STDDEV("cantidad") AS "desviacionEstandar"
FROM "Bac_RegPobEspecie"
GROUP BY "IDPoblacion", "IDEspecie", "intervalo"
ORDER BY "IDPoblacion", "IDEspecie", "intervalo";
• FUNCIONES DE LA POBLACION
CREATE MATERIALIZED VIEW "ResumenFuncionPoblacion"
USING INDEX REFRESH COMPLETE AS
SELECT "IDPoblacion", "IDFuncion", "intervalo" AS "intervalo", COUNT(*) AS "numeroBacteriaTenidasEnCuenta", AVG("tiempo") AS
"tiempoPromedio", AVG("valor") AS "valorPromedio", STDDEV("valor") AS "desviacionEstandar" FROM "Bac_RegValFuncion"
GROUP BY "IDPoblacion", "IDFuncion", "intervalo"
ORDER BY "IDPoblacion", "IDFuncion", "intervalo";
6. FORZAR LA SINCRONIZACION DE LAS VISTAS MATERIALIZADAS
Las vistas materializadas deben ser refrescadas o recreadas nuevamente para que se sincronicen con las tablas reales, en el caso utilizado por la aplicación las vistas son recreadas, por ello cada vez que se quiera actualizar la información de las cuatro vistas materializadas, éstas deben borrarse y crearse nuevamente.
Para eliminar una vista materializada se debe utilizar el siguiente comando:
DROP MATERIALIZED VIEW "nombre_vista_materializada";
Para crear nuevamente la vista materializada se debe ingresar el comando CREATE MATERIALIZED VIEW correspondiente.
7. INFORMACIÓN SOBRE LAS MEJORAS EN LOS TIEMPOS DE RESPUESTA AL UTILIZAR VISTAS MATERIALIZADAS
TIEMPOS ESTIMADOS PARA UNA POBLACIÓN CON 150.000 BACTERIAS
• VENTANA PRINCIPAL DE RESULTADOS DE LA POBLACION
TIEMPO SIN VISTAS MATERIALIZADAS: 140 SEGUNDOS TIEMPO CON VISTAS MATERIALIZADAS: 14 SEGUNDOS