GridGain In-Memory Data Grid

The GridGain In-Memory Data Grid Increases Performance 1,000x vs Disk-Based Databases

The GridGain® in-memory computing platform includes an in-memory data grid which improves the performance of applications built on disk-based databases by more than 1,000x by removing the delays inherent in accessing disk-based data. Inserted between the application and data layers, GridGain creates a copy of disk-based data from RDBMS, NoSQL or Hadoop databases in RAM. In addition to the high performance GridGain in-memory data grid, the GridGain in-memory computing platform includes powerful features such as an in-memory database, streaming analytics, and a continuous learning framework for machine and deep learning.

The GridGain in-memory data grid is horizontally scalable with support for adding nodes in real-time. It can linearly scale to thousands of nodes with strong semantics for data locality and affinity data routing to reduce redundant data noise.

The GridGain in-memory data grid 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 computing platform 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.

GridGain In-Memory Data Grid

In-Memory Data Grid

A distributed key-value store which is deployed between the application and data layer and seamlessly reads and writes to the underlying database

GridGain 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