GridGain In-Memory Data Grid

Improves Performance by 1,000x

The GridGain In-Memory Data Grid feature improves performance by more than 1,000x by removing the delays inherent in accessing disk-based data. Inserted between the application and data layers, the system moves disk-based data from RDBMS, NoSQL or Hadoop databases into RAM. In addition to the high performance GridGain In-Memory Data Grid feature, the GridGain in-memory computing platform includes powerful features including a compute grid, streaming, and Spark and Hadoop acceleration.

The GridGain In-Memory Data Grid feature is horizontally scalable with the ability to add nodes on demand in real-time. It can linearly scale to hundreds of nodes with strong semantics for data locality and affinity data routing to reduce redundant data noise.

The GridGain In-Memory Data Grid feature supports local, replicated, and partitioned data sets. You can freely cross query between these data sets using standard SQL syntax. It supports standard SQL for querying in-memory data including support for distributed SQL joins. The GridGain In-Memory Data Fabric offers an extremely rich set of data grid capabilities, including off-heap memory support, load-balancing, fault tolerance, remote connectivity, support for full ACID transactions and advanced security.

In Memory Data Grid

Features:

  • Distributed In-Memory Caching
  • Lightning Fast Performance
  • Elastic Scalability
  • Distributed In-Memory Transactions
  • Distributed In-Memory Queue and Other Data Structures
  • Web Session Clustering
  • Hibernate L2 Cache Integration
  • Tiered Off-Heap Storage
  • Distributed SQL Queries with Distributed Joins
Examples:


Ignite ignite = Ignition.ignite();
// Get an instance of named cache.
final IgniteCache<integer, string=""> cache = ignite.jcache("cacheName");</integer,>
// Store keys in cache.
for (int i = 0; i &lt; 10; i++)
cache.put(i, Integer.toString(i));
// Retrieve values from cache.
for (int i = 0; i &lt; 10; i++)
System.out.println("Got [key=" + i + ", val=" + cache.get(i) + ']');
// Remove objects from cache.
for (int i = 0; i &lt; 10; i++)
cache.remove(i);
// Atomic put-if-absent.
cache.putIfAbsent(1, "1");
// Atomic replace.
cache.replace(1, "1", "2");

Ignite ignite = Ignition.ignite();
// Clone every object we get from cache, so we can freely update it.
IgniteCache<integer, account=""> cache = ignite.jcache("cacheName");</integer,>
try (IgniteTx tx = Ignition.ignite().transactions().txStart()) {
Account acct = cache.get(acctId);
assert acct != null;
// Deposit $20 into account.
acct.setBalance(acct.getBalance() + 20);
// Store updated account in cache.
cache.put(acctId, acct);
tx.commit();
}

Ignite ignite = Ignition.ignite();
// Get an instance of named cache.
final GridCache<string, integer=""> cache = ignite.jcache("cacheName");</string,>
// Lock cache key "Hello".
Lock lock = cache.lock("Hello");
lock.lock();
try {
cache.put("Hello", 11);
cache.put("World", 22);
}
finally {
lock.unlock();
}

Ignite ignite = Ignition.ignite();
// Get an instance of named cache.
GridCache<long, person=""> cache = ignite.jcache("cacheName");</long,>
// Create query which selects salaries based on range.
CacheQuery<map.entry<long, person="">&gt; qry =
cache.queries().createSqlQuery(Person.class, "salary &gt; ? and salary &lt;= ?");</map.entry<long,>
// Execute queries for salary ranges.
print("People with salaries between 0 and 1000: ", qry.execute(0, 1000).get());
print("People with salaries between 1000 and 2000: ", qry.execute(1000, 2000).get());
 

Ignite ignite = Ignition.ignite();
// Get an instance of named cache.
GridCache<long, person=""> cache = ignite.jcache("cacheName");</long,>
// Create query which joins on 2 types to select people for a specific organization.
CacheQuery<map.entry<long, person="">&gt; qry =
cache.queries().createSqlQuery(Person.class, "from Person, Organization " +
"where Person.orgId = Organization.id " +
"and Organization.name = ?");</map.entry<long,>
// Execute queries for find employees for different organizations.
print("Following people are 'Ignite' employees: ", qry.execute("Ignite").get());
print("Following people are 'Other' employees: ", qry.execute("Other").get());

Learn More