2010-02-14 5 views
3

PostgreSQL 8.4를 사용하고 있습니다. 나는 새로운 unnest() 및 array_agg() 기능을 정말 좋아합니다. 그것들은 그들의 어레이의 다이나믹 프로세싱 잠재력을 깨달을 때입니다!PostgreSQL의 데이터베이스 간 통신

어쨌든 긴 배열을 많이 사용하는 웹 서버 백엔드에서 작업하고 있습니다. 그들의 물리적 기계는 서로 다른 두 가지 연속적인 과정이 될 것입니다. 이러한 각 프로세스는 프론트 엔드의 요청은 물론 각 머신의 데이터베이스에 대한 SQL 쿼리를 관리하는 라이트 파이썬 애플리케이션입니다.

첫 번째 프로세스는 SQL 테이블에 버퍼링 될 Array를 생성합니다. 생성 된 각 Array는 기본 키를 통해 액세스 할 수 있습니다. 완료되면 첫 번째 파이썬 응용 프로그램은 두 번째 파이썬 응용 프로그램에 키를 보냅니다. 그런 다음 다른 컴퓨터에서 실행중인 두 번째 파이썬 응용 프로그램은이를 사용하여 첫 번째 컴퓨터에서 찾은 참조 된 배열을 가져옵니다. 그런 다음 최종 결과를 생성하기 위해 자체 DB에 보냅니다.

내가 키를 보내는 이유는 두 개의 프로세스가 더 빨라질 것이라고 호핑하기 때문입니다. 하지만 필자가 원하는 것은 순차 나열 지연 등을 최소화하기 위해 두 번째 데이터베이스에서 첫 번째 데이터베이스에 쿼리를 보내는 방법입니다.

도움/조언을 보내 주시면 감사하겠습니다.

감사합니다.

답변

1

당신이 원하는 것을 원하십니까 dblink은 (는) 기여하고 있습니다. 이것은 약간의 inter-db postgres 통신을 허용합니다. pg 문서는 훌륭하고 필요한 예제를 제공해야합니다.

+0

이것은있는 것처럼 보입니다. 감사. –

1

확신 할 수 없지만 알림/듣기를 보았습니까? http://www.postgresql.org/docs/8.1/static/sql-listen.html

+0

잘 모르겠습니다. 이 도구를 사용하여 컴퓨터 A에서 실행중인 하나의 전자 메일 관리자 프로세스가 컴퓨터 B에서 실행중인 전자 메일 관리자 프로세스에서 데이터를 보내거나받는 데 파이썬 같은 중간 사람용 응용 프로그램에 데이터를 전달하지 않아도됩니까? –

+0

안녕 니콜라스, 그건 사실 전혀 아니에요. PG 데이터의 복제를 수행하는 pgpool 또는 다른 것과 같은 것이 사용자가 원하는 것일 수 있습니다. 알림/수신하면 비동기 데이터베이스의 변경 사항을 수신 대기 한 다음 데이터를 가져 와서 알림에 대해 작업 할 수 있습니다. 삽입/업데이트시 트리거를 조사 할 수도 있습니다./테이블 X로 삭제하면 트리거가 실행되어 데이터를/data (또는 어디로)로 내보낼 수 있습니다. 그런 다음/데이터에서 파일을 가져올 프로세스가 있습니다. 다음은 원하는 작업을 수행하는 몇 가지 방법입니다. – zie

0

나는 memcache와 같은 캐시를 사용하여 듣거나 알려주는 것으로 생각하고 있습니다. Memcache에 키를 보내고 두 번째 파이썬 앱에서 키를 검색하도록합니다. 듣기/알림으로 할 수도 있습니다. 예 : 키를 보내고 두 번째 앱에 키가 검색 대기중인 Memcache에 있음을 알립니다.

+0

그게 내가 걱정하는 열쇠가 아니야. 이 키는 머신 B가 관련 머신을 머신 A에서 선택하기 위해 사용됩니다. 내가 원하는 것은 머신 B의 포스트 마스터에게 머신 B의 포스트 마스터에게 프로세스 간 통신을 최소화하도록 요청하는 것입니다. 기본적으로, 나는 파이썬을 지나쳐서 무서워한다. 배열은 시간과 자원을 낭비 할 것이다. 나는 말할 수 있기를 바랄 것입니다 : SELECT from machineA.db.table WHERE key = $ 1 etc. 귀하의 우려에 감사 드리며 매우 불분명 함으로 인해 사과드립니다.) –