Site Search :
Standard Enterprise XML Methodology Pattern Setting Tunning Other
Article Contributors
GuestBook
Javapattern Maven
XSourceGen Dev
JetSpeed Test
JLook Image
jLook Family Site


Distributed Transaction Introduce
 
Introduction to the distributed Tx.
Two phase commit protocol
Flat and Nested Tx ( 2003/02/28 ) 130
Written by specular - 전홍성
1 of 1
 
Transaction Processing
    Distributed programming에서 분산객체(Distributed object)는 business component로 개발되어 집니다. 특히, Enterprise JavaBeans는 분산 서비스 API에 독립적인 Business component를 개발할수 있다는 장점을 갖고 있습니다. Business component의 business method는 여러 component의 method로써 구성되는 work flow를 갖고 있을수가 있고, 이것은 한나의 단위로 진행되어 져야 할경우가 대부분입니다. work flow를 처리하는 중 하나라도 문제가 생긴다면, 진행된 작업을 무효화 할수 있어야 겠죠. 이러한 상황에서 Transaction이 필요한 것입니다.
  결국 Transation이라는 것은 all-or-nothing 성질을 갖는 것이죠. work flow를 구성하는 하나하나의 job들이 모두 진행되거나, 아니면 모두 무효화 하거나 해야 한다는 것이죠.

1. ACID Properties
      1. Atomic : Transaction을 구성하는 모든 작업이 모두 성공하거나, 무효화 해야 한다는 성질.
                   즉, Tx는 더이상 나눌수 없는 하나의 단위.(atomic unit, all or nothing property)

    2. Consistency : Transaction이 성공적으로 완료되면, 리소스의 상태를 일관성있게 보장해야 한다는 성질.                             Intigerity보장

    3. Isolation : Transaction중에 다른 Trasaction에 영향을 받아서는 안된다는 성질.
                       
    4. Durability : Transaction이 이상없이 완료되었을때, 작업의 결과가 영구적으로 저장되아야 한다는 성질.


 2. Distributed Transaction
    Transaction은 Distributed Application에서 분산되어 있다. 즉 서로다른 Database를 동시에 업데이트 해야 할 경우도 있고, 서로다른 시스템에 있는 Distributed object의 method를 동시에 처리해야 하는 경우도 발생하게 되는 것이죠. 그래서, 다음과 같이 Distributed Transaction을 정의 할수 있습니다.

  • Transactions in heterogeneous distributed systems are called distributed tracsaction.

  •     Distributed Transaction을 이해하기 위해서 Transaction Participant의 각각에 대해 먼저 설명하겠습니다.



  • Reousrce Manager : Transaction resource(RDBMS)에 대한 management의 책임을 진다.
    			ex) database server, messaging queuing systems.
    			cf) Resource Adapter : application component가 resource manager에 
    					connect하기 위해 사용하는 JDBC driver와 같은 것. 
  • Transaction Manager : transaction의 begin, commit, rollbak을 책임지고, 분산된 Resource manager에 대한 "Two phase commit" protocol에 대한 책을을 진다.
    			A TM uses the XA interface to interact with the RMs.
    
  • Tx Application : Transaction Manager에서 제공하는 Distributed Tx를 사용하는 Appllication, EJB component, web component를 말한다.


  •     ◆ The interface of X/Open Distributed Transaction Processing
    	- XA interface : DTP환경에서 TM과 RM사이의 API
    	- TX interface : DTP환경에서 TM과 Tx application간의 API 


     3. Two-Phase Commit
        Distributed Tx는 "Two phase commit"을 지원해야 하는데, 이것은 Transaction Manager의 책임이지만, Resouse Manager도 Transaction Manager의 "Two phase commit" protocol message에 대응할수 있어야 겠죠.
      즉 Two phase commit은 TM과 RM에 의해 분산 Tx의 atomicity를 보장하기위해 실행되어진다. 다음 sequence를 참조하세요.


    Two-Phase Commit protocol


     4. Transaction Models
       
        ◆ Flat Tx : 위의 그림에서 Bean-2의 method-B()는 Bean-1의 method-A()에서 생성된 Tx1에 동참하게 된다. 즉, 새로운 Tx를 생성하지 않는다.(EJB에서 CMP의 Tx Attribute중 Required 성질)



        ◆ Nested Tx : 위의 그림에서 Bean-2의 method-B()는 Bean-1의 methodA()에서 생성된 Tx1에 동참하지 않고, 새로운 Tx2를 생상한다. (EJB에서 CMP의 Tx Attribute중 RequiredNew 성질)
          Tx1의 commit은 Tx2의 fail에 영향을 받지 않는다. 그리고, Tx1의 rollback은 Tx2를 rollback한다.


    2001.05.21 written by Jeon HongSeong
     
    1
    References
     
    Copyright ⓒ 2003 www.javapattern.info & www.jlook.com, an jLOOK co.,LTD