다음을 통해 공유


트랜잭션이란?

트랜잭션은 ACID(원자성, 일관성, 격리 및 지속성) 속성이 있는 작업 그룹입니다. 트랜잭션을 지원하면 개발 프로세스를 간소화하고 애플리케이션을 더욱 강력하게 만들면서 새로운 유형의 애플리케이션을 개발할 수 있습니다. 이 항목의 나머지 부분에서는 이러한 속성의 필요성을 보여 주는 시나리오와 각 속성을 정의하는 테이블을 제공합니다.

원자성 작업 그룹에서는 그룹의 모든 작업이 성공해야 하거나 모든 작업의 효과를 취소해야 합니다(롤백이라고도 함). 예를 들어 은행 송금은 한 계좌의 이체와 다른 계좌에 대한 크레딧이라는 두 가지 작업의 원자성 집합이어야 합니다. 직불 및 크레딧은 원자성 그룹으로 구현되어야 합니다. 이 두 작업이 모두 성공하지 못하면 이체는 은행이나 계좌 보유자에게 부당하게 유리합니다.

일관성 요구 사항은 트랜잭션 이후에 데이터가 일관됨을 의미합니다(트랜잭션 전에 일관된 시스템으로 시작했다고 가정). 은행 이체 예제의 경우 일관성은 두 계좌의 결합된 계좌 잔액이 일정한 것으로 정의될 수 있습니다. 은행 이체 예제에서 일관성을 구현하려면 직불 및 신용 운영이 동일한 금액에 대한 것이어야 합니다.

트랜잭션의 또 다른 예는 웹 사이트에 대한 업데이트입니다. 전자 상거래 사이트에서는 새 제품을 설명하는 제품 세부 정보 페이지와 정확히 동시에 새 제품 범주 탐색 페이지가 표시되어야 합니다. 이 경우 트랜잭션의 제어 하에 여러 디렉터리 항목을 업데이트하고 추가해야 합니다. 업데이트가 원자성일 뿐만 아니라 현재 쇼핑 중인 고객이 진행 중인 업데이트를 볼 수 없어야 합니다. 트랜잭션의 격리 속성의 예입니다.

내구성의 속성은 업데이트가 완료된 후 시스템이 응답을 중지하더라도 해당 효과가 유지되어야 합니다. 이전 예제에서는 시스템이 응답을 중지한 후 사이트에 새 제품을 추가하는 것을 나타내는 모든 새 파일 시스템 항목이 표시되도록 적절한 데이터 복구를 통해 내구성을 제공할 수 있습니다. 이를 위해서는 데이터 백업, 복구 및 고가용성 메커니즘이 있는 시스템이 필요합니다.

트랜잭션의 원자성 및 다른 속성의 보장은 이전 실패의 복구 단계에서 발생하는 오류를 포함하여 많은 오류에 직면합니다. 결국 시스템은 두 가지 상태 중 하나에 도달합니다. 모든 작업이 적용되었거나 작업이 적용되지 않았습니다.

트랜잭션의 속성은 다음 표에 요약되어 있습니다.

용어 설명
원자
트랜잭션의 모든 작업이 성공하거나 어떤 작업도 유지되지 않습니다.
일관 된
트랜잭션이 시작되기 전에 데이터가 일관되면 트랜잭션이 완료된 후에 일관성이 유지됩니다.
격리
진행 중인 트랜잭션의 효과는 다른 모든 트랜잭션에서 숨겨집니다.
튼튼한
트랜잭션이 완료되면 결과는 지속되며 시스템 충돌에서 유지됩니다.

이러한 속성을 사용하면 예기치 않은 상황이 성공적으로 완료되지 않는 경우 단순히 트랜잭션을 중단할 수 있으므로 소프트웨어에서 예기치 않은 오류를 처리할 수 있습니다. 트랜잭션 인프라를 통해 중단된 트랜잭션의 모든 효과가 롤백되어 데이터가 일관된 상태로 반환됩니다. 따라서 트랜잭션 시스템을 사용하면 시스템 오류로부터 정상적으로 복구할 수 있습니다.

ACID 속성을 보장하려면 트랜잭션을 지원하는 시스템에는 필요에 따라 트랜잭션을 커밋하거나 롤백하는 데 사용할 수 있는 강력한 로깅 기능이 있어야 합니다. 자세한 내용은 일반 로그 파일 시스템을 참조하세요.