Artigo da SQL Magazine 34 - Consultas remotas no PostgreSQL

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (0)

Artigo da SQL Magazine - edição 34.

Capa SQl 33

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 Figura 1. Esta pasta contém inúmeras ferramentas adicionais para o PostgreSQL cuja instalação e utilização são opcionais. Entre as principais ferramentas, encontramos o próprio DBLink e conversores de banco de dados, como o oracle2pgsql, que converte Oracle para PostgreSQL.

 

Figura 1. Listagem da estrutura de diretórios do source do PostgreSQL. 

 

     Neste artigo, estamos partindo do princípio de que o PostgreSQL foi instalado de forma compilada a partir do código fonte e que durante a instalação o leitor quer instalar o DBLink. Para isso, acesse o diretório contrib/dblink. Após isso, é só executar a compilação com o comando “make” e em seguida instalar com o comando “make install”. Esses passos estão descritos na Listagem 1.

 

Listagem 1. Comandos para a instalação do DBLink no Linux.

[root@desenvra dblink]# cd contrib/dblink

[root@desenvra dblink]# make

[root@desenvra dblink]# make install

 

     Após a compilação e instalação do DBLink, será instalado um objeto (no Windows chamaríamos de dll) na subpasta do PostgreSQL chamada lib. Neste ponto, o importante é saber que precisaremos executar um script sql para que as funções do DBLink sejam adicionadas na nossa base de dados.

 

Listagem 2. Executando o script para adicionar as funções do DBLink à base de dados template1.

[root@desenvra dblink]# psql –U postgres template1 < dblink.sql

 

     O comando descrito na Listagem 2 gera as funções DBLink dentro do banco de dados “template1”. Para quem não sabe, o template1 é o esqueleto de criação para qualquer banco de dados que criamos no PostgreSQL. O template1 é um modelo de outros bancos de dados, por isso, qualquer coisa que alteramos no banco de dados template1 será disponibilizada automaticamente no novo banco a ser criado.

     Com isso, a partir de agora qualquer novo banco de dados que criarmos já possuirá a condição de usar o DBLink. Se for necessário criarmos as funções diretamente no banco de dados atual, simplesmente executaríamos o mesmo comando descrito na Listagem 2, porém, substituindo a palavra “template1” pelo nome do banco."

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?