Capítulo 2. La Arquitectura de libgda

libgda se compone de tres capas independientes. La de más bajo nivel es la que conforman los proveedores GDA, que son servidores CORBA cuya tarea es mapear el API de un RDBMS específico al modelo GDA. Esto es, son objetos CORBA que implementan interfaces GDA CORBA.

En la capa intermedia, está la biblioteca cliente: una biblioteca cliente CORBA, que oculta toda la complejidad de CORBA a las aplicaciones cliente, que incluye varias funciones que ayudan en el desarrollo de aplicaciones basadas en GDA.

Y finalmente, el la capa superior residen todas las aplicaciones cliente incluidas en la suite, así como cualquier aplicación que haga uso de las bibliotecas cliente.

libgda se basa en CORBA y utiliza ORBit como implementación de CORBA. El sistema provee básicamente un fichero IDL como interfaz al cliente. Debe ser escrito un servidor para cada tipo diferente de fuente de datos (ODBC,Sybase, Informix, MySQL, LDAP, ...). Idealmente este servidor es una biblioteca compartida que se enlaza con un pequeño programa controlador para formar un servidor CORBA independiente. El programa controlador hace posible usar el servidor como biblioteca del cliente, reduciendo así el tiempo de configuración de interconexión (sin sockets ni conmutadores de contexto).

La ventaja principal del uso de un servidor CORBA es que el servidor puede ser ejecutado en otra máquina, para balancear la carga. Es posible ya que ORBit es pequeño y rápido. Usted puede utilizar el mismo servidor CORBA desde su lenguaje interpretado y puede hacer control del transacciones y enrutado, sin necesidad de cambiar el cliente. El problema es que si el proveedor cae, todos los clientes se desconectarán de la base de datos. Para solucionar esta problema es posible que cada cliente solicite una nueva copia del proveedor (aunque esta funcionalidad no está incluida todavía en el API cliente).

Otro tipo de proveedores son los de biblioteca compartida . Éstos son enlazados al cliente cuando éste solicita algo del proveedor. La desventaja es que el servidor tiene que ser alojado en la misma máquina que el cliente. Pero así si el servidor falla sólo afecta a un cliente. El coste de inicialización es similar a ejecutar un proveedor. La gran ventaja es que este tipo de proveedores son más fáciles de depurar, porque no es necesario adosar GDA a un proveedor que se esté ejecutando y que pueda capturar errores durante la inicialización del servidor.

De serie, cada proveedor GDA está disponible como ejecutable y como biblioteca compartida. El proceso de compilación y la convenciones usadas para implementar el proveedor aseguran que tanto el ejecutable como la biblioteca compartida estarán compiladas e instaladas. También, los proveedores GDA están disponibles como bibliotecas compartidas, que son enlazadas con un pequeño programa que actua como controlador de la biblioteca compartida.