0. 질문에 대한 답변
트랜잭션(Transaction)은 데이터베이스에서 하나의 논리적인 작업 단위를 의미하며, 데이터의 무결성과 일관성을 보장하기 위해 ACID 특성을 만족해야 한다.
1. 개념 & 핵심
- 트랜잭션(Transaction): 데이터베이스에서 작업의 단위로, 모두 성공하거나 모두 실패해야 하는 일련의 연산 집합
- 핵심: 원자성(Atomicity), 일관성(Consistency), 독립성(Isolation), 지속성(Durability) → ACID 특성
2. 등장배경 & 목적
- 등장배경: 데이터베이스에서 다중 사용자 환경이나 시스템 장애 발생 시 데이터 무결성 보장이 필요
- 목적: 작업 중간 실패 시에도 데이터베이스가 일관된 상태를 유지하도록 함
3. 역할
- 여러 작업을 하나의 단위로 묶어 일관된 처리 보장
- 에러 복구 및 롤백을 통해 데이터 보호
- 동시성 제어를 통해 사용자 간 간섭 최소화
4. 활용 계층 또는 범위
- 주로 애플리케이션 계층 및 데이터베이스 관리 시스템(DBMS) 계층에서 구현
- 분산 트랜잭션의 경우 다수의 시스템에 걸쳐 처리되기도 함
5. 구성요소
- Begin Transaction: 트랜잭션 시작
- Read/Write 연산: 데이터에 대한 조작
- Commit: 변경사항 확정
- Rollback: 오류 발생 시 작업 취소
6. 시간순 작동 순서
1. 트랜잭션 시작 (BEGIN
)
2. 데이터 읽기 및 쓰기 (READ
, WRITE
)
3. 오류 없으면 COMMIT
4. 오류 발생 시 ROLLBACK
5. 트랜잭션 종료
7. 종류
- Flat Transaction: 기본 트랜잭션 구조
- Nested Transaction: 트랜잭션 내에 하위 트랜잭션 포함
- Distributed Transaction: 다중 노드 간 트랜잭션
- Compensating Transaction: 롤백이 어려운 경우 보상 작업 수행
8. 장단점
장점
- 데이터 무결성 및 일관성 보장
- 오류 회복 용이
- 동시성 제어 가능
단점
- 과도한 롤백 및 락 발생 시 성능 저하
- 복잡한 트랜잭션 관리 필요 (특히 분산 환경)
9. 전망 & 개선점
- NoSQL 환경에서의 BASE(Basically Available, Soft state, Eventually consistent) 모델 등 트랜잭션 대체 모델 등장
- 마이크로서비스 아키텍처(MSA)에서의 SAGA 패턴, 2PC(Two-Phase Commit) 등으로 진화 중
- 성능 개선을 위한 비동기 처리 기술과 병행 사용 확대
10. 어린이 버전 요약
트랜잭션은 마치 블록 쌓기 게임처럼, 전부 다 쌓아야 성공이고, 하나라도 무너지면 처음부터 다시 하는 거예요. 덕분에 블록이 언제나 잘 정리돼 있어요!