A method for validating transactions in a system that includes indeterministic ordering of change log events by using deterministic indicia, the system including a plurality of nodes, each node in the system including (i) an instance of a database used by an application, and (ii) a change log associated with the instance of the database used by the application,
- each node redundantly executing the same transactions, each transaction including one or more data manipulation language (DML) or data definition language (DDL) operations, wherein results of the DML or DDL operations are stored in the change log as change log events, wherein the order of the change log events stored in the change log on one node is in a different order than the order of change log events stored in the change log of at least one of the other nodes, the method comprising for each transaction executing at each node:
- (a) defining deterministic subunits of the change log events, wherein the deterministic subunits of the change log events are consistent and do not deviate when used for computing deterministic indicia for the redundant transaction executing at each of the nodes;
- (b) computing indicia for each deterministic subunit of the change log events;
- (c) ordering the deterministic subunits of the change log events by the computed indicia;
- (d) computing deterministic indicia for the transaction from the ordered deterministic subunits;
- and
- (e) validating the transaction with at least one of the other nodes using the deterministic indicia, the validation indicating either a match or a mismatch of the deterministic indicia computed at the plurality of nodes.