Apache Ignite® is a distributed key-value store that stores data in memory and on disk. Ignite functions as a distributed partitioned hash map with every cluster node owning a portion of the overall data set in this deployment mode. You can access the cluster with key-value requests or take advantage of APIs available exclusively in Ignite which include distributed ACID transactions, SQL, co-located computations, and machine learning.
JCache and Extended Key-Value APIs
Ignite key-value APIs comply with the JCache (JSR 107) specification and support:
- Basic Cache Put/Get Operations
- ConcurrentMap APIs
- EntryProcessor and CacheInterceptor APIs
- Events and Metrics
Ignite also extends the JCache specification and supports distributed key-value ACID transactions, scan and continuous queries, co-located computations, and much more. For instance, continuous queries are useful if you want an application to be notified whenever a record gets updated on the server nodes. The ACID transactions support lets you update a set of records stored in different caches/tables with data consistency.
A near cache is a local client-side cache that stores the most frequently used data on the application end. This caching technique is supported for key-value APIs only and can be considered for applications that require a consistent response time ranging in microseconds. Ignite automatically invalidates and updates the near cache. Whenever the primary copy of a record gets updated on a server node, Ignite propagates the change to all the nodes that store the record's backup copy as well as to your applications that keep the record's copy in their near caches.
Read-through and Write-Through/Behind
If Ignite is deployed as a key-value store on top of an external database, then Ignite can automatically write-through or write-behind all the changes to that external store for every key-value request issued by your applications. It also includes key-value ACID transactions - Ignite coordinates and commits a transaction across its in-memory cluster as well as a relational database.
The read-through capability means that Ignite can read data from an external database if a record is missing in memory. This feature is fully supported for both JCache and extended key-value APIs.
Ignite Native Persistence
If you want Ignite to function as a key-value store that caches data in memory and persists it to disk instead of an external database, then you can enable Ignite native persistence. The native persistence feature lets you eliminate the time-consuming cache warm-up step as well as the data reloading phase from external databases. Furthermore, since the native persistence always keeps a full copy of data on disk, you are free to cache a subset of records in memory. If a required data record is missing in memory, then Ignite reads it from disk automatically regardless of the API you use.