Interoperabilidade e replicação de PostgreSQL para outros SGBDs

Nesta primeira etapa, trataremos exclusivamente da conexão com outros SGBDs de dentro do PostgreSQL, utilizando para isso o DBI-Link.

Acessando outros SGBDs via DBI-Link no PostgreSQL

Nesta série de artigos, que será apresentada em duas partes, implementaremos uma replicação assíncrona de um banco de dados em PostgreSQL no Windows para qualquer outro SGBD que disponibilize um driver ODBC (ver Nota 1).

solução a ser descrita utiliza trechos de códigos do DBI-Link 1.0 (ver Nota 2), um conjunto de funções escritas em PL/Perl por David Fetter, membro do grupo de desenvolvimento do PostgreSQL. Como destino na replicação, serão usadas as versões Express Edition (XE) de cada um dos três maiores SGBDs disponíveis no mercado: Microsoft SQL Server 2005, Oracle 10g, e IBM DB2 9, todos instalados na plataforma Windows x86 (32 bits). Será utilizada a versão 8.1.5 do PostgreSQL no Windows como banco de dados de origem.

Nesta primeira etapa, trataremos exclusivamente da conexão com outros SGBDs de dentro do PostgreSQL, utilizando para isso o DBI-Link. Antes disso, veremos como criar e executar scripts em Perl no Windows, como configurar fontes de dados ODBC e como utilizá-las através da biblioteca DBD do Perl.

A ODBC (Open Database Connectivity) é uma tecnologia padrão de programação para o acesso a banco de dados por meio de uma biblioteca de funções pré-definida, criada pelo SQL Access Group. Ela permite que aplicações acessem dados em SGBDs usando a linguagem SQL como padrão. Além disso, oferece máxima interoperabilidade, o que significa que com ela uma única aplicação pode acessar SGBDs distintos, sendo também independente de linguagem de programação.
DBI-Link é uma implementação parcial de SQL/MED (Gerenciamento de Dados Externos - Management of External Data) proveniente da especificação SQL:2003. Com o DBI-Link, é possível adicionar velocidade e precisão aos processos de ETL (Extract-Transform-Load), tratando qualquer fonte de dados alcançável pela DBI do Perl como uma tabela no PostgreSQL.

Motivação

Imagine a seguinte situação: numa empresa existem diversas bases de dados corporativas, e em sistemas gerenciadores de bancos de dados distintos. Nela foi implementada uma solução de data warehousing baseada num grande SGBD (Oracle, SQL Server ou DB2). Paralelamente, no mesmo cenário, atua um banco de dados transacional PostgreSQL. Algumas informações contidas nesse banco de dados OLTP (ver Nota 3) precisam ser replicadas para o ambiente OLAP (ver Nota 4).

Achou um pouco utópico o cenário descrito acima? Então vejamos outro mais simples. Na empresa foram adquiridos separadamente diversos sistemas "fechados", que servem a áreas distintas. As informações destes sistemas estão hospedadas em SGBDs diferentes e independentes. Após algum tempo, surge a necessidade de um novo sistema, que será desenvolvido em PostgreSQL. Esse sistema poderá servir para alimentar tabelas antes estáticas nos bancos de dados dos outros aplicativos comprados.

Em grandes corporações, esta heterogeneidade nos ambientes de bancos de dados é muito mais comum do que imaginamos. E este será o nosso desafio: integrar informações de um banco de dados em PostgreSQL a outro SGBD qualquer.

OLTP (Online Transaction Processing) são sistemas que se encarregam de registrar todas as transações contidas em uma determinada operação organizacional. Os ERPs (Enteprise Resource Planning) são sistemas que se enquadram nessa categoria.
OLAP (Online Analytical Processing) é uma abordagem tecnológica para gerar respostas rápidas a consultas analíticas de natureza tipicamente dimensional. A tecnologia OLAP é parte de uma categoria mais abrangente, Business intelligence, que também inclui Data warehouse e Data mining. Aplicações típicas de OLAP são relatórios de negócios, marketing, relatórios gerenciais, business performance management (BPM), budgeting e previsão, relatórios financeiros e áreas similares.

