Download Acceso a bases de datos SQL - JDBC Acceso a bases de datos SQL

Document related concepts
no text concepts found
Transcript
Acceso a bases de datos
SQL - JDBC
CAPITULO IV
POR Lic Adrian Quisbert Vilela
Sección de Datos
Cliente
Cliente
DB
Base de Datos SQL
• Indispensables en la mayoría de las
aplicaciones C/S
• Fabricantes mas importantes:
– Oracle
– Sybase
– Informix
– IBM
– Microsoft
SQL
• Structured Query Language
– IBM a comienzos de los ‘70s
– Esta fuertemente basado en fundamentos
matemático de la teoría de conjuntos y cálculo
predicativo (predicate calculus)
– SQL consiste de una lista pequeña, pero muy
flexible, de comandos que pueden ser utilizados
para manipular información almacenada en
tablas.
SQL
• El modelo relacional separa claramente los
aspectos físicos de los datos de su
representación lógica.
• El modelo libera al programador de tareas
complicadas. Creación de rutinas de
almacenaje, indexación, y recuperación de
datos.
SQL
• SQL es un lenguaje de consulta interactivo
SELECT nro, nombre FROM empleados
• SQL es un lenguaje de programación de
base de datos.
• SQL es un lenguaje de definición y
administración de datos.
CREATE TABLE empleados (nro NUMBER(6), nombre
VARCHAR(30) )
SQL
• SQL es utilizado para intercomunicarnos
con BD remotas
• SQL ayuda a la protección de datos en un
ambiente multiusuario e interconectado.
–
–
–
–
–
Validación de datos
Integridad referencial
rollbacks
locking automático
detección y resolución de deadlocks
SQL
-89, SQL
-92, SQL3
SQL-89,
SQL-92,
• El primer estandard nació en 1986. En 1989
fue revisado y se introdujo lo que
conocemos como integridad referencia.
– SQL-89 o ANSI SQL
SQL
-89, SQL
-92, SQL3
SQL-89,
SQL-92,
• SQL-92 (ISO), también conocido SQL2
data del año 1992. Es cinco veces mas
extenso que le original SQL-89.
– Estandariza muchos de los puntos que
anteriormente se dejaba al criterio de los
fabricantes.
– ISO: 3 niveles de acatamientos (compliance) :
• Básico (Entry), intermedio y completo (full)
SQL
-89, SQL
-92, SQL3
SQL-89,
SQL-92,
•
•
•
SQL3: mas de 2,000 páginas.
Consiste de nueve partes
Aumenta un número elevado de
características y funciones a un estandard
SQL-92 que ya es complicado. No se estima
que los fabricantes adopten este estándar
inmediatamente.
Servicios de un DBS
• Un Servidor de Base de Datos (también
llamado SQL engine) provee un acceso
seguro a datos compartidos.
• Es multiusuario, provee control de
concurrencia, seguridad, recuperación y
consistencia.
• Mayor parte de ellos proveen como mínimo
acatamiento a SQL-89.
Arquitecturas SQL
• Un proceso por cliente
– Provee a cada cliente una conexión 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 fácilmente asignados a
dif. procesadores en un equipo (SMP)
Arquitecturas SQL
• Un proceso-por-cliente
Proceso
Proceso
DB
Proceso
Servidor
Ejemplos: Informix, DB2, Oracle V6.
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
programación 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
Ejemplos: Sybase, SQL Server
Servidor
Arquitecturas SQL
• Arquitectura Híbrida
– 3 componentes
• Proceso oyente multi-hebras que asigna clientes a
los procesos despachantes.
• Procesos despachantes (insertan peticiones en una
pila, reciben resultados y los envían a los clientes)
• Procesos servidores reusables compartidos que
satisfacen a las peticiones que esperan en la pila.
Arquitecturas SQL
• Arquitectura Híbrida
Servidor
Proceso
Proceso
Proceso
Proceso
Proceso
Listener
Program
Shared
Dispatcher Pool
Request/
Response
Queue
Proceso
Shared Server
Process Pool
Ejemplos: Oracle 7, Oracle 8
DB
SQL Middleware
ODBC
JDBC
DB
ESQL
Acceso a Bases de Datos C/S
• Embedded SQL (SQL incrustado)
– Es un estándar ISOSQL-92
– Se introducen comandos SQL en lenguajes de
programación (C, Cobol, Pascal, etc.)
– Se necesita de un precompilador que traduce los
comandos SQL en lenguaje que el compilador pueda
entender.
– Ejemplo: En C un comando SQL incrustado en el
código debe comenzar con la palabra clave:
• EXEC SQL ……………… ;
Acceso a Bases de Datos C/S
• Embedded SQL
– El gran problema de este método es que la base de
datos a utilizarse tiene que ser conocida antes del
desarrollo de la aplicación. Difícil de utilizar diferentes
bases de datos en tiempo de ejecución.
– Los precompiladores están cazados con una BD
particular. Se tendrá que recompilar la aplicación para
cada base de datos utilizada.
SQLJ - SQL incrustado en Java
• 1997 - Oracle, IBM, Tandem comenzaron la
implementación ESQL para Java llamado SQLJ.
– SQLJ nos permite introducir comandos SQL en los
programas Java.
– En muchas maneras es mas fácil utilizar que JDBC y
tiene mejor soporte para su verificación durante tiempo
de compilación.
– Es muy importante porque es utilizado para escribir
“stored procedures” basados en Java.
SQL Call
-Level Interface (CLI)
Call-Level
• Es un SQL API (Application Programming
Interface)
– No necesita ser pre-compilado.
– En teoría se lo puede utilizar para crear
aplicaciones portables.
– En la práctica las cosas no son tan simples
ODBC CLI de Microsoft
• Ver. 3.5 (1998)
– Es un interfaz de programación que permite a
las aplicaciones accesar a bases de datos
utilizando SQL
– Cada proveedor de Bases de Datos aumentan
extensiones propias al “driver”, lo que
nuevamente nos conduce al problema de
portabilidad.
CLI’s orientados a Objetos
• JDBC y OLE DB
– Ambos proveen un CLI que se accesa mediante
el uso de interfaces orientado a objetos (y
classes) en reemplazo de APIs procedimentales.
• JDBC (Java Database Connectivity)
– 100% java
– Permite escribir código Java
independientemente de la Base de Datos en uso.
JDBC
• Al igual que ODBC, provee dos conjuntos
de interfaces:
– Interfaz de Aplicación (para el clientes)
– Interfaz “driver”que los proveedores de RDMS
deben adaptar a su base de datos particular.
– JDBC utiliza un manejador de “drivers” que
automáticamente 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 comunicación JDBC-ODBC.
• Funciones limitadas (dependientes de ODBC)
– Tipo 2 Native-API Partly-Java
– Tipo 3 Net-Protocol All-Java
– Tipo 4 Native-Protocol All-Java
JDBC
ResultSet
ResultSet
ResultSet
ResultSet
ResultSet
ResultSet
Statement
Statement
Prepared
Prepared Stat.
Stat.
Callable
Callable Stat.
Stat.
Aplicación
Connection
Connection
Driver Manager
JDBC-ODBC
Bridge
Oracle Driver
ORACLE
Sybase Driver
ODBC DRIVER
Sybase
ODBC
DB
OLE DB y ADO
Aplicaciones y Herramientas
ActiveX Data Objects (ADO)
Interfaces
OLE DB
Cursor
Engine
Servicios
Query
Engine
...
OLAP
Engine
Interfaces
OLE DB
Proveedores
de Datos
Proveedores
ODBC
Datos SQL
Servidor de
Archivos
Datos Archivos
Hojas de
Cálculo
Datos Hojas de
Cálculo
Servidor de
Directorios
Datos de
Directorio
Servidor
OLAP
Datos
Multi-Dimensionales
JDBC en la práctica
• Cargar un driver especifico:
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
• Solicitamos al manejador de drivers la apertura de
una conexión
Connection con =
DriverManager.getConnection(“jdbc:odbc:somedb”, “user”, “passwd”);
JDBC en la práctica
• 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”);
}