트랜잭션 4가지 특징
ACID ? ㅇㅇ
이번 설날에 대학교 동아리 졸업하신 형들이랑 학교근처에서 술자리를 가졌다.
형들중 한명이 나에게 트랜잭션 4가지 특징을 물었다.
아토믹.... 이라고밖에 답을못했다.
DB 수업때 교수님이 은행 거래할때 아토믹해야한다~ 이거밖에 떠오르지 않았다.
보면알거같은데... ㅠㅠ.. 안떠오른다!
그래서 이번에 트랜잭션 ACID 특징
을 내 머리 깊숙히 박아놓고자 한다.
트랜잭션 ?
영어 낱말 transaction
은 거래를 뜻한다.
예를 들어 돈을 줬는데 물건을 받지 못한다면,
그 거래는 이루어지지 못하고 원상태로 복구되어야 한다.
쪼갤 수 없는 하나의 처리 행위를 원자적 행위라고 한다.
여기서 쪼갤 수 없다는 말의 의미는 실제로 쪼갤 수 없다기보다는
만일 쪼개질 경우 시스템에 심각한 오류를 초래할 수 있다는 것이다.
이러한 개념의 기능을 ATM 또는 데이터베이스 등의 시스템에서 제공하는 것이 바로 트랜잭션이다.
(위키피디아 만세)
데이트베이스의 트랜잭션 ?
데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위이다.
여기서 유사한 시스템이란 트랜잭션이 성공과 실패가 분명하고 상호 독립적이며,
일관되고 믿을 수 있는 시스템을 의미한다.
이론적으로 데이터베이스 시스템은 각각의 트랜잭션에 대해
원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 영구성(Durability)을 보장한다.
이 성질을 첫글자를 따 ACID라 부른다.
그러나, 실제로는 성능향상을 위해 이런 특성들이 종종 완화되곤 한다.
(갓위키 갓위키)
그럼 이제 ACID 하나씩 살펴보자.
1. Atomicity (원자성)
All or Nothing
내가 친구한테 10000원을 보낸다면,
- 내 잔액 -10000원
- 친구 잔액 +10000원
이 둘줄 하나만 처리된다면 원자성(Atomicity) 위반이다.
2. Consistency (일관성)
기존의 데이터베이스가 Correct State
라면 트랜잭션을 수행하고 난 후에도 Correct State
여야 한다.
Correct State ?
도메인의 유효범위, 무결성 제약조건 등의 제약조건을 위배하지 않는 정상적인 상태
Example
잔액 : 0보다 커야한다.
성별 : 남/여/기타
돈도 없는데 친구한테 송금가능 해지더니...? 안되!!
이게 일관성(Consistency)이다.
(단, 트랜잭션 도중에 위배하더라도 결과가 정상적인 상태면 상관없다.)
3. Isolation (고립성)
한 트랜잭션이 실행하는 동안의 중간결과를 다른 트랜잭션이 접근할 수 없다.
트랜잭션 1, 2, 3, 4가 거의 동시에 수행되더라도
1 -> 2 -> 3 -> 4 와 같이 수행한 것처럼 되게 하라
Locking
걸고 막 하겠지...
1, 2, 3, 4가 각각 다른 자원을 쓴다면 동시에 병렬처리
될거같은데..
4. Durability (영속성, 지속성)
완료(commit) 된 트랜잭션은 데이터베이스에 영구적으로 보존되어야 한다.
완료 후에 컴퓨터가 꺼진다면 데이터는 이미 저장되었으므로 보존된다.
완료 전에 컴퓨터가 꺼진다면 데이터는 Atomicity
원칙을 따라, 트랜잭션 수행하기 전으로 돌아간다.
참고자료
공감과 댓글은 제게 큰 힘이 됩니다 !
'Old Posts > Database' 카테고리의 다른 글
이상(Anomaly)과 정규화(Normalization) (0) | 2018.04.05 |
---|