Artigo da SQL Magazine 34 - Consultas remotas no PostgreSQL

Artigo da SQL Magazine - edição 34.

Clique aqui para ler esse artigo em PDF.

Clique aqui para ler todos os artigos desta edição

Consultas remotas no PostgreSQL

 

Como em outros artigos, sempre comento do crescimento de funcionalidades do PostgreSQL e como podemos usá-lo tranqüilamente em médias e grandes empresas. O

grande atrativo é a redução de custo, não digo somente no valor do banco de dados por ser gratuito, mas também pelo custo computacional, já que é um banco desenvolvido para rodar em máquinas realmente simples (obviamente a questão de hardware dependerá sempre da demanda por movimentação de dados). Mas sempre

existem pontos no qual temos dificuldades de nos adaptar quando falamos de DBAs ou Database Developers que vieram de bases Oracle para PostgreSQL. Estas pequenas

diferenças fazem com que haja receio na migração; um ponto é a questão de sinônimos, ou seja, eu ter a condição de acessar uma tabela que está em uma outra base dentro de sua base de dados.

O PostgreSQL não possui até o presente momento este recurso. No entanto, conseguimos fazer adaptações que possibilitam simular o recurso de sinônimo disponível no Oracle, além de outras adaptações, como a aplicação apresentada

no final do artigo no qual foi construído um “mini replicador”. Este recurso alternativo que podemos utilizar no PostgreSQL é formado por um conjunto de funções

chamado DBLink que iremos explorar neste artigo.

 

O que é o DBLink

 

Antes de aprendermos a utilizar o DBLink, precisamos saber o que é e qual a sua finalidade. Bem, o DBLink corresponde a um conjunto de funções que possibilita a conexão entre bancos de dados PostgreSQL a fim de acessar dados externos. Quando falamos em dados externos, estamos considerando tanto tabelas de um banco  fisicamente distante (em outro servidor) como um banco de dados local. O que queremos dizer é que o DBLink permite que acessemos remotamente uma tabela de uma determinada base de dados e realizemos a execução de queries. Sendo assim, o desempenho do DBLink vai depender principalmente da infra-estrutura da rede, já que o acesso é realizado através do protocolo TCP/IP.

É preciso ressaltar que o DBLink serve apenas para conexão entre bancos de dados PostgreSQL. Existe uma outra solução, que é o projeto dblink-ldap, que permite executar queries entre bases de dados PostgreSQL e LDAP a partir do PostgreSQL (veja mais em http://pgfoundry.org/projects/dblink-ldap/), mas isso não é o foco deste artigo. O nosso objetivo é a comunicação entre bancos de dados no PostgreSQL.

Uma outra característica importante é que o conjunto de funções que compõem o DBLink não é instalado por padrão juntamente com o PostgreSQL. Aqueles que desejam utilizá-lo têm que instalá-lo após o PostgreSQL. Isso é necessário porque o PostgreSQL não possui nativamente a possibilidade de acesso a tabelas de um banco de dados externo. No máximo, poderia acessar uma tabela de um outro schema, mas neste caso, a tabela ainda estaria no mesmo banco de dados. É em situações como esta que entra o DBLink.

O processo de instalação do DBLink e o conjunto de funções que o compõem será explorado com mais detalhes na continuidade deste artigo.

 

Como instalar o DBLink

 

Neste momento iremos descrever como realizar a instalação do DBLink nos dois principais sistemas operacionais utilizados atualmente: Linux e Windows. Vamos a cada um deles agora.

 

Instalando o DBLink no Linux

Sempre comentei sobre a importância de instalar o PostgreSQL a partir do código fonte. Eis alguns motivos:

código otimizado para o hardware;

pode-se alterar o código fonte para personalizar o banco;

certeza de que o release que está sendo instalado é 100% estável.

A simplicidade para a instalação do DBLink seria mais um motivo. Vamos ao procedimento para instalar esse conjunto de funções.

Dentro da pasta do código fonte, existe a pasta “contrib”, como vemos na " [...] continue lendo...

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados