ACID는 데이터베이스의 네 가지 주요 속성인 원자성, 일관성, 격리 및 내구성의 약어입니다. 관계형 데이터베이스와 종종 연관되지만, NoSQL(비관계형) 데이터베이스도 ACID 규칙을 따를 수 있습니다. ACID 트랜잭션은 시중에 나와 있는 많은 인기 데이터베이스 엔진에서 흔히 발생하며, 읽기 및 쓰기 작업이 데이터의 무결성을 방해하지 않도록 합니다.
데이터베이스 ACID란?
ACID 모범 사례를 따르는 데이터베이스의 특징은 다음과 같습니다.
- 원자성: 데이터 손실, 고아 기록 및 원자력으로 인한 부분적인 트랜잭션을 방지하세요. 원자력이 있는 데이터베이스는 트랜잭션의 일부가 중간에 실패하는 경우 데이터를 잃지 않도록 “전체 또는 아무것도” 트랜잭션을 제공합니다.
- 일관성: ACID 데이터베이스의 테이블 제약은 모든 트랜잭션이 일관된 형식으로 데이터를 저장하도록 요구합니다.
- 격리: ACID 데이터베이스는 데이터를 분리하고 트랜잭션을 하나씩 수행하여 트랜잭션이 더러운 읽기 또는 쓰기를 반환하지 않도록 합니다.
- 내구성: 시스템 장애(예: 정전)는 트랜잭션을 방해할 수 있으므로, ACID 데이터베이스는 페일오버가 중요한 이벤트로 인한 데이터 손실을 방지하도록 합니다.
원자성
현대적인 데이터베이스 트랜잭션은 기록을 완성하는 데 한 단계 이상의 단계가 있습니다. 예를 들어, 고객이 주문을 생성할 수 있으므로, 저장된 절차는 INSERT 문을 사용하여 주문 및 제품_주문 테이블에 레코드를 추가합니다. 주문 테이블에 레코드를 추가하는 데 실패하면 product_ordered 테이블에 레코드를 추가하지 않습니다. 이렇게 하면 고아 기록을 생성할 수 있습니다.
데이터베이스는 원자력으로 모든 트랜잭션이 실패할 때 롤백하여 데이터를 일관되게 유지하고 손상을 방지합니다. 트랜잭션의 모든 단계가 성공적으로 완료된 경우에만 데이터가 저장됩니다. 원자력은 데이터 손상, 데이터 손실 및 고아 기록을 방지합니다.
일관성
관계형 데이터베이스는 특정 유형의 데이터만 저장할 수 있는 제약이 있습니다. NoSQL 데이터베이스는 자체 설정 형식으로 데이터를 저장합니다. 예를 들어, 십진수만 순서 합계 열에 저장할 수 있도록 지정하면 문자열을 저장하지 못하게 됩니다. 데이터를 일관되게 유지하면 개발자가 데이터 세트로 작업할 때 알려진 가치를 얻을 수 있습니다.
데이터베이스의 일관성은 데이터를 예측할 수 있다는 것을 의미하며, 이는 특정 기록에 대한 데이터를 가져오는지 여부를 알면 예상 결과를 얻을 수 있음을 의미합니다. 주문 테이블 예제를 사용하면 주문 합계 열에서 값을 검색하는 쿼리에 대해 십진수 값을 받게 됩니다.
격리
더러운 읽기 및 더러운 쓰기는 데이터베이스가 값을 변경하는 특정 시점에 사용자가 쿼리를 실행할 때 발생합니다. 예를 들어, 해당 월의 모든 주문에 대한 합계를 알고 싶다면, 주문 합계가 업데이트될 때 데이터를 읽으면 잘못된 결과를 얻을 수 있습니다. 이전 업데이트문이 실행되기 전에 데이터를 읽는 경우 쓰기 동작에서도 마찬가지입니다.
더러운 읽기 및 쓰기는 데이터를 손상시키고 데이터 무결성을 파괴할 수 있습니다. 고립된 트랜잭션은 명세서를 하나씩 실행하므로, 데이터는 수백만 건의 일일 트랜잭션에서도 일관성과 중단 없이 유지됩니다. 격리된 트랜잭션은 레코드를 잠그고, 변경한 다음 다음 다음 트랜잭션을 위해 레코드를 해제할 수 있습니다.
내구성
정형 및 비정형 데이터베이스는 시스템 장애가 발생하더라도 트랜잭션이 완료된 후 데이터를 일관되고 영구적으로 저장해야 합니다. 트랜잭션 로그와 인프라 장애도 구현해야 하지만, 데이터베이스 자체는 데이터 손상 없이 데이터를 일관되게 저장할 수 있어야 합니다. 데이터베이스 엔진에는 자체 전략과 페일오버 기술이 있지만, 관리자는 데이터를 복구하기 위해 이를 신뢰할 수 있어야 합니다.
예를 들어, 정전으로 인해 트랜잭션이 중단될 수 있습니다. 관리자가 트랜잭션을 롤백하거나 데이터를 복구해야 할 때 데이터베이스는 오류를 처리할 수 있어야 합니다. 대부분의 관리자들의 경우, 페일오버는 백업 및 중복으로 처리됩니다. ACID는 조직의 대규모 재해 복구 전략에 도움을 줄 수 있습니다.
결론
미션 크리티컬 데이터베이스는 엔터프라이즈 애플리케이션을 지원하기 위해 ACID 속성이 필요합니다. ACID 속성은 데이터 무결성을 위해 필수적이며, 원하는 수의 애플리케이션에서 데이터를 검색하고 사용할 수 있도록 보장합니다. 관리자는 여전히 백업을 수행하고 데이터베이스 서버가 원활하게 실행되도록 해야 하지만, 비즈니스 연속성을 위해서는 ACID 속성을 갖는 것이 중요합니다.