GOLDILOCKS 는 XA 트랜잭션간 데이터 소실을 방지하기 위해 2단계 커밋을 지원합니다.
사진은 G1, G2 그룹에 대해 글로벌 트랜잭션이 발생한 뒤 커밋을 수행했을 때의 로직입니다.
Prepare Commit 단계
1. APP 는 G1N2 노드에 Prepare Commit Protocol 을 전송합니다.
2. G1N2 노드는 자기자신 노드에 Prepare Commit 을 수행함과 동시에 Global Coordinator 인 G1N1 장비로 Prepare Commit Protocol 을 전송합니다.
3. G1N1 장비는 트랜잭션에 참여하는 모든 노드의 cserver 에 Prepare Commit Protocol 을 전송합니다.
4. 응답받은 각 장비는 Prepare Commit 을 수행 후 G1N2 장비로 응답 프로토콜을 전송합니다.
5. 모든 장비로부터 Prepare Commit Protocol 을 받은 G1N2 장비는 APP 로 Prepare Commit 되었다는 응답을 전송합니다.
Commit 단계
6. APP 는 G1N2 노드에 Commit Protocol 을 전송합니다.
7. G1N2 노드는 자기자신 노드에 Commit 을 수행함과 동시에 Global Coordinator 인 G1N1 장비로 Commit Protocol 을 전송합니다.
8. G1N1 장비는 트랜잭션에 참여하는 모든 노드의 cserver 에 Commit Protocol 을 전송합니다.
9. 응답받은 각 장비는 Commit 을 수행 후 G1N2 장비로 응답 프로토콜을 전송합니다.
10. 모든 장비로부터 Commit Protocol 을 받은 G1N2 장비는 APP 로 Commit 되었다는 응답을 전송합니다.
GOLDILOCKS 는 CLUSTER_ASYNC_COMMIT 프로퍼티 설정을 통해 다음 2가지중 한가지를 선택할 수 있습니다.
1. 요청한 APP 으로부터 위의 단계를 전부 수행후 응답
2. 요청한 APP 으로부터 드라이버 노드 COMMIT 후 APP 으로 바로 응답
'Database > Goldilocks' 카테고리의 다른 글
[GOLDILOCKS] ODBC - SQLAllocHandle, SQLFreeHandle 사용법 (0) | 2018.06.22 |
---|---|
[GOLDILOCKS] ANALYZE 구문으로 옵티마이저 최적화하기 (0) | 2018.06.21 |
[GOLDILOCKS] TRANSACTION 의 종류 및 동작 방식 알아보기 (0) | 2018.06.13 |
[GOLDILOCKS] 스키마 생성 및 소유자 부여, 스키마 패스 설정하기 (0) | 2018.06.08 |
[GOLDILOCKS] USER 와 SCHEMA 의 관계 알아보기 (0) | 2018.06.08 |