Ignite is an in-memory, distributed key-value store.
- Source Code
- https://github.com/apache/ignite[02]
- Developer
- Country of Origin
- US
- Start Year
- 2014
- Project Type
- Open Source
- Written in
- Java
- Derived From
- GridGain
- License
- Apache v2
Ignite is an in-memory, distributed key-value store.
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[05]
According to Ignite's confluence page, consistent checkpointing has been implemented in the system. The fuzzy checkpointing may be implemented in future releases.
Compression
There is no data compression implemented in ignite now. However, ignite suggests the Index Prefix Compression protocol in its future enhancement plan.
Concurrency Control
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. 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
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
Ignite does not support foreign key constraints.
Indexes
Ignite uses internal 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
Ignite supports the following three isolation levels: READ_COMMITTED, REPEATABLE_READ, and SERIALIZABLE.
Logging[06]
Ignite uses a write-ahead log which logs logical database modifications and page changes.
Storage Organization
Ignite used a page-based memory architecture, where memory is split into pages of fixed size. The pages are stored in RAM (outside of Java Heap) and are organized in a special hierarchy on disk.
Stored Procedures
Ignite support access to the contents of the result generated by batches and stored procedures.
System Architecture
The nodes Ignite nodes can automatically discover each other. This helps to scale the cluster when needed, without having to restart the whole cluster.
Citations
6 sources- Distributed Database - Apache Ignite | Apache Ignite apache.org
- GitHub - apache/ignite: Apache Ignite · GitHub github.com
- What is Apache Ignite? readme.io
- Apache Ignite - Wikipedia wikipedia.org
- Ignite Persistent Store - under the hood - Apache Ignite - Apache Software Foundation apache.org
- Native Persistence - Apache Ignite apache.org