gestión de bases de datos – parte ii bases de datos …ruckhaus/materias/ci6872/clase10.pdf ·...
TRANSCRIPT
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
Gestión de Bases de Datos – Parte IIBases de Datos en Internet
Agenda Motivación Sistemas de BD en Internet. Arquitecturas de Sistemas de BD en Internet Interfaz de conexión JDBC
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
Motivación
La Internet y la Web hacen que sea fácil y atractivo poner toda lainformación en el cyberespacio, y la hace accesible a muchos.
La Web e Internet permiten un gran número de consultasconcurrentes a los datos de diferentes organizaciones.
– Páginas web dinámicas– Separar lógica de la aplicación de lógica de presentación.
Componentes (pueden ser distribuidos), style sheets.– Portabilidad. Independencia de la plataforma.– Personalización de acuerdo a requerimientos de usuarios– Técnicas para manejo de un índice alto de concurrencia– Seguridad
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
Motivación
•La Web es una gran Base de Datos-Se requiere de optimizadores que permitan manejar consultas amúltiples y variadas fuentes de datos (páginas Web, archivos, Bases deDatos). Problemas de carga, capacidad, calidad de la fuente.
-Se debe reconocer a una nueva fuente de datos en la red de la mismamanera como se el SO reconoce un dispositivo de hardware.
-Es necesario modelar datos de la Web. (Modelos de DatosSemiestructurados, XML) lo cual permite además el intercambio deinformación.
-Proceso de responder una consulta debe ser “acumulativo”.
-Se requiere manejar consultas imprecisas y respuestas imprecisas.Por ejemplo: “hay restaurantes italianos cercanos a mi casa?”
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
¿Qué es un Sistema de BD enInternet?
Un Sistema de BD en el cual la información es accedida paraconsulta o actualización a través de la Internet.
¿Se puede considerar Sistema de BD en Internet:– Sistemas de BD tradicionales?– Solo BD que son accedidas a través del Web?– BD Cliente/Servidor?– BD que son accedidas a través de la Intranet?– BD que son accedidas a través de la Extranet?
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
Sistemas de BD tradicionales - centralizadas
BD
DBMS
Aplicaciones
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
Sistemas de BD tradicionales -distribuidas homogéneas
BD1 BDi BDn
DDBMS
Aplicaciones
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
BD1 BDi BDn
DBMS1 DBMSi DBMSn
Aplicaciones
Sistemas de BD tradicionales -distribuidas heterogéneas
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
Sistemas de fuentes de datos -centralizada
Fuente deDatos
Servidor deAplicaciones
AplicacionesConsultas
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
Sistemas de fuentes de datos -heterogéneas
Fuentes deDatos
Servidor deAplicaciones
Aplicaciones
Servidor deAplicaciones
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
Arquitectura de mediadores y traductores - Sist. de fuentes de datos heterogéneas
Fuentes deDatos
Mediador
Mediador
Traductor Traductor Traductor
Aplicaciones
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
Ejemplos BD en Internet
•Publicaciones en línea: periódicos, revistas, canales tv(www.cnn.com)
–Información de la página cambia periódicamente.–Muchos usuarios concurrentes.
•Entretenimiento: carteleras culturales (www.cinex.com.ve)–Información de la página cambia periódicamente.–Ofrecen servicios como reservación o compra de boletos.–Seguridad es importante
•Comercio Electrónico: tienda (www.amazon.com)–Personalización.–Integración de múltiples fuentes de datos.–Seguridad es importante
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
Ejemplos BD en Internet
•Comparación: comparación de productos de un mismo tipo(www.bestwebbuys.com)
–Obtención de información de múltiples sitios web
•Mediciones: mediciones de clima.(www.noaa.gov)–Información de la página cambia frecuentemente
•Agentes: viajes, empleo. (www.expedia.com, www.priceline).–Comunicación con múltiples fuentes de datos.
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
PROGRAMACLIENTE
CONSULTA SQLRESULTADOS(DATOS)
PROGRAMA SERVIDOR:DBMS,
Procedimientos, Triggers
RAM BD
Correspondenciafísica: 1 soloequipo, 2 equipos através de una redlocal, intranet ointernet.
Presentación
Lógica delaAplicación
Almacenamiento
Arquitectura de 2 capas
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
CLIENTE 1 CLIENTE 2 CLIENTE 3CLIENTES
SERVIDORES
DBMSPROCESOSERVIDOR
1
DBMSPROCESOSERVIDOR
n
DBMSPROCESOSERVIDOR
2
BDBLOQUE
RAMCOMPARTIDO
DBMS(DAEMON)
Arquitectura tradicional multiusuario 2 capas
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
PROGRAMACLIENTE
CONSULTA SQLRESULTADOS(DATOS)
Driver del API
RAM BD
Sistemas de BD 2capas con:
•Independencia delDBMS•Portabilidadplataforma cliente(Java)
APIs: ODBC, JDBC,NSAPI
API
Programa Servidor:DBMS
Presentación yLógica de laAplicación
Almacenamiento
Arquitectura de 2 capas
Driver del API
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
BD
API
Driver del APISGBD
ProgramaCliente
•Independencia delDBMS
•Portabilidadplataforma cliente(Java)
•Menoracoplamiento entrecapas
•Manejo de“estado” (stateful)
Programa deAplicación
Presentación
Lógica de laAplicación
Servidor deAplicaciones
Intermediario
Almacenamiento
Arquitectura de 3 capas
Almacenamiento
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
Cliente
Servidor deAplicaciones
(Cliente)
DBMS
•El Cliente puede ser:•Browser•Applet•Aplicación
•El Servidor de Aplicaciones maneja:•Procesos que se comunican con la BD•Threads que se comunican a la BD•Páginas dinámicas (Páginas de Servidor)•Componentes no distribuidos•Componentes distribuidos•Un software que a su vez incluye uno ovarios de los anteriores
Cliente
Servidor
Cliente
Servidor
ProtocoloTCP/IP
ProtocoloTCP/IP
BD
Arquitectura de 3 capas
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
Sistemas BD 3 capas -Ventajas
•Sistemas heterogéneos.
•Clientes “delgados”
•Integración de datos
•Escalabilidad a muchos clientes
•Beneficios para el desarrollo de software
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
En un Sistema BD Web elCliente es un Browser yel Servidor deAplicaciones trabaja enconjunto con el WebServer
Browser
Servidor deAplicaciones
Solicitud http(con parámetros)
Sistema Bases de Datos Web
WebServer
DBMS BD
Parámetros
Conexión,comandoSQL
DatosResultantes
DocumentoHTML, XML
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
Servidor de AplicacionesTipos1. Parte del Web Server (plugin): Engines para Servlets, JSP,ASP, PHP•Software separado (middle-tier, middleware)
–Un producto de la misma compañía BD: Application Server deOracle–Un producto de terceros: WebLogic
Funcionalidad•Interacción con la BD•Generación de HTML (para Sistemas BD Web)•Elementos básicos de programación (iteración, condicionales, etc.)
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
2. Software middle-tier facilitan:
•Desarrollo de la lógica del negocio•Administración de aplicaciones•Reutilización•Integración de fuentes de datos heterogéneas•Transacciones que involucran varias fuentes de datos•Seguridad•Manejo de sesiones•Componentes distribuidos
Servidor de Aplicaciones
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
Cliente
Servidor deAplicaciones
(Cliente)
DBMS
Utilización de DBMS y BD en Internet•Los procesos, threads, páginas y componentesse comunican con la BD mediante interfaz deconexión (JDBC)•El Servidor de Aplicaciones maneja:
•Procesos que se comunican con la BD•Threads que se comunican a la BD (Servlets)•Páginas dinámicas o de servidor (JSP)•Componentes no distribuidos (Beans)•Componentes distribuidos (EJB)•Un software que a su vez incluye uno ovarios de los anteriores
La Web es una gran Base de Datos
•Es necesario modelar datos de la Web. (Modelosde Datos Semiestructurados, XML) lo cualpermite además el intercambio de información.
Cliente
Servidor
Cliente
Servidor
ProtocoloTCP/IP
ProtocoloTCP/IP
BD
Agenda de la asignatura CI6872
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
JDBC - Metas
•API con utilización de SQL
•Aprovechar experiencia de APIs existentes (ODBC)
•Debe ser simple
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
Arquitectura JDBC
Aplicación A Aplicación B Aplicación CAPI JDBC
Driver Oracle Driver Sybase Driver MySQL
API JDBC API JDBC
DBMSMySQL
DBMSOracle
DBMSSybase
.....
.....
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
Drivers JDBC
Aplicación Java
JDBC Driver Manager
JDBC API
JDBC DriverAPI
JDBCNet
Driver
JDBC-ODBCBridge DriverODBC Driver
JDBCNativoDBMS
JDBCDriverDBMS
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
Drivers JDBC
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
Drivers JDBC
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
Tipo 1: Puente JDBC-ODBC•Util para compañías que ya tienen ODBC.•No es para aplicaciones a gran escala.•Está limitada a la funcionalidad de ODBC.•Requiere la instalación de software en el cliente.
Tipo 2: Driver paccialmente Java•Mejor desempeño que el tipo 1.•Requiere instalación en cada equipo cliente.
Tipo 3: Driver Java puro para “middleware”•Puede ser usado cuando se requieren múltiples BD y se quiere tener undriver.
Tipo 4: Driver Java puro directo-BD•Puede ser descargado dinámicamente.•Se requiere un driver diferente para cada BD.
Tipos de drivers JDBC
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
import java.sql.*;public class puente1{ public static void main(String args[]){//Registro del driver Class.forName(“algunnombredeclasedriverjdbc");
//Crea la conexion a la BD Connection conexion = DriverManager.getConnection("jdbc:subprotocolovendedorx:maquinay:puertoz”,“login”, “psswd”) System.out.println("Creo la conexion ");
//Crea una instruccion SQL Statement stmt = conexion.createStatement();
Ejemplo
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
//Ejecuta una expresion SQL de consulta
ResultSet rs = stmt.executeQuery("SELECT COF_NAMEFROM COFFEES"); System.out.println("Consultando Tabla COFFEES");
while (rs.next()){ String coffeeName = rs.getString("COF_NAME"); System.out.println("COFFEENAME: " + coffeeName); }
Ejemplo
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
//Precompila una expresion SQL de consulta
PreparedStatement consultCoffees=conexion.prepareStatement("select COF_NAME FROM COFFEES "+ "WHERE PRICE > ? AND SUP_ID = ?");
System.out.println("Despues de crear elPreparedStatement");
int [] suppliers = {101, 150, 50 }; double [] prices = {7.99, 8.99, 10.99}; int len= prices.length;
for (int i = 0; i< len; i++){ consultCoffees.setDouble(1,prices[i]); consultCoffees.setInt(2,suppliers[i]); ResultSet
Ejemplo
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
rs1=consultCoffees.executeQuery();
while (rs1.next()){ String coffeeName =rs1.getString("COF_NAME"); System.out.println("COFFEENAME: " +coffeeName); } }//Cierra la conexion conOracle.close();}}
Ejemplo
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
Clases e interfaces de JDBC
DriverManager Driver
Connection
Statement
ResultSet
DatabaseMetaData
CallableStatement
PreparedStatement
ResultSetMetaData
registers
provides
creates retrieves
providesprovides
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
JDBC API:
Las clases a ser usadas están en el paquete java.sql y javax.sql
Pasos a seguir:– Registrar el driver.– Conectarse al manejador de BD’s.– Crear la(s) instruccion(es) que será(n) ejecutada(s).– Ejecutar la(s) instruccion(es).– Manipular el resultado.
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
Registrar el Driver
Averiguar el nombre de la clase provista por el paquete a serusado.
Localizar la clase en el directorio apropiado para que pueda sercargado.
Alternativamente se puede cargar la clase en el programausando el comando:a) Class.forName(<clase que implementa el
driver>).newInstance())
b) DriverManager.registerDriver(new <nombreDriver>() )
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
Crear la conexión
La clase DriverManager es la responsable de:– seleccionar el driver– crear una nueva conexión a la base de datos
Para activar el driver, éste debe estar registrado
El driver manager tratará de encontrar un driver entre los driversregistrados, que pueda usar el protocolo especificado en el URLde la Base de Datos.
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
Ejecutando comandos de SQL
Crear el comando antes de ejecutarlo. EL objeto connection obtenido alcrear la conexión puede ser utilizado:
Para ejecutar una acción, INSERT, UPDATE, DELETE, CREATE TABLE,DROP TABLE, o ejecutar consultas
La consulta retorna un objeto “result set”.
Se puede predefinir la consulta usando el método prepareStatement de laclase Connection.
El método prepareStatement retorna un objeto precompilado que contieneuno o más parámetros.
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
El método setXxx(int n, Xxx x) de la clase PreparedStatement se puedeusar para asignarle al parámetro numero n el valor x del tipo Xxx
El método clearParameters() de la clase PreparedStatement se puede usarpara limpiar los valores de los parámetros.
Ejecutando comandos de SQL
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
Ejemplo Prepared Statement ytransacción
c.setAutoCommit(false)Statement statement = c.prepareStatement(“UPDATE cuenta” +“SET balance = ? + “WHERE id = ?);int i; try { for (i=0; i<cuentas.length;i++ ) {
statement.setFloat(1, cuentas[i].getBalance());statement.setInt(2, cuentas[i].getId());statement.execute();statement.clearParameters();}
c.commit(); statement.close();catch(SQLException e) {
rollback();out.println(“hay un error en la actualizacion”);}
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
Tipos de Result Sets
•La llamada a createStatement se traduce:
conn. createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY)
•Los tipos para el primer parámetro son:TYPE_FORWARD_ONLY, TYPE_SCROLL_SENSITIVE,TYPE_SCROLL_INSENSITIVE
•Los tipos para el segundo parámetro son:CONCUR_READ_ONLY, CONCUR_UPDATABLE (Los result setsdeben incluir la clave primaria y ser selects de una tabla). Métodosson updateXXX, deleteRow(), moveToInsertRow(), insertRow()
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
Otros aspectos importantes JDBC
•Concurrencia
•Metadatos•Del ResultSet•De la Base de Datos•De las propiedades del driver
•Conexiones:•Una conexion por requerimiento•Una conexion por usuario•Una conexion por grupo de usuarios•Un pool de conexiones
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
JDBC - Concurrencia
• dirty reads: Una transaccion puede ver actualizaciones “nocomprometidas” de otras transacciones. Si la otra transacciónhace rollback, se leyó “dirty data”.
• repeatable reads: siempre ve los mismos datos al repetir lamisma consulta. No ve las actualizaciones “comprometidas” dela otra transaccion.
•Phantom reads: se ven las filas fantasma generadas poractualizaciones de otras transacciones que ahora concuerdan conla condicion de la seleccion.
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
JDBC - Concurrencia
Niveles de aislamiento de una transaccion:•TRANSACTION_NONE.
•TRANSACTION_READ_UNCOMMITTED. Permite dirty reads,nonrepeatable reads y phantom reads.
•TRANSACION_READ_COMMITTED. Solo ve las actualizacionescomprometidas. Permite nonrepeatable reads y phantom reads.
•TRANSACTION_REPEATABLE_READ. Permite repeatable reads quehayan sido comprometidos y phantom reads.
•TRANSACTION_SERIALIZABLE. Permite repeatable reads que hayansido comprometidos.
Telemática CI6872 - Gestión de Bases de Datos Edna Ruckhaus – Marzo 2006
Connection Pooling
•Mecanismo mediante el cual se mantienen conexiones abiertas en un“cache” para su utilización y reutilización por diferentes partes de unaaplicación.
•Cada vez que se requiere una conexión la toma del “pool”, si el pool estávacío se puede crear una nueva conexión. Cuando no se necesita laconexión se regresa al “pool”.