ODBC e SQL são padrões estabelecidos. O problema é que ODBC não especifica o protocolo de comunicação e não existem drivers para alguns bancos de dados. Você pode usar RPC, TCP/IP, ou memória compartilhada e 'signals' para fazer os pedidos ao cliente ao servidor. Então você tem que usar uma biblioteca ODBC específica a certo banco de cados. Esta biblioteca pode não estar disponível para a CPU ou sistema operacional na qual o cliente está rodando.
SQL não é padronizado suficientemente, de maneira que compatibilidade de código não pode ser garantida para todos os servidores de banco de dados. E para alguns tipos de servidores, SQL não é nem mesmo cogitável (pense em LDAP).
GDA tenta atavar o problema do ODBC e ajudá-lo com o problema do SQL. É um tipo de middleware (ou pode ser expadido para ser uma camada middleware) para acessar diferentes fontes de dados. GDA oferece uma visão bastante abstrata (high level) das fontes de dados e possui locais onde você pode encaixar componentes específicos a certa tarefa (low level) para acessar estes dados.
GNU Data Access (GDA) é definido em um conjunto de interfaces CORBA IDL. O nível de abstração provido pelo GDA torna possível o acesso a qualquer tipo de fonte de dados, desde que um servidor CORBA que implemente estas interfaces IDL e acesse esta fonte de dados seja escrito.
libgda é uma implementação das interfaces CORBA GDA, usando ORBit como implementação CORBA. Isso significa que, em teoria, seria possível implementar libgda para um outro CORBA ORB ou sistema operacional, desde que suporte a COBRA esteja presente nesse sistema.
Este trás uma camada acima das rotinas internas CORBA, trazendo todo o poder nativo da arquitetura CORBA a programadores que não precisam ter conhecimento do mesmo. Este vem com diversas bibliotecas, para ambos clientes e servidores, implementadas em C. Este nível de abstração torna possível a posterior mudança do funcionamento interno sem a necessidade de alteração nas aplicações que utilizam estas bibliotecas, como também mas importantemente, manter desenvolvedores de aplicações longe das contínuas mudanças nas APIs relacionadas a CORBA em uso, como por exemplo OAF, GConf...
Junto com estas bibliotecas (e 'header files' e 'language bindings' para desenvolvimento), libgda traz várias ferramentas e utilitários para ajudá-lo na tarefa de desenvolver aplicações baseadas em libgda, bem como automatizar algumas tarefas relacionadas ao banco de dados.
libgda é implementada para sistemas operacionais tipo Unix (incluindo Linux), e não depende de outras bibliotecas exceto por ORBit, GConf, OAF e Glib, o que o faz um sistema bastante leve, ideal para aplicações que rodarão em sistemas com recursos de hardware limitados. libgda já foi parte do projeto GNOME-DB, na verdade ainda é, mas tem sido separado para que aplicações "não GNOMificadas" sejam desenvolvidas baseadas na mesma.