A system that is configured to ensure transactional integrity thereof, the system comprising a plurality of subsystems that execute transactions, each transaction including a BEGIN step, and one or more data manipulation language (DML) or data definition language (DDL) operations, each subsystem including:
- (a) a hardware processor,
- (b) an application executing in the hardware processor,
- (c) an indicia engine, and
- (d) an instance of a database used by the application,
- wherein each subsystem is configured to receive a request to process a transaction, the request received at each subsystem being the same request,
- wherein the application executing in the hardware processor at each subsystem is configured to process the request in the instance of the subsystem's database,
- wherein the indicia engine at each subsystem is configured to compute indicia of the outcome of the processing of the request, wherein the indicia is dependent upon at least a subset of the DML or DDL operations,
- wherein the indicia engine at one of the subsystems is further configured to compare the computed indicia from the plurality of subsystems, and identify a majority of the subsystems having the same computed indicia, and
- wherein one of the subsystems is further configured to complete an action when the comparison indicates that the computed indicia at the one subsystem does not match the computed indicia of the majority of the subsystems, thereby indicating a lack of transactional integrity in the one subsystem, wherein the action completed at one of the subsystems is one or more of:
- (a) issuing a database rollback on the one subsystem,
- (b) executing self-diagnostics on the one subsystem,
- (c) shutting down the one subsystem,
- (d) taking the one subsystem offline,
- (e) aborting the transaction executing on the one subsystem, and
- (f) generating an error indication for the one subsystem.