귤귤나무 일지
ACID 특성, Reliability, Availability 본문
데이터베이스 특징을 공부하다가 개념이 헷갈려서 정리해두고자 글을 쓴다.
RDBMS는 ACID 특성을 가진다.
ChatGPT가 정리해준 표
특성 | 의미 | 보장 방법 |
Atomicity(원자성) | 트랜잭션이 전부 실행되거나 전혀 실행되지 않음을 보장 | 로그 기반 복구(WAL) |
Consistency(일관성) | 트랜잭션 전후 데이터베이스의 무결성 상태 유지 | 무결성 제약 조건, 스키마 |
Isolation(격리성) | 트랜잭션 간의 독립성 보장, 동시에 실행해도 결과가 독립적으로 유지됨 | 잠금, MVCC, 격리 수준 설정 |
Durability(지속성) | 커밋된 데이터는 영구적으로 저장되고 시스템 장애에도 유지 | 디스크 기록, 복제, 백업 |
근데 DB 운영을 하다보면, Availability(가용성)에 대한 얘기를 많이 듣는다.
가용성은 Durability와도 연관되어 있는 거 아닌가?
그리고 논문을 읽다가 DB의 Reliability(신뢰성)에 대해서도 다뤘다.
Availability, Reliability, Consistency, Durability의 차이가 뭘까.
또 ChatGPT에게 물어봤다.
특성 | 초점 | 주요 목표 | 보장 방법 |
Reliability(신뢰성) | 시스템이 안정적으로 작동 | 장애 및 오류 발생 방지, 복구 가능 | 장애 복구 메커니즘, 이중화 시스템, 정기적인 백업 |
Availability(가용성) | 시스템의 사용 가능성 | 장애 상황에서도 요청에 대한 응답 보장 | 고가용성 설계, 분산 데이터베이스, 복제 시스템 |
Consistency(일관성) | 데이터 상태의 무결성 | 무결성 제약 조건 유지, 트랜잭션 실행 전후 데이터 일관성 보장 | 트랜잭션 관리, ACID의 "C", 데이터 무결성 제약 조건 구현 |
Durability(지속성) | 데이터의 영구적 저장 | 트랜잭션 성공 시 데이터가 영구적으로 저장됨 | 로그 기반 복구, 디스크에 데이터 기록, WAL(Write-Ahead Logging) 사용 |
결국, 다 서로 연관이 있지만 보는 주요 관점이 살짝 다른 느낌이다.
신뢰성은 장애 발생하면 복구가 가능해야 하기에, "시스템의 안정적인 동작" 측면에서 본 특성이고,
가용성은 장애가 발생해도 계속해서 사용이 가능한 DB여야되는 것이기에, "사용 가능성" 측면에서 본 특성이고,
일관성은 데이터의 일관성을 보장하는, "데이터 상태"에서의 무결성을 본 특성이고,
지속성은 데이터가 손실되지 않도록 "데이터를 저장하는 측면"에서 본 특성이다.