Pluggable Storage & Other New Features in Apache Ignite 3.0 Alpha 5

The Apache Ignite 3.0 Alpha 5 build recently became available. Here is an overview of the new features the community included in this release. Based on industry and use case, they may be of major interest to some developers while less relevant to others. 

Pluggable Storage

Different use cases require different storage engines. Some storage engines are good for read-heavy operations, others are write-optimized. Apache Ignite 2 uses a storage mechanism called Page Memory, which is based on the B+Tree data structure. 

With this release, Apache Ignite 3 introduces the concept of Pluggable Storage. It allows users to choose between a set of supported storage engines, based on the use case and load profile of the application. Currently, the following storage engines are supported:

  • Page Memory is a storage mechanism based on B+Tree and battle-tested in Apache Ignite 2. As with Apache Ignite 2, it comes in two flavors: persistent with in-memory caching layer and fully in-memory.
  • RocksDB is a persistent storage based on the Log-structured Merge-tree (LSM Tree) data structure that is considered by many to be an industry standard for write-heavy workloads.

Watch Aleksandr Polovtsev’s Ignite Summit presentation on Pluggable Store Architecture for an in-depth overview of this important new feature. 

Improved CLI Tool

The new version of the Ignite command line interface offers an interactive mode called read-eval-print loop (REPL) that enables executing multiple commands conveniently using the same connection. It also has syntax highlighting and context-aware auto-completion. Finally, the new version has the ability to run SQL queries using the same CLI tool.

See a demonstration of how the new CLI simplifies management and use of a complex multi-node, multi-region, multi-storage engine cluster by watching Aleksandr Pakhomov’s Ignite Summit presentation, Apache Ignite 3: How a Modern CLI Can Improve the Developer Experience.

OpenAPI Support for REST

Ignite 3.0 Alpha 5’s  REST API has been updated to support the OpenAPI standard. OpenAPI allows users to generate documentation for the REST API and to automatically generate a client library for virtually any popular programming language.

Java API for SQL

The new version introduces a native Java API to run distributed SQL queries and SQL transactions, moving beyond what was possible with H2 and Java Database Connectivity (JDBC) in Ignite 2. The Java API for SQL, in conjunction with the previously introduced Apache Calcite SQL engine, handles more complex queries, provides more control over query execution and planning, and supports data distribution. 

This singular Java client for Ignite 3 supports both key-value and SQL access.

Konstantin Orlov shared the advantages of the new Java API for SQL and Calcite SQL engine in the Ignite Summit presentation, Apache Ignite 3: New SQL Engine Powered by Apache Calcite.

Data Colocation

In high-load scenarios, having data you need on several different nodes leads to significant performance degradation. Apache Ignite 3 Alpha 5 now offers data colocation, and allows for faster operations.

Distributed Computing

Apache Ignite 3 now provides a distributed computing interface for Java and .NET projects. Currently, you need to deploy the required classes to the cluster manually. The distributed computing API in Apache Ignite 3 was reworked and now requires different client-side code from AI 2 projects. For example, jobs in the Java API are not serialized.

Apache Ignite 3 also brings data colocation for distributed computing jobs out of the box. You can make sure the job will be executed on the node that holds the required data.

Try Apache Ignite 3.0 Alpha 5

Please download and try out the new features of Apache Ignite 3.0 Alpha 5. Additional useful links include source code from GitHub and product documentation. Remember: your feedback is important to us. The Apache Ignite community reviews all incoming ideas and suggestions as part of our bug fixing and future development efforts.