Ignite

Ignite is an in-memory, distributed key-value store which uses a shared-nothing, node-based cluster architecture. It can be used with existing third party databases to improve the overall performance and scalability, and it can also be used in its native persistence.

History

Ignite was originally the proprietary GridGain DBMS. It was then open-sourced in late 2014 and then accepted in the Apache Incubator program.

Checkpoints

Consistent

According to Ignite's confluence page, consistent checkpointing is available in the system.

Indexes

B+Tree

Ignite uses B+tree data structures to store regular indexes. Ignite supports primary and secondary indexes, but it will only enforce the uniqueness of primary indexes.

Logging

Logical Logging

Ignite uses a write-ahead log which logs logical database modifications and page changes.

Views

Virtual Views

Ignite has some built-in views that contain information about cluster nodes.

Concurrency Control

Multi-version Concurrency Control (MVCC)

According to Ignite's documentation v2.7.6, MVCC now is released as beta versions in Ignite version 2.7. In MVCC, a logical snapshot of data is created for each transaction. The snapshot is consistent throughout the transaction and the transaction can only view and modify data in this snapshot. For example, if an entry is read by transaction A and updated by transaction B when transaction A tries to update the entry again, an exception will be thrown and transaction A will need to be retried.

System Architecture

Shared-Nothing

Ignite uses a shared-nothing, node-based cluster architecture. The nodes can automatically discover each other. It supports third-party persistence and native persistence. For third-party persistence, it acts as a in-memory cache on top of a third-party database. For its native persistence, it acts as a in-memory (memory-centric) distributed database. It also supports collocated processing, where the computation on data is done on the node where the data is stored.

Foreign Keys

Not Supported

Ignite does not support foreign key constraints.

Data Model

Key/Value

Ignite uses a key-value store. And Ignite determines the location of the data using a pluggable hashing algorithm. It means every client can determine where the value is stored by plugging the key into a hashing function.

Stored Procedures

Supported

Ignite support access to the contents of the result generated by batches and stored procedures.

Parallel Execution

Intra-Operator (Horizontal)

It supports distributed collocated processing, where the operation can be distributed to each node.

Isolation Levels

Read Committed Serializable Repeatable Read

Ignite supports the following three isolation levels: READ_COMMITTED, REPEATABLE_READ, and SERIALIZABLE.

Storage Architecture

Disk-oriented In-Memory

Apache Ignite is an in-memory (or memory-centric) distributed database. But there is a native persistence option in Ignite. If you turned it off, it is a pure in-memory store. When the option is turned on, it stores both data and indexes on disk. In this mode, a subset of data is stored in memory. Additionally, one benefit of this mode is that the indexes don't need to be rebuild when the system restarts since they are persisted on the disk.

Query Interface

SQL

Ignite Logo
Website

https://ignite.apache.org/

Source Code

https://github.com/apache/ignite

Tech Docs

http://apacheignite.readme.io/docs

Developer

Apache Foundation

Country of Origin

US

Start Year

2014

Project Type

Open Source

Written in

Java

Supported languages

C#, Java

Derived From

GridGain

Licenses

Apache v2

Wikipedia

https://en.wikipedia.org/wiki/Apache_Ignite