Você está na página 1de 19

DBLink

Profa. Me Monica Tissiani De Toni Pereira


Esquema Global - BDD
Esquema Global - BDD
Funcionario

Cargo

Projeto Projeto_Funcionario
Esquema Base 1
Esquema Base 1
Cargo Funcionario

Projeto

Projeto_Funcionario
Esquema Base 2
Esquema Base 2
Funcionario
Projeto

Projeto_Funcionario
SGBD PostgreSQL
DBLink

Base1 Base2

Site 1 Site 2
Habilitando conexões remotas
• Alterar o arquivo pg_hba.conf

# TYPE DATABASE USER ADDRESS METHOD

# IPv4 local connections:


host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#host replication postgres 127.0.0.1/32 md5
#host replication postgres ::1/128 md5
Criação dos esquemas
distribuídos
• Criar dois bancos de dados no
PostgreSQL, chamados Base1 e
Base2.
• Rodar os scripts apropriados em
cada uma das bases de dados.
Habilitando a extensão dblink

CREATE EXTENSION dblink;


Criando a conexao

SELECT dblink_connect('conexao', 'host=localhost


dbname=Base2 user=postgres
password=postgres');
Inserindo dados na base remota

SELECT dblink('conexao', 'INSERT INTO projeto


VALUES(9,''projeto1'',''local1'')');
Lendo os dados da base remota

SELECT * from dblink('conexao', 'select pno,


pnome, localizacao from projeto')
AS proj1(pno integer, pnome varchar, localizacao
varchar);
Atualizando dados remotamente

SELECT dblink('conexao', 'UPDATE projeto set


localizacao = ''Chapeco'' where pno = 9');
Excluindo dados remotamente

SELECT dblink('conexao', 'DELETE FROM projeto


where pno = 9');
Recuperando os dados das tabelas
funcionario a partir da Base1

select * from funcionario


union
SELECT *
FROM dblink('conexao', 'select fno, fnome, cod_cargo from
funcionario')
AS func2(fno integer, fnome varchar, cod_cargo integer);
Recuperando dados dos funcionarios
de ambas as bases de dados

select * from funcionario f, cargo c where f.cod_cargo=


c.cod_cargo
union
SELECT *
FROM dblink('conexao', 'select fno, fnome, cod_cargo from
funcionario')
AS func2(fno integer, fnome varchar, cod_cargo integer),
cargo where func2.cod_cargo = cargo.cod_cargo;
Exercícios:
Execute as instruções SQL no BDD para:
1. Mostrar o nome e o cargo de todos os funcionários.
2. Mostrar o nome e o cargo de todos os funcionários que trabalham
nos projetos de Nova York.
3. Obter o somatório dos salários dos funcionários de ambas as bases
de dados.
4. Obter o nome dos funcionários, suas responsabilidades nos
projetos e o nomes dos projetos onde trabalham, de ambas as
bases de dados.

Você também pode gostar