Q&A

  • 두개 서버 database를 bde query이용해서 조인할려면?
여기저기 찾아봤는데 답이 안나와서 이렇게 질문드립니다.

저희회사에는 서버가 2개 있습니다.

서버1에는 각장비 장애정보 db가 있고, 서버2에는 각장비 사용정보 db가 있습니다.

각 장비에 대한 사용량대비 장애량을 산출하는 쿼리를 작성해야 하는데

즉, 두개의 db를 조인해야 한다는 얘기지요~

현재 odbc와  bde query컴포넌트를 써서 연결하는건 알겠는데...

문제는 query컴포넌트의 속성중 데이타소스는 하나밖에 선택을 못하잖아요??

두대의 서버를 연결해서 컬럼값을 가지고 올려면 데이타소스를 두개 선택해야 하는데..

방법이 없나요??
---<질문의 요지>-----------------------------------------
저의 생각은 이렇습니다.
서버1과 연결된 bde query1, datasource1
서버2와 연결된 bde query2, datasource2

즉,각 서버를 각 각 연결하면 데이타는 불러올 수 있겠죠?
문제는 두 데이타를 조인해서 하나의 그리드(dbgrid 또는 stinggrid)에 뿌려 줘야 한다는건데...
어떻게 하는지 모르겠습니다.
쿼리문과 컴포넌트 설정,기타 기반사항을 어떻게 설정하는지 도무지 모르겠습니다.
-----------------------------------------------------------------
고수님들의 고견 부탁드립니다.
2  COMMENTS
  • Profile
    권익수 2010.06.25 01:53
    만약 오라클이나 MS-SQL 같은 DB를 사용한다면 델파이 자체로 해결하려고 하지말고 DB에서 해결방법을 찾아보세요.
    오라클의 경우 Link 라는 기능을 사용하면 두개의 다른 DB를 서로 연결할 수 있습니다.
    마찬가지로 MS-SQL에서도 두개의 다른 DB를 설정을 통해 연결할 수 있습니다.
  • Profile
    이도형 2010.08.16 19:08
    현재 프로그램 완성했습니다.
    저 처럼 서로다른 서버를 연결해야 한다면 아래와 같이 해보세요~
    a서버,b서버가 있다면
    1.a서버에서 b서버로 dblink를 하나 만드세요~
    방법은 인터넷에 많이 있습니다. tnsnames.ora 파일보면 알리아스있는데 그거 사용해서 sqlplus실행창에서 연결하세요~

    2.dblink가 되었다면 쿼리하나로 a와 b서버의를 테이블의 내용을 마음데로 불러올 수 있습니다.

    3.데이타가 많으면 dblink는 엄청 느립니다.(풀스캔을 해서 그렇겠지요??)

    4.이럴땐 a서버에 temporary table을 만들어서...
    조건에 맞는 소규모 데이타만 a내용 따로 b내용 따로 temporary table에 집어넣으세요
    간략하게 설명하면
    4.1 a서버에 a서버용 temporary table을 하나 만들고 =atable
    a서버에 b서버용 temporary table을 하나 만들고 =btable
    4.2 조건에 맞는 a의 내용을 atable에 insert합니다
    다시 조건에 맞는 b의 내용을 btable에 insert합니다.
    4.3 이렇게 되면 쿼리 하나로 atable,btable을 select할 수 있습니다.

    4.4 atable에 insert, btable에 insert,다시 쿼리 하나로 두 테이블 select가 하나의 transaction입니다.
    고로, insert할때부터 transaction 하고 select하고 open 한다음에 commit처리 하시면 됩니다.