[CS] 트랜잭션과 무결성

현톨·2023년 2월 14일
0

CS

목록 보기
2/6

트랜잭션이란?

데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위를 말한다.
데이터베이스에 접근하는 방법은 쿼리인데, 결국 여러 개의 쿼리들을 하나로 묶는 단위를 말한다.

트랜잭션의 특징으로 원자성, 일관성, 독립성, 지속성이 있는데 이를 ACID 특징이라고 한다.

원자성 (atomicity)

원자성은 트랙잭션에 관련된 일이 모두 수행되었거나, 되지 않았거나를 보장하는 특징이다.
예를 들어, 트랜잭션을 커밋했을 때, 문제가 발생하여 롤백하는 경우, 롤백 지점 이후의 일은 모두 수행되지 않았음을 의미한다.
ex) 은행의 돈이 거래되는 도중 문제가 발생하면 거래 이전 상태로 되돌아감으로써, 아무 일도 수행되지 않는 것

커밋과 롤백

커밋이란?
여러 쿼리가 성공적으로 처리되었음을 확정짓는 명령어로, 트랜잭션으로 수행된 일련의 명령어들에 의해 변경된 내용이 영구적으로 저장되는 것이다.

update, insert, delete가 트랜잭션 단위로 수행되고, 데이터베이스에 저장된다.

롤백이란?
트랜잭션 단위의 명령어 수행 도중 문제가 발생한다면, 해당 트랜잭션 작업이 실행되기 전으로 되돌릴 수 있는데, 이를 롤백이라고 한다.

이러한 기능들 덕분에 데이터의 무결성이 보장된다.

트랜잭션 전파

하나의 트랜잭션 작업 도중 다른 트랜잭션을 실행시킬 경우 처리하는 개념이다. 여러 트랜잭션 관련 메서드 호출을 하나의 트랜잭션으로 묶이도록 한다.

( Spring 프레임워크에서는 트랜잭션 어노테이션을 사용하여 처리하는데, 추후에 Spring을 배우면 다뤄보도록 하겠다.)

일관성 (consistency)

허용된 방식으로만 데이터를 변경해야하는 것을 의미한다.
데이터베이스에 기록된 모든 데이터는 여러 조건, 규칙에 따른 유효성을 가져야한다. 트랜잭션 작업 도중 유효하지 않은 접근 시 트랜잭션은 롤백처리된다.

격리성 (isolation)

트랜잭션 수행 시 서로 끼어들지 못하는 것을 의미한다.
여러 트랜잭션은 격리되어, 마치 순차적으로 실행되는것처럼 작동되어야하고, 데이터베이스는 여러 사용자가 같은 데이터에 접근할 수 있어야 한다.

ex) 거래사이트에서 물건이 하나 남았을 때, 두 명 이상의 유저가 물건을 구매할 수 없다.

지속성 (duration)

성공적으로 수행된 트랜잭션은 영원히 반영되어야한다.
데이터베이스에 장애가 발생해도 원래 상태로 복구하는 기능이 있어야 한다.

무결성

데이터의 정확성, 일관성, 유효성을 유지하는 것이다.
무결성이 유지되어야 데이터베이스에 저장된 값과, 그 값에 해당하는 현실의 값치하는지에 신뢰가 생긴다.

  • 개체 무결성: 기본키로 선택된 필드는 빈 값을 허용하지 않는다.
  • 참조 무결성: 서로 참조 관계에 있는 두 테이블 데이터는 항상 일관된 값을 유지한다.
  • 고유 무결성: 특정 속성에 대해 고유값을 가져야하는 조건이 주어지면, 그 속성 값은 모두 고유한 값을 가져야한다.
  • NULL 무결성 : 특정 속성 값이 NOT NULL일 경우, 그 속성 값은 NULL이 될 수 없다.
profile
기록하는 습관 들이기

0개의 댓글