CS/데이터베이스

[DB]트랜잭션, 무결성

개발의 피 2023. 12. 26. 00:29

1. 트랜잭션

- 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위

-> 데이터베이스에 접근하는 방법은 쿼리이므로, 즉 여러 개의 쿼리들을 하나로 묶는 단위

트랜잭션에 대한 특징 = ACID 특징 : 원자성, 일관성, 독립성, 지속성

 

1) 원자성(atomicity) 

* 커밋(commit) : 여러 쿼리가 성공적으로 처리되었다고 확정하는 명령어

* 롤백 : 트랜잭션으로 처리한 하나의 묶음 과정을 일어나기 전으로 돌리는 일(취소) 

-> 커밋, 롤백 덕에 데이터의 무결성 보장 ! 

 

* 트랜잭션 전파 : 여러 트랜잭션 관련 메서드의 호출을 하나의 트랜잭션에 묶이도록 하는 것 

 

2) 일관성(consistency)

- 허용된 방식으로만 데이터를 변경해야 하는 것

 

3) 격리성(isolation)

- 트랜잭션 수행 시 서로 끼어들지 못하는 것 

 

* 격리 수준에 따라 발생하는 현상

- 팬텀 리드(phantom read) : 한 트랜잭션 내에서 동일한 쿼리를 보냈을 때 해당 조회 결과가 다른 경우

- 반복 가능하지 않은 조회(non-repeatable read) : 한 트랜잭션 내의 같은 행에 두 번 이상 조회가 발생했는데, 그 값이 다른 경우

- 더티 리드(dirty read) : 한 트랜잭션이 실행 중일 때 다른 트랜잭션에 의해 수정되었지만 아직 '커밋되지 않은' 행의 데이터를 읽을 수 있을 때 발생

 

* 격리 수준

- SERIALIZABLE 

- REPEATABLE_READ

- READ_COMMITTED

- READ_UNCOMMITTED 

 

4) 지속성(durability) 

성공적으로 수행된 트랜잭션은 영원히 반영되어야 하는 것

= DB에 시스템 장애가 발생해도 원래 상태로 복구하는 회복 기능이 있어야 함을 뜻함 

-> DB는 이를 위해 체크섬, 저널링, 롤백 등의 기능을 제공

 

- 체크섬 : 중복 검사의 한 형태, 오류 정정을 통해 송신된 자료의 무결성을 보호하는 단순한 방법

- 저널링 : 파일 시스템 or DB 시스템에 변경 사항을 반영하기 전에 로깅하는 것, 트랜잭션 등 변경 사항에 대한 로그를 남기는 것

 

2. 무결성

- 데이터의 정확성, 일관성, 유효성을 유지하는 것 

- 무결성이 유지되어야, DB에 저장된 데이터 값과 그 값에 해당하는 현실 세계의 실제 값이 일치하는지에 대한 신뢰가 생김 

 

* 무결성의 종류 

1) 개체 무결성 : 기본키로 선택된 필드는 빈 값을 허용하지 않음

2) 참조 무결성 : 서로 참조 관계에 있는 두 테이블의 데이터는 항상 일관된 값을 유지해야 함

3) 고유 무결성 : 특정 속성에 대해 고유한 값을 가지도록 조건이 주어진 경우, 그 속성 값은 모두 고유한 값을 가짐

4) NULL 무결성 : 특정 속성 값에 NULL이 올 수 없다는 조건이 주어진 경우, 그 속성 값은 NULL이 될 수 없다는 제약 조건 

'CS > 데이터베이스' 카테고리의 다른 글

[DB]조인의 종류  (0) 2023.12.29
[DB]데이터베이스의 종류  (0) 2023.12.27
[DB]데이터베이스 기본  (0) 2023.12.24