Back-end/Node.js

Node.js 트랜잭션(Transaction)

NiceKHJ 2024. 9. 12. 14:41

1. 트랜잭션의 정의

트랜잭션은 데이터베이스에서 일련의 작업을 하나의 논리적인 단위로 묶어서 처리하는 것

여러 개의 쿼리 작업(데이터 삽입 , 수정 , 삭제 등)을 하나의 묶음으로 보고 
모든 작업이 성공적으로 완료되어야만 데이터베이스에 반영 되며,
중간에 하나라도 실패하면 ** 모든 작업이 취소(롤백(rollback)) ** 됩니다.

 

2. 트랜잭션을 사용하는 이유 & 중요한 이유

데이터의 일관성을 보장하기 위해서 사용한다.

 

트랜잭션은 주로 복잡한 여러 작업을 묶어서 처리할때 매우 유용합니다.

트랜잭션이 없다면 데이터베이스의 일부 작업이 실패했을 때 그 전까지의 작업이 그대로 데이터베이스에 남아 있어 데이터 일관성이 깨질 위험이 있습니다.

 

 

3. 트랜잭션의 동작과정

1. 트랜잭션 시작 (beginTransaction):

  • 트랜잭션 시작 , 이 단꼐에서는 여러 데이터베이스 작업(쿼리)이 실행될 준비를 하고있습니다.

 

2. 작업 수행:

  • 트랜잭션 안에서 여러 데이터베이스 작업이 실행됩니다. 삽입 수정 삭제 등의 작업이 여기 해당합니다.

 

 

3. 커밋 (commit):

  • 모든 작업이 성공적으로 완료되면 트랜잭션을 커밋하여 그 작업을 데이터베이스에 최종 반영합니다.
  • 데이터베이스는 이 상태를 저장하고 트랜잭션은 완료됩니다.

 

 

4. 롤백 (rollback):

  • 만약 트랜잭션 안에서 오류가 발생하면 트랜잭션을 롤백하여 그동안 진행된 모든 작업을 취소합니다.
    데이터베이스는 트랜잭션이 시작되기 전 상태로 돌아갑니다.

 

 

4. 트랜잭션의 특징(ACID 속성)

  1. Atomicity(원자성):
    • 트랜잭션의 작업은 모두 성공하거나 모두 실패해야 합니다. 중간에 부분적으로 성공하거나 실패하는 것은 허용되지 않습니다.
  2. Consistency(일관성):
    • 트랜잭션이 완료되면 데이터베이스는 일관된 상태를 유지해야 합니다.
      무결성 규칙을 어기는 상태가 되면 안 됩니다.
  3. Isolation (격리성):
    • 트랜잭션이 실행되는 동안 다른 트랜잭션의 간섭을 받지 않습니다. 각각의 트랜잭션은 독립적으로 실행되어야 합니다.
  4. Durability (지속성):
    • 트랜잭션이 커밋된 후에는 시스템에 문제가 생기더라도 그 결과가 데이터베이스에 영구적으로 반영 되어야 합니다.

 

트랜잭션이 사용된 예시 코드

'Back-end > Node.js' 카테고리의 다른 글

JWT 토큰 이란??  (1) 2024.11.02
Node.js 공부시 알아야 할 주요 개념과 기능  (0) 2024.08.01