DBDB.io The Encyclopedia of Database Systems · Est. 2017
Database of Databases

Database Entry

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.[05][06]

Source Code
https://github.com/apache/ignite[02]
Country of Origin
US
Start Year
2014
Project Type
Open Source
Written in
Java
Supported Languages
C#, Java
Derived From
GridGain
License
Apache v2

Database Entry

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.[05][06]

History[06]


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

Checkpoints[07]


According to Ignite's confluence page, consistent checkpointing has been implemented in the system. The fuzzy checkpointing may be implemented in future releases.

Compression[08]


There is no data compression implemented in ignite now. However, ignite suggests the Index Prefix Compression in its future enhancement plan.

Concurrency Control[09]


According to Ignite's documentation v2.7.6, MVCC now is released as beta versions in Ignite version 2.7. In MVCC, Ignite will create a logical snapshot of data 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, Ignite will throw an exception and transaction A will need to be retried.

Data Model[10]


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.

Foreign Keys[11]


Ignite does not support foreign key constraints.

Indexes[12]


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.

Isolation Levels[13]


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

Joins


Logging[14]


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

Parallel Execution[15]


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

Query Interface


SQL

Storage Architecture[05]


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.

Storage Model


Storage Organization[16]


Ignite used a page-based memory architecture, where memory is split into pages of fixed size. The pages are stored in RAM and are organized in a special hierarchy on disk.

Stored Procedures[17]


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

System Architecture[18][19][06][15]


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.

Views[20]


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

Derivative Systems
GridGain GridGain

Citations

20 sources
  1. Distributed Database - Apache Ignite | Apache Ignite apache.org
  2. GitHub - apache/ignite: Apache Ignite · GitHub github.com
  3. What is Apache Ignite? readme.io
  4. Apache Ignite - Wikipedia wikipedia.org
  5. In-Memory Data Grid - Apache Ignite apache.org
  6. Apache Ignite Introduction - GridGain Systems gridgain.com
  7. Ignite Persistent Store - under the hood - Apache Ignite - Apache Software Foundation apache.org
  8. IEP-20: Data Compression in Ignite - Apache Ignite - Apache Software Foundation apache.org
  9. Multiversion Concurrency Control readme.io
  10. Data Grid readme.io
  11. Ignite Facts readme.io
  12. CREATE INDEX readme.io
  13. Concurrency Modes and Isolation Levels readme.io
  14. Persistent Store Architecture - Apache Ignite - Apache Software Foundation apache.org
  15. Processing Where Data Lives - Apache Ignite apache.org
  16. Memory Architecture readme.io
  17. Specification readme.io
  18. Distributed Joins readme.io
  19. What is Apache Ignite? readme.io
  20. System Views readme.io
Revision #6 Last Updated: