Académique Documents
Professionnel Documents
Culture Documents
Seccin de Datos
Cliente Cliente
DB
SQL
Structured Query Language
IBM a comienzos de los 70s Esta fuertemente basado en fundamentos matemtico de la teora de conjuntos y clculo predicativo (predicate calculus) SQL consiste de una lista pequea, pero muy flexible, de comandos que pueden ser utilizados para manipular informacin almacenada en tablas.
SQL
El modelo relacional separa claramente los aspectos fsicos de los datos de su representacin lgica. El modelo libera al programador de tareas complicadas. Creacin de rutinas de almacenaje, indexacin, y recuperacin de datos.
SQL
SQL es un lenguaje de consulta interactivo
SELECT nro, nombre FROM empleados
SQL es un lenguaje de programacin de base de datos. SQL es un lenguaje de definicin y administracin de datos.
CREATE TABLE empleados (nro NUMBER(6), nombre VARCHAR(30) )
SQL
SQL es utilizado para intercomunicarnos con BD remotas SQL ayuda a la proteccin de datos en un ambiente multiusuario e interconectado.
Validacin de datos Integridad referencial rollbacks locking automtico deteccin y resolucin de deadlocks
Servicios de un DBS
Un Servidor de Base de Datos (tambin llamado SQL engine) provee un acceso seguro a datos compartidos. Es multiusuario, provee control de concurrencia, seguridad, recuperacin y consistencia. Mayor parte de ellos proveen como mnimo acatamiento a SQL-89.
Arquitecturas SQL
Un proceso por cliente
Provee a cada cliente una conexin propia y su propio lugar en memoria (seguridad) La base de datos corre en uno o mas procesos en segundo plano. Protege a los usuarios unos de otros, y protege al administrador de datos de los usuarios. Los procesos pueden ser fcilmente asignados a dif. procesadores en un equipo (SMP)
Arquitecturas SQL
Un proceso-por-cliente
Proceso Proceso
DB
Proceso
Arquitecturas SQL
Multi-hebras de procesamientos (multithreaded)
Mejor rendimiento Todas la conexiones corren en un mismo espacio de memoria. No depende del sistema operativo para programacin y control multitareas. Problemas cuando un proceso cliente se comporta incorrectamente, afecta a todo el servidor.
Arquitecturas SQL
Multi-hebras de procesamientos (multithreaded)
DB
Proceso Multihebra
Servidor
Arquitecturas SQL
Arquitectura Hbrida
3 componentes
Proceso oyente multi-hebras que asigna clientes a los procesos despachantes. Procesos despachantes (insertan peticiones en una pila, reciben resultados y los envan a los clientes) Procesos servidores reusables compartidos que satisfacen a las peticiones que esperan en la pila.
Arquitecturas SQL
Arquitectura Hbrida
Servidor
Proceso Proceso Proceso
Request/ Response Queue
Proceso
DB
Proceso
Shared Server Process Pool
SQL Middleware
ODBC JDBC DB
ESQL
JDBC
Al igual que ODBC, provee dos conjuntos de interfaces:
Interfaz de Aplicacin (para el clientes) Interfaz driverque los proveedores de RDMS deben adaptar a su base de datos particular. JDBC utiliza un manejador de drivers que automticamente carga el driver correcto para hablar con determinada BD.
JDBC
4 tipos de drivers
Tipo 1 JDBC-ODBC bridge
Utiliza ODBC (OK para FoxPro, Access, etc) No es aconsejable para aplicaciones grandes. Se pierde tiempo en comunicacin JDBC-ODBC. Funciones limitadas (dependientes de ODBC)
JDBC
ResultSet ResultSet Statement Statement ResultSet ResultSet Prepared Stat. Prepared Stat. ResultSet ResultSet Callable Stat. Callable Stat.
Aplicacin
Connection Connection
Driver Manager JDBC-ODBC Bridge
Oracle Driver
Sybase Driver
ODBC DRIVER
ORACLE
Sybase
ODBC DB
OLE DB y ADO
Aplicaciones y Herramientas
Servicios
Interfaces OLE DB
Cursor Engine
Query Engine
...
OLAP Engine
Proveedores de Datos
Proveedores ODBC
Servidor de Archivos
Hojas de Clculo
Servidor de Directorios
Servidor OLAP
Datos SQL
Datos Archivos
Datos de Directorio
Datos Multi-Dimensionales
JDBC en la prctica
Cargar un driver especifico:
Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);
JDBC en la prctica
Ejecutamos un comando SQL
Statement stmt = con.createStatement; ResultSet rs = stmt.executeQuery(select * from clientes);
Recuperamos datos
while(rs.next()) { String nombre = rs.getString(nomCliente); }