До 1 000 раз выше производительность
по сравнению с дисковыми базами данных

In-memory платформа GridGain® включает In-memory грид данных, который повышает производительность приложений, построенных на дисковых базах данных, более чем в 1000 раз, устраняя задержки, присущие доступу к дисковым данным. Установленный между прикладным уровнем и уровнем данных GridGain создает в оперативной памяти копии RDBMS, NoSQL или Hadoop баз данных. Помимо высокопроизводительного In-memory грида данных, платформа GridGain предоставляет in-memory базу данных, потоковую аналитику, and a модуль непрерывного обучения для машинного и глубокого обучения.

GridGain In-memory data grid обеспечивает горизонтальное масштабирование через добавление узлов в режиме реального времени. Возможно масштабирование до тысяч узлов.

GridGain In-memory data grid поддерживает локальные, реплицированные и партиционированные дата сеты. Запросы можно свободно перенаправлять между ними, используя стандартный SQL синтаксис. Грид поддерживает SQL. Платформа GridGain предлагает большой набор возможностей, включая поддержку off-heap памяти, балансировку нагрузки, отказоустойчивость, удаленное подключение, полную поддержку ACID-транзакций и повышенную безопасность.

GridGain In-memory data grid

In Memory Data Grid

Распределенное key-value хранилище развернуто между приложением и уровнем данных и без проблем читает и записывает в основную базу данных.

GridGain In-Memory грид данных
  • Распределенное In-memory кэширование
  • Скорость
  • Эластичное масштабирование
  • Распределенные In-memory транзакции
  • Распределенные очереди и другие структуры данных
  • Кластеризация веб-сессий
  • Интеграция с кешем второго уровня Hibernate
  • Разделенное на уровни off-heap хранилище данных
  • Распределенные SQL-запросы

Примеры


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

Узнать больше