5.13. Dados estrangeiros #

O PostgreSQL implementa partes da especificação SQL/MED [39] [40], permitindo acessar dados que residem fora do PostgreSQL usando consultas SQL regulares. Esses dados são chamados de dados estrangeiros. (Note que isso não deve ser confundido com chaves estrangeiras, as quais são um tipo de restrição no banco de dados.)

Os dados estrangeiros são acessados com a ajuda de um empacotador de dados estrangeiros. Um empacotador de dados estrangeiros é uma biblioteca que pode se comunicar com uma fonte de dados estrangeira, ocultando os detalhes da conexão com a fonte de dados e obtenção dos dados dessa. Existem alguns empacotadores de dados estrangeiros disponíveis como módulos contrib; veja Apêndice F. Outros tipos de empacotadores de dados estrangeiros podem ser encontrados como produtos de terceiros. Se nenhum dos empacotadores de dados estrangeiros existentes atender às suas necessidades, você poderá escrever o seu próprio; veja Capítulo 58.

Para acessar dados estrangeiros, primeiro é necessário criar um objeto servidor estrangeiro, que define como se conectar a uma determinada fonte de dados estrangeira, segundo o conjunto de opções usadas pelo empacotador de dados estrangeiros de apoio. Depois é necessário criar uma ou mais tabelas estrangeiras, que definem a estrutura dos dados remotos. Uma tabela estrangeira pode ser usada em consultas como uma tabela normal, mas uma tabela estrangeira não tem armazenamento no servidor PostgreSQL. Sempre que for ser usada, o PostgreSQL vai solicitar ao empacotador de dados estrangeiros que vá buscar os dados da fonte estrangeira, ou que transmita os dados para a fonte estrangeira no caso de comandos de atualização.

O acesso aos dados remotos pode exigir autenticação na fonte de dados estrangeira. Essas informações podem ser fornecidas por um mapeamento de usuários, que pode fornecer dados adicionais, tais como nomes de usuários e senhas, baseado na função de banco de dados (role) corrente do PostgreSQL.

Para informações adicionais veja: CREATE FOREIGN DATA WRAPPER; CREATE SERVER; CREATE USER MAPPING; CREATE FOREIGN TABLE; e IMPORT FOREIGN SCHEMA.

Figura 5.1. Componentes da interface empacotadora


A interface do empacotador (wrapper) ilustrada na figura acima inclui extensões SQL para definir servidores estrangeiros, tabelas estrangeiras e empacotadores de dados estrangeiros. Fonte: SQL/MED — A Status Report (veja nota abaixo)



[39] SQL/MED significa Management of External Data (Gerenciamento de Dados Externos), uma parte do padrão SQL que trata de como um sistema de gerenciamento de banco de dados pode integrar dados armazenados fora do banco de dados. (PostgreSQL Wiki) (N. T.)

[40] SQL/MED — A Status Report: As especificações SQL/MED podem ser divididas em duas grandes partes. A primeira parte, chamada de interface empacotadora (wrapper), oferece recursos para visualizar dados estrangeiros gerenciados por uma ou mais fontes estrangeiras (formalmente conhecidas como servidores estrangeiros) simplesmente como um conjunto de tabelas SQL (formalmente conhecidas como tabelas estrangeiras). Os dados estrangeiros podem ser armazenados em sistemas de arquivos, em páginas da Web formatadas em HTML, em documentos XML ou em alguns outros repositórios especializados. A segunda parte do SQL/MED, chamada de datalinks, oferece recursos para permitir que um servidor SQL controle o gerenciamento da integridade referencial, recuperação e autorização de dados que residem em um ou mais sistemas de arquivos. (N. T.)