Preparando o terreno para o camelo: Perl no Windows

Para criar funções na linguagem procedural PL/Perl no PostgreSQL, é preciso instalar as bibliotecas do Perl no sistema operacional em questão. Para isso, baixe e rode o instalador do ActivePerl (http://www.activestate.com/store/activeperl/ ) para Windows. Ao término da instalação, abra o gerenciador de pacotes do Perl, clicando no menu Iniciar → Programas → ActiveState ActivePerl → Perl Package Manager. Será preciso instalar os seguintes pacotes:

Veja que existem diversas possibilidades de fontes de dados para a DBI no Perl. Além disso, estão disponíveis drivers de módulos DBI específicos para alguns SGBDs, como:

E como se não bastasse, também temos à disposição os seguintes pacotes:

Assim, com toda essa parafernália de interfaces disponíveis para o Perl, podemos acessar praticamente qualquer fonte de dados a partir do PostgreSQL. Além de consultar e gravar em qualquer outro SGBD, podemos facilmente gerar planilhas do Excel ou fazer pesquisas no Google de dentro do PostgreSQL, e via instrução SQL!

Em seguida, testaremos as interfaces DBI disponíveis para o Perl. Abra o "Prompt de comando" do Windows (menu Iniciar à Executar à digite o comando "cmd") e execute o comando da Listagem 1. Veja na Figura 1 o resultado. Se aparecer a entrada "DBD::ODBC", significa que já podemos fazer em Perl uma conexão a um banco de dados via driver ODBC.


            perl -MDBI -e "DBI->installed_versions"
        
Figura 1. Verificação dos drivers disponíveis para a DBI.

Configurando e testando as conexões ODBC

Nos bancos de dados de destino, crie um usuário com permissões de conexão, criação de objetos como tabelas e índices (instruções DDL) e de consulta e manutenção dos dados (instruções DML). Para acompanhar o artigo, é sugerida a criação de um usuário chamado "postgres" com a senha "postgres".

O próximo passo é configurar as fontes de dados ODBC no Windows para os SGBDs proprietários. Caso o servidor de banco de dados esteja alocado em outra máquina, será preciso ao menos instalar o software cliente. Abra o "Administrador de fonte de dados ODBC" do Windows (Painel de Controle → Ferramentas administrativas → Fontes de dados (ODBC)) e clique na guia "Fonte de dados de sistema" (ver Figura 2). A partir dessa tela, configure as conexões desejadas aos bancos de dados de destino (ver Figura 3).

Para cada SGBD existem opções específicas para a conexão via ODBC. Apesar disso, será preciso preencher as seguintes informações: DSN (ou nome da fonte de dados), servidor (endereço IP ou nome do servidor, podendo ser "localhost" caso esteja na mesma máquina), porta (caso não seja a default, que é diferente para cada SGBD) e, eventualmente, nome do banco de dados inicial.

Figura 2. Administrador ODBC do Windows.
Figura 3. Criação de nova fonte de dados ODBC.

Na Figura 4 configuramos uma conexão ao Oracle 10g Express Edition rodando localmente. Podemos testar a conexão recém-criada clicando no botão "Test Connection".

Figura 4. Configuração de conexão via driver ODBC para o Oracle.

Nas Figuras 5 e 6 vemos como configurar uma conexão ao Microsoft SQL Server 2005 Express Edition no servidor local. Clicando no botão "Test Data Source...", podemos verificar se a conexão é válida.

Figura 5. Configuração de conexão via driver ODBC para o SQL Server..
Figura 6. Tela final da configuração de conexão no SQL Server..

Para finalizar, a Figura 7 exibe a configuração do driver ODBC para o IBM DB2 9 Express Edition. Clicando no botão "Conectar" podemos testar a validade da conexão.

"

[...] 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