트랜잭션(Transaction)
트랜잭션은 작업의 완전성을 보장하며, 사용자의 작업셋을 모두 완벽하게 처리하거나 처리하지 못하면 원상태로 복후하는걸 원칙으로 두고 있다.
ACID(트랜잭션의 특징)
1. Atomicity(원자성)
- 트랜잭션은 작업 단위로 분할되지 않고, 전체 작업이 성공 또는 실패로 완료됩니다.
- 모든 작업이 반드시 수행되거나 전혀 수행되지 않아야 합니다.
- 더이상 쪼개질 수 없는 가장 작은 단위
2. Consistency(일관성)
- 트랜잭션이 시작하기 전과 끝난 후에 데이터베이스는 일관된 상태여야 합니다.
- 트랜잭션 실행 전과 실행 후에 데이터베이스의 무결성 규칙을 준수해야 합니다.
- 예를 들어 마지막 한 개 남은 상품을 동시에 2명의 고객이 주문할 수 없도록, 카드 한도 초과되려고 하는데 동시에 2가지 아이템을 주문할 수 없도록
3. Isolation(고립성)
- 복수의 트랜잭션이 동시에 실행 중이더라도, 각 트랜잭션은 다른 트랜잭션의 작업에 영향을 받지 않아야 합니다.
- 각 트랜잭션은 격리되어 실행되어야 합니다.
- 독립되지 않으면 발생할 수 있는 문제
4. Durability(지속성)
- 트랜잭션이 성공적으로 완료되면 그 결과는 영구적으로 저장되어야 합니다.
- 시스템의 장애나 다운 시에도 데이터의 일관성을 유지해야 합니다.
언두로그(Undo log)
언두로그는 데이터베이스 관리 시스템(DBMS)에서 트랜잭션 처리에 사용되는 중요한 메커니즘 중 하나이다. 언두로그는 트랜잭션 롤백, 일관성 유지, 데이터 복구 및 병행 제어를 지원하기 위해 사용된다.
1. 트랜잭션 롤백
- 언두로그는 트랜잭션의 모든 변경 사항을 기록하는데 사용된다.
- 트랜잭션 실행 중에 오류가 바랭하거나 롤백이 필요한 경우, 이로그를 사용하여 트랜잭션의 모든 변경 사항을 원래 상태로 복구할 수 있다.
2. 일관성 유지
- 트랜잭션 실행 중에 DBMS는 Undo log를 사용하여 변경 상황을 임시로 저장한다.
- 트랜잭션이 완료되기 전에 변경 사항을 데이터베이스에 적용하지 않고, 다른 트랜잭션이 읽지 못하도록 하는 중요한 역할을 한다.
3. 데이터 복구
- 데이터베이스 시스템의 크래시 또는 장애 발생 시 Undo log는 데이터베이스를 이전 상태로 복구하는 데 사용된다.
- 이전 상태로의 복구를 위해 Undo log에서 저장된 변경 사항을 역순으로 적용함으로써 데이터 일관성을 복구한다.
4. 병행 제어
- 병행 처리 환경에서 여러 트랜잭션의 동시 실행을 관리하기 위해 Undo log는 변경 사항을 기록하고 트랜잭션 간 충돌을 방지하는데 사용된다.
구성 요소
- 트랜잭션 id : 어떤 트랜잭션에 대한 Undo log인지 식별하기 위한 고유한 트랜잭션 식별자
- 페이지 번호 : 변경된 데이터 페이지를 가리키는 정보
- 이전 데이터 값 : 변경되기 전 데이터의 값
- 연산 유형 : 트랜잭션에서 수행한 연산(삽입, 업데이트, 삭제)을 나타내는 정보
'강의 및 강연 > 원티드 프리온보딩 챌린지' 카테고리의 다른 글
프리온보딩 백엔드 챌린지(DB) - DB기본기 다지기 1 - (0) | 2023.10.15 |
---|---|
프리온보딩 백엔드 챌린지(JAVA) - CleanCode 작성법 - (0) | 2023.09.05 |