XA

XA (fra den engelske  udvidede arkitektur [1] , X/Open XA ) er en specifikation af distribuerede transaktioner , der definerer principperne for fælles deltagelse af transaktionsressourcer i en transaktion i et distribueret computermiljø . Først beskrevet i 1992, det er de facto implementeringsstandarden i distribuerede transaktionsadministratorer og relationelle databaser .

En XA-transaktion  er en distribueret transaktion, der udføres under kontrol af et system, der er i overensstemmelse med XA-specifikationen.

Historie

I begyndelsen af ​​1990'erne var der flere forskellige standarder for distribuerede transaktioner, for eksempel TPF, der blev brugt i amerikansk civil luftfart og i 2010'erne [2] , CISC, VMS og andre. En af dem, IBM's SNA, var på det tidspunkt blevet de facto-standarden. Påvirket af denne standard og LU6.2-standarden har ISO skabt flere nye standarder [3] :

Den største ulempe ved disse standarder var manglen på en API , så de specificerede, hvordan transaktionsadministratorer skulle interagere, men gav ikke regler for at skrive bærbare applikationer.

X/Open løste dette problem ved at levere en distribueret transaktionsmodel og samtidig ved at specificere en proceduremæssig grænseflade til interaktion mellem deltagere i en transaktion (CLI), XA-specifikationen.

Model

XA bruger en distribueret transaktionsmodel, der består af tre komponenter:

  1. Application Program (AP) - Et program, der bestemmer, hvilke dele en transaktion skal bestå af, hvilke ressourcemanagere (RM) der skal bruges, og så videre. Det er faktisk her forretningslogikken er beskrevet.
  2. Distributed Transaction Manager (TM) - også kendt som koordinatoren, koordinerer RM'ens arbejde og beslutter, om transaktionen skal begås eller tilbageføres ved hjælp af to -faset commit-protokollen ( engelsk  Two-phase commit protocol ).
  3. RM'er som DBMS bruges til at gemme information.

Selvom der er tre komponenter i modellen, definerer XA-specifikationen kun interaktionen mellem ressource- og transaktionsadministratorer.

XA-specifikationen opdeler transaktioner i lokale og globale. Lokale transaktioner er den enkleste type transaktioner, hvor applikationsprogrammet kun får adgang til ét DBMS og bestemmer, hvornår transaktionen skal forpligtes eller tilbageføres. Det vil sige, i dem er rollen som TM tildelt AP. Globale (distribuerede) transaktioner er et mere komplekst tilfælde, hvor beslutningen om at foretage ændringer eller tilbagerulning falder på koordinatorens skuldre, ansøgningsprogrammet bestemmer kun grænserne for transaktioner. Transaktionsmanageren opdeler en global transaktion i flere lokalt eksekverende filialer ( eng.  branch ), og ved succesfuld commit på hver af filialerne, begår den hele den globale transaktion, og ruller tilbage ellers.

Derudover understøtter specifikationen indlejrede transaktioner , som er nyttige for eksempel til logning .

XA+

XA+ -specifikationen , udgivet i 1994, definerer også transaktioner fordelt på tværs af applikationer. I XA+ optræder en anden deltager i transaktionen - Communication Resource Manager (CRM), som er ansvarlig for at koordinere mellem flere ledere af distribuerede transaktioner, i denne model er han ansvarlig for nye grene af transaktionen, som igen indeholder flere flere filialer, samt til generering af transaktions-id'er.

XA-baserede standarder

Selvom XA kun specificerer en API til C-sproget, er der implementeringer i andre programmeringssprog.

Java Transaction API  er en implementering af XA til J2EE -platformen , først udgivet i 1999. I .Net Framework dukkede understøttelse af distribuerede transaktioner kun op i version 2.0, bortset fra XA, understøtter .NET-implementeringen af ​​distribuerede transaktioner OLE [4] .

XA og OTS

1991 Object Management Group- specifikationen for Object Transaction Service introducerer transaktionalitet til CORBA . På grund af det faktum, at specifikationen ikke adskiller transaktionsdeltagere i RM og TM, kun i klient og server, er det muligt at bruge XA og OTS i én klient-server applikation. Derudover, hvis en af ​​RM'erne ikke understøtter XA, men understøtter OTS, så er denne pakke den eneste mulige løsning på problemet med distribuerede transaktioner i et sådant miljø.

Kombinationen af ​​XA og OTS bruges i Java EE, hvor indpakningen over OTS er Java Transaction Service , og Java Transaction API adskiller til gengæld JTS fra AP.

Noter

  1. Oracle FAQ: Hvad står XA for . Hentet 22. august 2015. Arkiveret fra originalen 24. september 2015.
  2. Se Transaktionsbehandling: Koncepter og teknikker, afsnit 1.5
  3. Se Transaktionsbehandling: Koncepter og teknikker, afsnit 2.7.4
  4. INFO: Forbindelser deltager muligvis ikke i MTS/COM+-transaktioner, når du bruger OLE DB direkte

Links

Litteratur