2012-09-02 6 views
1

PostgreSQL에서 Informix (두 버전의 최신 버전) 연결을 설정하는 데 도움을주십시오. PostgreSQL에서 Informix에 대한 쿼리를 수행하고 싶습니다. 모든 쿼리에 대해 Informix에서 데이터 내보내기 및 PostgreSQL로 가져 오기를 요구하지 않는 솔루션을 찾고 있습니다.PostgreSQL에서 Informix와 통신하고 있습니까?

PostgreSQL에서 매우 새로운 기능이므로 자세한 지침이 필요합니다.

답변

2

사용중인 버전을 밝히지 않았습니다. 알고 있어야 할 몇 가지 한계가 있지만 광범위한 선택이 있습니다.

이것이 가져 오기/내보내기라고 했으므로 읽기 전용 옵션으로 충분하지 않다고 가정합니다. 이는 PostgreSQL 9.1의 외부 데이터 래퍼 시스템을 배제합니다.

버전에 따라 David Fetter의 DBI-Link가 원격 테이블에서 쿼리를 실행할 수 있으므로 사용자의 요구에 맞을 수 있습니다 (https://github.com/davidfetter/DBI-Link 참조). 그것은 잠시 동안 업데이트되지 않았지만 구현은 버전간에 꽤 안정적이고 사용 가능해야합니다. 실패 할 경우 신뢰할 수없는 언어 (PL/PythonU, PL/PerlU 등)로 저장 프로 시저를 작성하여 Informix에 연결하고 거기에서 쿼리를 실행할 수 있습니다. 이 경우에 처리 할 트랜잭션 처리에 대한 제한 사항이 있으므로 지연된 제한 조건 트리거를 사용하여 다른 테이블에서 모든 쿼리를 실행하여 모든 것이 커밋 시간에 실행되도록 할 수 있습니다.

편집 : 깨끗한 방법이 나에게 발생했습니다. 가져 오기에 외부 데이터 래퍼를 사용하고 내보내기에 별도의 클라이언트 앱을 사용하십시오.

이 접근 방식에서는 네 가지 기본 구성 요소를 갖게되지만 느슨하게 결합되어 적절한 트랜잭션 제어가 적용됩니다. 원하는 경우 2 단계 커밋을 사용할 수도 있습니다. 네 가지 구성 요소는 다음과 같습니다 (여기서는 완전한 작동 예제는 제공하지 않지만 하나 이상의 로드맵은 제공하지 않음).

  1. Informix의 데이터를 볼 수있는 외부 데이터 래퍼.
  2. 내보낼 데이터의 뷰입니다.
  3. 원하는 언어로 작성된 내보내기 기능을 관리하는 외부 응용 프로그램입니다. 이것은 NOTIFY export_informix

알림 커밋 그래서 기본적으로 당신이 당신의 거래에 2 단계가에 riased하는 인상 내보낼 데이터의 관점을 기본 테이블에 LISTEN export_informix;

  • 트리거 같은 채널에서 수신 대기 이 방법은 :

    1. 내보낼 데이터를 플래그로 지정하여 PostgreSQL에 데이터를 씁니다. 범하다.
    2. PostgreSQL의 데이터를 읽고 Informix로 내 보냅니다. 양쪽에서 커밋 (TPC?).
  • +0

    평상시처럼 DBI-Link를 가리키며, 유감스럽게도 informix를 사용하여 샘플 코드, 설정 절차를 수행하는 방법이 하나도 없습니다. perl/python과 동일합니다. 내 응용 프로그램은 정기적 인 쿼리를 사용하여 거의 변경되지 않으며 Informix 및 Postgres의 최신 버전이므로 모든 것을 설치하고 구입할 수 있습니다. –

    +0

    두 경우 모두 다른 db와 마찬가지로 사용합니다. –

    +0

    내 말은 트랜잭션이 끝날 때 연결하는 것이 좋습니다. 예를 들어 데이터를 푸시하는 경우 CONSTRAINT 트리거를 사용하여 코드를 실행하고 지연시킵니다. 그렇지 않으면 표준 PL 참조 및 다른 db에 연결하기 위해 선택한 언어 참조를 사용하여 씁니다. 예를 들어 PL/J를 사용하는 경우 Informix에 대한 JDBC 연결을 만들어 다른 JDBC 연결과 같이 사용합니다. PL/Perl을 사용하면 DBI를 사용하고 다른 DBI 연결처럼 사용할 수 있습니다. –

    2

    Chris Travers가 말했듯이, 당신이하고자하는 것은하기 쉽지 않습니다.

    이론 상으로는 Informix를 사용하여 PostgreSQL에 액세스해야하는 경우 Enterprise Gateway Manager (EGM)를 구입하고 사용할 수 있으며 PostgreSQL 용 ODBC 드라이버를 사용하여 Informix가 PostgreSQL에 연결할 수 있습니다. EGM은 실제로 PostgreSQL에 실제로 액세스하는 동안 다른 Informix 데이터베이스 인 것처럼 보이도록 최선을 다할 것입니다. (PostgreSQL이 지원된다는 것을 검증하지는 않았지만, EGM은 기본적으로 ODBC 드라이버가 필요하기 때문에 문제가 없어야합니다. 아마도 '유명한 마지막 단어'일 것입니다.) 여기에는 2PC (2 단계 범하다); 완벽하지는 않지만 적당히 가깝습니다.

    역 연결 (PostgreSQL에서 작업하고 Informix에 연결)의 경우 PostgreSQL 도구 모음 또는 다른 소스를 찾아야합니다.

    +0

    PostgreSQL 도구 모음이란 무엇입니까? 이 기능에 대한 링크를 제공해 주시겠습니까? –

    +0

    PostgreSQL과 함께 제공되는 모든 도구를 의미합니다. 필자는 제품에 대한 자세한 지식이 없지만 PostgreSQL 데이터베이스에 액세스하는 코드를 작성하는 방법이 있으며 PostgreSQL 데이터베이스를 관리하는 다른 지원 도구가있을 수 있으며 그 곳의 어딘가에 유용한 것이있을 수 있습니다. 아니면 ... 내가 말했듯이, 나는 모른다. –

    +0

    좋아, 해결 했어. 모든 것이 간단합니다 : PostgreSQL에서 파이썬 프로 시저를 생성하고 그 위에 뷰를 생성했습니다. dbaccess를 호출하여 Linux 파이프와 PostgreSQL을 통해 데이터를 푸시하는 프로시 저는 PostgreSQL 테이블로 복사 한 다음 프로 시저로 복사 한 다음 표시합니다. 시스템 호출로 인해 속도가 약간 느려지지만, 원하는대로 DB 벤더에 사용할 수 있습니다. Informix에서도 마찬가지입니다. –

    관련 문제