Great news: The Apache Ignite Community has released the fourth alpha build of Ignite 3!
Ignite 3 is a project that aims to create the next generation of the Apache Ignite platform, modernize and improve the usability of the product while keeping its power and flexibility. It’s been quite a journey since the project started in late 2020 – I’ve been sharing the updates along the way in a series of blogs devoted to the topic:
- Ignite 3 Alpha: A Sneak Peek into the Future of Apache Ignite
- Just Released: Apache Ignite 3, Alpha 2
- Apache Ignite 3, Alpha 3: Apache Calcite, RAFT, and LSM-Tree
The Apache Ignite 3, Alpha 4 build that just became available is the latest release of the Ignite 3 project. Let’s talk about the features that the community included in this release.
POJO Mappings for Table Views
One of the cornerstone features of Ignite 3 is the new data access API, which provides multiple views of the data stored in Ignite. Users can maintain a single database schema and, at the same time, choose different ways to interact with the underlying data for different parts of their applications based on the business requirements of those applications. The best way to take a closer look at the Table API is to refer to the corresponding code examples.
However, in Alpha 3 and earlier releases, the only option to use the aforementioned table views was via the low-level tuples, which are essentially sets of fields representing table records. This way is not the most convenient because applications typically work with language-specific data model entities (e.g., POJO classes in Java).
Starting with Alpha 4, Ignite will automatically convert tuples to your objects. You can either rely on the default algorithm that will introspect your classes using reflection and match them with the schema, or provide your own conversion logic via the Mapper interface.
Ignite 3 Alpha 3 introduced the first version of the brand new SQL engine based on Apache Calcite. Since then, the community has added various new features to the engine, the most notable being the Data Definition Language.
As with any other SQL database, DDL in Ignite is designed to define tables, indexes, and other components of the schema.
With the schema-driven approach that Ignite 3 is taking, DDL will likely become one of the most frequently used ways of configuring and managing the database. Introducing DDL into the Calcite-based engine is a massive step towards achieving the usability goals of Ignite 3.
Another exciting part of Apache Ignite 3, Alpha 4 is the new transactional API, which, in my opinion, is much more intuitive and flexible than what Ignite 2 currently provides. Here are some of the advantages of Ignite 3 transactional API:
- It is fully asynchronous and never blocks your threads unless you specifically request this.
- Asynchronous support in Java is based on standard CompletableFuture, which makes it easy to use and compatible with existing execution frameworks. We’re planning to take a similar approach for other languages as well.
- A transaction is not associated with a specific thread. You can create a transaction anywhere in your application and then work with it as with any other regular object to enlist multiple data read/write operations.
- Convenience APIs for more straightforward synchronous transactions are also provided, so you will not skip a beat when migrating from Ignite 2 to Ignite 3.
On the implementation level, Ignite 3 implements a brand new transactional protocol, which works on top of the Raft-based replication infrastructure. Among many other improvements, this protocol allows us to get rid of the Partition Map Exchange process. Thanks to this change, we expect Ignite 3 to be a step forward from the standpoint of manageability and overall stability of the system.
I encourage you to take a look at the code examples that illustrate some of the usages of the new transactional API.
Your Feedback is Important!
The Apache Ignite community is constantly looking for feedback on the Ignite 3 activities. We review all incoming ideas, suggestions, or concerns and consider them for future development.
We ask you to try out the Apache Ignite 3, Alpha 4 release by referring to the documentation and code examples. If you have anything to share with us, please do not hesitate to do so in the dedicated email thread.
We will also discuss the Alpha 4 release during the upcoming virtual Ignite Community event on February 16.