Apache Ignite

Apache Ignite's database uses RAM as the default storage and processing tier, thus, belonging to the class of in-memory computing platforms.

GridGain continues to be the main contributor to the source code, and offers both a commercial version and professional services around Apache Ignite.

On top of its distributed foundation, Apache Ignite supports interfaces including JCache-compliant key-value APIs, ANSI-99 SQL with joins, ACID transactions, as well as MapReduce like computations.

Every cache is split into a fixed set of "partitions" that are evenly distributed among cluster nodes using the rendezvous hashing algorithm.

The partitions are rebalanced[15] automatically if a node is added to or removed from the cluster in order to achieve an even data distribution and spread the workload.

The regions are preallocated and managed by the database on its own which prevents Java heap utilization for storage needs, as a result, helping to avoid long garbage collection pauses.

[18] In the background, the store runs the "checkpointing process" which purpose is to copy dirty pages from the memory tier to the partition files.

Apache Ignite can be configured as the in-memory tier on top of RDBMS, NoSQL or Hadoop databases speeding up the latter.

When swap space is enabled, Ignites stores data in memory mapped files (MMF) whose content will be swapped to disk by the OS depending on the current RAM consumption Apache Ignite is a strongly consistent platform that implements two-phase commit protocol.

In the scenarios where transactional guarantees are optional, Apache Ignite allows executing queries in the atomic mode that provides better performance.

Apache Ignite can be accessed using SQL APIs exposed via JDBC and ODBC drivers, and native libraries developed for Java, C#, C++ programming languages.

Apache Ignite provides machine learning training and inference functionality as well as data preprocessing and model quality estimation.

[24] It natively supports classical training algorithms such as Linear Regression, Decision Trees, Random Forest, Gradient Boosting, SVM, K-Means and others.

The key idea of Apache Ignite Machine Learning toolkit is an ability to perform distributed training and inference instantly without massive data transmissions.