트랜잭션
- 트랜잭션은 데이터베이스의 논리적 연산단위
- 계좌이체를 통해 트랜잭션을 설명할 수 있음
- 돈을 보내는 사람의 계좌에서 이체금액을 차감하고, 돈을 받는 사람의 계좌에 이체금액을 가산
- 계좌이체라는 업무는 위와 같은 두 가지 단계로 진행되며, 데이터 정합성을 위해 위 작업은 전부 실행되든지 아니면 전부 취소되든지 해야 함
- 즉, 하나의 업무 단위로 묶여서 처리돼야 한다는 것이고 이러한 업무 단위를 트랜잭션이라고 함
부연 설명
- 계좌이체를 하기 위해서는 먼저 A 고객의 잔고에서 이체금액을 차감하고, B 고객의 잔고에 이체금액을 가산해야 함
- 중요한 것은 잔고를 차감하고 가산하는 단계가 모두 완료된 후에 커밋을 수행하는 것
- 잔고 차감/가산 단계가 모두 성공해야지만 커밋이 수행되어 정상적인 데이터를 반영할 수 있음
데이터 모델링의 트랜잭션
- 데이터 모델링 진행 시에도 트랜잭션을 표현할 수 있음
- 아래 모델에서 고객이 상품을 구매하면서 발생하는 것이 주문이며 하나의 주문은 여러 개의 상품을 구매할 수 있음
- 해당 모델은 주문이 발생하면 주문상세 데이터도 함께 발생함
- IE 표기법에서는 필수적인 관계일 경우 관계선 끝에 원을 붙이지 않으며 바커 표기법은 필수일 경우 관계선을 실선으로 표기함
- 해당 모델은 주문이 발생하면 주문상세 데이터도 함께 발생함
- 아래 모델은 주문과 주문상세 모델의 관계가 선택적임을 표현
- 하지만 일반적인 쇼핑몰 업무에서는 선택적일 수 없음
- 대부분의 관계는 선택적인 경우가 더 많기 때문에 모델 작성자가 습관적으로 선택적 관계로 표현했을 가능성이 큼
- 모델 작성자는 이를 꼭 인지하고, 습관적으로 관계의 선택사양을 간과하고 있는지 고려해봐야 함
- 일반적인 쇼핑몰 모델에서 주문과 주문상세는 [그림 I-2-18]이 올바른 모델
- 해당 모델은 주문과 주문상세의 데이터가 태생적으로 동시에 발생된다면, 당연히 계좌이체의 경우처럼 하나의 트랜잭션으로 묶어서 처리해야 함
- 트랜잭션을 하나로 묶는다는 것은 `All or Nothing`인 원자성이 보장되도록 개발을 해야 한다는 것
- 즉, 커밋 (Commit)의 단위를 하나로 묶어야 함을 의미
참고
SQL 전문가 가이드 2020 개정판 - 한국데이터산업진흥원
반응형
'DB > SQL 전문가 가이드' 카테고리의 다른 글
[과목 I 2장 5절] 본질식별자 vs. 인조식별자 (0) | 2025.03.17 |
---|---|
[과목 I 2장 4절] Null 속성의 이해 (0) | 2025.03.17 |
[과목 I 2장 2절] 관계와 조인의 이해 (1) | 2025.03.17 |
[과목 I 2장 1절] 정규화 (0) | 2025.03.17 |
[과목 I 1장 5절] 식별자 (0) | 2025.02.23 |