Cada diferente tipo de fuente de datos es manejada por un servidor especializado, llamado proveedor. Cada proveedor accede a un tipo de datos. Este puede ser una base de datos, pero no tiene porque ser así. Es teóricamente posible acceder a servidores LDAP, colas de correo y otras fuentes de datos, tan pronto como se implemente un proveedor. Por lo tanto la librería cliente no asume demasiadas cosas acerca de las características del proveedor. Por lo tanto la interpretación del significado del nombre de la fuente de datos es también responsabilidad del proveedor. Para disponer de un único y fácilmente configurable sistema de nombrado se usa un fichero de configuración. En este fichero los nombres se asocian a los proveedores y a la cadena de texto que necesita el proveedor para localizar la fuente de datos correcta. Como el proveedor interpreta la cadena de texto de conexión se describe en la sección dedicada a los proveedores concretos.
Los proveedores Gda son servidores Corba que se activan usando Goad. Goad obtiene su información de configuración de una serie de ficheros situados en el directorio ${prefix}/etc/CORBA/servers, donde ${prefix} es la ruta de la instalación Gnome, o del directorio ~/.gnome/CORBA/servers. Estos ficheros tienen normalmente la extensión .gnorba. Los situados en el directorio de usuario tienen preferencia sobre el directorio general del sistema. El nombre del fichero de configuración no es significativo, pero los paquetes gnome-db usan gnome_db.gnorba como nombre de fichero del fichero de configuración estándar.
Cada proveedor se define en un registro de este fichero. El actual fichero entregado por defecto con gnome-db contiene un registro de ejemplo para cada uno de los posibles proveedores.
(1) [gda-odbc] (2) type=exe (3) repo_id=IDL:GDA/ConnectionFactory:1.0 (4) description=Acceso a la fuente de datos via Odbc (5) location_info=gda-odbc-srv [gda-mysql] type=exe repo_id=IDL:GDA/ConnectionFactory:1.0 description=Acceso a la fuente de datos via MySQL location_info=gda-mysql-srv [gda-postgres] type=exe repo_id=IDL:GDA/ConnectionFactory:1.0 description=Acceso a la fuente de datos via Postgres location_info=gda-postgres-srv [gda-oracle] type=exe repo_id=IDL:GDA/ConnectionFactory:1.0 description=Acceso a la fuente de datos via Oracle location_info=gda-oracle-srv |
1Registros del fichero de configuracion Goad
Los proveedores ejecutables ofrecen algunas ventajas. Pueden están hospedados en una maquina diferente [1] y solo se necesita arrancar, con su tiempo asociado, el proveedor una vez. La desventaja es que si un proveedor de este tipo se cae, todos los clientes quedan desconectados de la base de datos. Para solventar este problema es posible que cada cliente solicite una nueva copia del proveedor (pero la Api de cliente no proporciona este indicador todavía).
El otro tipo de proveedores son los proveedores implementados como librerías compartidas. Estos proveedores se enlazan con el cliente cuando el cliente solicita algo del proveedor. La desventaja es que el servidor esta albergado en la misma maquina que el cliente. El tiempo de arranque es similar al de un proveedor ejecutable. La gran ventaja de este tipo de servidores es la sencillez de las pruebas del código del proveedor, ya que no debe conectar gda con un proveedor en ejecución y puede también capturar errores durante la inicialización del servidor.
Por omisión cada proveedor Gda esta disponible como ejecutable y como librería compartida. El proceso de generación y las convenciones usadas para implementar el proveedor aseguran la creación e instalación del ejecutable y la librería compartida. Así, los proveedores Gda están implementados en forma de librería compartida, la cual se enlaza después con un pequeño programa que actúa como un manejador para la librería compartida.
Uno de los problemas que resuelve Gda es el nombrado de fuentes de datos. Cada sistema de base de datos tiene su propia forma de definir nombres para sus bases de datos. Por ejemplo Mysql usa el nombre de máquina (hostname), numero de puerto, y el nombre de la base de datos. Otras bases de datos, como Solid usan solo el nombre de maquina y el numero de puerto. No hay soporte de múltiples bases de datos por servidor. Como el cliente no necesita todos estos detalles, existe un fichero de configuración llamado gdalib que nombra las fuentes de datos disponibles y define todas las propiedades de cada base de datos, de forma que se contacte con el servidor de base de datos correcto. La librería cliente accede a la información de este fichero de configuración y la envía al proveedor.
El formato del fichero gdalib sigue las convenciones Gnome y describe cada fuente de datos y que proveedor esta disponible para usarse como servidor.
A continuación se muestra una parte de un fichero gdalib
(1) [Datasources] Solid=Solid-entry Postgres-Native=Postgres-Native MySQL-Native=MySQL-Native (2) (3) [Solid-entry] (4) Provider=gda-odbc (5) DSN=Solid (6) Description=Solid Test Database for ODBC Configurator=MODULE=odbc;ENTRY=Solid [Postgres-Native] Provider=gda-postgres DSN=DATABASE=test;HOST=localhost Description=Postgres Test Database in native mode Configurator=None [Postgres-Native] Provider=gda-mysql DSN=DATABASE=test;HOST=localhost;PORT=1111 Description=MySQL Test Database in native mode Configurator=None |
2Secciones del ficheros gdalib
Esta funcionalidad no esta actualmente implementada. Entre tanto se deberán usar las herramientas de configuración de la fuente de datos o un editor de texto para proporcionar la configuración específica del proveedor.
Gda se entrega con un entorno gráfico de configuración (GUI) para realizar tareas de administración de la base de datos. Esta herramienta es la aplicación gda-mgr.
Como se indico anteriormente, cada proveedor se entrega con un modulo de configuración, bajo la forma de un modulo glib, que cargara la aplicación gda-mgr.
[1] | No tengo idea de como hacerlo todavía. Pienso que se deberían usar mensajes GIOP_FORWARD en esta situación. No he encontrado la forma de hacerlo todavía. Lo haré mas tarde. |