Chapter 5. Biblioteca Cliente GDA

Table of Contents
Introdução
Visão geral dos objetos GDA
Data Types
Meta-Informação Da Fonte de Dados
Comandos Em Série

Introdução

A biblioteca cliente "embrulha" a interface CORBA. A biblioteca cuida de alocação e liberação de memória quando você não precisa mais dos resultados de uma consulta, ou quando você fecha a conexão com o banco de dados. Sua segunda função é fazer caching, de maneira que é possível navegar para frente e para trás dentro do resultado obtido com uma consulta, mesmo que o banco de dados não suporte um "cursor móvel" (scrolling cursos). É claro que as verificações de consistência e estratégias de locking não são mais suportadas, acreditamos, porém, que acharemos uma outra solução para isso.

Há também suporte para controlar diferentes fontes de dados com diferentes servidores e características de conexões. Para atingir este ponto o sistema de configuração GConf é usado.

Existe também funções utilitárias para ajudá-lo com as várias tarefas relacionadas com bancos de dados. Essas incluem execução de comandos em série (transações), acesso a provedores GDA, ...

O conceito fundamental da biblioteca cliente é que o provedor deve permitir que você conecte-se a várias fontes de dados. Tal provedor é um servidor corba implementado com ORBit. Um provedor deve prover uma interface para construção de conexões (factory interface), que permite ao cliente solicitar ao servidor conexões não inicializadas. A ativação do provedor é feita através do sistema de ativação OAF. OAF cuida da identificação do 'name server' e da registração do servidor CORBA (o provedor GDA), uma vez que este está ativo. OAF também permite ao cliente escolher, se para cada nova conexão construída um novo servidor deve ser inicializado ou se um já em execução deve ser utilizado. Isto tráz implicações ao tempo necessário usado para iniciar a conexão e ao número de processos conectados ao servidor de bancos de dados (e por sua vez, o número de licenças em uso, no caso de um banco de dados não livre).

Para se conectar a uma fonte de dados, o cliente geralmente deve passar alguma informação ao provedor. Primeiro o cliente deve passar uma string descrevendo a conexão para o provedor. O provedor usa esta informação de maneira específica para para completar as informações necessárias para estabelecer uma conexão com a fonte de dados. Essa informação pode ser o nome do computador (hostname) e número da porta, o nome da biblioteca a ser carregada, enfim, o que for necessário para a fonte de dados ser acessada. Adicionalmente o cliente deve passar o nome do usuário e um senha para ser autorizado a acessar o servidor da fonte de dados. O provedor não faz nenhuma verificação quanto a autenticação. Note também, que que a conexão entre o o cliente e o servidor não é encriptada, ou seja, esse dados são enviados como texto puro e simples. Isso não será mais verdade uma vez que ORBit suporte conexões encriptadas entre um servidor CORBA e seus clientes. Se esse procedimento não é aceitável, use o provedor em forma de biblioteca compartilhada.

Depois que a conexão é aberta, o cliente pode solicitar a fonte de dados informação sobre o dicionário de dados. As semânticas dos dados retornados de tais consultas é altamente dependente do provedor e geralmente não é portável entre diferentes tipos de fontes de dados. Se os provedores pertecem a mesma classe (bancos de dados, por exemplo), essa informação será trocada entre ambos, mas não espere que o mesmo programa consultando um provedor LDAP e um provedor ODBC sem mudanças no código fonte.

O cliente pode entrar criar objetos GdaCommanda que são usados para fazer as consultas aos provedores. Para provedores tipo SQL, a consulta é o comando SQL. É claro que o provedor é livre para alterar os estes comandos (conversão entre dialetos SQL) e alguns provedores tem sua própria linguagem de consulta (o provedor LDAP é um desses). É também possível chamar funções armazenadas no banco de dados (stored procedures). Essas funções devem ser implementadas no sistema de banco de dados ou implementadas pelo provedor.

O resultado de uma consulta é acessado através de objetos de tipo GdaRecordset. Os dados resultados da consultados podem estar armazenados no cliente, no provedor ou no servidor de banco de dados. Isso depende de várias opções (flags) usadas quando o conjunto de registros (recordsets) é criado. Posições em um conjunto de registros são definidos através de marcadores (bookmark), que é um tipo de dado opaco. Um marcador pode ser usado para posicionar o ponteiro de acesso atual em um conjunto de registros. Uma vez que alguns sistemas de bancos de dados não permitem posicionamento arbitrário do ponteiro de acesso no resultado de uma consulta, o provedor armazena e guarda todas linhas obtidas. Se um conjunto de registros é configurado para armazenar os dados no cliente, então o marcador é um simples ponteiro para essas linhas. Você pode ler mais sobre armazenamento de linhas de dados, caching e transações na seção sobre conjunto de registros.