I’m happy to announce that GridGain 4.2 is released!
This release includes several new exciting feature as well as the host of performance optimizations that we’ve included. This release is 100% backward compatible with 4.x product line and we recommend anyone on 4.x version to update as soon as possible.
Now – let’s talk about new features…
In GridGain 4.2 we’ve introduced support for delayed preloading. Dmitriy Setrakyan wrote an excellent blog detailing this new functionality. Essentially, whenever a new node joins the grid or an existing node leaves the grid, cluster repartitioning happens. This basically means that, in case of new node, it has to take responsibility for some of the data cached on other nodes, and in case of node leaving the grid, other nodes have to take responsibility for the data cached on that node. Essentially this results in data movement between data grid nodes. Picture below illustrates how keys get partitioned among caching data nodes (share-nothing-architecture):
Now imagine that you need to bring multiple nodes up concurrently. The 1st node that comes up will take responsibility for some portion of the data cached on other nodes and will start loading that portion of the data from other nodes. When a 2nd node comes up, it will also take responsibility for some portion of the data, including some data from the 1st node that was just started, and now portion of the data that was moved to 1st node will have to be moved to the 2nd node. Ouch – wouldn’t it be more efficient to wait till 2nd node comes up to start data preloading? The same happens when nodes 3, 4, etc… come up. So the most efficient way to do preloading of keys and to avoid extra network traffic causes by moving data between newly started nodes is to delay preloading until the last node starts.
Delayed preloading allows for delayed or manual preloading start from API or from Visor DevOps Console.
One of the biggest additions to GridGain in 4.2 release is inclusion of JDBC driver that you can use to query your data in GridGain’s In-Memory Data Grid. Now, this is a pretty big deal. No custom languages, standard SQL and hunders of existing tools can be used to query & examine the data in your data grid.
Here’s the quick example. Notice how Java code looks 100% identical as if you talk to a standard SQL database – yet you are working in in-memory data platform:
// Register JDBC driver. Class.forName("org.gridgain.jdbc.GridJdbcDriver"); // Open JDBC connection. conn = DriverManager.getConnection( "jdbc:gridgain://localhost/" + CACHE_NAME, configuration() ); // Create prepared statement. PreparedStatement stmt = conn.prepareStatement( "select name, age from Person where age >= ?" ); // Configure prepared statement. stmt.setInt(1, minAge); // Get result set. ResultSet rs = stmt.executeQuery();
As part of our work on JDBC Driver we’ve added capability to query not just full objects from Data Grid but individual fields as well. As you saw in the JDBC example above – you can query just the fields you need (namely
'age' in this example):
... // Create prepared statement. PreparedStatement stmt = conn.prepareStatement( "select name, age from Person where age >= ?" ); ...
In GridGain 4.2 we’ve overhauled our indexing and add Indexing SPI that allows you to plug any indexing implementation you would like – an extremely powerful feature and unique among data platforms. Our current default implementation is based on H2 but you can quite easily plug your own (e.g. special bitmap indexing) or reuse one from your existing RDBMS.
Visor Object Viewer
With introduction of JDBC Driver and full SQL support, GridGain’s Visor DevOps Console gained capability to view objects in GridGain cluster using convenient GUI Object Browser:
You can select one or multiple nodes, examine cache metadata and automatically construct SQL query. Result set gets displayed in paginated form and you sort results on every page. Object Viewer support tabulated SQL editor and convenient history of previously run SQL queries.
So, what you are waiting for? Go ahead and download it!