2014-01-14 3 views
3

누구나 "XA"라고도하는 분산 트랜잭션을 postgresql에서 처리하는 방법을 알려주시겠습니까? 거기에 대한 리소스가 있습니까? 모든 답변을 주셔서 감사합니다.postgresql에서 분산 트랜잭션을 처리하는 방법은 무엇입니까?

+2

PostgreSQL 문서에서 "2 단계 커밋"또는 "준비된 트랜잭션"을 검색하십시오. 일반적으로 관리는 미들웨어/앱 수준입니다. 여기에 친절한 소개 : http://blog.endpoint.com/2010/07/distributed-transactions-and-two-phase.html –

+0

어떤 플랫폼을 사용하고 계십니까? Java라면 JTA를 살펴보십시오. 대부분의 경우 거의 작동하는 XA 지원입니다. 대부분의 XA 구현보다 낫다. –

답변

4

조금 혼란스러워 보입니다.

  • 기본 분산 트랜잭션 및
  • XA 트랜잭션 : 일반적으로 데이터베이스 시스템은 분산 트랜잭션 유형의 두 가지 개념을 지원합니다.

네이티브 분산 트랜잭션은 일반적으로 동일한 RDBMS의 다른 서버 사이에 있습니다. Postgres는 dblink_exec 명령으로이를 지원합니다. 일반적으로 다른 서버에 대한 연결은 데이터베이스 링크라고합니다. Postgres는 다른 상업용 RDBMS를 사용하기에 좀 더 서투른 모양입니다. 먼저 데이터베이스 링크를 사용할 수 있도록 확장을 설치해야합니다. 그러나 postgres rdbms가 트랜잭션을 관리하고 있습니다.

반면 XA 트랜잭션은 외부 트랜잭션 관리자 (TM)에서 관리하며 참여하는 각 데이터베이스는 트랜잭션 관리자와 함께 XA 자원의 역할을 담당합니다. RDBMS는 트랜잭션을 커밋 할 때 더 이상 스스로 결정할 수 없습니다. 이것이 XA 트랜잭션 관리자의 임무입니다. 그는 2PC 프로토콜을 사용하여 변경 사항이 데이터베이스에 일관된 방식으로 적용되거나 롤백되는지 확인합니다.

Windows와 같은 일부 OS에서는 트랜잭션 관리자가 다른 운영 체제의 일부가 아닙니다. 일반적으로 java는 트랜잭션 관리자와 함께 제공되며 XA를 사용하도록 해당 데이터 소스를 구성해야합니다.

+0

답장을 보내 주셔서 감사합니다. 나는 지금 분명하다. –

관련 문제