Voltar
Por que eu devo ler este artigo:Foreign Data Wrappers (FDW) é uma funcionalidade do PostgreSQL, que permite o acesso a dados externos em SGBDs como Oracle, MySQL, SQL Server, MongoDB, entre outros. O acesso a esses dados é realizado através do cliente do banco de dados PostgreSQL, utilizando PL/pgSQL, a linguagem procedural do PostgreSQL. No cenário atual, no qual existem sistemas distintos, onde há necessidade de integração entre dados, seja pelo negócio da empresa, motivo de novas aquisições, aplicações legadas, fornecedores com banco de dados diferentes ou migrações, torna-se cada vez mais necessário que a integração desses dados seja realizada de forma simples, confiável e eficiente, evitando custos, processos complexos, necessidade de licenças, alto tráfego de rede. O FDW pode ser uma solução bem útil para a maioria dessas situações.

O FDW foi construído baseando-se no SQL/MED (SQL Management of External Data), que se trata de uma regulamentação de um padrão de configuração, desenvolvimento e aplicação de acessos a dados externos em SGBDs e arquivos de outros fornecedores. O conceito do FDW não é apenas tornar dados visíveis de várias origens em um único ponto, mas também integrar o uso desses dados, por exemplo, utilizando joins ou filtros de tabela externas como parâmetro para retornar dados de outra tabela de outra fonte. Além disso, permitindo que sejam feitas todas as operações DML (Data Manipulation Language) no acesso a dados externos, como select, insert, update e delete. Essa facilidade de manipulação de dados é um grande diferencial do FDW se comparado com ferramentas que têm o mesmo propósito de integração de dados, geralmente sem real-time ou permissão de alteração de objetos (acesso read only somente).

Os objetos externos podem se conectar ao PostgreSQL utilizando a funcionalidade de FDW, para que seja possível trabalhar com as informações dessas fontes externas. O PostgreSQL disponibiliza o acesso aos dados utilizando-se do conceito de tabelas externas (foreign tables), o que torna transparente o acesso aos dados externos, e são utilizados os mesmos procedimentos de acesso a tabelas locais.

Criando extensões no PostgreSQL

A funcionalidade de FDW é disponibilizada no PostgreSQL através de extensões, que segue a ideia basicamente de arquivos que podem ser compilados dentro do PostgreSQL com determinadas funcionalidades. As extensões de FDW adicionadas ao banco de dados permitem realizar a integração de um objeto externo (SGBD ou arquivo) ao PostgreSQL. Após a configuração do FDW, é realizado o mapeamento das tabelas do banco de dados externo com a criação de foreign tables, ou então com a criação de um schema externo.

As configurações de extensões variam de acordo com o fornecedor. Para extensões de MySQL, MongoDB, SQL Server, Web Services, a configuração é realizada através de instalação de pacotes no sistema operacional. Para outros tipos de extensões, como do banco de dados Oracle, que será utilizado neste artigo, a extensão de FDW é configurada com um projeto no GitHub chamado oracle_fdw.

As versões do PostgreSQL e das extensões FDW dos objetos externos funcionam da seguinte forma: o banco de dados PostgreSQL lança novas versões, releases e correções, e então os desenvolvedores que disponibilizam os FDWs dos objetos externos implementam as novas melhorias.

Extensões oracle_fdw e mysql_fdw

O oracle_fdw é uma extensão de acesso ao Oracle, mantida no GitHub em um projeto de Laurenz Albe. O oracle_fdw só é compatível com versões do Oracle Database Client 10 em diante. É importante lembrar que o GitHub é um repositório de projetos de desenvolvedores que os tornam públicos ou não, no caso do oracle_fdw, o código é aberto e é possível verificar como foi realizado o desenvolvimento, que está em constante atualização, e que é de certa forma confiável.

É necessária atenção antes de baixar qualquer projeto de FDW do GitHub, no caso do FDW, é interessante dar preferência aos projetos conhecidos na comunidade PostgreSQL e que disponibilizam de forma clara o código utilizado.

Com o MySQL, o processo é um pouco mais simples, o mysql_fdw está disponível para ser instalado por meio do repositório oficial do PostgreSQL, com isso, após adicionar o repositório de pacotes do PostgreSQL no CentOS, por exemplo, basta executar a instalação do pacote mysql_fdw, e então, no banco de dados local, devem ser realizadas as configurações de server, user mapping e outras mais que serão mostradas no decorrer deste artigo.

Configurando o mysql_fdw

A instalação da extensão de FDW para o MySQL é realizada com os pacotes oficiais do PostgreSQL, de acordo com a versão do banco de dados instalada. Para a versão 9.5 que será utilizada nos exemplos a seguir, o repositório oficial pgdg-centos95-9.5-3.noarch.rpm contém o mysql_fdw_95. Antes de realizar a instalação do mysql_fdw_95, é necessário que no servidor em questão tenha sido instalado o cliente de acesso ao banco de dados MySQL, isso porque o PostgreSQL se comunica com o mysql_fdw, que por sua vez se comunica com o cliente do MySQL, que se conecta ao banco de dados MySQL e retorna as informações necessárias. O cliente MySQL instalado para este artigo foi o mysql-community-client, disponível no repositório mysql57-community-release-el6-9.noarch, repositório oficial do MySQL.

Na Listagem 1 é possível verificar o modo de configuração do repositório. Em seguida, temos a instalação do cliente de MySQL ...

Quer ler esse conteúdo completo? Tenha acesso completo