트랜잭션에서 여러 작업 그룹화
데이터의 한 부분을 변경하면 결국 데이터의 다른 부분도 변경해야 하므로 애플리케이션은 일련의 데이터 업데이트를 함께 그룹화해야 합니다. 트랜잭션을 사용하여 이러한 업데이트를 그룹화할 수 있습니다. 트랜잭션에서는 일련의 업데이트에서 한 이벤트가 실패하는 경우 일련의 업데이트 전체를 롤백하거나 실행 취소할 수 있습니다.
예를 들어 트랜잭션을 사용하여 주문을 하고, 결제를 확인하고, 제품 인벤토리를 업데이트하는 온라인 소매업체가 있습니다. 관련 이벤트를 그룹화하여 승인된 결제 양식을 받을 때까지 재고 수준이 줄어들지 않도록 할 수 있습니다.
다음에서는 트랜잭션 및 데이터에 트랜잭션이 필요한지 여부에 대해 알아봅니다.
트랜잭션이란?
트랜잭션은 함께 실행되는 데이터베이스 작업의 논리적 그룹입니다.
애플리케이션에서 트랜잭션을 사용해야 하는지에 대해 스스로 물어볼 질문은 다음과 같습니다. 데이터 세트에 있는 데이터의 한 부분을 변경하면 다른 부분에도 영향을 주는가? 대답이 예인 경우 데이터베이스 서비스에서 트랜잭션에 대한 지원이 필요합니다.
ACID는 네 가지 요구 사항 집합이 충족되도록 하여 트랜잭션을 정의하도록 보장합니다. ACID는 원자성, 일관성, 격리 및 영속성의 약자입니다.
- 원자성이란 트랜잭션은 정확하게 한 번 실행되어야 하며, 원자성이 있어야 한다는 의미입니다. 모든 작업을 수행하거나 아무것도 수행하지 않거나 둘 중 하나입니다. 트랜잭션 내의 작업은 일반적으로 공통 의도를 공유하고 상호 종속적입니다.
- 일관성은 트랜잭션 전과 후에 데이터가 일관되도록 합니다.
- 격리(Isolation)를 통해 각 트랜잭션은 다른 트랜잭션의 영향을 받지 않습니다.
- 영속성(Durability)은 트랜잭션의 결과로 변경된 내용이 시스템에 영구적으로 저장되는 것을 의미합니다. 커밋된 데이터는 시스템에 의해 저장되므로 실패 및 시스템 다시 시작이 발생해도 데이터를 올바른 상태로 사용할 수 있습니다.
데이터베이스가 ACID 보장을 제공하는 경우 이러한 원칙은 일관되게 트랜잭션에 적용됩니다.
OLTP 대 OLAP
트랜잭션 데이터베이스는 일반적으로 OLTP(온라인 트랜잭션 처리) 시스템이라고 합니다. OLTP 시스템은 일반적으로 많은 사용자를 지원하며, 응답 시간이 빠르며, 많은 양의 데이터를 처리합니다. 또한 고가용성이므로 가동 중지 시간이 최소화됩니다. OLTP 시스템은 일반적으로 작은 트랜잭션 또는 비교적 간단한 트랜잭션을 처리합니다.
OLTP를 지원하는 Azure 서비스의 예는 Azure SQL Database입니다.
OLAP(온라인 분석 처리) 시스템은 일반적으로 더 적은 수의 사용자를 지원하며, 응답 시간이 길고, 가용성이 낮을 수 있으며, 대개 규모가 크고 복잡한 트랜잭션을 처리합니다.
OLAP를 지원하는 Azure 서비스의 예는 Azure Analysis Services입니다.
OLTP 및 OLAP라는 용어는 이전만큼 자주 사용되지 않지만 이해하면 쉽게 애플리케이션의 요구 사항을 분류할 수 있습니다.
트랜잭션: 데이터 형식 평가
데이터가 올바른 상태인지 확인하는 작업이 언제나 쉬운 것은 아닙니다. 트랜잭션은 데이터 무결성 요구 사항을 데이터에 적용하므로 도움이 될 수 있습니다. 데이터가 ACID 원칙의 혜택을 받는 경우 트랜잭션을 지원하는 스토리지 솔루션을 선택합니다.
온라인 소매 시나리오에서 각 데이터 세트를 살펴보면서 트랜잭션이 필요한지 결정해보도록 하겠습니다.
제품 카탈로그 데이터
제품 카탈로그 데이터는 트랜잭션 데이터베이스에 저장되어야 합니다. 사용자가 주문하고 결제가 확인되면 해당 품목 재고는 업데이트되어야 합니다. 마찬가지로 고객 신용 카드가 거부된 경우에는 주문이 롤백되어야 하며 재고는 업데이트되지 않아야 합니다. 이러한 관계는 모두 트랜잭션을 필요로 합니다.
사진 및 비디오
제품 카탈로그의 사진 및 비디오에는 트랜잭션 지원이 필요하지 않습니다. 이러한 파일은 업데이트되거나 새 파일이 추가되는 경우에만 변경됩니다. 이미지와 실제 제품 데이터 간에 관계가 있더라도 특성상 트랜잭션이 아닙니다.
비즈니스 데이터
비즈니스 데이터는 기록이며 비동기이므로 트랜잭션 지원이 필요하지 않습니다. 데이터로 작업하는 비즈니스 분석가도 고유한 쿼리 요구 사항을 가지고 있습니다. 쿼리의 집계를 자주 사용하므로 다른 작은 데이터 포인트의 합계로 작업할 수 있습니다.