1. 트랜잭션의 정의
트랜잭션은 데이터베이스에서 일련의 작업을 하나의 논리적인 단위로 묶어서 처리하는 것
여러 개의 쿼리 작업(데이터 삽입 , 수정 , 삭제 등)을 하나의 묶음으로 보고
모든 작업이 성공적으로 완료되어야만 데이터베이스에 반영 되며,
중간에 하나라도 실패하면 ** 모든 작업이 취소(롤백(rollback)) ** 됩니다.
2. 트랜잭션을 사용하는 이유 & 중요한 이유
데이터의 일관성을 보장하기 위해서 사용한다.
트랜잭션은 주로 복잡한 여러 작업을 묶어서 처리할때 매우 유용합니다.
트랜잭션이 없다면 데이터베이스의 일부 작업이 실패했을 때 그 전까지의 작업이 그대로 데이터베이스에 남아 있어 데이터 일관성이 깨질 위험이 있습니다.
3. 트랜잭션의 동작과정
1. 트랜잭션 시작 (beginTransaction):
- 트랜잭션 시작 , 이 단꼐에서는 여러 데이터베이스 작업(쿼리)이 실행될 준비를 하고있습니다.
2. 작업 수행:
- 트랜잭션 안에서 여러 데이터베이스 작업이 실행됩니다. 삽입 수정 삭제 등의 작업이 여기 해당합니다.
3. 커밋 (commit):
- 모든 작업이 성공적으로 완료되면 트랜잭션을 커밋하여 그 작업을 데이터베이스에 최종 반영합니다.
- 데이터베이스는 이 상태를 저장하고 트랜잭션은 완료됩니다.
4. 롤백 (rollback):
- 만약 트랜잭션 안에서 오류가 발생하면 트랜잭션을 롤백하여 그동안 진행된 모든 작업을 취소합니다.
데이터베이스는 트랜잭션이 시작되기 전 상태로 돌아갑니다.
4. 트랜잭션의 특징(ACID 속성)
- Atomicity(원자성):
- 트랜잭션의 작업은 모두 성공하거나 모두 실패해야 합니다. 중간에 부분적으로 성공하거나 실패하는 것은 허용되지 않습니다.
- Consistency(일관성):
- 트랜잭션이 완료되면 데이터베이스는 일관된 상태를 유지해야 합니다.
무결성 규칙을 어기는 상태가 되면 안 됩니다.
- 트랜잭션이 완료되면 데이터베이스는 일관된 상태를 유지해야 합니다.
- Isolation (격리성):
- 트랜잭션이 실행되는 동안 다른 트랜잭션의 간섭을 받지 않습니다. 각각의 트랜잭션은 독립적으로 실행되어야 합니다.
- Durability (지속성):
- 트랜잭션이 커밋된 후에는 시스템에 문제가 생기더라도 그 결과가 데이터베이스에 영구적으로 반영 되어야 합니다.
트랜잭션이 사용된 예시 코드
'Back-end > Node.js' 카테고리의 다른 글
JWT 토큰 이란?? (1) | 2024.11.02 |
---|---|
Node.js 공부시 알아야 할 주요 개념과 기능 (0) | 2024.08.01 |