Migrating to GridGain from Apache Ignite
Apache Ignite 2.x and GridGain 8.x share most modules and features. Therefore, migration from Apache Ignite to GridGain is relatively straightforward. The migration process includes the following steps:
Remove or Replace Incompatible Features
A number of Apache Ignite 2.x features are incompatible with GridGain 8.x. To make your Apache Ignite clusters work in GridGain, you need to either remove these features or replace them with GridGain equivalents.
Cluster Snapshots
GridGain snapshot implementation is different from the one in Apache Ignite. Replace your Apache Ignite implementation with the GridGain snapshots.
Calcite-based SQL Engine
GridGain’s SQL engine is H2-based, which is incompatible with Apache ignite’s Calcite-based engine. To ensure compatibility:
-
Remove all usage instances of the
ignite-calcite
module. -
Remove all references to
CalciteQueryEngineConfiguration
fromSqlConfiguration
. -
Remove
QUERY_ENGINE('calcite')
hints from SQL queries.
Change Data Capture
GridGain does not support CDC (Change Data Capture).
Replace CDC with GridGain Data Center Replication or GridGain Kafka connector replication.
Index Query
GridGain has a different internal implementation of index queries from Apache Ignite. Public API for index queries is the same in both Apache Ignite and GridGain. When migrating, keep the following in mind:
-
Unlike Apache Ignite,
null
cannot be used for setting search boundaries for range criteria (lt()
,lte()
,gt()
,gte()
,between()
), and the result of executing these criteria will not containnull
values for the specified column. -
If criteria do not match the index, the query will still be executed. This execution is not guaranteed to be as efficient.
Make sure your code can handle unsorted query results and that your criteria fields match table indexes when migrating.
Custom Types in REST API
GridGain does not support custom types in the REST API. You can implement these with the use of ConnectorMessageInterceptor.
Apache Ignite Sandbox
GridGain does not support Apache Ignite Sandbox. However, GridGain Enterprise Security provides the equivalent degree of security.
Remove the Sandbox usage.
Create Snapshots of Persistent Clusters
You need to create a snapshot or your persistent cluster(s) to have a backup if something goes wrong during migration.
Proceed as follows:
-
Start your cluster’s nodes in Apache Ignite using
ignite.sh|bat
with the XML configuration file.
Sample configuration file:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="igniteInstanceName" value="srv01"/>
<property name="workDirectory" value="migrationtest/work"/>
<property name="discoverySpi">
<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="ipFinder">
<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">
<property name="addresses">
<list>
<value>127.0.0.1:47500..47501</value>
</list>
</property>
</bean>
</property>
</bean>
</property>
<property name="dataStorageConfiguration">
<bean class="org.apache.ignite.configuration.DataStorageConfiguration">
<property name="defaultDataRegionConfiguration">
<bean class="org.apache.ignite.configuration.DataRegionConfiguration">
<property name="persistenceEnabled" value="true"/>
</bean>
</property>
</bean>
</property>
</bean>
</beans>
Stop Nodes in Apache Ignite
-
Stop all client nodes in your cluster in Apache Ignite.
-
Shut down all server nodes in your cluster in Apache Ignite.
Install GridGain
To install GridGain:
-
Download GridGain 8.x to your machine.
-
Install the downloaded GridGain version in a dedicated directory.
-
Copy
workdir
from the Apache Ignite directory to the GridGain directory.
Change Dependencies and Configurations
Thick Clients
Change dependencies fromm Apache Ignite to GridGain in the thick clients.
Java
Excerpt from the sample pom.xml with GridGain 8.8.24 dependencies for a Maven implementation:
<properties>
<gridgain.version>8.8.24</gridgain.version>
</properties>
<repositories>
<repository>
<id>GridGain External Repository</id>
<url>https://www.gridgainsystems.com/nexus/content/repositories/external</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.gridgain</groupId>
<artifactId>ignite-core</artifactId>
<version>${gridgain.version}</version>
</dependency>
<dependency>
<groupId>org.gridgain</groupId>
<artifactId>ignite-spring</artifactId>
<version>${gridgain.version}</version>
</dependency>
</dependencies>
.NET
In the .NET client, replace the Apache.Ignite
dependency with GridGain.Ignite
:
dotnet remove package Apache.Ignite
dotnet add package GridGain.Ignite --version {gridgain.version}
C++
For the C++ platform, build the client from sources.
Thin Clients
Change dependencies fromm Apache Ignite to GridGain in the thin clients.
Java
Excerpt from the sample pom.xml with GridGain 8.8.24 dependencies for a Maven implementation:
<properties>
<ignite.version>8.8.24</ignite.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.ignite</groupId>
<artifactId>ignite-core</artifactId>
<version>${ignite.version}</version>
</dependency>
</dependencies>
.NET
For the .NET thin client, use the Apache.Ignite.Core
assembly located in the {GRIDGAIN_HOME}/platforms/dotnet
directory of the GridGain distribution package instead of Apache.Ignite.Core
from the Apache Ignite distribution.
C++
The source code of the C++ thin client is included in the GridGain distribution package under the {GRIDGAIN_HOME}/platforms/cpp
directory. Replace the Apache Ignite client with the GridGain one.
Python
For the Python thin client, replace the pyignite
package with pygridgain
:
pip3 install pygridgain
Node.js
To use the Node.js client, replace the apache-ignite-client
package with gridgain/thin-client
.
PHP
To use the PHP client, replace the apache/apache-ignite-client
package with gridgain/gridgain-client
, starting with:
composer require gridgain/gridgain-client
Drivers
Make sure the ODBC and JDBC drivers are compatible with your GridGain implementation.
ODBC
Build the GridGain ODBC driver and use it in your application instead of the Apache Ignite ODBC driver.
JDBC
The JDBC thin driver is a default, lightweight driver provided by GridGain.
Replace the ignite-core-2.14.0.jar
package` with ignite-core-8.8.24.jar
in your application classpath.
Register the JDBC driver:
Class.forName("org.apache.ignite.IgniteJdbcThinDriver");
Open the the JDBC connection:
Connection conn = DriverManager.getConnection("jdbc:ignite:thin://127.0.0.1");
XML Configuration File
Modify the XML configuration file you had used to start nodes in Apache Ignite.
In particular, add or change SQL memory quotas. Unlike Apache Ignite, GridGain uses an SQL memory quota mechanism to prevent nodes from running out of memory when executing SQL queries that return large result sets. The total amount of memory used by multiple concurrent queries cannot exceed the global quota value. By default, the global quota for SQL queries is set to 60% of the heap memory available to the node. Verify that the default global quota value is sufficient for you queries; increase the value in case it isn’t sufficient.
Example:
<bean class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="sqlConfiguration">
<bean class="org.apache.ignite.configuration.SqlConfiguration">
<property name="sqlGlobalMemoryQuota" value="300M"/>
</bean>
</property>
</bean>
Start Nodes in GridGain
-
Navigate to your GridGain directory.
-
Start your cluster nodes in GridGain with the updated XML configuration file.
Test Performance
Although GridGain is expected to be at least as performant as Apache Ignite, we recommend that you verify performance of your cluster(s) in GridGain 8.x upon migration from Apache Ignite 2.x.
© 2024 GridGain Systems, Inc. All Rights Reserved. Privacy Policy | Legal Notices. GridGain® is a registered trademark of GridGain Systems, Inc.
Apache, Apache Ignite, the Apache feather and the Apache Ignite logo are either registered trademarks or trademarks of The Apache Software Foundation.