분산 트랜잭션은 트랜잭션과 무엇이 다른가? ?
1. 분산 트랜잭션이란?
1.1. 트랜잭션이란?
먼저 트랜잭션의 정의를 설명합니다.
트랜잭션이란 애플리케이션이 데이터베이스에 대해 insert, update, delete 등의 처리를 실행했을 때의 처리의 그룹으로, 커밋, 혹은 롤백이 실행될 때까지 계속됩니다.
1개의 트랜잭션에 포함되는 처리는 1개라도 좋고 복수 있어도 괜찮습니다.
그러나, 트랜잭션내의 처리가 1개라도 실패했을 경우는 데이터가 불완전한 상태이므로 처리를 개시하기 전에 되돌리고 싶다고 하는 것이 많다고 생각합니다.
예를 들어, 상품이 팔렸을 때 판매 관리 테이블에 수치를 더하여 재고 관리 테이블에서 재고를 줄이는 처리를 하는 애플리케이션의 경우,
판매 관리 테이블로의 갱신은 성공했지만, 재고 관리 테이블에의 갱신은 실패했을 경우, 상품은 팔리고 있는데 재고는 줄어들지 않은 상태가 됩니다.
이것은 이상하기 때문에 일단 판매 관리 테이블도 업데이트하기 전에 다시해야합니다.
이 때 처리의 그룹(=트랜잭션)을 매출 관리 테이블과 재고 관리 테이블의 갱신으로 설정해 두면 2개가 성공해 드디어 커밋. 한쪽이라도 실패하면 롤백한다.
라는 동작을 할 수 있게 됩니다.
한마디로 정리하면(문중에서도 썼습니다만) 트랜잭션(transaction)는 처리의 그룹의 일입니다.
그룹에 몇 가지 처리를 넣을지는 응용 프로그램에서 설정할 수 있습니다.
1.2. 분산 트랜잭션이란?
그럼 드디어 분산 트랜잭션이란 어떤 것인가 하는 이야기가 됩니다.
분산 트랜잭션은 이전 판매 관리 테이블과 재고 관리 테이블의 예에서 말하면 아래 그림과 같은 DB 구성의 경우에 발생합니다.
그림을 보면 차이를 알 수 있다고 생각합니다만, 매출 관리 테이블과 재고 관리 테이블이 다른 DB에 속하고 있습니다.
즉, 트랜잭션이 성공하려면 데이터베이스 1의 판매 관리 테이블을 업데이트하고 데이터베이스 2의 재고 관리 테이블을 업데이트하는 데 성공해야 합니다.
둘 중 하나라도 실패하면 판매 및 재고 계산이 일치하지 않으므로 둘 다 롤백해야합니다.
데이터베이스가 2개가 된 것만으로 실제의 움직임으로서는 원래의 트랜잭션과 같다고 생각해도 좋을 것입니다.
Reference
이 문제에 관하여(분산 트랜잭션은 트랜잭션과 무엇이 다른가? ?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yShig/items/0168e651d6f3ef105f35
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(분산 트랜잭션은 트랜잭션과 무엇이 다른가? ?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yShig/items/0168e651d6f3ef105f35텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)