Performance améliorée par 1 000 par rapport aux bases de données sur disque grâce à GridGain

La plateforme d’in-memory computing de GridGain® comprend une grille de données in-memory qui multiplie la performance des applications reposant sur des bases de données sur disque par plus de 1000 en supprimant les retards inhérents à l’accès aux données sur disque. Inséré entre l’application et les couches de données, GridGain crée une copie des données sur disque depuis des bases de données RDBMS, NoSQL ou Hadoop sur RAM. En plus de la grille de données in-memory GridGain à haute performance, la plateforme d’in-memory computing de GridGain comprend des fonctionnalités puissantes, telles que les bases de données in-memory, l’analyse des flux et un cadre d’apprentissage permanent  pour le machine learning et le deep learning. 

La grille de données in-memory de GridGain est extensible sur le plan horizontal et permet d’ajouter des nœuds en temps réel. Elle peut s’étendre de façon linéaire sur des milliers de nœuds avec des sémantiques puissantes pour la localité des données et le routage des données d’affinité pour diminuer le bruit de données redondant.

La grille de données in-memory de GridGain supporte les ensembles de données locaux, dupliqués et partitionnés. Vous pouvez croiser librement des requêtes entre ces ensembles de données à l’aide de la syntaxe SQL. Elle supporte le SQL standard pour les requêtes de données in-memory, notamment le support pour les SQL joins distribués. La plateforme d’in-memory computing de GridGain propose un ensemble très riche de capacités, dont le support de mémoire off-heap, l’équilibrage des charges, la tolérance aux défaillances et la connectivité à distance, ainsi qu’une assistance pour toutes les transactions ACID et la sécurité avancée.

Grilles de données In-Memory GridGain

In Memory Data Grid

Un magasin de données à valeurs clés, distribuées et déployées entre l’application et la couche de données et qui lit et écrit avec fluidité sur la base de données sous-jacente

FONCTIONNALITÉS DE LA GRILLE DE DONNÉES IN-MEMORY DE GRIDGAIN
  • Cache distribué In-Memory
  • Performance rapide comme l’éclair
  • Extensibilité élastique
  • Transactions distribuées In-Memory
  • File d’attente in-memory distribuée et autres structures de données
  • Grappe de session web
  • Intégration de cache Hibernate L2
  • Stockage off-heap à étages
  • Requêtes SQL distribuées avec SQL joins distribués

Exemples


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());

En Savoir Plus