XA

XA (din limba engleză  extended architecture [1] , X / Open XA ) este o specificație a tranzacțiilor distribuite care definește principiile pentru participarea în comun a resurselor tranzacționale la o tranzacție într-un mediu de calcul distribuit . Descris pentru prima dată în 1992, este standardul de implementare de facto în managerii de tranzacții distribuite și bazele de date relaționale .

O tranzacție XA  este o tranzacție distribuită executată sub controlul unui sistem care respectă specificația XA.

Istorie

La începutul anilor 1990, existau mai multe standarde diferite pentru tranzacțiile distribuite, de exemplu, TPF, utilizat în aviația civilă din SUA și în anii 2010 [2] , CISC, VMS și altele. Unul dintre ei, SNA al IBM, devenise până atunci standardul de facto. Influențat de acest standard și de standardul LU6.2, ISO a creat câteva standarde noi [3] :

Principalul dezavantaj al acestor standarde a fost lipsa unui API , așa că au specificat cum ar trebui să interacționeze managerii de tranzacții, dar nu au oferit reguli pentru scrierea aplicațiilor portabile.

X/Open a rezolvat această problemă prin furnizarea unui model de tranzacție distribuită și, în același timp, prin specificarea unei interfețe procedurale pentru interacțiunea participanților la o tranzacție (CLI), specificația XA.

Model

XA utilizează un model de tranzacție distribuită care constă din trei componente:

  1. Program de aplicație (AP) - Un program care determină din ce părți ar trebui să conțină o tranzacție, ce manageri de resurse (RM) să folosească și așa mai departe. De fapt, aici este descrisă logica afacerii.
  2. Distributed Transaction Manager (TM) - cunoscut și sub numele de coordonator, coordonează activitatea RM și decide dacă să comite sau să anuleze tranzacția utilizând protocolul de confirmare în două faze ( protocolul de confirmare în două faze în engleză  ).
  3. RM-urile precum DBMS sunt folosite pentru a stoca informații.

Deși există trei componente în model, specificația XA definește doar interacțiunea dintre managerii de resurse și de tranzacții.

Specificația XA împarte tranzacțiile în locale și globale. Tranzacțiile locale sunt cel mai simplu tip de tranzacții, în care programul de aplicație accesează doar un SGBD și determină când să comite sau să anuleze tranzacția. Adică, în ele rolul de TM este atribuit AP. Tranzacțiile globale (distribuite) sunt un caz mai complex, în care decizia de a efectua modificări sau de a derula înapoi cade pe umerii coordonatorului, programul de aplicare determină doar limitele tranzacțiilor. Managerul de tranzacții împarte o tranzacție globală în mai multe ramuri care se execută local ( eng.  branch ), iar după o comitere reușită pe fiecare dintre ramuri, comite întreaga tranzacție globală și, în caz contrar, face înapoi.

În plus, specificația acceptă tranzacții imbricate , care sunt utile, de exemplu, pentru înregistrare .

XA+

Specificația XA+ , lansată în 1994, definește și tranzacțiile distribuite între aplicații. În XA +, apare un alt participant la tranzacție - Managerul resurselor de comunicare (CRM), care este responsabil de coordonarea între mai mulți manageri ai tranzacțiilor distribuite, în acest model el este responsabil pentru noi ramuri ale tranzacției, care, la rândul lor, conțin mai multe sucursale, precum și pentru generarea de ID-uri de tranzacție.

Standarde bazate pe XA

Deși XA specifică doar un API pentru limbajul C, există implementări în alte limbaje de programare.

API-ul Java Transaction  este o implementare a XA pentru platforma J2EE , lansată pentru prima dată în 1999. În .Net Framework , suportul pentru tranzacții distribuite a apărut doar în versiunea 2.0, cu excepția XA, implementarea .NET a tranzacțiilor distribuite acceptă OLE [4] .

XA și OTS

Specificația Object Management Group din 1991 pentru Object Transaction Service introduce tranzacționalitatea în CORBA . Datorită faptului că specificația nu separă participanții la tranzacție în RM și TM, ci doar în client și server, este posibil să se utilizeze XA și OTS într-o aplicație client-server. În plus, dacă unul dintre RM-uri nu acceptă XA, dar acceptă OTS, atunci acest pachet este singura soluție posibilă la problema tranzacțiilor distribuite într-un astfel de mediu.

Combinația de XA și OTS este utilizată în Java EE, unde wrapper-ul peste OTS este Java Transaction Service , iar API-ul Java Transaction, la rândul său, separă JTS de AP.

Note

  1. Întrebări frecvente Oracle: Ce înseamnă XA . Preluat la 22 august 2015. Arhivat din original la 24 septembrie 2015.
  2. Vezi Procesarea tranzacțiilor: Concepte și tehnici, secțiunea 1.5
  3. Vezi Procesarea tranzacțiilor: concepte și tehnici, secțiunea 2.7.4
  4. INFORMAȚII: este posibil ca conexiunile să nu participe la tranzacțiile MTS/COM+ atunci când utilizați direct OLE DB

Link -uri

Literatură