Base de datos avanzadas
La relación de los clientes con los servidores de bases de datos podría ser como en la primera figura pero lamentablemente no se ha logrado que los diferentes fabricantes lleguen a estándares respetados por todos que lo permita. Solamente las especificaciones de SQL (de vital importancia en las relaciones Cliente/Servidor) han sobrevivido medianamente. Hay que recordar que solo SQL 3 ha enfrentado tópicos de gran envergadura como módulos persistentes, relaciones avanzadas cliente/servidor y datos abstractos; y que aun los proveedores no hacen sus productos compatibles con este estándar.
Cuando un desarrollador enfrenta un proyecto enmarcado en Cliente/Servidor de Bases de Datos debe enfrentar una serie de inconvenientes que debe resolver, en particular la conexión y manipulación de la información en la base de datos a través del SGBD o DBMS.
El esquema siguiente muestra esta situación:
Como se aprecia el programador debe recurrir a APIs (Interfaz para el Programador de Aplicaciones), que son funciones que proveen los fabricantes de hardware y/o software para que los programadores no deban llegar a bajo nivel para relacionarse con sus productos y lo hagan conociendo tales funciones. Como se dijo anteriormente, dado que no hay un estándar, cada compañía ha dispuestos su APIs específicas.
Estas funciones actúan sobre los controladores o drivers (similares a los drivers para impresoras, cámaras, etc), quienes se comunican con el sistema operativo y poner a disposición sus productos. Tampoco los drivers son estándar y existe por lo menos uno para cada producto. Para que la aplicación se pueda comunicar con la Base de Datos debe tenerse habilitado este driver.
Por último, en caso de estar en red, se debe tener protocolos comunes de comunicación entre clientes y servidores o traductores de los mismos. En esto los estándares están muy avanzados y son respetados, por lo cual pocas veces hay problema con ello.
Se debe tener presente un caso más general, en el cual una aplicación tenga que comunicarse con diferentes DBMS, esto complica aun mas la situación.
Controladores o Drivers. Paul Reed, dice que el controlador es clave para desentrañar los misterios del DBMS. Los controladores reciben la llamada de las CLI y la traducen al lenguaje de acceso nativo del servidor de bases de datos. Se requiere un controlador por cada base de datos con la que se realiza conexión.
APIs de SQL. Dos métodos prevalecen para el soporte de SQL con lenguajes de programación:
SQL embebido ESQL
Interfaz del Nivel de Llamada (CLI).
SQL embebido ESQL
Interfaz del Nivel de Llamada (CLI).
SQL incrustado o embebido ha sido atendido por la especificación SQL-92, para la inclusión de instrucciones SQL (realmente no es una API) como si fuesen instrucciones propias del lenguaje de programación ordinario. Deben enmarcarse entre etiquetas que permiten ser distinguidas de las demás instrucciones. Estos bloques serán previamente precompilados. Tiene como inconvenientes que la base d datos destino debe conocerse al momento del desarrollo y que las instrucciones son diferentes para cada producto.
Las interfaces del nivel de llamada (CLI) son APIs de SQL para acceso a bases de datos, por lo cual no se requiere precompilación ni conocer de antemano la base de datos. Esto facilitaría la independencia del producto en particular, pero acá tampoco los estándares han triunfado.
CLI de SAG. SAG es un consorcio constituido en 1988 por 44 proveedores con el fin de ofrecer u estándar unificado para el acceso a bases de datos remotas. El CLI de SAG es un conjunto de API para base d datos SQL, aportando semántica y sintaxis de SQL común. Permiten conexiones a través de un controlador local, preparar solicitudes, ejecutar solicitudes, recuperar resultados, concluir instrucciones y concluir conexiones.
Varios productos en el mercado se adecuan a esta especificación.
CLI de Microsoft. Es una versión ampliada de la CLI de SAG, conocida como Conectividad de Bases de Datos Abierta (ODBC: Open DataBase Connectivity), inicialmente para acceso de bases de datos con Windows.
OBDC es una interface programada que hace posible el acceso a información en sistemas manejadores de bases de datos que usan SQL (Structured Query Language) como un estándar de acceso a datos. ODBC posee drivers que se instalan por defecto y permite también que el usuario los instale según la base de datos con la que desee obtener conexión.
seguridad y la localización física. OBDC es una interface programada que hace posible el acceso a información en sistemas manejadores de bases de datos que usan SQL (Structured Query Language) como un estándar de acceso a datos. ODBC posee drivers que se instalan por defecto y permite también que el usuario los instale según la base de datos con la que desee obtener conexión.
La creación de un DSN puede estar definida por aspectos que determinen que tipo de origen de datos se desea:
REFERENCIA BIBLIOGRAFICA
DSN de usuario: Almacena la información de cómo conectar al gestor de datos indicado. Este es solamente visible por el usuario y puede ser usado únicamente en la máquina actual.
DSN de sistema: Almacena información necesaria para la conexión con el gestor correspondiente. Es visible por todos los usuarios de la máquina, incluyendo los servicios NT.
DSN de archivo: Permite la conexión con el distribuidor de datos disponible y además puede ser compartido por usuarios que tengan el mismo controlador instalado.
API de Borland/Inprise. Borland Database Engine (BDE) es el motor común para acceso de datos en sus productos. IDAPI (Integrated Database API) es la API para este motor, que unifica los accesos y las consultas orientadas de datos en un modelo de cursor.
IDAPI ofrece una interfaz de red que permite que los controladores residan en una maquita "gateway", lo que facilita los accesos a servidores múltiples (por lo que requerían un controlador distinto para cada uno). Todas las combinaciones de controladores residen una máquina en lugar de en cada cliente. A pesar de ser más veloz que ODBC no logro extenderse tanto como este.
API JAVA. Estándar llamado JDBC (Java DataBase Conectivity).
JDBC es realmente un conjunto de clases que representan conexiones con bases de datos, sentencias SQL, conjuntos de datos y metadatos entre otras cosas. El API definido por JDBC permite a los programadores enviar sentencias en SQL al motor de bases de datos, y procesar los resultados.
Como en los otros casos se requiere de un driver o controlador, en este caso JDBC.
JDBC es realmente un conjunto de clases que representan conexiones con bases de datos, sentencias SQL, conjuntos de datos y metadatos entre otras cosas. El API definido por JDBC permite a los programadores enviar sentencias en SQL al motor de bases de datos, y procesar los resultados.
Como en los otros casos se requiere de un driver o controlador, en este caso JDBC.
Los drivers JDBC se han clasificado en tipos.