분산 트랜잭션
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
분산 트랜잭션은 여러 자원에 걸쳐 원자성을 보장하는 트랜잭션 처리 방식이다. 분산 트랜잭션은 ACID 특성을 만족하며, X/Open DTP 모델이 사실상 표준으로 사용된다. 여러 데이터베이스에 걸쳐 트랜잭션이 발생할 경우, 트랜잭션 매니저가 ACID 특성을 보장하며, 2단계 커밋 프로토콜이 일반적으로 사용된다. 장기간의 트랜잭션의 경우 보상 트랜잭션 방식을 사용하며, EJB나 TMS와 같은 기술들이 분산 트랜잭션을 지원한다.
더 읽어볼만한 페이지
분산 트랜잭션 | |
---|---|
개요 | |
유형 | 데이터베이스 트랜잭션 |
특징 | 원자성 일관성 격리성 지속성 (ACID 속성) |
관련 개념 | 분산 컴퓨팅 트랜잭션 처리 데이터베이스 시스템 분산 데이터베이스 2단계 커밋 |
상세 정보 | |
정의 | 여러 네트워크에 걸쳐 있는 데이터베이스 트랜잭션 |
목표 | 모든 네트워크 노드에서 트랜잭션의 원자성, 일관성, 격리성, 지속성을 보장 모든 노드에서 성공적으로 완료되거나, 아무 노드에서도 부분적으로 완료되지 않도록 보장 |
주요 프로토콜 | 2단계 커밋 (Two-Phase Commit, 2PC) |
문제점 | 복잡성 증가 성능 저하 가능성 단일 실패 지점 존재 가능성 (2PC의 경우) |
대안 | 3단계 커밋 (Three-Phase Commit, 3PC) Paxos Raft 아토믹 커밋 |
활용 분야 | 은행 시스템 전자 상거래 클라우드 컴퓨팅 분산 원장 기술 (블록체인) |
참고 서적 | 짐 그레이, "Transaction Processing: Concepts and Techniques" |
2. 분산 트랜잭션의 개념
트랜잭션 처리에서는 일반적으로 호스트가 "트랜잭션적 자원"을 제공하고, "트랜잭션 매니저"가 자원에 대한 모든 조작을 포함하는 트랜잭션을 관리한다. 데이터베이스는 트랜잭션적인 영구 저장 자원으로 일반적이며, 여러 데이터베이스에 트랜잭션이 걸쳐있는 경우도 빈번하다. 엄밀히 말하면, 단일 DBMS 내에서 서로 다른 물리적 노드에 분산 컴퓨팅한 데이터베이스가 분산 데이터베이스이며, 여러 DBMS에 걸쳐있는 트랜잭션이 분산 트랜잭션이다.[1]
2단계 커밋 프로토콜은 통상 수 밀리초에서 수 분 단위의 짧은 시간 내에 커밋할 수 있는 갱신 조작에 적용된다.[1]
수명이 긴 분산 트랜잭션도 존재하는데, 예를 들어 여행을 예약하는 트랜잭션은 항공권 예약, 렌터카, 호텔 예약 등으로 구성된다. 항공권 예약은 확인이 완료되기까지 수일이 걸릴 수도 있으므로, 자원을 장기간 잠그는 2단계 커밋은 적용할 수 없다. 이 경우 더 적합한 방법은 여러 개의 언두 레벨을 갖는 것이다. 이를 통해 호텔 예약을 취소하고, 시스템은 특정 조작을 언두하도록 설계할 수 있다(되돌릴 수 없는 조작이 완료된 경우 제외).[1]
수명이 긴 분산 트랜잭션은 웹 서비스에 구현되어 있다. 이러한 트랜잭션은 보상 트랜잭션의 원칙을 사용하며, 잠금을 걸지 않고 낙관적으로 격리성이 유지되는 것으로 간주한다. X/Open의 표준에서도 초장수명의 분산 트랜잭션 처리는 대상이 아니다.[1]
Enterprise JavaBeans(EJB)나 Microsoft Transaction Server(TMS)와 같은 다수의 현대 기술이 분산 트랜잭션의 업계 표준을 어느 정도 지원하고 있다.[1]
2. 1. ACID 속성
분산 트랜잭션은 다른 트랜잭션과 마찬가지로 ACID 특성을 모두 충족하며, 작업 단위(일련의 조작)에 대해 결과가 완료되거나 전혀 수행되지 않는 원자성을 보장한다.[1]격리성(ACID의 I)은 여러 데이터베이스와 관련된 트랜잭션에서 특별히 고려해야 할 사항이다.[1] 각 데이터베이스가 직렬 가능성을 유지하더라도, 전체적으로는 특성이 깨질 가능성이 있다(전역 직렬 가능성 참조).[1] 실제로 상용 데이터베이스 시스템은 병행성 제어를 위해 엄격한 2단계 락(SS2PL)을 사용한다.[1] 참여하는 모든 데이터베이스가 이를 채택하면 전역적인 직렬 가능성을 보장할 수 있다(커밋 순서 참조).[1]
분산 트랜잭션이 올바르게 완료되도록 보장하는 일반적인 방법은 2단계 커밋 프로토콜이다.[1]
2. 2. X/Open XA 모델
Open Group 컨소시엄이 X/Open 분산 트랜잭션 처리(DTP) 모델을 제안했으며, 이는 분산 트랜잭션 모델을 따르는 구성 요소의 동작에 대한 사실상의 표준이 되었다.[1]2. 3. 트랜잭션 매니저
트랜잭션 처리에서 일반적으로 호스트는 "트랜잭션적 자원"을 제공하고, "트랜잭션 매니저"는 자원에 대한 모든 조작을 포함하는 트랜잭션을 관리한다. 서로 다른 DBMS는 서로 다른 자원 관리이며, 서로 다른 자원 관리 간의 동기화(또는 ACID 특성을 실현하는) 서브 시스템이 트랜잭션 매니저이다.[1]3. 분산 트랜잭션의 구현
분산 트랜잭션은 ACID 특성을 모두 충족하며, 작업 단위(일련의 조작)에 대해 결과가 완료되거나 전혀 수행되지 않는 원자성을 보장한다.
Open Group 컨소시엄이 X/Open 분산 트랜잭션 처리(DTP) 모델을 제안했으며, 이는 분산 트랜잭션 모델을 따르는 구성 요소의 동작에 대한 사실상의 표준이 되었다.
데이터베이스는 트랜잭션적인 영구 저장 자원으로 일반적이며, 여러 데이터베이스에 트랜잭션이 걸쳐있는 경우도 빈번하다. 단일 DBMS 내에서 서로 다른 물리적 노드에 분산 컴퓨팅한 데이터베이스는 분산 데이터베이스이며, 여러 DBMS에 걸쳐있는 트랜잭션이 분산 트랜잭션이다. 서로 다른 DBMS는 서로 다른 자원 관리이며, 서로 다른 자원 관리 간의 동기화(또는 ACID 특성을 실현하는) 서브 시스템이 트랜잭션 매니저이다.
격리성(ACID의 I)은 여러 데이터베이스와 관련된 트랜잭션에서 특별한 고려가 필요하다. 각 데이터베이스가 직렬 가능성을 유지하더라도, 전체적으로 특성이 깨질 가능성(전역 직렬 가능성 참조)이 있다. 실제로, 상용 데이터베이스 시스템은 병행성 제어를 위해 엄격한 2단계 락(SS2PL)을 사용한다. 참여하는 모든 데이터베이스가 이를 채택하면 전역적인 직렬 가능성을 보장할 수 있다(커밋 순서 참조).
Enterprise JavaBeans(EJB)나 Microsoft Transaction Server(TMS)와 같은 다수의 현대 기술이 분산 트랜잭션의 업계 표준을 어느 정도 지원하고 있다.
3. 1. 2단계 커밋 (2PC) 프로토콜
트랜잭션 처리에서 일반적으로 호스트는 "트랜잭션적 자원"을 제공하고, "트랜잭션 매니저"는 자원에 대한 모든 조작을 포함하는 트랜잭션을 관리한다. 분산 트랜잭션의 올바른 완료를 보장하는 일반적인 방법은 2단계 커밋 프로토콜이다. 이 알고리즘은 통상 수 밀리초에서 수 분 단위의 짧은 시간 내에 커밋할 수 있는 갱신 조작에 적용된다.[1]수명이 긴 분산 트랜잭션도 존재한다. 예를 들어 여행을 예약하는 트랜잭션은 항공권 예약, 렌터카, 호텔 예약 등으로 구성된다. 항공권 예약은 확인이 완료되기까지 수일이 걸릴 수도 있으므로, 자원을 장기간 잠그는 2단계 커밋은 적용할 수 없다. 이 경우 더 적합한 방법은 여러 개의 언두 레벨을 갖는 것이다. 이를 통해 호텔 예약을 취소하고, 시스템은 특정 조작을 언두하도록 설계할 수 있다(되돌릴 수 없는 조작이 완료된 경우 제외).[1]
3. 2. 장기 실행 트랜잭션
수명이 긴 분산 트랜잭션도 존재한다. 예를 들어 여행을 예약하는 트랜잭션은 항공권 예약, 렌터카, 호텔 예약 등으로 구성된다. 항공권 예약은 확인이 완료되기까지 수일이 걸릴 수도 있으므로, 자원을 장기간 잠그는 2단계 커밋은 적용할 수 없다. 이 경우 더 적합한 방법은 여러 개의 언두 레벨을 갖는 것이다. 이를 통해 호텔 예약을 취소하고, 시스템은 특정 조작을 언두하도록 설계할 수 있다(되돌릴 수 없는 조작이 완료된 경우 제외).[1]수명이 긴 분산 트랜잭션은 웹 서비스에 구현되어 있다. 이러한 트랜잭션은 보상 트랜잭션의 원칙을 사용하며, 잠금을 걸지 않고 낙관적으로 격리성이 유지되는 것으로 간주한다. X/Open의 표준에서도 초장수명의 분산 트랜잭션 처리는 대상이 아니다.[1]
4. 동기화
이벤트 기반 아키텍처에서 분산 트랜잭션은 동기화를 위해 요청-응답 패러다임을 사용할 수 있다.[2]
4. 1. 요청-응답 방식
이벤트 기반 아키텍처에서 분산 트랜잭션은 동기화를 위해 요청-응답 패러다임을 사용할 수 있으며, 다음과 같은 두 가지 방식으로 구현할 수 있다.[2]5. 격리성
격리성(ACID의 I)은 여러 데이터베이스와 관련된 트랜잭션에서 특별히 고려해야 할 사항이다. 각 데이터베이스가 직렬 가능성을 유지하더라도, 전체적으로는 특성이 깨질 가능성이 있다(전역 직렬 가능성 참조).[1] 실제로 상용 데이터베이스 시스템은 병행성 제어를 위해 엄격한 2단계 락(SS2PL)을 사용한다.[1] 참여하는 모든 데이터베이스가 이를 채택하면 전역적인 직렬 가능성을 보장할 수 있다(커밋 순서 참조).[1]
6. 기술 지원
참조
[1]
서적
Transaction Processing Concepts and Techniques
Morgan Kaufmann
[2]
서적
Fundamentals of Software Architecture: An Engineering Approach
O'Reilly Media
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com