데이터베이스를 다룰 때 반드시 이해하고 있어야 할 핵심 개념이 있다면 바로 트랜잭션(Transaction)이다. 트랜잭션의 신뢰성과 안정성을 보장하기 위해 데이터베이스 시스템은 ACID라는 네 가지 속성을 따른다.
트랜잭션 내의 작업들은 모두 하나의 단위로 처리되어야 한다. 중간에 하나라도 실패하면 전체가 롤백되어야 한다.
예: A 계좌에서 출금 후 B 계좌에 입금하는 송금 트랜잭션에서, 출금만 되고 입금이 실패하면 전체가 무효 처리되어야 한다.
트랜잭션이 실행되기 전과 후의 데이터 상태는 데이터베이스가 정의한 규칙(제약 조건, 데이터 무결성 등)을 항상 만족해야 한다.
예: 모든 계좌 잔고의 총합은 항상 일정해야 하며, 트랜잭션 수행으로 인해 위배되어서는 안 된다.
여러 트랜잭션이 동시에 실행되더라도 각각은 독립적으로 처리되어야 하며, 중간 결과가 다른 트랜잭션에 영향을 주어서는 안 된다.
예: 두 사용자가 동시에 송금을 시도하더라도 각각의 작업이 순차적으로 수행된 것처럼 결과가 보장되어야 한다.
트랜잭션이 완료되면 그 결과는 영구적으로 반영되어야 하며, 시스템 장애가 발생하더라도 손실되지 않아야 한다.
예: 송금이 완료된 직후 서버가 꺼지더라도 입금된 기록은 DB에 남아 있어야 한다.
ACID는 데이터베이스 트랜잭션의 신뢰성과 무결성을 보장하기 위한 핵심 개념이다. 각 속성이 어떻게 작동하는지 이해하고 있다면, 안정적인 데이터 처리 시스템을 설계하는 데 큰 도움이 된다.