Administración y configuración de Gda

Proveedores y fuentes de datos

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.

Configuración de un proveedor

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

(1)
Es el nombre del proveedor. La combinación de este nombre y campo tipo debe ser única. Este significa que es posible tener un proveedor como librería compartida y como ejecutable independiente con el mismo nombre. Como el usuario de la librería puede escoger entre la implementación como librería compartida y el ejecutable independiente no esta todavía solucionado.
(2)
Es el tipo de servidor. si este campo toma el valor "exe", el proveedor esta implementado como un ejecutable independiente. Esto significa que el proveedor esta desacoplado de la aplicación que hace uso de Gda y por tanto a salvo de punteros que lo cuelguen y otros errores de la aplicación. La desventaja es que la latencia entre la aplicación y el servidor es mayor que con los servidores en la modalidad de librería compartida. Los servidores implementados como librería compartida están definidos con el valor "shlib" en este campo y se enlazan con la aplicación en tiempo de ejecución.
(3)
El valor de este campo debe ser "IDL:GDA/ConnectionFactory:1.0". Se usa para localizar los proveedores Gda en todos los ficheros de configuración Goad.
(4)
Es una pequeña descripción del servidor en una linea. Se visualiza en la aplicación gda-mgr y debería describir el proveedor. Destino únicamente a las personas.
(5)
Esta es la ruta al proveedor. Si la ruta no empieza por "/", la implemenatcion se busca dependiendo de su tipo. Si es de tipo "exe", se busca el proveedor en el PATH del usuario que arranco el servidor. Si es de tipo "shlib" se usa el método de localización de slibrerias compartidas. La forma exacta en esto de hace depende del sistema operativo, pero en Linux se usa la variable de entorno LD_LIBRARY_PATH, y después los directorios del fichero /etc/ld.so.conf.

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.

Nombres de las fuentes de datos

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 fichero gdalib

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

(1)
Esta seccion nombra todas loas fuentes de datos. La clave es el nombre de la fuente de datos que debe usar el cliente. Su valor es el nombre de la sección que describe en este fichero la fuente de datos.
(2)
Esta sección describe una fuente de datos que representa una base de datos Solid. Solid es una base de datos con poco uso de memoria y poca escritura a disco, que proporciona una librería cliente ODBC.
(3)
El proveedor para esta base de datos es el proveedor gda-odbc. El valor de este registro se usa como nombre del servidor para la activación Goad.
(4)
Este es el registro mas importante. El valor de este registro es la cadena de texto enviado al proveedor para que sepa que base de datos acceder. La forma en que los proveedores interpretan este registro se describe en la sección de proveedores.
(4)
El valor de este registro es una concisa descripción de la fuente de datos. Esta solo por conveniencia y no se usa para ningún propósito.
(6)
Este registro denota un modulo glib usado para realizar la configuración de este proveedor. Algunos proveedores como gda-odbc y gda-sybase necesitan ficheros adicionales de configuarcion. Este registro indica la librería que usara la librería cliente para acceder a la administración de la base de datos.

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.

El gestor y configurador Gda

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.

Notas

[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.