ACID 중 일관성과 지속성의 개념이 헷갈려서 정리한 자료입니다.
ACID는 데이터베이스 트랜잭션에서 일관성을 보장하기 위한 네 가지 특성입니다. 이러한 특성은 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability)을 나타냅니다. Consistency와 Durability는 다음과 같은 차이가 있습니다.
Consistency (일관성):
일관성은 트랜잭션이 데이터베이스의 상태를 일관된 상태에서 다른 일관된 상태로 전환하는 것을 보장합니다. 이 말은, 트랜잭션 수행 전후에 모든 무결성 제약 조건, 비즈니스 규칙 및 데이터 관계가 유지된다는 것을 의미합니다. 즉, 트랜잭션의 시작과 종료 시점에서 데이터베이스는 일관된 상태를 유지해야 합니다.
간단한 예를 들어 설명해보겠습니다. 은행 계좌 이체를 생각해보세요. 이 경우, 두 계좌 사이에서 돈을 이체하는 트랜잭션을 수행할 때 일관성을 유지해야 합니다.
- 트랜잭션 시작 전: A 계좌에 1000달러, B 계좌에 500달러가 있습니다. 이 상태는 일관성을 유지하고 있습니다.
- 트랜잭션 수행: A 계좌에서 B 계좌로 200달러를 이체합니다. 이 과정에서 트랜잭션은 두 개의 작업으로 구성됩니다.
- 트랜잭션 종료 후: A 계좌에 800달러, B 계좌에 700달러가 있습니다. 이 상태도 일관성을 유지하고 있습니다.
이 예에서 일관성이란 "계좌 잔액은 0보다 작을 수 없다"는 무결성 제약 조건과 "이체 전후의 총 금액은 동일해야 한다"는 비즈니스 규칙을 만족하는 것을 의미합니다. 트랜잭션 수행 전후에 데이터베이스의 상태가 이러한 규칙에 따라 일관되게 유지되므로, 이 경우 일관성이 유지된 것입니다.
만약 트랜잭션 중간에 시스템 오류가 발생해 A 계좌에서만 200달러가 차감되고 B 계좌에 입금되지 않는다면, 데이터베이스의 일관성이 깨집니다. 이런 경우 ACID의 원자성(Atomicity) 원칙에 따라 트랜잭션은 전체가 취소되고, 원래 상태로 되돌려야 합니다.
Durability (지속성):
지속성은 성공적으로 완료된 트랜잭션의 결과가 영구적으로 데이터베이스에 저장되는 것을 보장합니다. 시스템 오류, 정전, 장애 등이 발생하더라도 트랜잭션의 결과는 데이터베이스에 영구적으로 반영되어야 합니다. 이를 위해 일반적으로 로그 파일이나 저장소에 트랜잭션 정보를 기록하여 지속성을 보장합니다.
간단히 요약하면, 일관성은 트랜잭션 수행 전후에 데이터베이스의 상태가 일관되게 유지되는 것을 보장하는 특성이며, 지속성은 완료된 트랜잭션의 결과가 영구적으로 데이터베이스에 저장되는 것을 보장하는 특성입니다. 이 두 특성은 서로 다른 목적을 가지고 있지만, 트랜잭션의 안정성과 데이터의 신뢰성을 보장하는 데 함께 작용합니다.
'computer science' 카테고리의 다른 글
| cs - 객체지향,restful,시간공간복잡도,nosql,함수형프로그래밍,https,GIL,devops,git branch 전략 (0) | 2023.06.13 |
|---|---|
| cs - 대역폭, 버스, 데이터 압축, Dynamic Range 🌐 (0) | 2023.05.08 |
| cs - 프로세스 메모리 구조: 코드, 데이터, 스택, 힙 영역 (0) | 2023.04.25 |
| cs - pcb와 커널공간 (0) | 2023.04.25 |
| cs - 자바 가상 머신(JVM) (0) | 2022.11.07 |