MarkLogic’s XA transactions feature lets you execute one unified ACID transaction between MarkLogic and another database system.
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.
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
MarkLogic has an XA transaction resource manager as required by the specification (note that you still need a Global Transaction Manager)
If you need XA Transactions and you want to use a NoSQL database, then MarkLogic is the only option
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.
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.
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.
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.