[트랜잭션]
트랜잭션(transaction)
: 여러 개의 작업을 하나로 묶는 실행 유닛
: 하나의 특정 작업으로 시작을 해 묶여 있는 모든 작업을 다 완료해야 정상적으로 종료하며 단 하나라도 실패했을 경우 모든 작업을 실패한 것으로 판단
[ACID]
ACID : 데이터베이스 내에서 일어나는 하나의 트랜잭션의 안전성을 보장하기 위한 성질
- Atomicity(원자성) : 하나의 트랜젝션에 속해있는 모든 작업이 전부 성공하거나 전부 실패해 결과 예측이 가능해야 함
- Consistency(일관성) : 데이터베이스의 상태가 일관되어야 함 (이전과 이후 상태는 이전과 같이 유효해야 함)
- Isolation(격리성, 고립성) : 모든 트랜잭션은 다른 트랜잭션으로부터 독립되어야 함
- Durability(지속성) : 하나의 트랜잭션이 성공적으로 수행되었다면 런타임 오류나 시스템 오류가 발생하더라도 기록은 영구적이어야 함
Example
1. Atomicity(원자성)
: A계좌에서 출금, B계좌에 입금을 진행하려는데 출금은 이루어졌지만 입금이 이루어지지 않았다면, 출금된 돈은 사라지는 돈이 되게 되므로 은행의 기능을 할 수 없음. 따라서, B계좌 입금 진행이 실패한다면 A에서 출금하는 작업을 포함해 모든 작업이 실패로 돌아가야 함
2. Consistency(일관성)
: 모든 고객은 반드시 이름을 가지고 있어야 한다 라는 제약이 존재할 경우, 이름이 없는 새로운 고객을 추가하거나 기존 고객의 이름을 삭제할 경우 유효한 상태는 다를 수 있지만 제약을 위반하게 되므로 예시 이후 데이터베이스는 일관되지 않는 상태를 가지게 됨
3. Isolation(격리성, 고립성)
: 계좌에 만원이 존재. 해당 계좌에서 B로 6천원, C로 6천원을 동시에 이체할 경우 B 이체 후 C를 이체하는 결과와 동일해야 하는데 동시에 이체될 경우 동일한 결과가 발생할 수 없음
4. Durability(지속성)
: 계좌 이체를 성공적으로 실행한 뒤 은행 DB에 오류가 발생해 종료되더라도 계좌이체 내역은 기록으로 남아있어야 함
'공부 자료 > DataBase' 카테고리의 다른 글
[데이터베이스] 관계형 데이터베이스 (1) | 2022.10.05 |
---|---|
[데이터베이스] About 스키마(Schema) (0) | 2022.10.05 |
[데이터베이스] SQL vs NoSQL (1) | 2022.10.05 |
[데이터베이스] SQL (1) | 2022.10.04 |
[데이터베이스] Database 기본 (0) | 2022.10.04 |