일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- TypeScript
- DFS
- LeetCode
- 동적 계획법
- db
- frontend
- 리트코드
- CS
- 알고리즘
- Python
- VIM
- react
- DP
- Database
- BFS
- 자바
- 그레이들
- 다이나믹 프로그래밍
- java
- Redux
- Graph
- Data Structure
- Javascript
- Algorithm
- 안드로이드
- 백준
- vscode
- network
- 프로그래머스
- git
- Today
- Total
늘 겸손하게
CS - Database - 트랜잭션과 무결성 본문
트랜잭션
DB에서 하나의 논리적 기능을 수행하기 위한 최소한의 작업의 단위.
DB에 접근하는 방법은 쿼리이므로, 여러 개의 쿼리들을 하나로 묶는 단위를 말함.
트랜잭션에 대한 특징은 원자성, 일관성, 독립성, 지속성이 있으며 이를 ACID라고 부름.
원자성 (Atomicity)
트랜잭션 작업이 모두 수행되거나 아예 수행되지 않는 것을 의미. ( all or nothing )
트랜잭션 작업이 취소되면 롤백(원상태로 돌리기)이 일어나는데 트랜잭션 도중에 취소가 발생하면 결과값에 오류가 발생할 수 있기 때문에 원자성을 꼭 띄어야함.
[ 커밋과 롤백 ]
커밋 (commit)
여러 쿼리가 성공적으로 처리되었다고 확정하는 명령어.
트랜잭션 단위로 수행되며 변경된 내용이 모두 영구적으로 저장되는 것을 의미.
그래서 '커밋이 수행되었다'를 '하나의 트랜잭션이 성공적으로 수행되었다'라고도 말함.
롤백 (roll back)
트랜잭션으로 처리한 하나의 묶음 과정을 일어나기 전으로 돌리는 일(취소)
이러한 커밋과 롤백 덕에 데이터 무결성이 보장됨.
일관성 (Consistency)
'허용된 방식'으로만 데이터를 변경해야 하는 것을 의미.
DB의 모든 데이터는 변경되어도 여러 가지 조건, 규칙에 유효해야 함을 의미.
값이 0 이상이어야 하는 데이터의 값이 0 이하로 떨어질 순 없음.
격리성 (Isolation)
트랜잭션 수행 시 서로 끼어들지 못함을 의미.
복수의 병렬 트랜잭션은 서로 격리되어 마치 순차적으로 실행되는 것처럼 작동되어야 함.
지속성 (Durability)
성공적으로 수행된 트랜잭션은 영원히 반영되어야 하는 것을 의미.
이는 데이터베이스에 시스템 장애가 발생해도 원래 상태로 복구하는 회복 기능이 있어야 함을 의미.
이를 위해 DB는 체크섬, 저널링, 롤백 등의 기능을 제공.
무결성
데이터의 정확성, 일관성, 유효성을 유지하는 것을 의미.
무결성이 유지되어야 데이터베이스에 저장된 데이터 값과 그 값에 해당하는 현실 세계의 실제 값이 일치하는지에 대한 신뢰가 생깁니다.
'Computer Science > Database' 카테고리의 다른 글
Database 질문 리스트 (0) | 2023.10.18 |
---|---|
CS - Database - ERD (0) | 2023.05.06 |
CS - Database - Database (0) | 2023.05.01 |
CS - Database - Index(인덱스) (0) | 2022.10.10 |
CS - Database - Anomaly (0) | 2022.10.10 |