My colleague Akmal B. Chaudhri presented a webinar earlier this week where he looked in detail at Apache® Ignite™ architecture's ACID-compliant transactional subsystem.
After watching his webinar, recorded below, you'll have a better understanding of why companies in many industries, including large banks and financial institutions, trust Apache Ignite and make it their platform of choice.
During the video, Akmal debunks the myth that online financial operations need to be delegated to relational databases due to their ACID (Atomicity, Consistency, Isolation, Durability) transaction support.
"Today, most of these disk-based relational databases cannot keep pace with the rapidly growing volumes of data that are becoming a bottleneck in the overall transactional system," he said.
There are two paths to deal with this issue:
- Upgrade to more expensive hardware
- Migrate to a distributed platform.
Akmal's talk in this video focuses on the following:
- Data consistency: one-phase and two-phase commit implementations
- Fault-tolerance: recovery protocol for running transactions
- Optimistic and Pessimistic transactions
- Deadlock-free transactions
- Deadlock detection mechanism
Atomicity Mode
Ignite supports 2 modes for cache operations, transactional and atomic. In transactional
mode you are able to group multiple cache operations in a transaction, while atomic
mode supports multiple atomic operations, one at a time.
These atomicity modes are defined in CacheAtomicityMode
enum:
TRANSACTIONAL
ATOMIC
TRANSACTIONAL
mode enables fully ACID-compliant transactions, however, when only atomic semantics are needed, it is recommended that ATOMIC
mode be used for better performance.
ATOMIC
mode provides better performance by avoiding transactional locks, while still providing data atomicity and consistency. Another difference in ATOMIC
mode is that bulk writes, such as putAll(...)
and removeAll(...)
methods are no longer executed in one transaction and can partially fail. In case of partial failure, CachePartialUpdateException
will be thrown which will contain a list of keys for which the update failed. For more, please visit this page on the ignite.apache.org website.