1000 Mal bessere Leistung als festplattenbasierte Datenbanken mit GridGain

Die In-Memory-Computing-Plattform von GridGain® umfasst ein In-Memory-Daten-Grid, das die Leistung von Anwendungen auf festplattenbasierten Datenbanken um das mehr als 1000-fache verbessert, indem es die inhärenten Zeitverzögerungen beim Zugriff auf Festplattendaten eliminiert. Zwischen der Anwendungs- und Datenschicht eingefügt erstellt GridGain eine Kopie der Festplattendaten aus RDBMS-, NoSQL- oder NoSQL-Datenbanken im Arbeitsspeicher (RAM). Neben der starken Leistung des In-Memory-Daten-Grids von GridGain umfasst die In-Memory-Computing-Plattform von GridGain weitere leistungsstarke Funktionen, wie In-Memory-Datenbank, Streaming-Analytik und Framework für kontinuierliches Lernen für Machine Learning und Deep Learning. 

Das In-Memory-Daten-Grid von GridGain ist horizontal skalierbar. Knoten können in Echtzeit hinzugefügt werden. Es kann Tausende von Knoten linear skalieren, mit einer starken Semantik für Datenlokalität und Affinitätsdaten-Routing, um redundantes Datenrauschen zu reduzieren.

Das In-Memory-Daten-Grid von GridGain unterstützt lokale, replizierte und partitionierte Datensätze. Mit Standard-SQL-Syntax können Sie Querabfragen zwischen diesen Datensätzen frei durchführen. Es unterstützt Standard-SQL für Abfragen von In-Memory-Daten, einschließlich Unterstützung für verteilte SQL-Joins. Die In-Memory-Computing-Plattform von GridGain bietet eine extrem breite Palette an Daten-Grid-Funktionen, einschließlich Off-Heap-Speicher-Unterstützung, Lastenausgleich, Fehlertoleranz, dezentrale Konnektivität, Unterstützung für vollständige ACID-Transaktionen und erweiterte Sicherheit.

Das In-Memory-Daten-Grid von GridGain

In Memory Data Grid

Ein verteilter Schlüsselwertspeicher wird zwischen der Anwendungs- und Datenschicht eingesetzt und liest und schreibt nahtlos von bzw. auf die zugrunde liegende Datenbank

Funktionen des In-Memory-Daten-Grids Von GridGain
  • Verteiltes In-Memory-Caching
  • Blitzschnelle Leistung
  • Flexible Skalierbarkeit
  • Verteilte In-Memory-Transaktionen
  • Verteilte In-Memory-Queue und andere Datenstrukturen
  • Web-Session-Clustering
  • Integration von Hibernate-L2-Cache
  • Gestufter Off-Heap-Speicher
  • Verteilte SQL-Abfragen mit verteilten Joins 

Beispiele


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

Weitere Informationen