El propósito de la biblioteca gda-server es esconder todos los detalles de CORBA a los programadores de proveedores y evitar la duplicación de trabajo y que así depurar el código sea mucho más fácil. La biblioteca se mantiene al mismo nivel que la biblioteca gda-client desde el punto de vista de CORBA.
La biblioteca gda-server impone un framework para que el proveedor sea implementado de una manera predeterminada, pero permite una personalización específica.
Cada uno de los objetos tiene un objeto espejo desde la biblioteca gda-client desde el lado del servidor del framework libgda CORBA. Éstos son los objetos:
El objeto GdaServerConnection: este es el objeto principal que pmaneja todo lo corespondiente a las conexiones a los DBMS (dando el nombre de la base de datos, el nombre de usuario, la contraseña, etc.). Normalmente el cliente sólo usará un objeto de este tipo.
El objeto GdaServerCommand: este objeto se usa para preparar una consulta para que se ejecute.
El objeto GdaServerRecordset: cada vez que se ejecuta un comando, se devuelve un objeto de este tipo, y entones se pueden examinar para ver los resultados que nos han sido devueltos tras el comando. Bajo libgda, el recordset examina de una manera secuencial, fila tras fila (para algunos DBMS esta es la manera noral de uso, mientras en otras es posible el acceso aleatorio).
El objeto GdaServerField: para cada columna, se usa un objeto de este tipo. Se describe el nombre de la columna, el tipo de datos y us contenidos. Cada objeto GdaServerField se inicializará cuando se crea un recordset y se almacenará un nuevo valor cada vez que se examina una fila. El gda-server se usará entonces esos obketos para mandar los contenidos al lado CORBA del client. will then use these objects to send the contents to the client CORBA side.
Cuando un cliente hace una consulta, lo que sucede en el lado del servidor es lo siguiente:
Se crea un GdaServerConnection
Se abre la connexión
Se crea un GdaServerCommand
El comando actual se inserta dentro de un objeto GdaServerCommand
Se ejecuta el comando, y si no ocurre ningún error, se crea y se devuelve un GdaServerRecordset
El GdaServerCommand se puede destruir de un modo seguro
Se examina la primera fila del recordset, luego la segunda, etc
Se destruye el GdaServerRecordset
Sepuede cerrar la conexión y el GdaServerConnection se destruye
Todos los pasos descritos arriba se imponen en el framework libgda. El trabajo de escribir un proveedor para un DBMS específico está en escribir la partes específicas que realicen estas operaciones que se describen arriba.
Así como la biblioteca C para los DBMS usa estructura específicas para manejar referencias a conexiones, etc., es posible adosar alguna información a los objetos de la biblioteca gda-server . Normalmente el programador de proveedores define las siguientes estructuras (substituya aquí DBMS por el nombre del actual DBMS como por ejemplo MYSQL o POSTGRES):
una estructura de conexión normalmente llamada DBMS_Connection
una estructura de comandos normalmente llamada DBMS_Command
una estructura recordset normalmente llamada DBMS_Recordset