O objetivo da biblioteca gda-server é esconder do programador toda a complexidade CORBA para o desenvolvimento de provedores e elimina a duplicação de trabalho e leva a código muito mais fácil de ser depurado. A biblioteca fica no mesmo nível da biblioteca gda-server do ponto de vista CORBA.
A biblioteca gda-server impõe uma certa estrutura na maneira que provedores devem ser implementados, mas também permitem customização.
Todos objetos aqui são espécies de espelhos dos objetos da biblioteca gda-cliente, formando a parte servidor da estrutura CORBA da libgda.
o objeto GdaServerConnection: este é o objeto mais importante e cuida de toda a parte da conexão a fonte de dados (no caso de um banco de dados, o nome do banco de dados, usuário, senha, etc). Geralmente o cliente apenas usa um desse tipo de objeto.
o objeto GdaServerCommand: este objeto é usado para preparar uma consulta para ser executada.
o objeto GdaServerRecordset: cada vez que um comando é executado, um desses objetos é retornado, e podem ser examinados para ver-se os resultados do comando. Sob a libgda, um conjunto de registros é examinado de maneira sequêncial, linha após linha (para alguns sistemas de banco de dados essa é a maneira que os resultados de uma consulta são manuseados, enquanto em outras, existe a possibilidade de acessar os resultados de maneira randômica).
o objeto GdaServerField: para cada coluna, um desses objetos é usado. Ele descreve o nome da coluna, o tipo de dado, e seu conteúdo. Cada objeto GdaServerField é inicializado quando o conjunto de registros é criado, e seu valor será atualizado cada vez que uma nova linha é examinada. O gda-server usará estes objetos para enviar o conteúdo para o cliente CORBA.
Isso é o que acontece do lado do servidor quando um cliente faz uma consulta:
1- um GdaServerConnection é criado
2- a conexão é aberta
3 - um GdaServerCommand é criado
4 - o comando é colocado no objeto GdaServerCommand
5- o comando é executado, e se nenhum erro ocorrer, um objeto GdaServerRecordset é criado e retornado
6 - o GdaServerCommand pode ser destruído sem problemas
7- a primeira linha do conjunto de registror pode ser examinada, então a segunda, terceira, etc
8- o GdaServerRecordset é destruído
9- a conexão é fechada, e o GdaServerConnection pode ser destruído.
Todos os passos descritos acima são impostos pela estrutra libgda. A implementação de um provedor para um tipo específico de banco de dados é, na verdade, a implementação de cada um dos passos descritos acima.
Como a biblioteca C para um certo sistema de banco de dados usa estruturas específicas (para lidar com referências de conexões, etc) é possível anexar alguma informação aos objetos da biblioteca gda-server. Então geralmente o implementador do provedor define as seguintes estruturas (substitua DBMS, DataBase Management System, pelo nome do seu banco de dados, como por exemplo MYSQL ou POSTGRES):
a estrutura de conexão é geralmente chamada de DBMS_Connection
a estrutora de comando é geralmente chamada de DBMS_Command
a estrutora de conjunto de registros é geralmente chamada de DBMS_Recordset