맨위로가기

분산 트랜잭션

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

분산 트랜잭션은 여러 자원에 걸쳐 원자성을 보장하는 트랜잭션 처리 방식이다. 분산 트랜잭션은 ACID 특성을 만족하며, X/Open DTP 모델이 사실상 표준으로 사용된다. 여러 데이터베이스에 걸쳐 트랜잭션이 발생할 경우, 트랜잭션 매니저가 ACID 특성을 보장하며, 2단계 커밋 프로토콜이 일반적으로 사용된다. 장기간의 트랜잭션의 경우 보상 트랜잭션 방식을 사용하며, EJB나 TMS와 같은 기술들이 분산 트랜잭션을 지원한다.

더 읽어볼만한 페이지

  • 데이터 관리 - 데이터 센터
    데이터센터는 컴퓨터 시스템 및 관련 장비와 지원 인프라를 수용하는 시설로, 기술 발전에 따라 규모와 중요성이 확대되었으며, 에너지 효율과 보안을 고려하여 설계 및 운영되고, TIA-942 표준에 따른 티어 분류와 친환경 기술 도입이 이루어지고 있다.
  • 데이터 관리 - 정보 아키텍처
    정보 아키텍처는 정보 시스템 및 정보 기술 분야에서 공유 정보 환경의 구조적 설계를 의미하며, 웹사이트, 소프트웨어 등의 구성과 레이블링을 포함하여 검색 용이성과 사용성을 지원하고, 도서관정보학에 기원을 두고 있다.
분산 트랜잭션
개요
유형데이터베이스 트랜잭션
특징원자성
일관성
격리성
지속성 (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. 기술 지원

EJB나 MTS와 같은 여러 현대 기술은 분산 트랜잭션을 지원한다.[1]

참조

[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