[Postgresql] DBLink

주성민·2022년 8월 5일
1
post-thumbnail

PostgreSQL에서 작업을 하던 중 다른 데이터베이스와 Join을 해야하는 경우가 생겨 이것 저것 찾아보던 중 DBLink를 알게 되어 포스팅하게 되었다.

Postgresql은 데이터베이스(Database)와 스키마(Schema) 두 개의 개념을 가진다고 한다.

Database가 Schema의 상위 개념이라고 하는데, Mysql에서 Database의 개념이 PostgreSQL에서 Schema의 개념과 유사하다고 한다.

A(Database)

  • A1(Schema)
  • A2(Schema)

B(Database)

  • B1(Schema)
  • B2(Schema)

나의 경우에는 A1(Schema)과 B2(Schema)를 Join을 해야하는데 이럴 경우 DBLink를 사용해야 한다고 한다.
(같은 데이터베이스 내의 Schema 끼리는 Join이 가능하다고 한다.)

우선 DBLink를 사용하기 위해서는 관련 모듈을 Database에 설치하여야 한다.

create extension dblink;

잘 설치가 되었다면 DBLink에 어떤 데이터베이스를 연결할 것 인지 정보를 입력하여야 한다.

SELECT dblink_connect('{A}', 'hostaddr={B} port={C} dbname={D} user={E} password={F}');

A: 해당 연결에 대한 별칭
B: 연결할 데이터베이스 주소
C: 데이터베이스 포트 정보
D: 데이터베이스 이름
E: 유저 이름
F: 유저 패스워드

OK를 확인했다면 DBLink가 정상적으로 연결되었다는 뜻이다.

select *
from dblink
('{A}',
'{B}') as {C} (
{D}
)

A: DBLink의 별칭
B: 사용할 쿼리
C: 테이블 별칭
D: 사용할 쿼리에 대한 컬럼 타입

DBLink를 통해 쿼리를 사용하였고, 완료하였다면 마지막으로 DBLink를 종료시켜 주어야 한다.

SELECT dblink_disconnect('A');

A: DBLink의 별칭

PostgreSQL에서 별도로 Database와 Schema를 구분해 둔 이상 최대한 DBLink를 사용하지 않는 방향으로 설계하는 것이 좋지 않을까 생각해본다.

profile
Java Dev

0개의 댓글