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”); }