XA Transactions

Data Consistency Across Disparate Databases

In compliance with the “eXtended Architecture” standard by The Open Group, MarkLogic’s XA transactions guarantee that MarkLogic’s ACID properties are maintained for transactional updates or are fully rolled back to the prior state.

The Only NoSQL Database With XA Transactions

Preserve ACID Properties

XA Transactions allows multiple resources (such as databases, applications etc.) to be accessed within the same transaction, thereby preserving the ACID properties across all resources

Manage the Transactions Lifecycle

MarkLogic has an XA transaction resource manager as required by the specification (note that you still need a Global Transaction Manager)

The Only NoSQL Database with XA Transactions

If you need XA Transactions and you want to use a NoSQL database, then MarkLogic is the only option

Why You Need XA Transactions

Keep Disparate DBMS In Sync

MarkLogic’s XA transactions feature lets you execute one unified ACID transaction between MarkLogic and another database system. For example, if you want to store the core data about an entity in MarkLogic while keeping some metadata about the entity in an RDBMS, this feature lets you insert/update/delete both aspects of that entity across both databases as part of one execution call. Should either database have issues with the update, the transaction as a whole will not commit.

Migrate (and Delete) From One DBMS to MarkLogic

Use XA transactions if you want to migrate data step-by-step from an RDBMS into MarkLogic. Using XA transactions allows the delete in the RDBMS and the insert into MarkLogic run as part of one transaction – even across the two databases. The system uses Java’s JTA as the coordinator between the databases, and the complex coordination between databases remains hidden to the programmer.

Synchronize Separate MarkLogic Clusters

You can also perform an XA transaction across two separate MarkLogic clusters. This is useful for transactionally migrating data from one cluster to another, or for loading data into a set of clusters for simultaneous publishing. This last scenario was actually used during the Olympics where sports scores would update across all MarkLogic clusters synchronously, without any cluster ever being ahead of another, as was mandated by International Olympic Committee rules.

How XA Transactions Work

The XCC API includes support for registering MarkLogic as an XA Transaction Resource Manager. When MarkLogic acts as a Resource Manager, requests submitted to MarkLogic are always part of a multi-statement update transaction.