DB에서 XA란?

ino5·2022년 11월 2일
0

회사에서 사용하는 매퍼 중 이름 뒤에 XA가 붙은 것이 있는데, 해당 매퍼는 서로 다른 여러 DB에 대한 트랜잭션을 하나로 묶을 때 사용하고 있다.

이름 뒤에 XA가 무슨 뜻일지 궁금했다. 그래서 찾아봤다!!

분산 트랜잭션

  • 여러 개의 노드 또는 다른 종류의 데이터베이스가 참여하는 하나의 트랜잭션을 말한다.
  • Distributed Transaction

XA

  • X/Open DTP(Distributed Transaction Processing) 규약
  • XA는 Two-Phase commit을 이용하여 분산 트랜잭션을 처리한다.

Two-phase commit

  • 분산 환경에서 트랜잭션의 무결성을 보장하기 위해서 사용하는 커밋 방법
  • First Phase와 Second Phase가 있다.
  • 사용자의 요청을 받아 트랜잭션을 시작한 노드를 코디네이터 노드라고 한다.
  • 코드네이터 노드에서부터 시작해서 같은 특정 트랜잭션을 수행하는 각 노드들이 커밋할 수 있도록 한다.

First Phase

  • Prepare Phase
  • 커밋을 준비하는 단계
  • 다음 두 단계로 세분화할 수 있다.
    • send "prepare"
    • reply "prepared"
  • send "prepare": 코디네이터 노드로부터 각 노드는 커밋을 준비하라는 메시지를 받는다.
  • reply "prepared": 각 노드는 커밋이 가능한지 검사 후 코디네이터 노드에게 커밋이 준비되었다는 메시지를 전달한다.

Second Phase

  • Commit Phase
  • 실제로 커밋한 기록을 저장하는 단계
  • 다음 두 단계로 세분화할 수 있다.
    • send "commit"
    • reply "committed"
  • send "commit": 코디네이터 노드가 모든 노드에서 커밋이 준비되었다는 메시지를 받았을 때, 실제로 커밋을 실행하라는 메시지를 각 노드에 보낸다.
  • reply "committed": 각 노드는 커밋 후 커밋이 완료되었다는 메시지를 코디네이터 노드에 보낸다.

참고
https://heni.tistory.com/10
https://technet.tmaxsoft.com/upload/download/online/tibero/pver-20150504-000001/tibero_dev/ch04.html

profile
궁금한 것을 찾아보거나 문제를 해결한 과정을 날 것의 글로 작성하였습니다.

0개의 댓글