Una de las necesidades más perentorias con las que nos enfrentamos al desarrollar aplicaciones para Internet con Java, y para muchas otras aplicaciones, es la de disponer de un almacén de datos potente, robusto, rápido y fácilmente accesible. Para ello existen multitud de sistemas gestores de bases de datos (SGBD) de código libre.
Introducción a las bases de datos Uno de los puntos críticos en el desarrollo de aplicaciones web es la elección del SGBD que utilizaremos. Existen en la actualidad bastantes SGBD de código libre, muchos de ellos del mismo nivel cualitativo que algunos de los SGBD comerciales más conocidos. La mayoría de los SGBD de código libre proceden de dos fuentes principales: por un lado, de proyectos que nacieron como código libre desde su principio (proyectos de investigación, etc.) y por el otro, tenemos SGBD que pertenecían a empresas de software propietario, cuyo negocio principal no es el SGBD. Estas compañías optan por poner el producto bajo el amparo de una licencia de código libre, abriendo así su desarrollo a la comunidad.
MySQL se disputa con PostgreSQL el puesto de SGBD más conocido y usado de código libre. MySQL es un SGBD desarrollado por la empresa MySQL AB, una empresa de origen sueco que lo desarrolla bajo licencia de código libre (concretamente bajo GPL), aunque también, si se desea, puede ser adquirido con licencia comercial para ser incluido en proyectos no libres. MySQL es una sistema gestor de base de datos extremadamente rápido. Aunque no ofrece las mismas capacidades y funcionalidades que otras muchas bases de datos, compensa esta pobreza de prestaciones con un rendimiento excelente que hace de ella la base de datos de elección en aquellas situaciones en las que necesitamos sólo unas capacidades básicas. Las funcionalidades más destacadas de MySQL son: Soporte de transacciones (nuevo en MySQL 4.0 si usamos InnoDB como motor de almacenamiento). Soporte de replicación (con un master actualizando múltiples slaves). Librería para uso embebido. Búsqueda por texto. Cache de búsquedas (para aumentar el rendimiento).
A pesar de las muchas similitudes entre los diferentes SGBD, sus lenguajes, prestaciones, etc., los protocolos de comunicación que se deben emplear para acceder a ellos varían totalmente de unos a otros. Por eso, para comunicarnos con los diferentes SGBD desde JDBC deberemos emplear un controlador (un Driver) que nos aísle de las peculiaridades del SGBD y de su protocolo de comunicaciones. Existen diversos tipos de controladores de JDBC, que clasificaremos según el siguiente esquema:
Controladores de tipo 1. Bridging Drivers.
Son controladores que traducen las llamadas de JDBC a llamadas de algún otro lengua- je de acceso a SGBD (por ejemplo, ODBC). Se usan en aquellas situaciones en las que no disponemos de un driver JDBC más adecuado. Implica instalar en la máquina cliente el controlador que nos permite traducir las llamadas JDBC. El más conocido es el driver JDBC-ODBC que actúa de puente entre JDBC y ODBC.
Controladores de tipo 2. Native API Partly Java Drivers.
Son controladores que usan el API de Java JNI (Java native interface) para presentar una interfase Java a un controlador binario nativo del SGBD. Su uso, igual que los de tipo 1, implica instalar el controlador nativo en la máquina cliente. Suelen tener un rendimiento mejor que los controladores escritos en Java completamente, aunque un error de funcionamiento de la parte nativa del controlador puede causar problemas en la máquina virtual de Java.
Controladores de tipo 3. Net-protocol All-Java Drivers.
Controladores escritos en Java que definen un protocolo de comunicaciones que interactúa con un programa de middleware que, a su vez, interacciona con un SGBD. El protocolo de comunicaciones con el middleware es un protocolo de red independiente del SGBD y el programa de middleware debe ser capaz de comunicar los clientes con diversas bases de datos. El inconveniente de esta opción estriba en que debemos tener un nivel más de comunicación y un programa más (el middleware).
Controladores de tipo 4. Native-protocol All-Java Drivers.
Son los controladores más usados en accesos de tipo intranet (los usados generalmente en aplicaciones web). Son controladores escritos totalmente en Java, que traducen las llamadas JDBC al protocolo de comunicaciones propio del SGBD. No requieren ninguna instalación adicional ni ningún programa extra.