blob: 758b1d170a25a328921977412e0158a2fa01ee0a [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>Ignite 2.8 Released: Less Stress in Production and Advances in Machine Learning</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="jsHdrLine">
<div id="promotion-bar">
<a
href="https://ignite-summit.org/2023-june/?utm_medium=website-direct&amp;utm_source=apache_ignite&amp;utm_term=ignite-summit&amp;utm_content=event-hosted&amp;utm_campaign=2023-06-06-ignite-summit-nam"
target="_blank"
title="Ignite Summit — June 6, 2023 — Join virtually!"
rel="noopener noreferrer"
><span><img class="ignite-summit-logo" src="/images/promos/summit-lime.svg" /></span>Ignite Summit — June 6, 2023 —<strong>&nbsp;Register now</strong>&nbsp;<span class="more d-none d-lg-block"
><img src="/images/promos/arrow-white.svg" /></span
></a>
</div>
<div class="hdr__wrap flexi">
<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>
</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>Ignite 2.8 Released: Less Stress in Production and Advances in Machine Learning</h1>
<p>
March 11, 2020 by <strong>Denis Magda: </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=Ignite 2.8 Released: Less Stress in Production and Advances in Machine Learning%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>
With thousands of changes contributed to Apache Ignite 2.8 that enhanced almost all the components of the platform, it&rsquo;s possible to overlook some of the improvements that can convince you to upgrade to this version
sooner than later. While a quick check of the <a href="https://ignite.apache.org/releases/2.8.0/release_notes.html" target="_blank">release notes</a> will help to discover anticipated bug fixes, this article aims to guide
through enhancements every Ignite developer should be aware of.
</p>
<h3>New Subsystem for Production Monitoring and Tracing</h3>
<p>
Several months of constant work on <a href="https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=112820392" target="_blank">IEP-35: Monitoring &amp; Profiling</a> has resulted in the creation of a robust and
elastic subsystem for production monitoring and diagnostic (aka. profiling). This was influenced by the needs of many developers who deployed Ignite in critical environments and were asking for a foundation that can be
integrated with many external monitoring tools and be expanded easily.
</p>
<p>
The <a href="https://apacheignite.readme.io/docs/new-metrics#section-exporters" target="_blank">new subsystem</a> consists of several registries that group individual metrics related to a specific Ignite component. For
instance, you will find registries for cache, compute, or service grid APIs. Since the registries are designed to be generic, specific exporters can observe the state of Ignite via a myriad of tools supporting various
protocols. By default, Ignite 2.8 introduces exporters for monitoring interfaces such as log files, JMX and SQL views, and contemporary ones such as OpenCensus.
</p>
<!-- end -->
<p>
Presently, this new subsystem is released in an experimental mode only to give Ignite users some time to check the new API and suggest any improvements. Since the developer community is already impatient to remove the
experimental flag, don&rsquo;t delay!
</p>
<h3>Advances in Ignite Machine Learning</h3>
<p>
Machine Learning (ML) capabilities of Ignite 2.8 are so drastically different from previous versions that if you&rsquo;ve been waiting for the best moment to use the API, then the time has come. Let&rsquo;s scratch the
surface here and learn more details from the updated documentation pages.
</p>
<p>
A model training is usually a multi-step process that goes with preprocessing, training, and evaluation/valuation phases. A new
<a href="https://apacheignite.readme.io/docs/evaluation" target="_blank">pipelining API</a> puts things in order by combining all the phases in a single workflow.
</p>
<p>
In addition to the pipelining APIs, Ignite 2.8 introduced <a href="https://apacheignite.readme.io/docs/ensemble-methods" target="_blank">ensemble methods</a>, which allow combining several machine learning techniques into
one predictive model to decrease variance (bagging) and bias (boosting), or improve predictions (stacking).
</p>
<p>
Furthermore, now you can import <a href="https://apacheignite.readme.io/docs/model-importing" target="_blank">Apache Spark or XGBoost models</a> to Ignite for further inference, pipelining other tasks. Feel free to keep
training a model with your favorite framework and convert it to Ignite representation once the model needs to be deployed in production and executed at scale.
</p>
<h3>Beyond Java: Partition-Awareness and Other Changes</h3>
<p>Even though Ignite is a Java middleware, it functions as a cross-platform database and compute platform that is used for applications developed in C#, C++, Python, and other programming languages.</p>
<p>
Thin client protocol is a real enabler for other programming languages support, and with Ignite 2.8, it got a significant performance optimization by supporting
<a href="https://apacheignite-net.readme.io/docs/thin-client#section-partition-awareness" target="_blank">partition-awareness</a>. The latter allows thin clients to send query requests directly to nodes that own the
queried data. Without partition awareness, an application that is connected to the cluster via a thin client executes all queries and operations via a single server node that acts as a proxy for the incoming requests.
</p>
<p>
Check the <a href="https://ptupitsyn.github.io/Whats-New-In-Ignite-Net-2.8/" target="_blank">detailed blog</a> post by Pavel Tupitsyn, Ignite committer and PMC, who elaborates on the partition-awareness feature and
introduces other .NET-specific enhancements.
</p>
<h3>Less Stress in Production</h3>
<p>This section lists top improvements that might not have striking or catchy names but can bring relief by automating and optimizing things, and by avoiding data inconsistencies when you are already in production.</p>
<p>
The stop-the-world pauses triggered by Java garbage collectors impact performance, responsiveness, and throughput of our Java applications. Apache Ignite has a partition-map-exchange (PME) process that, as Java garbage
collectors, has some phases that put on hold all running operations for the sake of cluster-wide consistency. For most of the Ignite usage scenarios, these phases complete promptly and are unnoticed. However, some
low-latency or high-throughput use cases can detect a decline that might impact some business operations for a moment in time.
<a href="https://cwiki.apache.org/confluence/display/IGNITE/%28Partition+Map%29+Exchange+-+under+the+hood" target="_blank">This wiki page</a> lists all the conditions that can trigger a distributed PME, and with Ignite
2.8, some of them were taken off the list -- the blocking PME no longer happens if a node belonging to the current baseline topology leaves the cluster or a thick client connects to it.
</p>
<p>
Next, we all know that things break, and what really matters is how a system handles failures. With Ignite 2.8, we revisited the way the cluster handles crash recoveries on restarts while replaying write-ahead-logs (check
<a href="https://issues.apache.org/jira/browse/IGNITE-7196" target="_blank">IGNITE-7196</a> and <a href="https://issues.apache.org/jira/browse/IGNITE-9420" target="_blank">IGNITE-9420</a>). Also, the
<a href="https://apacheignite.readme.io/docs/read-repair" target="_blank">read-repair feature</a> was added to manage data inconsistencies between primary and backups copies of the cluster on-the-fly.
</p>
<p>
Furthermore, it&rsquo;s worth mentioning that Ignite 2.8 became more prudent about disk space consumption by supporting the compaction of data files and write-ahead-logs of the native persistence. By sacrificing a bit more
CPU cycles for the needs of <a href="https://ignite.apache.org/releases/2.8.0/javadoc/org/apache/ignite/configuration/DiskPageCompression.html" target="_blank">compaction algorithms</a>, you can save a lot on the storage
end.
</p>
<p>
Last but not least, is an <a href="https://apacheignite.readme.io/docs/baseline-topology#section-baseline-topology-autoadjustment" target="_blank">auto-baseline</a> feature that changes a cluster topology for deployments
with Ignite native persistence without the need for your intervention in many scenarios. Check this documentation page for more details.
</p>
<p>Reach out to us on the community user list for more questions, details, and feedback.</p>
<p>Sincerely yours, <br />Ignite contributors and committers</p>
</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/learning">learning</a></li>
<li><a href="/blog/machine">machine</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/linq">linq</a></li>
<li><a href="/blog/.NET">.NET</a></li>
<li><a href="/blog/SQL">SQL</a></li>
<li><a href="/blog/performance">performance</a></li>
<li><a href="/blog/csharp">csharp</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/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>