테이블 복제
본문
안녕하세요,
이전에도 외부db연동건 때문에 질문올렸는데 죄송합니다.
외부db를 연동해서 뿌려줄 때에는 이런저런 오류때문에
다들 내부db로 복제해서 쓴느걸 권장하시는데..
1. 해당게시판에서 외부db연동
2. 외부db table select
3. $result에 담은 후 외부db연동 해제
4. 내부db연동
5. 내부db에 $result insert
이런 흐름이 맞나요?
답변 5
제일 좋은 방법은 외부 DB를 연결하여 프로그램을 만드는 방법이 좋아요
그런데 이 부분을 못하시기 때문에 차선책인 db를 복사 한 후에 작업 하시는 것을 추천하는 것이에요
저번에 작업 방법을 댓글로 남겼는데요.
다시 정리 해드릴게요
board.php나 tail.php 안에 아이프레임으로 파일 한개 만드세요.
그 파일은 사이트 접속시 매번 실행 될 거에요.
아무런 조건이 없으니깐요. 외부 DB에서 내부 DB로 데이터만 복사하닌까요.
1. 아이프레임을 만든다.
2. 대략적인 코딩
2.1 내부 테이블에서 외부 테이블에 시퀀스를 알아낸다.
시퀀스를 저장해야지 외부 테이블 어디까지 저장되었는지 알 수 있죠.
select max(wr_id) as wr_id from 내부 테이블
2.2 외부 DB 조회
select * from 외부 테이블 where wr_id > '외부시퀀스' order by wr_id asc
2.3 조회된 데이터를 내부 테이블에 넣는다.
while( $f = sql_fetch_array( $res ) ){
insert 쿼리 <== 이곳에서 중요한 것은 외부 테이블 시퀀스 번호를 꼭 저장해야 해요. 그래야 다음에 그 번호를 초과한 데이터 부터 복사할 수있어요
}
이렇게 하면 내부 테이블로 시도 때도 없이 접속하여 데이터를 복사하게 될 것이고요.
그럼.. 그누보드 board.php를 순정 상태에서 사용할 수 있어요
결국 외부테이블을 내부서버에 복사해서 사용한다는 것인가요?(나중에 실력이 좀 붙어서 보면 왜 이런짓을 했을까 할 겁니다)
질문의 내용 그대로만 하면 됩니다. 정확한 순서입니다
그런데 복사할 필요없이 외부, 내부 왔다갔다하면서 테이블을 열고 쓰고 하는 방법도 똑 같습니다
다만
4. 내부db연동 --> 이것은 connect를 다시 하는 것이 아니라 $g5['connect_db'] 값만 변경해주면 됩니다
-- 디비해제 즉 mysql_close()는 하지않고 그냥 둡니다
이 작업을 하는 방법이 예전 답변 어디에 설명이 있었을텐데...
이렇게 하는 이유는 그누보드 자체함수를 모두 그대로 사용할 수 있게 하는 것입니다
에를들어 외부 디비에 작업할때도 $result=sql_query("select~~~), sql_query('update~~) 처럼 내부 디비 작업과 동일하게 하면 된다는 말입니다
외부 디비에서 가지고 오는 데이터를
내부 디비와 혼합해서 출력을 해주시는게 아니라면
그냥 비동기 형태의 ajax로 외부 서버와 연동해서
해당 데이터만 배열로 받아서 처리 하시는걸 생각해 보시는것도
나쁘진 않아 보이는데요...
뭐 내부서버와 혼합해서 출력을 하더라도... 그냥 배열로 처리한다음
출력해주시면 될듯한데요
정확하게 어떤 시스템에서 어떤 데이터의 형태인지 알수 없으니..^^
음... 전에 XML이나 JSON으로 데이터를 받아서 보여주는 게시판을 말씀드렸는데, 그 내용이 AJAX와 동일한 내용이나 마찬가지 입니다.
AJAX가 jquery 를 쓰면 어렵지 않은건 사실이나 전혀 모르는 상태에서 개념부터 잡고 들어가려면 이해하시는데 시간이 좀 걸리실겁니다.
같은 문제로 워낙 고생하시는것 같아서 도와드리고 싶어도 간단한 내용이 아니라 참 안타깝네요.
화이팅 입니다~~!!!
xml이나 json 같은 거 필요 없고용,.
그냥 외부 db connect 하나 더 만들어서 사용하시면 됩니다.
연동 방법은 어떻게 하실지 정확한 설계를 하신 다음에 정하시면 됩니다.
질문글을 읽어본 결과 아직 비전공자이거나 초급이신 것 같으신데, 혼자 감당하기는 어려울 경우
경력직의 도움을 받아보세요. 간단한 것인데 아직 경험이 부족하여 헤매시는 것 같습니다.