KR20140138670A - 2-단계 커미트 호출들의 엄격한 순서화에 근거하여 트랜잭션 복구를 지원하는 시스템들 및 방법들 - Google Patents
2-단계 커미트 호출들의 엄격한 순서화에 근거하여 트랜잭션 복구를 지원하는 시스템들 및 방법들 Download PDFInfo
- Publication number
- KR20140138670A KR20140138670A KR1020147024207A KR20147024207A KR20140138670A KR 20140138670 A KR20140138670 A KR 20140138670A KR 1020147024207 A KR1020147024207 A KR 1020147024207A KR 20147024207 A KR20147024207 A KR 20147024207A KR 20140138670 A KR20140138670 A KR 20140138670A
- Authority
- KR
- South Korea
- Prior art keywords
- resource
- transaction
- transactions
- manager
- list
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/0709—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1474—Saving, restoring, recovering or retrying in transactions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
2-단계 커미트(two phase commit) 호출들의 엄격한 순서화에 근거하여 트랜잭션 복구를 지원하는 시스템들 및 방법들이 제공된다. 미드-티어(mid-tier) 트랜잭셔널 환경에서의 적어도 하나의 리소스 관리자는 2-단계 트랜잭션을 프로세싱함에 있어서 미드-티어 트랜잭션 로그(TLOG)들을 제거하는 것을 지원하기 위해 "결정자 리소스(determiner resource)"로서 지정될 수 있다. 트랜잭션 관리자는 결정자 리소스 전에 미드-티어 트랜잭셔널 시스템 내의 모든 다른 리소스 관리자들을 준비시킬 수 있다. 더욱이, 상기 트랜잭션 관리자는 트랜잭션을 복구하기 위해 결정자 리소스에 의해 제공되는, 커미트될 미결(outstanding) 트랜잭션들의 리스트에 의존할 수 있다. 트랜잭션 관리자는 결정자 리소스로부터 리턴된 인다우트(in-doubt) 트랜잭션들의 리스트와 매치되는, 리소스 관리자로부터 리턴된 인다우트 트랜잭션을 커미트할 수 있다. 그렇지 않으면, 트랜잭션 관리자는 인다우트 트랜잭션을 롤백(roll back)할 수 있다.
Description
저작권 공지
본 명세서에서 개시된 부분은 저작권 보호를 받는 내용을 포함한다. 저작권자는 미국특허상표청의 특허 파일 또는 기록에 나타난 대로 본 특허 문서 또는 특허 개시내용을 어느 누군가가 팩시밀리 재생하는 것은 반대하지 않지만, 그 밖의 모든 것은 저작권으로 보호된다.
기술분야
본 발명은 일반적으로, 컴퓨터 시스템들 및 미들웨어와 같은 소프트웨어에 관한 것이며, 특히 트랜잭셔널 미들웨어에 관한 것이다.
트랜잭셔널 미들웨어 시스템 또는 트랜잭션 지향 미들웨어(transaction oriented middleware)는 조직 내에서 다양한 트랜잭션들을 프로세스할 수 있는 기업 어플리케이션 서버들을 포함한다. 고성능 네트워크 및 멀티프로세서 컴퓨터와 같은 새로운 기술들의 발달에 따라, 트랜잭셔널 미들웨어의 성능을 더 향상시킬 필요가 있다. 이러한 것들은 대체로 본 발명의 실시예들이 해결하고자 하는 영역들이다.
2-단계 커미트(two phase commit) 호출들의 엄격한 순서화에 근거하여 트랜잭션 복구를 지원하는 시스템들 및 방법들이 제공된다. 미드-티어(mid-tier) 트랜잭셔널 환경에서의 적어도 하나의 리소스 관리자는 2-단계 트랜잭션을 프로세싱함에 있어서 미드-티어 트랜잭션 로그(TLOG)들을 제거하는 것을 지원하기 위해 "결정자 리소스(determiner resource)"로서 지정될 수 있다. 트랜잭션 관리자는 결정자 리소스 전에 미드-티어 트랜잭셔널 시스템 내의 모든 다른 리소스 관리자들을 준비시킬 수 있다. 더욱이, 상기 트랜잭션 관리자는 트랜잭션을 복구하기 위해 결정자 리소스에 의해 제공되는, 커미트될 미결(outstanding) 트랜잭션들의 리스트에 의존할 수 있다. 트랜잭션 관리자는 결정자 리소스로부터 리턴된 인다우트(in-doubt) 트랜잭션들의 리스트와 매치되는, 리소스 관리자로부터 리턴된 인다우트 트랜잭션을 커미트할 수 있다. 그렇지 않으면, 트랜잭션 관리자는 인다우트 트랜잭션을 롤백(roll back)할 수 있다.
본 발명의 다른 목적들 및 장점들이 첨부 도면들에 비추어 다양한 실시예들의 다음의 상세한 설명을 읽을 때 이러한 설명으로부터 이 기술 분야의 숙련자들에게 분명해질 것이다.
도 1은 본 발명의 실시예에 따른 트랜잭셔널 환경의 예를 도시한다.
도 2는 트랜잭셔널 미들웨어 머신 환경에서 2-단계 커미트를 지원하는 예를 도시한다.
도 3은 트랜잭셔널 미들웨어 머신 환경에서 인다우트 트랜잭션들을 복구하는 예를 도시한다.
도 4는 본 발명의 실시예에 따른 트랜잭셔널 미들웨어 머신 환경에서 트랜잭션을 프로세싱하기 위해 2-단계 커미트(2PC) 호출들의 엄격한 순서화를 지원하는 예를 도시한다.
도 5는 본 발명의 실시예에 따른 트랜잭션 로그(TLOG)를 이용함이 없이 글로벌 트랜잭션을 복구하는 예를 도시한다.
도 6은 본 발명의 실시예에 따른 트랜잭션 로그(TLOG)를 이용함이 없이 2-단계 커미트 트랜잭션을 복구하는 예시적인 순서도이다.
도 2는 트랜잭셔널 미들웨어 머신 환경에서 2-단계 커미트를 지원하는 예를 도시한다.
도 3은 트랜잭셔널 미들웨어 머신 환경에서 인다우트 트랜잭션들을 복구하는 예를 도시한다.
도 4는 본 발명의 실시예에 따른 트랜잭셔널 미들웨어 머신 환경에서 트랜잭션을 프로세싱하기 위해 2-단계 커미트(2PC) 호출들의 엄격한 순서화를 지원하는 예를 도시한다.
도 5는 본 발명의 실시예에 따른 트랜잭션 로그(TLOG)를 이용함이 없이 글로벌 트랜잭션을 복구하는 예를 도시한다.
도 6은 본 발명의 실시예에 따른 트랜잭션 로그(TLOG)를 이용함이 없이 2-단계 커미트 트랜잭션을 복구하는 예시적인 순서도이다.
본 발명은 첨부된 도면들의 도해들에서 예로서 도시되고 제한하는 것으로서 도시되는 것이 아니며, 도면들에서 유사한 도면 부호들은 유사한 요소들을 나타낸다. 주목할 점으로서, 본 발명에서 "일" 또는 "하나의" 또는 "일부" 실시예(들)에 대한 참조들은 반드시 동일한 실시예에 관한 것이 아니며, 이러한 참조들은 적어도 하나를 의미하는 것이다.
하기 본 발명의 설명은 Tuxedo 환경을 트랜잭셔널 미들웨어 머신 환경에 대한 예로서 사용한다. 다른 타입의 트랜잭셔널 미들웨어 머신 환경들이 제한 없이 사용될 수 있음이 이 기술분야의 숙련자들에게 분명해질 것이다.
2-단계 커미트 호출들의 엄격한 순서화에 근거하여 트랜잭션 복구를 지원하는 시스템들 및 방법들이 본 명세서에 기술된다. 미드-티어 트랜잭셔널 환경에서의 적어도 하나의 리소스 관리자는 2-단계 트랜잭션을 프로세싱함에 있어서 미드-티어 트랜잭션 로그(TLOG)들을 제거하는 것을 지원하기 위해 "결정자 리소스로서 지정될 수 있다. 트랜잭션 관리자는 결정자 리소스 전에 미드-티어 트랜잭셔널 시스템 내의 모든 다른 리소스 관리자들을 준비시킬 수 있다. 더욱이, 상기 트랜잭션 관리자는 트랜잭션을 복구하기 위해 결정자 리소스에 의해 제공되는, 커미트될 미결 트랜잭션들의 리스트에 의존할 수 있다. 트랜잭션 관리자는 결정자 리소스로부터 리턴된 인다우트 트랜잭션들의 리스트와 매치되는, 리소스 관리자로부터 리턴된 인다우트 트랜잭션을 커미트할 수 있다. 그렇지 않으면, 트랜잭션 관리자는 인다우트 트랜잭션을 롤백할 수 있다.
트랜잭셔널
환경 및 글로벌 트랜잭션
도 1은 본 발명의 실시예에 따른 트랜잭셔널 환경의 예를 도시한다. 도 1에 도시된 바와 같이, 트랜잭셔널 환경(100)은 최종 사용자(101), 어플리케이션 프로그램(102), 하나 이상의 트랜잭션 관리자들(TM)(103), 복수의 리소스 관리자들(RM)(104 내지 106), 및 데이터베이스(110)와 같은 하나 이상의 지속 스토어들을 포함할 수 있다.
본 발명의 일 실시예에 따르면, 어플리케이션 프로그램(102)은 트랜잭션을 구성하는 동작(action)들을 특정할 수 있다. 도시된 바와 같이, 어플리케이션 프로그램(102)은 트랜잭션을 시작, 커미트 또는 취소(abort)시키기 위해 트랜잭션 관리자(103)와 통신하며, 상기 트랜잭션 관리자(103)는 어플리케이션 프로그램(102)에 트랜잭션의 시작, 종료 및 배치(disposition)를 다시 보낼 수 있다. 더욱이, 어플리케이션 프로그램(102)은 트랜잭션 관리자(103)에 대한 트랜잭션 경계들을 정의할 수 있는 바, 상기 트랜잭션 관리자는 복수의 리소스 관리자들(RM)(104 내지 106)과 트랜잭션 정보를 교환할 수 있다. 추가적으로, 어플리케이션 프로그램(102)은 유용한 작업을 행하기 위해 내장형 구조적 질의(Embedded SQL)를 통해 복수의 리소스 관리자들(104 내지 106)과 통신할 수 있다.
복수의 리소스 관리자들(104 내지 106)은 지속 스토어들 예컨대, 데이터베이스(110)로의 액세스를 제공할 수 있다. 본 발명의 실시예에 따르면, 복수의 리소스 관리자들(104 내지 106)은 지속 스토어들에 투명하게 데이터베이스 연결들 및 연결해제들을 처리하도록 XA 인터페이스들을 구현할 수 있다. XA 인터페이스들은 트랜잭션 코디네이션(coordination), 커미트먼트(commitment) 및 복구를 위한 프로토콜을 기술하는 사양에 근거할 수 있다. 트랜잭션에 참여하는 XA 리소스는 XA 리소스 관리자 및 백엔드 지속 스토어를 포함할 수 있다.
본 발명의 다양한 실시예들에 따르면, 트랜잭셔널 시스템은 글로벌 트랜잭션을 지원할 수 있는 바, 상기 글로벌 트랜잭션은 하나보다 많은 서버 상에서 실행될 수 있고, 하나보다 많은 리소스 관리자로부터의 데이터에 액세스할 수 있다.
글로벌 트랜잭션은 원자성, 동시성, 격리성 및 내구성(ACID)의 네 가지 속성들을 특징으로 하는 동작들의 특정 시퀀스로서 처리될 수 있다. 글로벌 트랜잭션은 다음의 특징들을 가지는 작업의 로직 유닛일 수 있다.
- 모든 부분들은 성공적이거나(succeed) 또는 어떤 이펙트(effect)도 갖지 않는다.
- 하나의 일관된 상태로부터 다른 하나의 상태로 리소스들을 정확하게 변환(transform)하는 동작들이 수행된다.
- 비록 동일한 트랜잭션 내의 다른 프로세스들이 데이터에 액세스할 수 있지만, 중간 결과들은 다른 트랜잭션들에게 액세스가능하지 않다.
- 완료된 시퀀스의 모든 이펙트들은 어떤 종류의 실패(failure)에 의해 달라질 수 없다.
더욱이, 글로벌 트랜잭션은 단일 리소스 관리자에 각각 액세스하는 여러 로컬 트랜잭션들을 포함할 수 있다. 로컬 트랜잭션은 단일의 데이터베이스 또는 파일에 액세스할 수 있고, 이러한 특유의(distinct) 데이터베이스에서 동시성 제어 및 갱신들의 원자성을 수행하는 역할을 하는 리소스 관리자에 의해 제어될 수 있다. 소정 로컬 트랜잭션은 자신의 액세스를 완료함에 있어서 성공적일 수도 비성공적일 수도 있다.
추가적으로, 트랜잭션 관리자(103)는 트랜잭셔널 환경(100)에서 서로 다른 트랜잭션들에 글로벌 트랜잭션 식별자(GTRID)들을 할당할 수 있다. 트랜잭션 관리자(103)는 이들의 진행을 모니터링하여, 트랜잭션 완료를 보장하고 실패 복구를 제공하는 역할을 할 수 있다. 추가적으로, 트랜잭션 관리자(103)는 리소스 관리자들(104 내지 105)에 2-단계 커미트 호출들을 전송하는 것과 같이 트랜잭션 정보를 교환하기 위해 XA 인터페이스들을 통해 복수의 리소스 관리자들(104 내지 105)과 통신할 수 있다.
2-단계 커미트(2
PC
)
2-단계 커미트(2PC) 프로토콜은 약 결합(loosely-coupled) 글로벌 트랜잭션과 같은 트랜잭션을 실행하기 위해 사용될 수 있다. 2-단계 커미트 프로토콜(2PC)은 준비 단계 및 커미트 단계를 포함할 수 있다. 준비 단계에서, 코디네이팅 트랜잭션 관리자(TM)는 참여 리소스 관리자(RM)들에게 트랜잭션을 커미트하거나 또는 취소하기 위해 필요한 단계들을 취하도록 명령한다. 커미트 단계에서, 트랜잭션 관리자(TM)는 준비 단계의 결과들에 근거하여 트랜잭션을 커미트할지 또는 취소할지를 결정한다.
도 2는 트랜잭셔널 미들웨어 머신 환경에서 2-단계 커미트를 지원하는 예를 도시한다. 도 2에 도시된 바와 같이, 트랜잭셔널 환경(200)은 다양한 트랜잭션들의 실행을 지원하는 트랜잭션 관리자(201), 및 하나 이상의 데이터 소스 예컨대, 데이터베이스(205)를 관리하는 하나 이상의 리소스 관리자들(202 내지 204)을 포함할 수 있다.
예를 들어, 트랜잭션 관리자(201)는, 트랜잭션 브랜치 A(211), 트랜잭션 브랜치 B(212) 및 트랜잭션 브랜치 C(213)를 수반하는 트랜잭션을 실행시킬 수 있고, 이들 각각은 리소스 관리자(202 내지 204) 각각에 대해 실행될 수 있다. 만일 어떤 프랜치가 트랜잭션을 실패하면, 트랜잭션 관리자(201)는 리소스 관리자(202 내지 204)가 트랜잭션을 커미트할지 또는 롤백할지를 결정하는 것을 도울 수 있다.
도 2에 도시된 바와 같이, 트랜잭션 관리자(201)는 모든 세 개의 브랜치들(단계 1, 2 및 3) 상의 리소스 관리자(202 내지 204)에게 준비 명령을 보낼 수 있다. 리소스 관리자들(202 내지 204)이 "OK" 표(vote)를 리턴한 후에(단계들 4, 5 및 6), 트랜잭션 관리자(201)는 데이터베이스(205)에 트랜잭션 로그를 기록할 수 있다(단계 7).
트랜잭션 로그(TLOG)는 파일들 또는 데이터베이스에 기록될 수 있어서, 트랜잭션 관리자(201)는 어떤 브랜치가 커미트 단계 동안 실패하는 경우에도 트랜잭션을 복구하기에 충분한 정보를 가질 수 있다.
그 다음, 트랜잭션 관리자(201)는 리소스 관리자(202 내지 204)에게 모든 세 개의 브랜치들을 커미트하도록 명령할 수 있다(단계들 8, 9 및 10). 리소스 관리자(202 내지 204)는 커미트 단계를 성공적으로 완료한 후에 트랜잭션 관리자(201)에게 알려줄 수 있다(단계들 11, 12 및 13).
트랜잭션 로그(
TLOG
)에 근거한 트랜잭션 복구
본 발명의 일 실시예에 따르면, 트랜잭션 로그(TLOG)는 트랜잭션 관리자에 의해 트랜잭션들을 커미트하기 위해 결정들을 홀딩(hold)할 수 있다. 예를 들어, TLOG는 트랜잭션 관리자가 서로 다른 참여 XA 리소스들을 트랙킹하도록, 상기 트랜잭션 관리자에 의해 지속될 수 있는 리소스 체크포인트 레코드를 저장할 수 있다.
트랜잭션은 트랜잭션 관리자가 준비 단계 후에 모든 트랜잭션 브랜치들로부터 성공 표를 수신할 때 TLOG에 기록될 수 있다. TLOG 내의 트랜잭션 레코드는 적어도 트랜잭션 식별자(XID)를 포함할 수 있고, 상기 트랜잭션 식별자는 트랜잭션 관리자에 의해 할당된 GTRID 및 트랜잭션이 실행되는 리소스 관리자에 의해 할당된 로컬 XID를 더 포함한다.
더욱이, TLOG는 커미트되도록 마킹되는 인플라이트(in-flight) 트랜잭션의 상태의 레코드들을 홀딩할 수 있다. TLOG는 인다우트 트랜잭션들을 복구하는 데 유리한 바, 상기 인다우트 트랜잭션들은 시스템 충돌(crash) 후에 미드-티어(mid-tier) 트랜잭셔널 시스템에서 준비는 되었지만 아직 커미트되지 않은 트랜잭션들이다. 인다우트 트랜잭션들을 복구함이 없이, 시스템은 충돌 후에 부정확하고 비일관된 상태로 있을 수 있다.
예를 들어, 만일 시스템이 2-단계 커미트 트랜잭션 동안 실패하면, 하나의 백엔드 데이터 스토어로의 갱신들이 커미트되었을 수 있지만, 동일한 트랜잭션에서 다른 하나의 데이터 스토어로의 갱신들은 커미트하도록 아직 명령받지 못했을 수 있는 바, 즉 데이터 스토어의 갱신들은 여전히 보류상태(pending)이다. 일단, 시스템의 실패된 부분들이 재시작되면, 보류상태의 갱신들을 홀딩하는 데이터 스토어들은 상기 갱신들이 커미트되어야 할지 또는 롤백되어야 할지를 알지 못할 수 있다.
도 3은 트랜잭셔널 미들웨어 머신 환경에서 인다우트 트랜잭션들을 회복하는 예를 도시한다. 도 3에 도시된 바와 같이, 트랜잭셔널 미들웨어 머신 환경(300)은 트랜잭션 관리자(301) 및 복수의 리소스 관리자들(302 내지 304) 및 지속 스토어 즉, 데이터베이스(305)를 포함한다.
트랜잭션 관리자(301)는 TLOG를 판독함으로써 글로벌 트랜잭션이 인다우트인지를 자동으로 결정할 수 있다(단계 1). 그 다음, 트랜잭션 관리자(301)는 참여 리소스 관리자들(302 내지 304)의 관련 벡엔드 데이터 스토어들을 폴링할 수 있다. 참여 리소스 관리자들(302 내지 304) 각각은 인다우트 트랜잭션들의 리스트를 리턴할 수 있는 바, 상기 인다우트 트랜잭션들은 트랜잭션 관리자(301)가 이를 롤백할지 또는 커미트할지 알지 못하는 트랜잭션들이다(단계들 2, 4 및 6).
더욱이, 트랜잭션 관리자들(301)은 TLOG와 각각의 인다우트 트랜잭션을 매칭하여, 서로 다른 리소스 관리자들(302 내지 304) 상에서 인다우트 트랜잭션들을 커미트하거나 또는 롤백하는 것을 진행할 수 있다(단계들 3, 5 및 7). 예를 들어, 인다우트 트랜잭션이 TLOG에 나타날 때, XAResource.commit()은 TLOG에 특정된 리소스 관리자에게 인다우트 트랜잭션을 커미트하도록 호출될 수 있다. 한편, 트랜잭션이 TLOG에 없을 때 즉, 커미트 결정이 충돌 전에 트랜잭션에 대해 이루어지지 않았을 때, XAResource.rollback()은 트랜잭션 식별자(XID)에 근거하여 리소스 관리자 상에서 상기 트랜잭션을 롤백하도록 호출될 수 있다.
도 3에 도시된 바와 같이, 트랜잭션은 리소스 관리자(302) 상에서 준비될 수 있고, 시스템은 리소스 관리자(302)가 트랜잭션 관리자(301)에게 성공 표를 전송할 수 있기 전에 충돌한다. 그 다음, 트랜잭션 관리자(301)는 모든 브랜치들로부터 성공 표를 수신하지 못할 수 있고, 그러므로 TLOG에 트랜잭션을 로깅할 수 없다. 따라서, 트랜잭션 관리자(301)는 자신들 각각의 리소스 관리자들(302 내지 304) 상에서 모든 브랜치 트랜잭션들을 롤백할 수 있다. 따라서, 이러한 일관되고 예측가능한 트랜잭션 복구 접근법을 사용하여, 트랜잭션 관리자는, 일부 브랜치들이 커미트되고 일부 브랜치들이 롤백되는 혼합형 휴리스틱 완료(mixed heuristic completion)를 회피할 수 있다.
트랜잭션 관리자 복구 로그들에 대한 필요성을 경감
트랜잭셔널 환경에서, 복구 정보는, 복구를 시행하고 ACID 속성들이 2-단계 커미트 트랜잭션 관리자들의 설계 요건임을 보장하기 위해 안정적인 스토리지에 지속될 수 있다.
예를 들어, (XA) 2-단계 로깅 알고리즘은 다음의 단계들을 수반할 수 있다.
1. 어플리케이션은 트랜잭션에서 복수의 XA 리소스들을 사용하고, 트랜잭션에 대한 커미트를 발행한다.
2. 트랜잭션 관리자는 모든 XA 리소스 참여자들 상에 XAResouce.prepare를 발행한다.
3. 트랜잭션 관리자는 트랜잭션의 포맷 id 및 글로벌 트랜잭션 id를 포함하는 트랜잭션 로그를 유지시킨다.
4. 트랜잭션 관리자는 모든 XA 리소스 참여자들 상에 XAResource.commit을 발행한다.
5. 트랜잭션 관리자는 (일반적으로 게으르게(lazily), 배치들로, 기타 등등으로) 트랜잭션 레코드를 제거/삭제한다.
6. 실패의 이벤트에서, 지속되는 트랜잭션 레코드들은 모든 수반된 리소스 관리자들 상에서 이루어지는 XAResouce.recover 호출들로부터 리턴된 인다우트 Xid들에 매치되고, 커미트 또는 롤백에 의한 회복이 이에 따라 시행된다.
리소스 관리자들로의 실제 프로토콜 네트워크 호출들과 함께 안정적인 스토리지에 복구 정보를 지속시킬 필요성은 2-단계 커미트 트랜잭션들에 대한 수행 비용(performance cost)을 부과할(inflict) 수 있다. 이는 또한, 고-가용(highly-available)의 안정적인 스토리지에 필요한 공유 파일 시스템 또는 데이터베이스 스토리지로 인한 자산 용량 비용(asset capacity cost)뿐만 아니라 이 스토리지의 관리로 인한 관리상의 비용(administrative cost)을 수반할 수 있다. 이 비용들은 (동기적) 복제(replication) 및 이 복제를 다시 관리하는 것이 요구되는 사이트 전역의 장애 복구(site-wide disaster recovery)의 경우 증가될 수 있다. 따라서, 트랜잭션 관리자 복구 로그들에 대한 필요성을 경감하는 것은 기존 시스템들에 걸쳐 상당한 개선을 제공할 수 있다.
본 발명의 일 실시예에 따르면, 다음의 기법을 사용하여, 2-단계 커미트 호출들의 엄격한 순서화 및 일 리소스 참여자를 복구의 결정자로서 분류하는 것에 근거하여 트랜잭션 복구 및 ACID 속성들을 제공함으로써 트랜잭션 로그들에 대한 필요성을 경감시키는 것이 가능하다.
1. 어플리케이션은 트랜잭션에 복수의 XA 리소스들을 사용하고, 트랜잭션에 대한 커미트를 발행한다.
2. 특정한 리소스들은 트랜잭션 결과들의 "결정자"로서 지정되도록 구성될 수 있다. 만일 이러한 리소스가 구성되지 않으면, 트랜잭션 시스템은 일 리소스를 지명하며 구성에 이를 지속시킬 것이다.
3. 2-단계 트랜잭션에서 리소스가 처음 사용되거나 또는 리소스들의 새로운 조합이 처음 사용될 때마다, 이러한 조합은 캡쳐되고 트랜잭션 프로세싱 서브 시스템에 의해 자동으로 구성에 지속된다. 이 구성 지속은 이러한 트랜잭션에 대해 발행되는 제1 준비 직전에 발생된다. 만일 이 구성 변경이 실패하면, 트랜잭션은 롤백될 수 있다. 필수적인 것은 아니지만, 이 단계는 복구 동안 XAResource.recover 호출들을 요하는 리소스들의 세트를 감소시킴에 따라 추가의 최적화를 제공한다.
4. 트랜잭션 관리자는 어떤 트랜잭션 로깅을 버린다(forgo).
5. 트랜잭션 관리자는 모든 XA 리소스 참여자들 상에 XAResource.prepare를 발행하고, 마지막으로 "결정자" 리소스를 준비시킨다.
6. 트랜잭션 관리자는 모든 XA 리소스 참여자들 상에 XAResource.commit을 발행하고, 마지막으로 "결정자" 리소스를 커미트한다.
7. 실패의 이벤트에서, XAResource.recover 스캔이 구성 내의 모든 비-"결정자" 리소스들 상에서 시행되며, 인다우트 Xid들은 결정자 리소스의 XAResource. recovery로부터 리턴된 인다우트 Xid들에 매치된다. 결정자 리스트에 매치/기존 Xid가 존재하는 경우 커미트에 의한 복구 또는 결정자 리스트에 매치/기존 Xid가 존재하지 않는 경우 롤백에 의한 복구가 이에 따라 시행된다.
8. 트랜잭션 시스템의 클린 셧다운 또는 재시작 동안, 구성은 불필요한 복구 호출들 및 프로세싱이 시동(startup) 동안 시행되지 않는 방식으로 제거/마킹된다.
상기에 언급된 기법은 다음의 섹션들에서 더욱 상세히 기술될 수 있다.
2-단계 커미트(2
PC
) 호출들의 엄격한 순서화
본 발명의 실시예에 따르면, 시스템은 2-단계 커미트(2PC) 호출들의 엄격한 순서화에 근거하여 트랜잭션을 프로세싱함에 있어서 미드-티어 트랜잭션 로그(TLOG)들을 제거할 수 있다.
도 4는 본 발명의 실시예에 따른 트랜잭션 미들웨어 머신 환경에서 트랜잭션을 프로세싱하기 위해 2-단계 커미트(2PC) 호출들의 엄격한 순서화를 지원하는 예를 도시한다. 도 4에 도시된 바와 같이, 글로벌 트랜잭션(410)은 트랜잭션 관리자(TM)(401), 복수의 리소스 관리자들(RM)들(402 내지 404)을 포함하는 미드-티어 트랜잭셔널 시스템(400)에서 지원될 수 있다. 리소스 관리자들(RM)들(402 내지 403)은 글로벌 트랜잭션(410)에 참여하며, 리소스 관리자(404)는 글로벌 트랜잭션(410)에 참여하지 않는다. 본 발명의 실시예에 따르면, 트랜잭션(410)은 복수의 트랜잭셔널 관리자들에 걸쳐 이어지지(span) 않는다.
트랜잭션 관리자(401)는 데이터베이스(405)와 관련된 리소스, 예컨대 리소스 관리자(RM)(402)를 결정자 리소스로서 지정할 수 있다(단계 1). 리소스 관리자(RM)(402)를 결정자 리소스로 지명하는 것은 트랜잭션 머신 환경에 대한 구성에 지속될 수 있다. 어떠한 결정자 리소스도 구성 내의 트랜잭션에 지정되지 않을 때, 트랜잭션 관리자(401)는 데이터 리소스를 결정자 리소스로 지명하고, 이를 구성에 지속시킬 수 있다. 추가적으로, 결정자 리소스(402)는 메시지 큐와 같은 데이터베이스외의 리소스일 수 있다.
더욱이, 2-단계 트랜잭션(410)을 프로세싱함에 있어서 리소스가 처음 사용되거나 또는 리소스들의 새로운 조합이 처음 사용될 때마다, 새로운 리소스 또는 리소스들의 새로운 조합은 캡쳐되어 트랜잭션 관리자(401)에 의해 자동으로 구성 파일과 같은 구성에 지속될 수 있다. 이러한 구성 지속은 2-단계 트랜잭션에 대한 제1 준비 요청이 발행되기 직전에 발생될 수 있다. 만일 이 구성 변경이 실패하면 트랜잭션(410)은 롤백될 수 있다.
본 발명의 실시예에 따르면, 트랜잭션 관리자(401)는 2-단계 트랜잭션(410)에 대해 결정자 리소스, 예컨대 리소스 관리자(402)가 모든 참여 리소스 관리자들 중에서 마지막으로 준비 및 커미트되도록 보장할 수 있다.
도 4에 도시된 바와 같이, 트랜잭션 관리자(401)는 결정자 리소스를 준비시키기 전에(단계 4), 리소스 관리자(RM)(403)를 먼저 준비시킬 수 있다(단계 2). 참여 리소스 관리자(RM)들(402 내지 403)로부터 "OK" 표를 수신한 후에(단계들 3 및 5), 트랜잭션 관리자(401)는 리소스 관리자(RM)(403)를 커미트할 수 있고(단계 6), 그 다음 결정자 리소스를 커미트하는 것이 뒤따른다(단계8). 트랜잭션은 트랜잭션 관리자(401)가 리소스 관리자들(402 내지 403) 각각으로부터 성공 표시를 수신한 후에 완료될 수 있다(단계들 7 및 9).
따라서, 트랜잭션 관리자(401)는 준비 단계가 성공적으로 처리된 후 TLOG를 기록하는 것을 포함하여, 리소스들/체크포인트들의 어떠한 로깅을 버릴 수 있다. 시스템은 트랜잭션의 성능을 향상시킬 수 있고, 미드-티어 트랜잭셔널 시스템(400)으로 하여금 트랜잭션(410)을 복구하도록 할 수 있다.
TLOG
를 사용함이 없이 글로벌 트랜잭션을 복구
도 5는 본 발명의 실시예에 따른 트랜잭션 로그(TLOG)를 사용함이 없이 글로벌 트랜잭션을 복구하는 예를 도시한다. 도 5에 도시된 바와 같이, 글로벌 트랜잭션(510)은, 트랜잭션 관리자(TM)(501), 복수의 리소스 관리자들(RM)(502 내지 504)을 포함하는 미드-티어 트랜잭셔널 시스템(500)에서 지원될 수 있다.
트랜잭션(510)이 복구될 필요가 있을 때, 트랜잭션 관리자(501)는 예컨대, 결정자 리소스(502) 상에 XA_recover() 호출을 함으로써 복구하는 것을 시도할 수 있다(단계 1). 트랜잭션 관리자(501)는 결정자 리소스(502)로부터 인다우트 트랜잭션들(준비는 되었지만 커미트되지 않은 트랜잭션들)의 리스트를 수신할 수 있다(단계 2). 더욱이, 트랜잭션 관리자(501)는 글로벌 트랜잭션 테이블(GTT(506))을 구축 / 재구축하기 위해 인다우트 트랜잭션들이 리스트를 사용할 수 있다(단계 3).
본 발명의 일 실시예에 따르면, 결정자 리소스(502)가 2-단계 커미트 트랜잭션에서 성공적으로 준비될 때, 인다우트 트랜잭션들의 리스트는, 트랜잭션 관리자(501)가 참여 리소스 관리자들(502 내지 503)에게 커미트하도록 명령했던 미드-티어 미결 트랜잭션들과 동일할 수 있다.
그 다음, 트랜잭션 관리자(501)는 예컨대, 참여 리소스 관리자(503)(단계 9) 및 비-참여 리소스 관리자(504)(단계 10)을 포함하는, 트랜잭셔널 미드-티어 시스템(500) 내의 모든 다른 리소스 관리자들 상에 XA_recover() 호출을 함으로써 복구하는 것을 시도할 수 있다.
예를 들어, 트랜잭션 관리자(501)는 참여 리소스 관리자(503)로부터 인다우트 트랜잭션들의 리스트를 수신할 수 있다(단계 5). 트랜잭션 관리자(501)는 복구 리스트를 생성하기 위해 GTT(506) 테이블과 리스트 내의 인다우트 트랜잭션들을 매치시킬 수 있다(단계들 6 및 7). 그 다음, 트랜잭션 관리자(501)는 복구 리스트에 근거하여 참여 리소스 관리자를 복구시킬 수 있다(단계 8). 예를 들어, 트랜잭션 관리자(501)는 GTT(506) 테이블에 매치하는 인다우트 트랜잭션들을 커미트할 수 있고, GTT(506) 테이블에 매치하지 않는 인다우트 트랜잭션들을 롤백할 수 있다.
상기 절차들은 비-참여 리소스인 리소스 관리자(504) 상에서 수행될 수 있다. 도 5에 도시된 바와 같이, 리소스 관리자(504) 상에서 XA_recover() 호출을 한 후에, 트랜잭션 관리자(501)는 복구 리스트를 생성하기 위해 GTT(506)와 매치될 수 있는(단계 12) 인다우트 트랜잭션들의 리스트를 수신할 수 있다(단계 11). 그 다음, 트랜잭션 관리자(501)는 리소스 관리자(504) 상의 인다우트 트랜잭션들을 커미트 / 롤백할 수 있다(단계들 14 및 15).
일단, 모든 다른 리소스 관리자들(503 내지 504)이 복구되면(단계들 9 및 15), 트랜잭션 관리자(501)는 결정자 리소스 관리자에 준비된 트랜잭션들의 리스트 내의 모든 트랜잭션들을 커미트할 수 있다(단계 16 및 17). 마지막으로, 트랜잭션 관리자(501)는 GTT(506) 내의 엔트리들을 제거할 수 있다(단계 18).
본 명세서에 기술된 바와 같이, 심지어 하나 이상의 리소스 관리자들이 트랜잭션의 부분이 아닌 경우에도 모든 다른 리소스 관리자들(503 내지 504)이 복구될때까지 인다우트 트랜잭션들의 리스트로부터 어떠한 트랜잭션도 결정자 리소스 관리자(502)에 커미트되지 않을 수 있다.
본 발명의 일 실시예에서, 트랜잭션 관리자(501)는 참여 리소스들(502 및 503)에 관한 추가적인 정보가 준비 단계에서 결정자 리소스(502)로 넘겨지고 상기 결정자 리소스에 지속될 수 있는 경우, 트랜잭션의 참여 리소스들(502 및 503)의 지식을 가질 수 있다. 추가적인 정보로, 트랜잭션 관리자(501)는 복구할 어떤 알려진 리소스 관리자들(502 내지 504)을 기다림이 없이 결정자 리소스 관리자(502)로부터 리턴된 인다우트 트랜잭션들의 리스트 내의 트랜잭션들을 커미트할 수 있다. 트랜잭션 관리자(501)는 오직, 트랜잭션의 모든 참여자들(502 내지 503)이 복구될 때까지 기다릴 필요가 있을 수 있다.
추가적으로, 트랜잭셔널 미드-티어 시스템(500)의 클린 셧다운 또는 재시작 동안, 구성은 불필요한 복구 및 프로세싱이 시동 동안 회피될 수 있는 방식으로 제거 또는 마킹될 수 있다.
도 6은 본 발명의 실시예에 따른 트랜잭션 로그(TLOG)를 이용함이 없이 2-단계 커미트 트랜잭션을 복구하는 예시적인 순서도이다. 도 6에 도시된 바와 같이, 단계(601)에서, 트랜잭션 관리자는 결정자 리소스 상에서 XA_recover() 호출을 수행하고 미드-티어 트랜잭셔널 시스템에서 커미트될 미결 트랜잭션들의 리스트를 수신할 수 있다. 그 다음, 단계(602)에서, 트랜잭션 관리자는 글로벌 트랜잭션 테이블(GTT) 테이블을 재구축하기 위해 준비된 트랜잭션들의 리스트를 사용할 수 있다. 그 다음, 단계(603)에서, 트랜잭션 관리자는 트랜잭션의 참여자들 또는 비 참여자들을 포함하는, 시스템 내의 다른 리소스 관리자들 각각 상에서 XA_recover() 호출을 수행할 수 있고, 다른 리소스 관리자들 각각으로부터 인다우트 트랜잭션의 리스트를 수신할 수 있다. 단계(604)에서, 트랜잭션 관리자는 GTT 테이블과 트랜잭션을 매치시킴으로써 인다우트 트랜잭션들의 리스트들로부터 각각의 트랜잭션을 복구할 수 있다. 만일 GTT 테이블에서 매치가 발견되면 트랜잭션은 상기 트랜잭션이 검색되는 리소스 관리자에 커미트될 수 있고, 그렇지 않으면 상기 트랜잭션은 롤백될 수 있다. 마지막으로, 단계(605)에서, 트랜잭션 관리자는 다른 리소스 관리자 상의 모든 인다우트 트랜잭션들이 복구된 후에 결정자 리소스로부터의 인다우트 트랜잭션들에서의 트랜잭션들을 커미트할 수 있다.
본 발명은 본 발명의 교시들에 따라 프로그램된 하나 이상의 프로세서들, 메모리 및/또는 컴퓨터 판독가능 스토리지 매체를 포함하는 하나 이상의 종래의 범용 또는 특수 디지털 컴퓨터, 컴퓨팅 디바이스, 머신 또는 마이크로프로세서를 이용하여 통상적으로 구현될 수 있다. 적절한 소프트웨어 코딩은 소프트웨어 기술 분야의 숙련자들에게 분명할 바와 같이, 본 발명의 교시들에 근거하여 숙련된 프로그래머들에 의해 쉽게 준비될 수 있다.
일부 실시예들에서, 본 발명은 본 발명의 프로세스들 중 어느 것을 수행하도록 컴퓨터를 프로그램하는 데 사용될 수 있는 명령어들이 저장된 스토리지 매체 또는 컴퓨터 판독가능 매체(들)인 컴퓨터 프로그램 물을 포함한다. 스토리지 매체는 이들로만 한정되는 것은 아니지만, 플로피 디스크(disk)들, 광학 디스크(disc)들, DVD, CD-ROM들, 마이크로드라이브 및 자기-광학 디스크(disk)들을 포함하는 어떤 타입의 디스크, ROM들, RAM들, EPROM들, EEPROM들, DRAM들, VRAM들, 플래시 메모리 디바이스들, 자기 또는 광학 카드들, (분자 메모리 IC들을 포함하는)나노시스템들 또는, 명령어들 및/또는 데이터를 저장하기에 적절한 어떤 타입의 매체 또는 디바이스를 포함할 수 있다.
본 발명의 상기 상세한 설명은 예시 및 설명을 위해 제공되었다. 본 설명은 완전한 것이거나 또는 정확히 개시된 형태들로만 본 발명을 제한하고자 의도된 것이 아니다. 많은 수정들 및 변형들이 이 기술분야의 숙련자에게 분명할 것이다. 위 실시예들은 본 발명의 원리 및 이의 실용적 응용을 가장 잘 설명하기 위해 선택 및 기술되었으며, 그럼으로써 이 기술분야의 숙련자들은 본 발명에 대한 다양한 실시예들 및 고려되는 특별한 사용에 적합한 다양한 수정들을 이해할 수 있다. 본 발명의 범위는 다음의 특허 청구 범위 및 이의 균등물에 의해 한정되어야 함이 의도된다.
Claims (20)
- 복수의 리소스 관리자들 상에서 트랜잭션을 복구하는 방법으로서,
복수의 리소스 관리자들에서 결정자 리소스(determiner resource)가 될 리소스 관리자를 지정하는 단계 - 상기 결정자 리소스는 커미트(commit)될 미결 트랜잭션(outstanding transaction)들의 리스트를 유지(maintain)하고 - 와;
상기 복수의 리소스 관리자들 내의 각각의 리소스 관리자로부터 인다우트(in-doubt) 트랜잭션들의 리스트를 검색하는 단계와; 그리고
상기 복수의 리소스 관리자들 내의 적어도 하나의 상기 리소스 관리자 상에서 상기 인다우트 트랜잭션들의 리스트 내의 하나 이상의 인다우트 트랜잭션들을 커미트하는 단계를 포함하고, 상기 하나 이상의 인다우트 트랜잭션들은 상기 결정자 리소스에 의해 제공되는, 커미트될 미결 트랜잭션(outstanding transaction)들의 리스트와 매치되는 것을 특징으로 하는 트랜잭션 복구 방법. - 제1항에 있어서,
상기 복수의 리소스 관리자들 내의 적어도 하나의 상기 리소스 관리자 상에서 상기 인다우트 트랜잭션들의 리스트 내의 하나 이상의 인다우트 트랜잭션들을 롤백(roll back)하는 단계를 더 포함하고, 상기 하나 이상의 인다우트 트랜잭션들은 커미트될 미결 트랜잭션들의 리스트와 매치되지 않을 수 있는 것을 특징으로 하는 트랜잭션 복구 방법. - 제1항에 있어서,
상기 트랜잭션이 2-단계 커미트 트랜잭션(two-phase commit transaction)이 되도록 하는 것을 특징으로 하는 트랜잭션 복구 방법. - 제3항에 있어서,
상기 2-단계 커미트 트랜잭션에서 준비 단계를 수행하기 전에 트랜잭셔널 미드-티어(mid-tier) 시스템에 대한 구성에 상기 결정자 리소스를 지속시키는 단계를 더 포함하는 것을 특징으로 하는 트랜잭션 복구 방법. - 제1항에 있어서,
상기 복수의 리소스 관리자들 내의 모든 다른 리소스 관리자들을 준비시킨 후에 상기 결정자 리소스를 준비시키는 단계와; 그리고
상기 복수의 리소스 관리자들 내의 모든 다른 리소스 관리자들을 커미트한 후에 상기 결정자 리소스를 커미트하는 단계를 더 포함하는 것을 특징으로 하는 트랜잭션 복구 방법. - 제5항에 있어서,
상기 복수의 리소스 관리자들 내의 적어도 하나의 리소스 관리자가 상기 트랜잭션의 비-참여자가 되도록 하는 것을 더 포함하는 것을 특징으로 하는 트랜잭션 복구 방법. - 제1항에 있어서,
상기 복수의 리소스 관리자들 내의 모든 다른 리소스 관리자들을 복구한 후에 상기 결정자 리소스로부터 리턴된 인다우트 트랜잭션들의 리스트를 커미트하는 단계를 더 포함하는 것을 특징으로 하는 트랜잭션 복구 방법. - 제1항에 있어서,
상기 결정자 리소스로부터 리턴된 인다우트 트랜잭션들의 리스트로부터 글로벌 트랜잭션 테이블(GTT)을 구축/재구축(build/rebuild)하는 단계와; 그리고
상기 GTT와 각각의 인다우트 트랜잭션을 비교하는 단계를 더 포함하는 것을 특징으로 하는 트랜잭션 복구 방법. - 제1항에 있어서,
상기 복수의 리소스 관리자들에서 상기 트랜잭션에 참가된 참여 리소스 관리자들의 리스트를 상기 결정자 리소스에 패스(pass)하는 단계를 더 포함하는 것을 특징으로 하는 트랜잭션 복구 방법. - 제9항에 있어서,
복구 전에, 상기 참여 리소스 관리자들의 리스트가 복구될 때까지 기다리도록 상기 결정자 리소스를 구성하는 단계를 더 포함하는 것을 특징으로 하는 트랜잭션 복구 방법. - 트랜잭션을 복구하기 위한 시스템으로서,
트랜잭션 관리자; 및
미드-티어 트랜잭셔널 시스템(mid-tier transactional system)에서 상기 트랜잭션 관리자와 통신하는 복수의 리소스 관리자들을 포함하여 구성되며,
상기 트랜잭션 관리자는:
복수의 리소스 관리자들에서 결정자 리소스가 될 리소스 관리자를 지정하는 단계 - 상기 결정자 리소스는 커미트될 미결 트랜잭션들의 리스트를 유지하고 - 와;
상기 복수의 리소스 관리자들 내의 각각의 리소스 관리자로부터 인다우트 트랜잭션들의 리스트를 검색하는 단계와; 그리고
상기 복수의 리소스 관리자들 내의 적어도 하나의 상기 리소스 관리자 상에서 상기 인다우트 트랜잭션들의 리스트 내의 하나 이상의 인다우트 트랜잭션들을 커미트하는 단계를 수행하는 동작을 하며, 상기 하나 이상의 인다우트 트랜잭션들은 상기 결정자 리소스에 의해 제공되는, 커미트될 미결 트랜잭션들의 리스트와 매치되는 것을 특징으로 하는 시스템. - 제11항에 있어서,
상기 트랜잭션 관리자는 상기 복수의 리소스 관리자들 내의 적어도 하나의 상기 리소스 관리자 상에서 상기 인다우트 트랜잭션들의 리스트 내의 하나 이상의 인다우트 트랜잭션들을 롤백하는 동작을 하며, 상기 하나 이상의 인다우트 트랜잭션들은 커미트될 상기 미결 트랜잭션들의 리스트와 매치되지 않을 수 있는 것을 특징으로 하는 시스템. - 제11항에 있어서,
상기 트랜잭션은 2-단계 커미트 트랜잭션인 것을 특징으로 하는 시스템. - 제13항에 있어서,
상기 트랜잭션 관리자는 상기 2-단계 커미트 트랜잭션에서 준비 단계를 수행하기 전에 트랜잭셔널 미드-티어 시스템에 대한 구성에 상기 결정자 리소스를 지속시키는 동작을 하는 것을 특징으로 하는 시스템. - 제11항에 있어서,
상기 트랜잭션 관리자는:
상기 복수의 리소스 관리자들 내의 모든 다른 리소스 관리자들을 준비시킨 후에 상기 결정자 리소스를 준비시키는 단계와; 그리고
상기 복수의 리소스 관리자들 내의 모든 다른 리소스 관리자들을 커미트한 후에 상기 결정자 리소스를 커미트하는 단계를 수행하는 동작을 하는 것을 특징으로 하는 시스템. - 제15항에 있어서,
상기 복수의 리소스 관리자들 내의 적어도 하나의 리소스 관리자는 상기 트랜잭션의 비-참여자인 것을 특징으로 하는 시스템. - 제11항에 있어서,
상기 트랜잭션 관리자는 상기 복수의 리소스 관리자들 내의 모든 다른 시소스 관리자들을 복구한 후에 상기 결정자 리소스로부터 리턴된 인다우트 트랜잭션들의 리스트를 커미트하는 동작을 하는 것을 특징으로 하는 시스템. - 제11항에 있어서,
상기 트랜잭션 관리자는:
상기 결정자 리소스로부터 리턴된 인다우트 트랜잭션들의 리스트로부터 글로벌 트랜잭션 테이블(GTT)을 구축/재구축하는 단계와; 그리고
상기 GTT와 각각의 인다우트 트랜잭션을 비교하는 단계를 수행하는 동작을 하는 것을 특징으로 하는 시스템. - 제11항에 있어서,
상기 트랜잭션 관리자는:
상기 복수의 리소스 관리자들에서 상기 트랜잭션에 참가된 참여 리소스 관리자들의 리스트를 상기 결정자 리소스에 패스하는 단계와; 그리고
복구 전에, 상기 참여 리소스 관리자들의 리스트가 복구될 때까지 기다리도록 상기 결정자 리소스를 구성하는 단계를 수행하는 동작을 하는 것을 특징으로 하는 시스템. - 명령어들이 저장된 비-일시적 머신 판독가능 스토리지 매체로서, 상기 명령어들은 실행될 때 시스템으로 하여금:
복수의 리소스 관리자들에서 결정자 리소스가 될 리소스 관리자를 지정하는 단계 - 상기 결정자 리소스는 커미트될 미결 트랜잭션들의 리스트를 유지하고 - 와;
상기 복수의 리소스 관리자들 내의 각각의 리소스 관리자로부터 인다우트 트랜잭션들의 리스트를 검색하는 단계와; 그리고
상기 복수의 리소스 관리자들 내의 적어도 하나의 상기 리소스 관리자 상에서 상기 인다우트 트랜잭션들의 리스트 내의 하나 이상의 인다우트 트랜잭션들을 커미트하는 단계를 수행하도록 하고, 상기 하나 이상의 인다우트 트랜잭션들은 상기 결정자 리소스에 의해 제공되는, 커미트될 미결 트랜잭션들의 리스트와 매치되는 것을 특징으로 하는 비-일시적 머신 판독가능 스토리지 매체.
Applications Claiming Priority (9)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261612144P | 2012-03-16 | 2012-03-16 | |
US61/612,144 | 2012-03-16 | ||
US201361774356P | 2013-03-07 | 2013-03-07 | |
US61/774,356 | 2013-03-07 | ||
US13/828,490 | 2013-03-14 | ||
US13/828,490 US9760584B2 (en) | 2012-03-16 | 2013-03-14 | Systems and methods for supporting inline delegation of middle-tier transaction logs to database |
US13/828,590 US9146944B2 (en) | 2012-03-16 | 2013-03-14 | Systems and methods for supporting transaction recovery based on a strict ordering of two-phase commit calls |
US13/828,590 | 2013-03-14 | ||
PCT/US2013/032473 WO2013138774A1 (en) | 2012-03-16 | 2013-03-15 | Systems and methods for supporting transaction recovery based on a strict ordering of two-phase commit calls |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140138670A true KR20140138670A (ko) | 2014-12-04 |
KR101993432B1 KR101993432B1 (ko) | 2019-06-26 |
Family
ID=49158626
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147024207A KR101993432B1 (ko) | 2012-03-16 | 2013-03-15 | 2-단계 커미트 호출들의 엄격한 순서화에 근거하여 트랜잭션 복구를 지원하는 시스템들 및 방법들 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9146944B2 (ko) |
EP (1) | EP2825958B1 (ko) |
JP (1) | JP6220851B2 (ko) |
KR (1) | KR101993432B1 (ko) |
CN (1) | CN104094228B (ko) |
WO (1) | WO2013138774A1 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170060036A (ko) * | 2014-09-26 | 2017-05-31 | 오라클 인터내셔날 코포레이션 | 멀티테넌트 어플리케이션 서버 환경에서 트랜잭션 복구를 위한 시스템 및 방법 |
KR102184841B1 (ko) * | 2019-06-27 | 2020-11-30 | 전북대학교산학협력단 | 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 복구 방법 및 트랜잭션 복구 장치 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9389905B2 (en) * | 2012-03-16 | 2016-07-12 | Oracle International Corporation | System and method for supporting read-only optimization in a transactional middleware environment |
US9760584B2 (en) | 2012-03-16 | 2017-09-12 | Oracle International Corporation | Systems and methods for supporting inline delegation of middle-tier transaction logs to database |
WO2014082663A1 (en) * | 2012-11-28 | 2014-06-05 | Telefonaktiebolaget L M Ericsson (Publ) | Method and apparatus for managing distributed transactions |
EP3097481B1 (en) | 2014-01-21 | 2022-11-30 | Oracle International Corporation | System and method for supporting multi-tenancy in an application server, cloud, or other environment |
WO2015143120A1 (en) | 2014-03-20 | 2015-09-24 | LogicBlox, Inc. | Transaction repair |
US9361190B2 (en) * | 2014-04-24 | 2016-06-07 | International Business Machines Corporation | Recovery of a transaction after XA end |
US9405530B2 (en) | 2014-09-24 | 2016-08-02 | Oracle International Corporation | System and method for supporting patching in a multitenant application server environment |
US10318280B2 (en) | 2014-09-24 | 2019-06-11 | Oracle International Corporation | System and method for supporting patching in a multitenant application server environment |
US9858136B2 (en) | 2014-09-30 | 2018-01-02 | International Business Machines Corporation | Resource manager failure handling in a multi-process transaction environment |
US10250512B2 (en) | 2015-01-21 | 2019-04-02 | Oracle International Corporation | System and method for traffic director support in a multitenant application server environment |
CN105988865B (zh) * | 2015-03-04 | 2019-10-08 | 阿里巴巴集团控股有限公司 | 回滚处理方法及装置 |
US11611445B2 (en) | 2017-02-17 | 2023-03-21 | Nokia Technologies Oy | Changing smart contracts recorded in block chains |
US10936445B2 (en) | 2018-11-28 | 2021-03-02 | International Business Machines Corporation | Resource management |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060082393A (ko) * | 2005-01-12 | 2006-07-18 | 마이크로소프트 코포레이션 | 저장된 프로시저의 정의로부터 관계형 데이터베이스애플리케이션의 미들 티어를 위한 데이터 액세스 계층을자동으로 생성하는 시스템 및 방법 |
US20130151889A1 (en) * | 2011-12-13 | 2013-06-13 | Mircea Markus | Disk-free recovery of xa transactions for in-memory data grids |
Family Cites Families (66)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5261089A (en) | 1990-05-16 | 1993-11-09 | International Business Machines Corporation | Optimization of commit procedures by utilizing a two-phase commit procedure only when necessary |
US5452445A (en) | 1992-04-30 | 1995-09-19 | Oracle Corporation | Two-pass multi-version read consistency |
JPH06266592A (ja) * | 1993-03-16 | 1994-09-22 | Hitachi Ltd | Xaインターフェースを用いたユーザ処理プログラムの起動方法 |
GB2281644A (en) * | 1993-09-02 | 1995-03-08 | Ibm | Fault tolerant transaction-oriented data processing. |
US5617537A (en) | 1993-10-05 | 1997-04-01 | Nippon Telegraph And Telephone Corporation | Message passing system for distributed shared memory multiprocessor system and message passing method using the same |
US5555396A (en) | 1994-12-22 | 1996-09-10 | Unisys Corporation | Hierarchical queuing in a system architecture for improved message passing and process synchronization |
US5680610A (en) | 1995-01-19 | 1997-10-21 | Unisys Corporation | Method and apparatus for testing recovery scenarios in global transaction processing systems |
JPH08235039A (ja) * | 1995-02-27 | 1996-09-13 | Hitachi Ltd | トランザクション処理における履歴情報解析方法 |
JPH1074155A (ja) * | 1996-04-22 | 1998-03-17 | Fujitsu Ltd | トランザクションのリカバリ方法及びプログラム記憶媒体 |
US6070202A (en) | 1998-05-11 | 2000-05-30 | Motorola, Inc. | Reallocation of pools of fixed size buffers based on metrics collected for maximum number of concurrent requests for each distinct memory size |
JPH11338746A (ja) * | 1998-05-27 | 1999-12-10 | Ntt Communication Ware Kk | データベースアクセスシステムおよびプログラムを記録したコンピュータ読み取り可能な記録媒体 |
US6438582B1 (en) * | 1998-07-21 | 2002-08-20 | International Business Machines Corporation | Method and system for efficiently coordinating commit processing in a parallel or distributed database system |
US6247023B1 (en) | 1998-07-21 | 2001-06-12 | Internationl Business Machines Corp. | Method for providing database recovery across multiple nodes |
GB2339933A (en) | 1998-07-22 | 2000-02-09 | Ibm | Client/server computing with improved correspondence between transaction identifiers when supporting subordinate resource manager(s) |
US6470342B1 (en) | 1999-03-12 | 2002-10-22 | Compaq Computer Corporation | Process of maintaining a distributed map of transaction identifiers and using hashing to access these maps |
FI991334A (fi) | 1999-06-10 | 2000-12-11 | Nokia Networks Oy | Menetelmä kaksisuuntaisen jonon toteuttamiseksi muistissa ja muistijär jestely |
US6754842B2 (en) * | 2000-02-22 | 2004-06-22 | International Business Machines Corporation | Facilitating a restart operation within a data processing system |
US7080382B2 (en) | 2000-02-25 | 2006-07-18 | Oracle International Corporation | Accessing shorter-duration instances of activatable objects based on object references stored in longer-duration memory |
US6728722B1 (en) | 2000-08-28 | 2004-04-27 | Sun Microsystems, Inc. | General data structure for describing logical data spaces |
US7031331B2 (en) | 2001-08-15 | 2006-04-18 | Riverstone Networks, Inc. | Method and system for managing packets in a shared memory buffer that serves multiple output links |
US6895529B2 (en) | 2002-02-13 | 2005-05-17 | Bull Hn Information Systems, Inc. | Rebuilding “in-doubt” states reliably after multiple system failures in a data processing system performing two-phase transaction processing |
US7178050B2 (en) * | 2002-02-22 | 2007-02-13 | Bea Systems, Inc. | System for highly available transaction recovery for transaction processing systems |
US7430740B1 (en) * | 2002-04-12 | 2008-09-30 | 724 Solutions Software, Inc | Process group resource manager |
US20070079077A1 (en) | 2002-04-29 | 2007-04-05 | Baines Mandeep S | System, method, and computer program product for shared memory queue |
US7103597B2 (en) * | 2002-10-03 | 2006-09-05 | Mcgoveran David O | Adaptive transaction manager for complex transactions and business process |
US7441008B2 (en) | 2002-12-18 | 2008-10-21 | International Business Machines Corporation | Method for correlating transactions and messages |
US7165061B2 (en) | 2003-01-31 | 2007-01-16 | Sun Microsystems, Inc. | Transaction optimization of read-only data sources |
US20040153349A1 (en) | 2003-01-31 | 2004-08-05 | K. Venugopal Rao | Delayed creation of global transactions |
US20040158549A1 (en) | 2003-02-07 | 2004-08-12 | Vladimir Matena | Method and apparatus for online transaction processing |
JP2005135382A (ja) | 2003-08-19 | 2005-05-26 | Toshiba Corp | イベントベースの通知を有する共有メモリベースのプロセス間通信キューテンプレートのシステムおよび方法 |
US7284018B1 (en) | 2003-10-15 | 2007-10-16 | Sun Microsystems, Inc. | Logless transaction coordination |
US20050144299A1 (en) | 2003-12-04 | 2005-06-30 | Blevins Delmar E. | System and method for supporting XA 2-phase commit protocols with a loosely coupled clustered database server |
US7260589B2 (en) * | 2003-12-04 | 2007-08-21 | International Business Machines Corporation | High performance support for XA protocols in a clustered shared database |
GB2409544A (en) | 2003-12-24 | 2005-06-29 | Ibm | Involving participants in a distributed transaction |
US20050262055A1 (en) * | 2004-05-20 | 2005-11-24 | International Business Machines Corporation | Enforcing message ordering |
US7725432B2 (en) * | 2004-05-21 | 2010-05-25 | Bea Systems, Inc. | Logging last resource system |
US7860840B2 (en) * | 2004-10-05 | 2010-12-28 | Microsoft Corporation | Maintaining correct transaction results when transaction management configurations change |
US7539989B2 (en) | 2004-10-12 | 2009-05-26 | International Business Machines Corporation | Facilitating intra-node data transfer in collective communications |
US7712096B2 (en) | 2004-12-21 | 2010-05-04 | International Business Machines Corporation | Method, system, and storage medium for dynamically reordering resource participation in two-phase commit to heuristically optimize for last-agent optimization |
US20060149791A1 (en) * | 2005-01-06 | 2006-07-06 | Oracle International Corporation | Database-driven distributed recovery |
US7600002B2 (en) | 2005-02-04 | 2009-10-06 | Oracle International Corporation | System and method for exposing a J2EE application server as a web service transaction participant |
US20070041392A1 (en) | 2005-08-22 | 2007-02-22 | Aaron Kunze | Adaptive message buffering |
US7725446B2 (en) * | 2005-12-19 | 2010-05-25 | International Business Machines Corporation | Commitment of transactions in a distributed system |
GB0616068D0 (en) * | 2006-08-12 | 2006-09-20 | Ibm | Method,Apparatus And Computer Program For Transaction Recovery |
US7636873B2 (en) | 2006-09-15 | 2009-12-22 | International Business Machines Corporation | Enhancement of assured event delivery mechanism to eliminate external XA store requirement |
US7487279B2 (en) | 2007-01-23 | 2009-02-03 | International Business Machines Corporation | Achieving both locking fairness and locking performance with spin locks |
US20080243865A1 (en) | 2007-03-28 | 2008-10-02 | Oracle International Corporation | Maintaining global state of distributed transaction managed by an external transaction manager for clustered database systems |
US20080250074A1 (en) * | 2007-04-04 | 2008-10-09 | Oracle International Corporation | Recoverable last resource commit |
US7930274B2 (en) | 2007-09-12 | 2011-04-19 | Sap Ag | Dual access to concurrent data in a database management system |
US8099764B2 (en) | 2007-12-17 | 2012-01-17 | Microsoft Corporation | Secure push and status communication between client and server |
US7970737B2 (en) * | 2008-01-11 | 2011-06-28 | Oracle International Corporation | Recovery administration of global transaction participants |
US7953709B2 (en) | 2008-03-27 | 2011-05-31 | Emc Corporation | Systems and methods for a read only mode for a portion of a storage system |
JP5223457B2 (ja) * | 2008-05-22 | 2013-06-26 | 富士通株式会社 | 分散トランザクションの2相コミットプロトコルにおけるインダウト状態の解決方法 |
US8103714B2 (en) | 2008-08-15 | 2012-01-24 | International Business Machines Corporation | Transactional quality of service in event stream processing middleware |
US9417977B2 (en) | 2008-12-31 | 2016-08-16 | Sap Se | Distributed transactional recovery system and method |
US9230002B2 (en) | 2009-01-30 | 2016-01-05 | Oracle International Corporation | High performant information sharing and replication for single-publisher and multiple-subscriber configuration |
US8346851B2 (en) | 2009-08-31 | 2013-01-01 | Red Hat, Inc. | System and method for determining when to generate subordinate coordinators on local machines |
US20110078516A1 (en) * | 2009-09-28 | 2011-03-31 | International Business Machines Corporation | Method and a system for performing a two-phase commit protocol |
EP2323047B1 (en) | 2009-10-09 | 2020-02-19 | Software AG | Primary database system, replication database system and method for replicating data of a primary database system |
US9165025B2 (en) * | 2009-12-11 | 2015-10-20 | International Business Machines Corporation | Transaction recovery in a transaction processing computer system employing multiple transaction managers |
US8868506B1 (en) | 2010-06-17 | 2014-10-21 | Evolphin Software, Inc. | Method and apparatus for digital asset management |
US9009182B2 (en) * | 2010-10-05 | 2015-04-14 | Sap Se | Distributed transaction management with tokens |
US8898399B2 (en) | 2010-11-16 | 2014-11-25 | Tibco Software Inc. | Locking and signaling for implementing messaging transports with shared memory |
US8825983B2 (en) | 2011-02-15 | 2014-09-02 | International Business Machines Corporation | Data communications in a parallel active messaging interface of a parallel computer |
CN102203779B (zh) * | 2011-05-03 | 2013-04-17 | 华为技术有限公司 | 更新数据的方法和控制装置 |
US8671085B2 (en) * | 2011-12-09 | 2014-03-11 | Microsoft Corporation | Consistent database recovery across constituent segments |
-
2013
- 2013-03-14 US US13/828,590 patent/US9146944B2/en active Active
- 2013-03-15 WO PCT/US2013/032473 patent/WO2013138774A1/en active Application Filing
- 2013-03-15 CN CN201380008052.7A patent/CN104094228B/zh active Active
- 2013-03-15 JP JP2015500669A patent/JP6220851B2/ja active Active
- 2013-03-15 EP EP13715496.9A patent/EP2825958B1/en active Active
- 2013-03-15 KR KR1020147024207A patent/KR101993432B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20060082393A (ko) * | 2005-01-12 | 2006-07-18 | 마이크로소프트 코포레이션 | 저장된 프로시저의 정의로부터 관계형 데이터베이스애플리케이션의 미들 티어를 위한 데이터 액세스 계층을자동으로 생성하는 시스템 및 방법 |
US20130151889A1 (en) * | 2011-12-13 | 2013-06-13 | Mircea Markus | Disk-free recovery of xa transactions for in-memory data grids |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20170060036A (ko) * | 2014-09-26 | 2017-05-31 | 오라클 인터내셔날 코포레이션 | 멀티테넌트 어플리케이션 서버 환경에서 트랜잭션 복구를 위한 시스템 및 방법 |
KR102184841B1 (ko) * | 2019-06-27 | 2020-11-30 | 전북대학교산학협력단 | 하이브리드 트랜잭셔널 메모리 시스템에서의 트랜잭션 복구 방법 및 트랜잭션 복구 장치 |
Also Published As
Publication number | Publication date |
---|---|
CN104094228A (zh) | 2014-10-08 |
KR101993432B1 (ko) | 2019-06-26 |
WO2013138774A1 (en) | 2013-09-19 |
CN104094228B (zh) | 2017-12-29 |
JP6220851B2 (ja) | 2017-10-25 |
EP2825958B1 (en) | 2018-08-01 |
US9146944B2 (en) | 2015-09-29 |
US20130246845A1 (en) | 2013-09-19 |
JP2015514248A (ja) | 2015-05-18 |
EP2825958A1 (en) | 2015-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101993432B1 (ko) | 2-단계 커미트 호출들의 엄격한 순서화에 근거하여 트랜잭션 복구를 지원하는 시스템들 및 방법들 | |
US11994959B2 (en) | System and method for transaction recovery in a multitenant application server environment | |
KR102072726B1 (ko) | 데이터베이스로의 미들-티어 트랜잭션 로그들의 인라인 위임을 지원하는 시스템들 및 방법들 | |
US8868514B2 (en) | Transaction support for distributed data | |
US10133596B2 (en) | System and method for supporting application interoperation in a transactional middleware environment | |
US10942823B2 (en) | Transaction processing system, recovery subsystem and method for operating a recovery subsystem | |
US7730489B1 (en) | Horizontally scalable and reliable distributed transaction management in a clustered application server environment | |
JPH08110895A (ja) | 分散システムに使用されるノード装置及び記憶装置並びに分散システムにおける資源管理用サーバの復旧方法 | |
CN109643310A (zh) | 用于数据库中数据重分布的系统和方法 | |
CN110830582B (zh) | 一种基于服务器集群选主方法和装置 | |
US6330686B1 (en) | Handling protected conversation messages across IMS restart in shared queues environment | |
CN110532069A (zh) | 一种分布式事务提交方法及装置 | |
US10944850B2 (en) | Methods, devices and systems for non-disruptive upgrades to a distributed coordination engine in a distributed computing environment | |
WO2024193138A1 (zh) | 事务处理方法及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |