Ignite 3 Alpha: A Sneak Peek into the Future of Apache Ignite
Tags: distributedsystems, database, apacheignite, programming
Published: 2021-01-26 19:23:55

# What Is Ignite 3?

Apache Ignite has existed for more than six years. During those years, Ignite evolved incredibly and, with thousands of deployments worldwide, became a top-5 project of the Apache Software Foundation. The SQL engine became more comprehensive, page-memory architecture and the persistence layer were introduced, and many features were added. These advancements make Ignite an extremely powerful tool that is suitable for a wide variety of use cases, from basic caching to complicated, multi-component data integration hubs that power services and applications that are used by millions of people every second of every day—and where a minute-long outage can cost millions of dollars.

With Ignite 3, we leap forward with a revamped codebase that supports a modern, modular architecture. The intuitive configurations, APIs, and Ignite behaviors provide a speedy, flexible developer experience so that even developers new to Ignite can quickly take advantage of the power of the distributed database.

# Major Enhancements Planned for Ignite 3

## Dynamic Configuration

Ignite 3 has a new configuration engine that provides a clear separation between static and dynamic parameters. The engine introduces an API that can update most Ignite configuration parameters in runtime, without requiring you to follow special parameter-update procedures or do cluster-node restarts.

For example, imagine that you create a table in Ignite with the WAL synchronization mode set to fsync (every update needs to be flushed to disk). Then, in production, you realize that, for the sake of performance, you want to relax the synchronization mode for the table and allow the operating system decide when to flush the changes from memory to disk. With Ignite 3, you to change that configuration on the fly—via simple parameter updates.

The API is also exposed via specialized REST endpoints so that it can integrate with external tools.

In addition, the legacy Spring XML format has been replaced with a much more compact and easy-to-use HOCON format, which is fully compatible with JSON and Java Properties formats. You can read about HOCON on [GitHub](https://github.com/lightbend/config/blob/master/HOCON.md).

*For more technical details refer to the [Ignite Enhancement Proposal #55](https://cwiki.apache.org/confluence/display/IGNITE/IEP-55+Unified+Configuration).*

## Schema-Driven Architecture

Ignite 3 enforces a strong one-to-one match between tables and their schemas. The role of a schema is to unequivocally describe the data that is stored in its table. Therefore, any entry that is inserted into a table must be compliant with the table's schema. Also, any update that is made to the schema is reflected in the data.

Thus, schema-level consistency is maintained at all times, at both the object level and the SQL level. The SQL level is controlled by an application developer, and the object level is defined and updated automatically during the serialization of records. Nevertheless, the strong match enforcement results in clear and consistent behavior. In addition, although caches are essentially schema-less and can simultaneously store multiple data types, matching ensures consistency for data of the same type. This elegant, schema-driven architecture empowers developers to work easily with data across the breadth of an Ignite database.

To make the behavior even more predictable, a unified API for schema updates is being introduced. DDL statements and external tools function on top of the unified API, so users can always get intuitive results.

*For technical details, refer to [Ignite Enhancement Proposal 54](https://cwiki.apache.org/confluence/display/IGNITE/IEP-54%3A+Schema-first+Approach).*

## Unified CLI Tool

Probably, in regard to developer experience, a unified CLI tool is the most important addition planned for Ignite 3. The tool is responsible for all operations related to the Ignite cluster and serves as a single entry point. Among many other capabilities, the tool enables you to do the following:
* Easily install and upgrade Ignite
* Manage Ignite optional modules and external dependencies without the need to move JAR files and folders manually
* Start and stop nodes
* Generate configuration stubs and Docker images for painless deployments on the cloud
* Connect to clusters in order to update configurations and schemas, run SQL queries, and so on

The new CLI tool transforms the developer experience. It dramatically improves the usability of Ignite and makes Ignite much friendlier to newcomers.

*For technical details, refer to [Ignite Enhancement Proposal 52](https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=158873958).*

# Get a Sneak Peek: Download Ignite 3 Alpha

Ignite 3 development began only three months ago, but some tangible results have already been produced. To give users a sneak peek into how Ignite will look in the future, the community decided to publish an alpha release. Now, anyone can download and play with the current alpha version of the CLI tool. To download, go to the [Ignite website](https://ignite.apache.org/download.cgi).

The current alpha build does not represent a functional product. It does not incorporate cluster discovery, data storage, compute capabilities, or any of the other core Ignite features that we are used to. However, it demonstrates the major mechanics of how you will interact with Ignite in the future.

Here are some highlights of the first Ignite 3 Alpha release:
* Single-file download (Instead of downloading a huge ZIP file that has hundreds of files and a complicated structure, you get a single script, the CLI tool, which you can use for all further operations.)
* Ability to install core Ignite artifacts and external dependencies via Maven
* Ability to manage locally running nodes (start, stop, inspect)
* Ability to connect to a cluster, acquire the current configuration, and update some of the dynamic parameters

The best way to get a good feel for the alpha build is to review the [Getting Started Guide](https://ignite.apache.org/docs/3.0.0-alpha/quick-start/getting-started-guide).

For a quick demonstration of the alpha build, watch the [Apache Ignite 3.0 Alpha video series](https://www.youtube.com/watch?v=9m_MoK0PdV8&list=PLMc7NR20hA-I7b9ppKAtkRWuHlrwbVhae&index=1).

Your feedback is greatly appreciated! If you want to share your ideas, wishes, or requests or if you notice any issues, please do not hesitate to write a message to the Apache Ignite developers mailing list. [This dedicated thread](http://apache-ignite-users.70518.x6.nabble.com/Looking-for-feedback-on-the-Ignite-3-0-0-Alpha-td35089.html) is the best place to share your thoughts.

# Recommended Resources

* [Apache Ignite 3.0 Getting Started Guide](https://ignite.apache.org/docs/3.0.0-alpha/quick-start/getting-started-guide)
* [Apache Ignite 3.0 Wiki Page](https://cwiki.apache.org/confluence/display/IGNITE/Apache+Ignite+3.0)
* [Apache Ignite 3.0 Enhancement Proposals](https://cwiki.apache.org/confluence/display/IGNITE/Proposals+for+Ignite+3.0)
* [Feedback Thread](http://apache-ignite-users.70518.x6.nabble.com/Looking-for-feedback-on-the-Ignite-3-0-0-Alpha-td35089.html)
* [Ignite 3.0 Alpha Build Community Gathering (Jan 26 2021)](https://www.meetup.com/Apache-Ignite-Virtual-Meetup/events/275722317/)