Azure Cosmos DB for MongoDB vCore의 트랜잭션에서 여러 작업 그룹화
적용 대상: MongoDB vCore
여러 작업을 단일 트랜잭션으로 그룹화하여 함께 커밋하거나 롤백하는 것이 일반적입니다. 데이터베이스 원칙에서 트랜잭션은 일반적으로 네 가지 주요 ACID 원칙을 구현합니다. ACID는 다음을 의미합니다.
- 원자성(Atomicity): 트랜잭션이 완전히 완료되거나 전혀 완료되지 않습니다.
- 일관성(Consistency): 데이터베이스가 일관된 상태에서 다른 상태로 전환됩니다.
- 격리(Isolation): 개별 트랜잭션은 동시 트랜잭션으로부터 보호됩니다.
- 내구성(Durability): 완료된 트랜잭션은 영구적이므로 시스템 오류 발생 시에도 데이터가 일관되게 유지됩니다.
데이터베이스 관리의 ACID 원칙은 트랜잭션이 안정적으로 처리됨을 보장합니다. Azure Cosmos DB for MongoDB vCore는 이러한 원칙을 구현하므로 사용자가 여러 작업에 대한 트랜잭션을 만들 수 있습니다.
필수 조건
- 기존 Azure Cosmos DB for MongoDB vCore 클러스터.
- Azure 구독이 없는 경우 무료로 계정을 만듭니다.
- 기존 Azure 구독이 있는 경우 새 Azure Cosmos DB for MongoDB vCore 클러스터를 만듭니다.
트랜잭션 만들기
선택한 개발자 언어의 적절한 메서드를 사용하여 새 트랜잭션을 만듭니다. 이러한 메서드에는 일반적으로 여러 트랜잭션을 함께 그룹화하기 위한 몇 가지 래핑 메커니즘과 트랜잭션을 커밋하는 메서드가 포함됩니다.
참고 항목
이 섹션의 샘플에서는 collection
이라는 컬렉션 변수가 있다고 가정합니다.
startSession()
을 사용하여 트랜잭션 작업에 대한 클라이언트 세션을 만듭니다.const transactionSession = client.startSession();
withTransaction()
을 사용하여 트랜잭션을 만들고 모든 관련 트랜잭션 작업을 콜백 내에 배치합니다.await transactionSession.withTransaction(async () => { await collection.insertOne({ name: "Coolarn shirt", price: 38.00 }, transactionSession); await collection.insertOne({ name: "Coolarn shirt button", price: 1.50 }, transactionSession); });
commitTransaction()
을 사용하여 트랜잭션을 커밋합니다.transactionSession.commitTransaction();
endSession()
을 사용하여 트랜잭션 세션을 종료합니다.transactionSession.endSession();
트랜잭션 롤백
경우에 따라 커밋되기 전에 트랜잭션을 실행 취소해야 할 수 있습니다.
기존 트랜잭션 세션을 사용하여
abortTransaction()
으로 트랜잭션을 중단합니다.transactionSession.abortTransaction();
트랜잭션 세션을 종료합니다.
transactionSession.endSession();