blob: 9a948c2c5573c1a31bd5fb20f49faffc0f8a915e [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1" />
<title>Apache Ignite 2.11: Stabilization First</title>
<link rel="stylesheet" href="/js/vendor/hystmodal/hystmodal.min.css?ver=0.9" />
<link rel="stylesheet" href="/css/utils.css?ver=0.9" />
<link rel="stylesheet" href="/css/site.css?ver=0.9" />
<link rel="stylesheet" href="../css/blog.css?ver=0.9" />
<link rel="stylesheet" href="/css/media.css?ver=0.9" media="only screen and (max-width:1199px)" />
<link rel="icon" type="image/png" href="/img/favicon.png" />
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-61232409-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag('js', new Date());
gtag('config', 'UA-61232409-1');
</script>
<!-- Yandex.Metrika counter -->
<script type="text/javascript">
(function (m, e, t, r, i, k, a) {
m[i] =
m[i] ||
function () {
(m[i].a = m[i].a || []).push(arguments);
};
m[i].l = 1 * new Date();
(k = e.createElement(t)), (a = e.getElementsByTagName(t)[0]), (k.async = 1), (k.src = r), a.parentNode.insertBefore(k, a);
})(window, document, 'script', 'https://mc.yandex.ru/metrika/tag.js', 'ym');
ym(72949126, 'init', {
clickmap: true,
trackLinks: true,
accurateTrackBounce: true,
webvisor: true,
});
</script>
<noscript
><div><img src="https://mc.yandex.ru/watch/72949126" style="position: absolute; left: -9999px" alt="" /></div
></noscript>
<!-- /Yandex.Metrika counter -->
</head>
<body>
<!-- MOBILE MENU START -->
<div class="hystmodal" id="jsMenuModal" aria-hidden="true">
<div class="hystmodal__wrap">
<div class="hystmodal__window mobmenu" role="dialog" aria-modal="true">
<button data-hystclose class="hystmodal__close">Close</button>
<div class="mobmenu__wrap">
<a href="/" class="mobmenu__logo"><img src="/img/logo.svg" alt="Logo" /></a>
<div class="mobmenu__menu">
<ul>
<li>
<a href="/docs/latest/">Quick Start</a>
</li>
<li>
<a href="/resources.html#learning">Learning resources</a>
</li>
<li>
<a href="/resources.html#training">Training and Courses</a>
</li>
<li>
<a href="/faq.html">FAQ</a>
</li>
<li>
<span class="mobmenu__parent"> <a href="/use-cases.html">Use Cases</a><button class="mobmenu__opener"></button> </span>
<ul>
<li>
<a href="/use-cases/in-memory-cache.html">In-Memory Cache</a>
</li>
<li>
<a href="/use-cases/in-memory-data-grid.html">In-Memory Data Grid</a>
</li>
<li>
<a href="/use-cases/in-memory-database.html">In-Memory Database</a>
</li>
<li>
<a href="/use-cases/key-value-store.html">Key-Value Store</a>
</li>
<li>
<a href="/use-cases/high-performance-computing.html">High Performance Computing</a>
</li>
<li>
<a href="/use-cases/digital-integration-hub.html">Digital Integration Hub</a>
</li>
<li>
<a href="/use-cases/spark-acceleration.html">Spark Acceleration</a>
</li>
<li>
<a href="/use-cases/hadoop-acceleration.html">Hadoop Acceleration</a>
</li>
<li>
<a href="/use-cases.html">View All</a>
</li>
</ul>
</li>
<li>
<span class="mobmenu__parent"> <a href="/features/">Features</a><button class="mobmenu__opener"></button> </span>
<ul>
<li>
<a href="/arch/multi-tier-storage.html">Multi-Tier Storage</a>
</li>
<li>
<a href="/arch/native-persistence.html">Native Persistence</a>
</li>
<li>
<a href="/features/sql.html">Distributed SQL</a>
</li>
<li>
<a href="/features/key-value-apis.html">Key-Value APIs</a>
</li>
<li>
<a href="/features/acid-transactions.html">ACID Transactions</a>
</li>
<li>
<a href="/features/compute-apis.html">Compute APIs</a>
</li>
<li>
<a href="/features/service-apis.html">Services</a>
</li>
<li>
<a href="/features/machinelearning.html">Machine Learning</a>
</li>
<li>
<a href="/features/streaming.html">Real-Time Streaming APIs</a>
</li>
<li>
<a href="/docs/latest/messaging">Messaging</a>
</li>
<li>
<a href="/docs/latest/key-value-api/continuous-queries">Continuous Queries</a>
</li>
<li>
<a href="/features/index.html">View All</a>
</li>
</ul>
</li>
<li>
<a href="/community.html">Community</a>
<ul class="isdefault">
<li><a href="/community.html">Project Info</a></li>
<li><a href="/events.html">Events</a></li>
</ul>
</li>
<li>
<a href="/use-cases/provenusecases.html">Powered by</a>
</li>
<li>
<a href="/resources.html">Resources</a>
</li>
<li>
<a href="/blog/">Blog</a>
</li>
<li>
<a href="/docs/latest/">Docs</a>
</li>
</ul>
<a href="/download.cgi" class="button mobmenu__button">Download Ignite 2.11</a>
</div>
<!-- //mobmenu__menu -->
</div>
<!-- //mobmenu__wrap -->
</div>
<!-- //mobmenu -->
</div>
</div>
<!-- MOBILE MENU END -->
<header class="hdr hdr__white jsHdrBase">
<div class="hdr__wrap flexi jsHdrLine">
<button class="hdr__burger" data-menumodal="#jsMenuModal"><img src="/img/menu.svg" alt="" /></button
><a class="hdr__logo" href="/"><img class="hdr__logoimg hdr__logo--white" src="/img/logo-white.svg" alt="" /><img class="hdr__logoimg hdr__logo--black" src="/img/logo.svg" alt="" /></a
><a class="button hdr__button" href="/download.cgi">Download Ignite 2.15.0</a>
<nav class="hdrmenu">
<ul class="flexi">
<li class="js-hasdrop"><a class="hdrmenu--expanded" href="/" data-panel="getStarted">Get Started</a></li>
<li class="js-hasdrop"><a class="hdrmenu--expanded" href="/features" data-panel="features">Features</a></li>
<li class="js-hasdrop"><a class="hdrmenu--expanded" href="/community.html" data-panel="community">Community</a></li>
<li><a href="/use-cases/provenusecases.html" data-panel="">Powered By</a></li>
<li class="js-hasdrop"><a class="hdrmenu--expanded" href="/resources.html" data-panel="resources">Resources</a></li>
<li><a href="///ignite.apache.org/docs/latest/" data-panel="">Docs</a></li>
</ul>
</nav>
<div class="dropmenu">
<div class="dropmenu__panel" data-menupanel="getStarted">
<div class="container dropmenu1__grid">
<div class="dropmenu1__buttonwrap">&nbsp;</div>
<div class="dropmenu__box dropmenu__box--buttonin">
<a class="dropmenu__redbutton" href="https://ignite.apache.org/docs/latest/"> <img src="/img/menu/icon-red-rocket.svg" alt="" /><span>Quick Start Guide</span></a>
<ul class="dropmenu__menu">
<li>
<a class="dropmenu__iconitem" href="/resources.html#learning"><span>Learning resources</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/resources.html#training"><span>Training and Courses</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/faq.html"><span>FAQ</span></a>
</li>
</ul>
</div>
<div class="dropmenu__box">
<p class="capstext"><a class="dropmenu__capslink" href="/use-cases.html">USE CASES</a></p>
<ul class="dropmenu__menu">
<li>
<a class="dropmenu__iconitem" href="/use-cases/in-memory-cache.html"><img src="/img/menu/icon-folder.svg" alt="" /><span>In-Memory Cache</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/use-cases/in-memory-data-grid.html"><img src="/img/menu/icon-folder.svg" alt="" /><span>In-Memory Data Grid</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/use-cases/in-memory-database.html"><img src="/img/menu/icon-folder.svg" alt="" /><span>In-Memory Database</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/use-cases/key-value-store.html"><img src="/img/menu/icon-folder.svg" alt="" /><span>Key-Value Store</span></a>
</li>
</ul>
</div>
<div class="dropmenu__box no-border">
<ul class="dropmenu__menu">
<li>
<a class="dropmenu__iconitem" href="/use-cases/high-performance-computing.html"><img src="/img/menu/icon-folder.svg" alt="" /><span>High-Performance Computing</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/use-cases/digital-integration-hub.html"><img src="/img/menu/icon-folder.svg" alt="" /><span>Digital Integration Hub</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/use-cases/spark-acceleration.html"><img src="/img/menu/icon-folder.svg" alt="" /><span>Spark Acceleration</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/use-cases/hadoop-acceleration.html"><img src="/img/menu/icon-folder.svg" alt="" /><span>Hadoop Acceleration</span></a>
</li>
</ul>
</div>
</div>
<!-- /.dropmenu1__grid-->
<div class="panelmorelinkwrap panelmorelinkwrap--end container"><a class="panellink" href="/use-cases.html">View all</a></div>
</div>
<!-- /.dropmenu__panel-->
<div class="dropmenu__panel" data-menupanel="features">
<div class="container dropmenu2__grid">
<div class="dropmenu__box">
<div class="capstext">MULTI-TIER STORAGE</div>
<ul class="dropmenu__menu">
<li>
<a class="dropmenu__iconitem" href="/arch/multi-tier-storage.html"><img src="/img/menu/icon-db.svg" alt="" /><span>Multi-Tier Storage</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/arch/native-persistence.html"><img src="/img/menu/icon-db.svg" alt="" /><span>Native Persistence</span></a>
</li>
</ul>
</div>
<div class="dropmenu__box">
<div class="capstext">ESSENTIAL Developer APIs</div>
<ul class="dropmenu__menu">
<li>
<a class="dropmenu__iconitem" href="/features/sql.html"><img src="/img/menu/icon-cube.svg" alt="" /><span>Distributed SQL</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/features/key-value-apis.html"><img src="/img/menu/icon-cube.svg" alt="" /><span>Key-Value APIs</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/features/acid-transactions.html"><img src="/img/menu/icon-cube.svg" alt="" /><span>ACID Transactions</span></a>
</li>
</ul>
</div>
<div class="dropmenu__box">
<div class="capstext">High-Performance <br />Computing APIs</div>
<ul class="dropmenu__menu">
<li>
<a class="dropmenu__iconitem" href="/features/compute-apis.html"><img src="/img/menu/icon-cube.svg" alt="" /><span>Compute APIs</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/features/service-apis.html"><img src="/img/menu/icon-cube.svg" alt="" /><span>Services</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/features/machinelearning.html"><img src="/img/menu/icon-cube.svg" alt="" /><span>Machine Learning</span></a>
</li>
</ul>
</div>
<div class="dropmenu__box">
<div class="capstext">Real-Streaming APIs</div>
<ul class="dropmenu__menu">
<li>
<a class="dropmenu__iconitem" href="/features/streaming.html"><img src="/img/menu/icon-cube.svg" alt="" /><span>Real-Time Streaming APIs</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="https://ignite.apache.org/docs/latest/messaging"><img src="/img/menu/icon-cube.svg" alt="" /><span>Messaging</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="https://ignite.apache.org/docs/latest/key-value-api/continuous-queries"><img src="/img/menu/icon-cube.svg" alt="" /><span>Continuous Queries</span></a>
</li>
</ul>
</div>
</div>
<!-- /.dropmenu2__grid-->
<div class="panelmorelinkwrap"><a class="panellink" href="/features/">View all</a></div>
</div>
<!-- /.dropmenu__panel-2-->
<div class="dropmenu__panel" data-menupanel="community">
<div class="container dropmenu3__grid">
<div class="dropmenu__box">
<div class="capstext"><a class="dropmenu__capslink" href="/community.html">Project Info</a></div>
<ul class="dropmenu__menu">
<li>
<a class="dropmenu__iconitem" href="/community.html#story"><img src="/img/menu/icon-clip.svg" alt="" /><span>Apache Ignite Story</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/community.html#community"><img src="/img/menu/icon-comment.svg" alt="" /><span>Meet The Community</span></a>
</li>
</ul>
</div>
<div class="dropmenu__box no-border">
<div class="capstext">&nbsp;</div>
<ul class="dropmenu__menu">
<li>
<a class="dropmenu__iconitem" href="/community.html#contributing"><img src="/img/menu/icon-puzzle.svg" alt="" /><span>Start Contributing</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/community.html#faq"><img src="/img/menu/icon-question.svg" alt="" /><span>Ask Questions</span></a>
</li>
</ul>
</div>
<div class="dropmenu__box">
<div class="capstext"><a class="dropmenu__capslink" href="/events.html">Events</a></div>
<ul class="dropmenu__menu">
<li>
<a class="dropmenu__iconitem" href="/events.html#summit"><img src="/img/menu/icon-calendar.svg" alt="" /><span>Apache Ignite Summit</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/events.html#meetups"><img src="/img/menu/icon-calendar.svg" alt="" /><span>Meetups</span></a>
</li>
</ul>
</div>
<div class="dropmenu__box no-border">
<div class="capstext">&nbsp;</div>
<ul class="dropmenu__menu">
<li>
<a class="dropmenu__iconitem" href="/events.html#upcoming"><img src="/img/menu/icon-calendar.svg" alt="" /><span>Upcoming Events</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/events.html#past"><img src="/img/menu/icon-calendar.svg" alt="" /><span>Past Events</span></a>
</li>
</ul>
</div>
</div>
<!-- /.dropmenu3__grid-->
</div>
<!-- /.dropmenu__panel-->
<div class="dropmenu__panel" data-menupanel="resources">
<div class="container dropmenu1__grid">
<div class="dropmenu1__buttonwrap">&nbsp;</div>
<div class="dropmenu__box dropmenu__box--buttonin">
<a class="dropmenu__redbutton blog" href="/blog/"><img src="/img/menu/icon-blog.svg" alt="" /><span>Blog</span></a>
<ul class="dropmenu__menu">
<li>
<a class="dropmenu__iconitem" href="/resources.html#technical"><span>Technical resources</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/resources.html#learning"><span>Learning resources</span></a>
</li>
</ul>
</div>
<div class="dropmenu__box blog">
<ul class="dropmenu__menu">
<li>
<a class="dropmenu__iconitem" href="/resources.html#training"><span>Training and Courses</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/resources.html#book"><span>Apache Ignite Book</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/resources.html#mail"><span>Mailing Lists, Forums And Discussion Archives</span></a>
</li>
<li>
<a class="dropmenu__iconitem" href="/faq.html"><span>FAQ</span></a>
</li>
</ul>
</div>
</div>
<!-- /.dropmenu1__grid-->
</div>
<!-- /.dropmenu__panel-->
</div>
<!-- /.dropmeu-->
</div>
</header>
<div class="dropmenu__back"></div>
<header class="hdrfloat hdr__white jsHdrFloatBase"></header>
<div class="container blog">
<section class="blog__header post_page__header">
<a href="/blog/">← Apache Ignite Blog</a>
<h1>Apache Ignite 2.11: Stabilization First</h1>
<p>
September 20, 2021 by <strong>Maxim Muzafarov: </strong><a href="http://www.facebook.com/sharer.php?u=https://ignite.apache.org/blog/undefined">Facebook</a><span>, </span
><a href="http://twitter.com/home?status=Apache Ignite 2.11: Stabilization First%20https://ignite.apache.org/blog/undefined">Twitter</a>
</p>
</section>
<div class="blog__content">
<main class="blog_main">
<section class="blog__posts">
<article class="post">
<div>
<p>
The new <a href="https://ignite.apache.org/">Apache Ignite</a> 2.11 was released on September 17, 2021. It can be considered to be a greater extent as a stabilization release that closed a number of technical debts of the
internal architecture and bugs. Out of more than 200 completed tasks, 120 are bug fixes. However, some valuable improvements still exist, so let&apos;s take a quick look at them together.
</p>
<h3 id="thin-clients">Thin Clients</h3>
<p>
Partition awareness is enabled by default in the 2.11 release and allows thin clients to send query requests directly to the node that owns the queried data. Without partition awareness, an application executes all queries
and operations via a single server node that acts as a proxy for the incoming requests.
</p>
<p>
The support of <a href="https://ignite.apache.org/docs/latest/thin-clients/java-thin-client#cache-entry-listening">Continuous Queries</a>added to the java thin client. For the other supported features, you can check - the
<a href="https://cwiki.apache.org/confluence/display/IGNITE/Thin+clients+features">List of Thin Client Features</a>.
</p>
<!-- end -->
<h3 id="cellular-clusters-deployment">Cellular-clusters Deployment</h3>
<p>
The Apache Ignite internals has the so-called <em>switch</em> (a part of Partition Map Exchange) process that is used to perform atomic execution of cluster-wide operations and move a cluster from one consistent state to
another, for example, a cache creation/destroy, a node JOIN/LEFT/FAIL operations, snapshot creation, etc. During the switching process, all user transactions are parked for a small period of time which in turn increases
the average latency and decreases throughput of the overall cluster.
</p>
<p>
Splitting the cluster into virtual cells containing 4-8 nodes may increase the total cluster performance and minimize the influence of one cell on another in case of node fail events. Such a technique also significantly
increases the recovery speed of transactions on cells not affected by failing nodes. The time when transactions are parked also decreases on non-affected cells which in turn decreases the worst latency for the cluster
operations overall.
</p>
<p>
From now on, you can use the <em>RendezvousAffinityFunction</em> affinity function with <em>ClusterNodeAttributeColocatedBackupFilter</em> to group nodes into virtual cells. Since the node baseline attributes are used as
cell markers the corresponding <a href="https://ignite.apache.org/docs/latest/monitoring-metrics/system-views#baseline_node_attributes">BASELINE_NODE_ATTRIBUTES</a> system view was added.
</p>
<p>See benchmarks below that represent the worst (max) latency, which happens in case of node left/failure/timeout events on broken and alive cells.</p>
<a href="/img/blog/ec8a7800-01e9-4910-aaa9-0e27ea2d4303.png"><img src="/img/blog/ec8a7800-01e9-4910-aaa9-0e27ea2d4303.png" alt="723rhosidfgu4787fh9sdhf.png" width="50%" /></a>
<h3 id="new-page-replacement-policies">New Page Replacement Policies</h3>
<p>
When Native Persistence is on and the amount of data, which Ignite stores on the disk, is bigger than the off-heap memory amount allocated for the data region, another page should be evicted from the off-heap to the disk
to preload a page from the disk to the completely full off-heap memory. This process is called page replacement. Previously, Apache Ignite used the Random-LRU page replacement algorithm which has a low maintenance cost,
but it has many disadvantages and greatly affects the performance when the page replacement is started. On some deployments, administrators even force a cluster restart periodically to avoid page replacement. There are a
few new algorithms available from now on:
</p>
<ul>
<li>Segmented-LRU Algorithm</li>
<li>CLOCK Algorithm</li>
</ul>
<p>
Page replacement algorithm can be configured by the <em>PageReplacementMode</em> property of <em>DataRegionConfiguration</em>. By default, the CLOCK algorithm is now used. You can check the
<a href="https://ignite.apache.org/docs/latest/memory-configuration/replacement-policies">Replacement Policies</a> in the documentation for more details.
</p>
<h3 id="snapshot-restore-and-check-commands">Snapshot Restore And Check Commands</h3>
<h4 id="check">Check</h4>
<p>
All snapshots are fully consistent in terms of concurrent cluster-wide operations as well as ongoing changes with Ignite. However, in some cases and for your own peace of mind, it may be necessary to check the snapshot for
completeness and for data consistency. The Apache Ignite is now delivered with a built-in snapshot consistency check commands that enable you to verify internal data consistency, calculate data partitions hashes and pages
checksums, and print out the result if a problem is found. The check command also compares hashes calculated by containing keys of primary partitions with corresponding backup partitions and reports any differences.
</p>
<code>
<pre># This procedure does not require the cluster to be in the idle state.</pre>
<pre>control.(sh|bat) --snapshot check snapshot_name</pre>
</code>
<h4 id="restore">Restore</h4>
<p>
Previously, only the manual snapshot restore procedure was available by fully copying persistence data files from the snapshot directory to the Apache Ignite <em>work</em> directory. The automatic restore procedure allows
you to restore cache groups from a snapshot on an active cluster by using the Java API or command line script (using CLI is recommended). Currently, the restore procedure has several limitations, so please check the
documentation pages for details.
</p>
<code>
<pre>Start restoring all user-created cache groups from the snapshot "snapshot_09062021".</pre>
<pre>control.(sh|bat) --snapshot restore snapshot_09062021 --start</pre>
<br />
<pre># Start restoring only "cache-group1" and "cache-group2" from the snapshot "snapshot_09062021".</pre>
<pre>control.(sh|bat) --snapshot restore snapshot_09062021 --start cache-group1,cache-group2</pre>
<br />
<pre># Get the status of the restore operation for "snapshot_09062021".</pre>
<pre>control.(sh|bat) --snapshot restore snapshot_09062021 --status</pre>
<br />
<pre># Cancel the restore operation for "snapshot_09062021".</pre>
<pre>control.(sh|bat) --snapshot restore snapshot_09062021 --cancel</pre>
</code>
</div>
</article>
<section class="blog__footer">
<ul class="pagination post_page">
<li><a href="/blog/database">database</a></li>
<li><a href="/blog/ignite">ignite</a></li>
<li><a href="/blog/in-memory">in-memory</a></li>
<li><a href="/blog/open-source">open-source</a></li>
<li><a href="/blog/release">release</a></li>
</ul>
</section>
</section>
</main>
<aside class="blog__sidebar">
<ul>
<li><a href="/blog/database">database</a></li>
<li><a href="/blog/ignite">ignite</a></li>
<li><a href="/blog/in">in</a></li>
<li><a href="/blog/memory">memory</a></li>
<li><a href="/blog/open">open</a></li>
<li><a href="/blog/source">source</a></li>
<li><a href="/blog/release">release</a></li>
<li><a href="/blog/in-memory">in-memory</a></li>
<li><a href="/blog/open-source">open-source</a></li>
<li><a href="/blog/log4j2">log4j2</a></li>
<li><a href="/blog/bigdata">bigdata</a></li>
<li><a href="/blog/computing">computing</a></li>
<li><a href="/blog/two">two</a></li>
<li><a href="/blog/learning">learning</a></li>
<li><a href="/blog/machine">machine</a></li>
<li><a href="/blog/apache">apache</a></li>
<li><a href="/blog/spark">spark</a></li>
<li><a href="/blog/sql">sql</a></li>
<li><a href="/blog/data">data</a></li>
<li><a href="/blog/fast">fast</a></li>
<li><a href="/blog/nodal">nodal</a></li>
<li><a href="/blog/meltdown">meltdown</a></li>
<li><a href="/blog/performance">performance</a></li>
<li><a href="/blog/security">security</a></li>
<li><a href="/blog/spectre">spectre</a></li>
<li><a href="/blog/key-value">key-value</a></li>
<li><a href="/blog/store">store</a></li>
<li><a href="/blog/meetup">meetup</a></li>
<li><a href="/blog/biodata">biodata</a></li>
<li><a href="/blog/rdbms">rdbms</a></li>
<li><a href="/blog/grid">grid</a></li>
<li><a href="/blog/imdb">imdb</a></li>
</ul>
</aside>
</div>
</div>
<footer class="footer">
<div class="container footer__top">
<section class="footer1">
<a class="footer__title" href="/features/">Features</a>
<ul class="footer__menu">
<li><a href="/arch/multi-tier-storage.html">Multi-Tier Storage</a></li>
<li><a href="/arch/native-persistence.html">Native Persistence</a></li>
<li><a href="/features/sql.html">Distributed SQL</a></li>
<li><a href="/features/acid-transactions.html">ACID Transactions</a></li>
<li><a href="/features/key-value-apis.html">Key Value APIs</a></li>
<li><a href="/features/compute-apis.html">Compute APIs</a></li>
<li><a href="/features/machinelearning.html">Machine Learning</a></li>
<li><a href="/features/service-apis.html">Services</a></li>
<li><a href="/features/streaming.html">Real-Streaming APIs</a></li>
<li><a href="https://ignite.apache.org/docs/latest/key-value-api/continuous-queries">Continuous Queries</a></li>
<li><a href="https://ignite.apache.org/docs/latest/messaging">Messaging</a></li>
</ul>
</section>
<section class="footer2">
<a class="footer__title" href="/use-cases/">Use Cases</a>
<ul class="footer__menu">
<li><a href="/use-cases/in-memory-cache.html">In-Memory Cache</a></li>
<li><a href="/use-cases/in-memory-data-grid.html">In-Memory Data Grid</a></li>
<li><a href="/use-cases/in-memory-database.html">In-Memory Database</a></li>
<li><a href="/use-cases/high-performance-computing.html">High-Performance Computing</a></li>
<li><a href="/use-cases/digital-integration-hub.html">Digital Integration Hub</a></li>
<li><a href="/use-cases/key-value-store.html">Key-Value Store</a></li>
<li><a href="/use-cases/spark-acceleration.html">Apache Spark Acceleration</a></li>
<li><a href="/use-cases/hadoop-acceleration.html">Apache Hadoop Acceleration</a></li>
</ul>
</section>
<section class="footer3"><a class="footer__title" href="/our-community.html">Community</a><a class="footer__title" href="/resources.html">Resources</a><a class="footer__title" href="/events.html">Events</a></section>
<section class="footer4">
<div class="footer4__item">Join Our <a href="mailto:dev@ignite.apache.org">Dev Mailing List</a></div>
<div class="footer4__item pt-2">Or write your question</div>
<div class="footer4__item pt-1">user@ignite.apache.org</div>
<div class="footer4__item pt-5">Follow Us:</div>
<div class="footer4__socwrap flexi pt-2">
<a class="footer4__soc" href="https://github.com/apache/ignite" target="_blank"><img src="/img/icon-github.svg" alt="" /></a
><a class="footer4__soc" href="https://www.linkedin.com/showcase/apache-ignite/" target="_blank"><img src="/img/icon-linkedin.svg" alt="" /></a
><a class="footer4__soc" href="https://twitter.com/apacheignite" target="_blank"><img src="/img/icon-twitter.svg" alt="" /></a
><a class="footer4__soc" href="https://www.meetup.com/Apache-Ignite-Virtual-Meetup/" target="_blank"><img src="/img/icon-meetup-black.png" alt="" /></a>
</div>
<a class="footer4__button button" href="https://ignite.apache.org/docs/latest/index">Start Using Apache Ignite </a>
</section>
</div>
<div class="container footer__bot">
<p>© 2015 - 2023 <a href="http://www.apache.org/">The Apache Software Foundation.</a></p>
<p class="pt-1x">Apache, Apache Ignite, the Apache feather and the Apache Ignite logo are either registered trademarks or trademarks of The Apache Software Foundation</p>
<p class="pt-1x"><a href="http://apache.org/foundation/policies/privacy.html">Privacy Policy</a></p>
</div>
</footer>
<a class="scrollTop" href="#"
><svg class="feather feather-chevron-up" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<polyline points="18 15 12 9 6 15"></polyline></svg
></a>
<script src="/js/vendor/hystmodal/hystmodal.min.js"></script>
<script src="/js/vendor/smoothscroll.js"></script>
<script src="/js/main.js?ver=0.9"></script>
</body>
</html>