728x90
트랜잭션의 이해
트랜잭션이란 무엇일까?!
물건을 주문하던 중 네트워크의 오류로 인해 물건이 주문되지 않았다.
그런데 내 주문목록에 보니 물건이 들어있고 며칠 뒤 물건이 집에 도착했다!! 그야말로 창조경제 아닌가?!!
이러한 상황을 미연에 방지하기 위해 내 주문이 취소 될때 네트워크의 오류가 발생하여 내 주문정보와 결재정보 둘중 하나라도 실패하게 되면 모두가 실패하였다고 처리하는 방식 즉, 여러개의 작업들을 하나의 그룹으로 묶어서 처리하는 단위를 뜻한다. 이러한 트랜잭션의 처리 방식을 All or Nothing이라고 한다.
ACID 원칙
트랜잭션은 ACID 원칙을 따른다.
- 원자성(Atomicity)
- 더이상 쪼갤 수 없음을 뜻한다.
- 즉, 주문이 취소되지만 결제가 되거나, 결제가 취소되지만 주문이 되는 것이 아닌 결제취소와 주문취소가 동시에 되거나 둘다 모두 성공하는 하나의 작업이 최소의 단위가 되는 것이다.
- 일관성(Consistency)
- 트랜잭션의 에러 없이 성공적으로 종료되는 경우, 비즈니스의 로직대로 일관성있게 저장되는 것을 뜻한다.
- 즉, 비즈니스 로직에 맞게 1개를 주문하면 1개가 배송되어지는 것이 일관성을 갖는 것이다.
- 격리성(Isolation)
- 여러개의 트랜잭션이 실행될 경우 각각 독립적으로 실행되어야 함을 의미한다.
- 지속성(Durability)
- 데이터 베이스가 종료되어도 데이터는 물리적인 장소에 저장되어 지속적으로 유지되어야 한다.
트랜잭션 커밋(Transaction commit)과 롤백(rollback)
커밋이란?
- 모든 작업을 최종적으로 데이터베이스에 반영하는 명령어
- 커밋을 실행하면 하나의 트랜잭션 과정은 종료된다.
롤백이란?
- 문제가 발생했을 때, 트랜잭션 내에서 수행된 작업들을 취소하는 것
- 트랜잭션 시작 이전의 상태로 되돌아간다.
'Back-End > Spring' 카테고리의 다른 글
[ Spring ] 스프링 컨테이너(Spring Container)는 무엇일까? (0) | 2022.11.14 |
---|---|
[ Spring ] PSA (Portable Service Abstraction)란 무엇일까? (0) | 2022.11.14 |
[ Spring ] Spring Frame Work은 무엇이고 특징은 무엇일까? (0) | 2022.11.14 |
[ Spring ] API 문서화와 Spring Rest Docs는 무엇일까?! (0) | 2022.11.11 |
[ Spring ] Mock이란 무엇일까? (0) | 2022.11.10 |