Computer Science/Database

[면접을 위한 CS 노트] 4-3 트랜잭션과 무결성

킹우현 2023. 11. 25. 19:41

1. 트랜잭션

트랜잭션(Transaction) 이란, 데이터베이스의 상태를 변경하기 위해 수행하는 작업 단위이다.

👉🏻 데이터베이스에 접근하는 방법은 쿼리(SELECT, INSERT, DELETE, UPDATE)이므로 여러 개의 쿼리들을 하나로 묶는 단위를 뜻한다.

 

트랜잭션의 특징 4가지(ACID)

 

 

트랜잭션에는 4가지의 특징이 존재한다.

  1. 원자성
  2. 일관성
  3. 독립성
  4. 지속성

1-1. 원자성

원자성이란 트랜잭션이 DB에 모두 반영되거나, 전혀 반영되지 않거나(All or Nothing)를 보장하는 특징 뜻한다.

- 커밋(commit) : 하나의 트랜잭션이 성공적으로 수행되었음는 의미
- 롤백(rollback) : 트랜잭션 처리가 일어나기 전으로 되돌리는 것을 의미
👉🏻 이러한 커밋과 롤백 덕에 데이터의 '무결성'이 보장된다 !

 

트랜잭션 전파란 여러 트랜잭션 관련 메소드의 호출을 하나의 트랜잭션으로 묶이도록 하는 것이다.

1-2. 일관성

일관성은 트랜잭션이 실행을 성공적으로 완료하면 데이터는 언제나 일관성 있는 상태로 유지되어야 하는 것를 뜻한다. 데이터베이스에 기록된 모든 데이터는 여러가지 조건, 규칙에 따라 유효함을 가져야 한다.

 

1-3. 독립성

독립성은 하나의 트랜잭션은 다른 트랜잭션에 끼어들 수 없고 독립적으로 실행된다를 의미한다. 즉, 각각의 트랜잭션은 독립적이기 때문에 서로 간섭이 불가능하다.

 

복수의 병렬 트랜잭션은 서로 격리되어 마치 순차적으로 실행되는 것처럼 작동해야 한다.

 

1-4. 지속성

지속성은 트랜잭션이 성공적으로 수행되면 결과에 영구적으로 반영되어야 함을 뜻한다. 데이터베이스에 시스템 장애가 발생하더라도 원래 상태로 복구하는 회복 기능이 있어야 한다.

 

2. 무결성

무결성이란 데이터의 '정확성', '일관성', '유효성'을 유지하는 것을 의미한다. 무결성이 유지되어야 DB에 저장된 값과 현실 세계의 실제 값이 일치하는 신뢰가 생긴다.

  • 널(NULL) 무결성 : 특정 속성 값에 NULL이 올 수 없다는 조건이 주어진 경우, 그 속성 값은 NULL이 될 수 없다는 제약 조건
  • 고유 무결성 : 특정 속성에 대해 고유한 값을 가지도록 조건이 주어진 경우, 그 속성 값은 모두 고유한 값을 가져야 한다.
  • 참조 무결성 : 서로 참조 관계에 있는 두 테이블의 데이터는 항상 일관된 값으로 유지되어야 한다.
  • 개체 무결성 : 기본키로 선택된 속성은 빈 값을 허용하지 않는다.