예전 저의 티스토리 조회수 top3 글 중 하나를 옮겨보았습니다.
원본 : https://nowod.tistory.com/13
XA : eXtended Architecture의 줄임말로 말 그대로 확장된 아키텍쳐이다.
Non-XA : XA의 용어를 활용해보면 확장되지 않은 아키텍쳐이다.
트랜잭션 : 거래의 최소 단위이다. 보통 All or Nothing 이라고 얘기한다.
즉 거래라는 것은 서로간의 교환인데 한쪽만 성공한다면 데이터가 망가지기 때문에 정합성을 유지하기 위한 단위라고 볼 수 있다.
일반적으로 DB 트랜잭션의 정합성 유지를 위해 XA 또는 NON-XA를 사용한다.
NON-XA : 기본적인 로컬 트랜잭션.
사용하는 DB가 하나일 때 Non-XA로 단순하게 Commit과 Rollback을 처리할 수 있다.
조금 자세히 설명하자면, DB에 세션 하나에 하나의 트랜잭션을 모두 담아 놓고, 둘다 성공하면 커밋하고 하나라도 실패하면 세션을 롤백 시킨다.
XA : 확장된 아키텍쳐라는 말처럼 DB가 여러개 이거나, 트랜잭션의 주체가 여러개일 때 사용할 수 있다. (그 외에도 다양한 상황에서 사용가능하다.)
보통 2pc (two-phase-commit)으로 진행되며, DB가 2개일 때를 예로 간단하게 설명하자면,
이렇게 진행이 된다. 여기서 한쪽이라도 문제가 있다면, 전부 롤백이 된다.
아직 XA를 제대로 활용해본적은 없지만, DB에 정합성에 중요한 역할을 하는 XA, Non-XA에 대해서 간단히 정리해 보았다.