apollo89 요즘 읽고 있는 책
프로그래머의 길,멘토에게 묻다
데이브 후버,애디웨일 오시나이 공저/강중빈 역
프로그래머 그 다음 이야기
임백준 등저
대규모 서비스를 지탱하는 기술
이토 나오야,다나카 신지 공저
존 맥아더의 성경,이렇게 믿어라
존 맥아더 저
아이디어맨 Idea man
안진환 역/폴 앨런 저
예스24 | 애드온2

내가 하고자 한 것은....
A서버의 AA DB에서 table A1 이 있고
B서버의 BB DB에서 table B1 이 있을때,

A서버의 client 에서 A1테이블과 B1테이블을 조인하고자 한다..

물론 JDBC로 두 DB를 연결해서 join 프로그램을 짜도 되는데...

그냥 할수 있는 방법이 없을까 고민하다가 이런 방법을 찾게 되었다.

CREATE TABLE TestB1 (
  `SEQ` bigint(20) NOT NULL,
  `NODEID` varchar(10) default NULL,
  `NAME` varchar(128) default NULL,
...
  `DEL_YN` char(1) default 'Y'
  PRIMARY KEY  (`SEQ`)
) ENGINE=FEDERATED DEFAULT CHARSET=utf8
 CONNECTION='mysql://mysqluserid:mysqluserpw@B서버Domain:3306/BB/B1';

위의 쿼리를 서버 A의 AA DB에 생성을 하게되면, AA DB에서 TestB1 를 통해서 B서버의 BB DB의 B1테이블에 대한 insert, update, delete, select 을 할 수 있다. (물론 Join도...)

PS. Federated Tables기능을 사용하기 위해서는 Mysql 컴파일시 Configure에서 "-with-federated-storage-engine " 옵션을 주어야 한다. (MySQL 5.0.3 or newer. )
트랜젝션 처리도 안된다고 하며, B서버의 BB DB에 대한 접속정보가 노출되므로 주의..

참고 :
http://dolba.net/tt/k2club/entry/Mysql-FEDERATED-Tables-DB-Link (새 창으로 열기)
http://blackbull.tistory.com/31 (새 창으로 열기)

─ tag  , ,
Trackback URL : http://apollo89.com/blog/trackback/373
openclose