What is Apache Ignite?

Apache Ignite is a memory-centric distributed database, caching, and processing platform for transactional, analytical, and streaming workloads delivering in-memory speeds at petabyte scaleDurable Memory

Ignite’s durable memory component treats RAM not just as a caching layer but as a complete fully functional storage layer. This means that users can turn the persistence on and off as needed. If persistence is turned off, then Ignite can act as a distributed in-memory database or in-memory data grid, depending on whether you prefer to use SQL or key-value APIs. If persistence is turned on, then Ignite becomes a distributed, horizontally scalable database that guarantees full data consistency and is resilient to full cluster failures.

Read More

Ignite Persistence

Ignite Native Persistence is a distributed, ACID, and SQL-compliant disk store that transparently integrates with Ignite’s Durable Memory as an optional disk layer storing data and indexes on SSD, Flash, 3D XPoint, and other types of non-volatile storages.

With Ignite Persistence enabled, you no longer need to keep all the data and indexes in memory or warm it up after a node or cluster restart because the Durable Memory is tightly coupled with persistence and treats it as a secondary memory tier. This implies that if a subset of data or an index is missing in RAM, the Durable Memory will take it from the disk.

Read More

ACID Compliance

Data stored in Ignite is ACID-compliant both in memory and on disk, making Ignite a strongly consistent system. Ignite transactions work across the network and can span multiple servers.

Read More

Complete SQL Support

Ignite provides full support for SQL, DDL, and DML, allowing users to interact with Ignite using pure SQL without writing any code. This means that users can create tables and indexes as well as insert, update, and query data using only SQL. Having such complete SQL support makes Ignite a one-of-a-kind distributed SQL database.

Read More

Key-Value

The in-memory data grid component in Ignite is a fully transactional distributed key-value store that can scale horizontally across 100s of servers in the cluster. When persistence is enabled, Ignite can also store more data than fits in memory and survive full cluster restarts.

Read More

Collocated Processing

Most traditional databases work in a client-server fashion, meaning that data must be brought to the client side for processing. This approach requires lots of data movement from servers to clients and generally does not scale. Ignite, on the other hand, allows for sending light-weight computations to the data, i.e. collocating computations with data. As a result, Ignite scales better and minimizes data movement.

Read More

Scalability and Durability

Ignite is an elastic, horizontally scalable distributed system that supports adding and removing cluster nodes on demand. Ignite also allows for storing multiple copies of the data, making it resilient to partial cluster failures. If the persistence is enabled, the data stored in Ignite will also survive full cluster failures. Cluster restarts in Ignite can be very fast, as the data becomes operational instantaneously directly from disk. As a result, the data does not need to be preloaded in-memory to begin processing and Ignite caches will lazily warm up resuming the in-memory performance.

Read More

Ignite Life Cycle

Manage life cycle of your Ignite nodes.

Ignite is JVM-based. Single JVM represents one or more logical Ignite nodes (most of the time, however, a single JVM runs just one Ignite node). Throughout the Ignite documentation, we use the terms Ignite runtime and Ignite node almost interchangeably. For example, when we say that you can “run 5 nodes on this host” – in most cases it technically means that you can start 5 JVMs on this host each running a single Ignite node. Ignite also supports multiple Ignite nodes in a single JVM. In fact, that is exactly how most of the internal tests run for Ignite.

Ignite runtime == JVM process == Ignite node (in most cases)

Ignition Class

The classIgnition starts individual Ignite nodes in the network topology. Note that a physical server (like a computer on the network) can have multiple Ignite nodes running on it.

Here is how you can start a grid node locally with all the defaults:

Ignite ignite = Ignition.start();

You can also start an Ignite node by passing a configuration file:

Ignite ignite = Ignition.start("examples/config/example-cache.xml");

The path to the configuration file can be absolute or relative to either IGNITE_HOME (Ignite installation folder) or folderMETA-INF in your classpath.

 LifecycleBean

Sometimes you need to perform certain actions before or after the Ignite node starts or stops. This can be done by implementing the LifecycleBean interface, and specifying the implementation bean in lifecycleBeans property of IgniteConfiguration in the spring XML file:

<bean class="org.apache.ignite.IgniteConfiguration">
    ...
    <property name="lifecycleBeans">
        <list>
            <bean class="com.mycompany.MyLifecycleBean"/>
        </list>
    </property>
    ...
</bean>

LifeCycleBean can also be configured programmatically the following way:

// Create new configuration.
IgniteConfiguration cfg = new IgniteConfiguration();
 
// Provide lifecycle bean to configuration.
cfg.setLifecycleBeans(new MyLifecycleBean());
 
// Start Ignite node with given configuration.
Ignite ignite = Ignition.start(cfg)

An implementation of LifecycleBean may look like the following:

public class MyLifecycleBean implements LifecycleBean {
   @Override public void onLifecycleEvent
    (LifecycleEventType evt) {
       if (evt == LifecycleEventType.BEFORE_NODE_START) {
          // Do something.
            ...
        }
    }
}

You can inject an Ignite instance and other useful resources into an LifecycleBeanimplementation. Please refer to Resource Injection section for more information.

Lifecycle Event Types

The following lifecycle event types are supported:

Event Type
Description

BEFORE_NODE_START

Invoked before Ignite node startup routine is initiated.

AFTER_NODE_START

Invoked right after Ignite node has started.

BEFORE_NODE_STOP

Invoked right before Ignite stop routine is initiated.

AFTER_NODE_STOP

Invoked right after Ignite node has stopped.

 Source: What is Ignite?
ThirdEye Data

Transforming Enterprises with
Data & AI Services & Solutions.

ThirdEye delivers Data and AI services & solutions for enterprises worldwide by
leveraging state-of-the-art Data & AI technologies.

CONTACT US