ACID는 데이터베이스의 데이터를 보호합니다.
데이터베이스 설계의 ACID 모델은 데이터베이스 이론의 가장 오래되고 중요한 개념 중 하나입니다. 원 자성, 일관성, 격리 및 내구성과 같은 모든 데이터베이스 관리 시스템이 달성해야하는 4 가지 목표를 설정합니다. 이 네 가지 목표 중 어느 것도 충족시키지 못하는 관계형 데이터베이스는 신뢰성있는 것으로 간주 될 수 없습니다. 이러한 특성을 가진 데이터베이스는 ACID를 준수하는 것으로 간주됩니다.
정의 된 ACID
이 특징들을 자세히 살펴 보도록하겠습니다.
- Atomicity는 데이터베이스 수정이 "모두 또는 아무것도"규칙을 따라야한다고 말합니다. 각 트랜잭션은 "원자 (atomic)"라고합니다. 트랜잭션의 일부가 실패하면 전체 트랜잭션이 실패합니다. DBMS, 운영 체제 또는 하드웨어 장애에도 불구하고 데이터베이스 관리 시스템이 트랜잭션의 원자 성을 유지하는 것이 중요합니다.
- 일관성 은 유효한 데이터 만 데이터베이스에 기록됨을 나타냅니다. 어떤 이유로 데이터베이스의 일관성 규칙을 위반하는 트랜잭션이 실행되면 전체 트랜잭션이 롤백되고 해당 규칙과 일치하는 상태로 데이터베이스가 복원됩니다. 반면에 트랜잭션이 성공적으로 실행되면 데이터베이스와 규칙이 일치하는 상태에서 규칙과 일관성이있는 다른 상태로 전환됩니다.
- 격리 를 수행하면 동시에 발생하는 여러 트랜잭션이 서로의 실행에 영향을 미치지 않아야합니다. 예를 들어 Joe가 Mary와 다른 트랜잭션을 발행하는 동시에 데이터베이스에 대해 트랜잭션을 발행하면 두 트랜잭션 모두 데이터베이스에서 격리 된 방식으로 작동해야합니다. 데이터베이스는 Mary의 실행 전에 Joe의 전체 트랜잭션을 수행해야하며 그 반대의 경우도 마찬가지입니다. 이렇게하면 Joe의 트랜잭션이 결국 데이터베이스에 커밋되지 않는 Mary의 트랜잭션 부분의 부작용으로 생성 된 중간 데이터를 읽지 못하도록합니다. 격리 속성은 어떤 트랜잭션이 먼저 실행되는지를 보장하지 않습니다. 단지 트랜잭션이 서로 간섭하지 않는다는 것입니다
- 내구성 은 데이터베이스에 커밋 된 트랜잭션이 손실되지 않도록 보장합니다. 이후의 소프트웨어 또는 하드웨어 오류에도 불구하고 커밋 된 트랜잭션의 복원을 용이하게하는 데이터베이스 백업 및 트랜잭션 로그를 사용하여 내구성을 보장합니다.
ACID가 실제로 어떻게 작동 하는가?
데이터베이스 관리자는 여러 전략을 사용하여 ACID를 시행합니다.
원 자성과 내구성을 강화하는 데 사용되는 하나는 WAL ( Write-Ahead Logging )입니다. 트랜잭션 세부 사항이 다시 실행 및 실행 취소 정보를 모두 포함하는 로그에 처음 기록됩니다. 이렇게하면 데이터베이스 오류가 발생하면 데이터베이스가 로그를 작성하고 그 내용을 데이터베이스의 상태와 비교하십시오.
원 자성과 내구성을 처리하는 데 사용되는 또 다른 방법은 데이터가 수정 될 때 그림자 페이지가 생성되는 그림자 페이징 입니다. 쿼리의 업데이트는 데이터베이스의 실제 데이터가 아닌 섀도 페이지에 기록됩니다. 데이터베이스 자체는 편집이 완료 될 때만 수정됩니다.
또 다른 전략은 2 단계 확약 프로토콜로, 특히 분산 데이터베이스 시스템에서 유용합니다. 이 프로토콜은 데이터를 수정하라는 요청을 커밋 요청 단계와 커밋 단계의 두 단계로 분리합니다. 요청 단계에서 트랜잭션의 영향을받는 네트워크상의 모든 DBMS는 트랜잭션을 수신했음을 확인하고 트랜잭션을 수행 할 수있는 용량을 가져야합니다. 모든 관련 DBMS로부터 확인이 수신되면 데이터가 실제로 수정되는 완료 단계가 완료됩니다.