La biblioteca cliente es un ligero wrapper sobre el interfaz CORBA. Tiene sobre todo cuidado sobre como solicitar y liberar memoria cuando no necesita nunca más los resultados de una consulta o cierra una conexión con una base de datos. También hace de caché de peticiones, así que es posible navegar hacia delante y hacia atrás a través de los resultados de una consulta, incluso si la base de datos no soporta esta funcionalidad. Por supuesto las comprobaciones de consistenca y las estrategias de bloqueos de la base de datos ya no están soportados, pero espero encontrar alguna solución a este problema.
También hay soporte para manejar diferentes fuentes de datos con diferentes servidores y características de conexión. Para ésto se usa el sistema de configuración GConf .
También tiene funciones de utilidad para ayudar a realizar diferentes tareas relacionadas con las bases de datos. Incluye también ejecuciones batch de comandos (transacciones), GDA, proveer acceso, etc.
El concepto principal de la biblioteca cliente es que un proveedor le permita conectarse a varias fuentes de datos. Como un proveedor es un servidor CORBA implementado con ORBit. Un proveedor provee un interfaz de conexión que permite al cliente solicitar conexiones no inicializadas desde el proveedor. La activación del proveedor se realiza a través del sistema de activación OAF. OAF maneja la identificación del nombre del servidor y del registro del servidor CORBA (el proveedor GDA), una vez que éste esté activo. OAF permite también al cliente elegir si se debe comenzar un nuevo servidor para cada instancia de la factory, o si se debe usar un servidor que se esté ejecutando actualmente. Esto tiene implicaciones en el tiempo de inicialización y el numero de procesos conectados al servidor de la bases de datos ( por lo tanto el número de licencias usadas).
Para poder obtener una conexión a una fuentes de datos, el cliente normalmente debe mandar alguna información al proveedor. Primero debe pasarle una cadena de caracteres al proveedor. Entoces éste utiliza esta cadena de una manera específica para encontrar las piezas perdidas requeridas para establecer una conexión al servidor de bases de datos real. Esta puede ser un nombre de máquina y un número de puerto ,el nombre del una biblioteca compartida que cargar, cualquier cosa que sea necesaria para que sea accesible el sistema de bases de datos o la fuente de datos. El cliente adicionalmente puede pasarle un nombre de usuario y contraseña para ser autorizado por el servidor de fuente de datos. El proveedor por sí mismo no puede comprobar ningún tipo de autentificación. Tenga también en cuenta que la conexión entre el cliente y el servidor no está encriptada, así que los datos se mandan como texto abierto. Esto cambiará cuando ORBit soporte comunicación encriptada entre el servidor CORBA y sus clientes. Si este comportamiento no es el deseado, use el proveedor como una biblioteca compartida.
Después de que la conexión se haya abierto, el cliente debiera solicitar la información del diccionario del datos a la fuente de datos. La semantica de los datos devueltos por muchas consultas es altamente dependiente del proveedor y normalmente no será portable entre diferentes fuentes de datos. Si los proveedores son de la misma clase (bases de datos, por ejemplo), la información será intercambiable, pero no espere tener el mismo programa cliente consulando a un proveedor LDAP o a un proveedor ODBC sin realizar cambios en el código fuente del cliente.
Entonces el cliente puede crear objetos GdaCommand que se usan para hacer consultas actuales a los proveedores. Para proveedores del tipo SQL, la consulta es el estado actual SQL. Por supuesto el proveedor es libre de cambiar el estado (conversión entre dialectos SQL) y algunos proveedores pueden especificar su propio lenguaje de consulta (el proveedor LDAP así lo hará). También es posible que ocurra esto para llamar a procedimientos almacenados. Estos procedimientos pueden estar almacenados en el actual backend (el sistema de bases de datos) o implementados por el servidor.
El resultado de una consulta se accede a través de un objeto del tipo GdaRecordset. Las actuales filas de datos pueden estar almacenadas del lado del cliente, del proveedor o del servidor de bases de datos. Esto depende de varias banderas y opciones se usan cuando se cre el recordset. Las posiciones en un recordset se definen a través de bookmarks, que son tipos de datos opacos. Un bookmark puede ser usado para posicionar el actual puntero de acceso en un recordset. Algunas bases de datos no permiten la posicion arbitraria del puntero de acceso en el resultado de una consulta, el proveedor almacena y hace cache de todas las filas de datos recibidas. Si el recordset está configurado para almacenar los datos en el lado del cliente el bookmark es simplemente un puntero a las filas. Puede leer más acerca del almacenamiento de las filas de datos, su caché y la ransacción en la sección correspondiente a los recodsets.