Logo

Qual a diferença entre uma conexão remota, local e embarcada?

Gladiston Santana - Um site para chamar de meu

Introdução

Qual a diferença entre uma conexão remota, local e embarcada?

Num vídeo recente, falamos como conectar-se de modo embarcado com o Zeos – componente especial para acesso a banco de dados nas IDEs de programação Delphi e Lazarus – e surgiram dúvidas sobre a diferença entre conexão local, remota e embarcada.

Para os menos experientes há uma confusão com conexões "localhost" sendo tidas como "locais", será que são mesmo? Você sabia que o FirebirdSQL possui um protocolo especial para conexões realmente locais como xnet? Conexão embarcada e local é a mesma coisa?

Tipos de Conexão

Vamos esclarecer as diferenças entre os três tipos principais de conexão a bancos de dados:

Conexão Remota

Uma conexão remota ocorre quando o aplicativo cliente e o servidor de banco de dados estão em máquinas diferentes, comunicando-se através da rede. Neste caso, você precisa especificar o HostName (IP ou nome do servidor) e a Port (porta de comunicação).

Exemplo de string de conexão remota:

HostName: servidor.empresa.com
Port: 3050
Database: /caminho/remoto/banco.fdb

Conexão Local

Uma conexão local ocorre quando o aplicativo cliente e o banco de dados estão na mesma máquina, mas usando o protocolo de rede. Muitos programadores confundem "localhost" com conexão local, mas na verdade "localhost" ainda usa a infraestrutura de rede para localizar o próprio computador.

Para uma conexão verdadeiramente local no FirebirdSQL, você deve usar o protocolo xnet, que acessa o arquivo diretamente sem passar pela camada de rede:

Protocol: firebird
Database: xnet://C:\Caminho\para\o\banco.fdb
HostName: (não necessário)
Port: (não necessário)

O protocolo xnet é mais rápido que localhost porque não passa pela pilha de rede TCP/IP, acessando o arquivo diretamente.

Conexão Embarcada

Uma conexão embarcada (embedded) é quando o banco de dados é acessado diretamente pelo arquivo, sem necessidade de um servidor de banco de dados rodando. O FirebirdSQL oferece o modo embarcado através da biblioteca fbembed.dll (Windows) ou libfbembed.so (Linux).

Neste modo, o banco de dados é totalmente incorporado à aplicação, não requerendo instalação ou configuração de servidor. É ideal para aplicações desktop que precisam de um banco de dados local sem a complexidade de gerenciar um servidor.

Exemplo de configuração embarcada:

Protocol: firebird-2.5
LibraryLocation: fbembed.dll
Database: C:\Caminho\para\o\banco.fdb
HostName: (não necessário)
Port: (não necessário)

IMPORTANTE: Programadores, sim, você que tem a linguagem de programação e o banco de dados rodando no mesmo computador, parem de usar "localhost" quando na realidade o que quer é um acesso local. Ao criar seus programas, deixe-os fáceis para serem ajustados de forma que o usuário possa ajustá-lo para local ou remota e por favor, não assuma que "localhost" é local, pois não é.

Comparação Prática

Para entender melhor as diferenças, veja a tabela comparativa:

Neste vídeo explico as diferenças:

Conclusão

Entender a diferença entre conexão remota, local e embarcada é fundamental para escolher a melhor abordagem para sua aplicação. Use conexões remotas quando precisar de acesso distribuído, conexões locais (xnet) quando quiser performance máxima no mesmo computador, e conexões embarcadas quando precisar de simplicidade sem servidor.

Para mais informações sobre como configurar conexões com Zeos, consulte o artigo sobre Conectando uma base de dados com ZConnection.