blob: 0f894a493dcb785657e4b45fb06daf16c9e9f532 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<!-- Bugyard widget embed -->
<script type="text/javascript">
!function(){
if("function" != typeof window.bugyard){
var a = function(){ a.c(arguments) };
a.q = [], a.c = function(b){ a.q.push(b) };
window.bugyard = a;
var b = document.createElement("script");
b.setAttribute("data-bugyard", "610961912c35ff001493163a");
b.setAttribute("async", "async");
b.setAttribute("defer", "defer");
b.setAttribute("src", "/assets/js/bugyard.min.js");
document.getElementsByTagName("head")[0].appendChild(b);
}
}();
window.bugyard("hideButton");
</script>
<!-- Bugyard widget embed -->
<link rel="preload" href='/assets/js/code-tabs.js?1' as="script" crossorigin>
<link rel="preload" href='/assets/js/page-nav.js' as="script" crossorigin>
<link rel="preload" href='/assets/js/docs-menu.js?20201005' as="script" crossorigin>
<style>:root{--gg-red:#ec1c24;--gg-orange:#ec1c24;--gg-orange-dark:#bc440b;--gg-orange-filter:invert(47%) sepia(61%) saturate(1950%) hue-rotate(345deg) brightness(100%) contrast(95%);--gg-dark-gray:#333333;--orange-line-thickness:3px;--block-code-background:rgba(241, 241, 241, 20%);--inline-code-background:rgba(241, 241, 241, 90%);--padding-top:25px;--link-color:#ec1c24;--body-background:#fcfcfc}header{min-height:var(--header-height);background:#fff;box-shadow:0 4px 10px 0 #eee,0 0 4px 0 #d5d5d5;z-index:1}header>.container{display:grid;grid-template-columns:auto auto 1fr auto auto auto;grid-template-areas:'left-toggle home nav ver api search lang';grid-template-rows:40px;flex-direction:row;align-items:center;justify-content:flex-start;padding:12px 20px;max-width:1400px;margin:0 auto}header nav>ul{padding:0;margin:0;list-style:none;display:inherit}header .dropdown{display:none;position:fixed;top:calc(var(--header-height) - 12px);width:auto;background:#fff;box-shadow:0 4px 4px 0 rgba(0,0,0,.24),0 0 4px 0 rgba(0,0,0,.12);border-radius:4px;padding-top:10px;padding-bottom:12px;z-index:2}header .dropdown li{display:flex}header .dropdown a{color:grey!important;font-size:16px;padding-top:5px;padding-bottom:4px}header .menu{border:none;background:0 0;width:40px;height:40px;margin-right:12px;grid-area:left-toggle}header .menu img{width:18px;height:12px}header .search-close,header .top-nav-toggle{background:0 0;border:none;padding:0;width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;color:var(--gg-dark-gray);font-size:26px}header .search-toggle{grid-area:search}header .top-nav-toggle{grid-area:top-toggle}header .home{grid-area:home;margin-right:auto}header .home img{height:36px}header #api-docs{grid-area:api;margin:0;display:flex}header #api-docs .dropdown{padding:.5em 0}header #api-docs a{padding:9px 14px;color:var(--gg-dark-gray)!important;text-decoration:none;white-space:nowrap}header #api-docs .dropdown-item a{font-weight:400;display:block;width:100%;min-width:150px}header #lang-selector li{list-style:none;display:flex;padding:9px 14px}header #lang-selector li a{display:flex;color:#000;align-items:center}header #lang-selector li a span{font-size:10px;margin-left:5px}header #lang-selector li a img{width:25px}header #lang-selector li .dropdown{margin-left:-70px}header #lang-selector li .dropdown .dropdown-item{padding:0 1em;margin-bottom:8px}header #lang-selector li .dropdown .dropdown-item a span{font-size:14px}header .search{margin-left:auto;margin-right:20px;grid-area:search}header .search input[type=search]{color:var(--gg-dark-gray);background:rgba(255,255,255,.8);border:1px solid #ccc;padding:10px 15px;font-family:inherit;max-width:148px;height:37px;font-size:14px;-webkit-appearance:unset;appearance:unset}header #version-selector{list-style:none;grid-area:ver;line-height:28px;border-radius:0;margin-right:10px;border:none;color:var(--gg-dark-gray);padding:5px 16px 5px 10px;white-space:nowrap;font-size:14px;width:auto;text-align:right;box-sizing:border-box;text-align-last:right;-moz-appearance:none;-webkit-appearance:none;appearance:none;direction:rtl}header #version-selector option{direction:ltr}header>nav{grid-area:nav;font-size:18px;display:flex;flex-direction:row;margin:0 20px}header #lang-selector{grid-area:lang}header .search-close{margin-right:10px}@media (max-width:600px){header .search{margin-right:5px}header .search input[type=search]{max-width:110px}}header:not(.narrow-header) .search-close,header:not(.narrow-header) .top-nav-toggle{display:none}@media (max-width:670px){header>.container{grid-template-columns:auto 1fr auto;grid-template-areas:'left-toggle home search' 'ver api lang'}header #lang-selector li{justify-content:flex-end}}pre,pre.rouge{padding:8px 15px;background:var(--block-code-background)!important;border-radius:5px;border:1px solid #e5e5e5;overflow-x:auto;min-height:36px;line-height:18px;color:#545454}code{color:#545454}pre.rouge code{background:0 0!important}:not(pre)>code{background:var(--inline-code-background);padding:.1em .5em;background-clip:padding-box;border-radius:3px;color:#545454;font-size:90%}.listingblock .content{position:relative}.highlight{color:#586e75}.highlight .c1{color:#657b83}.highlight .nt{color:#b58900}.highlight .o{color:#93a1a1}.highlight .k{color:#6c71c4}.highlight .kt{color:#cb4b16}.highlight .s,.highlight .s1{color:#859900}.highlight .nc{color:#b58900}.highlight .na{color:#268bd2}body{font-family:'Open Sans',sans-serif}h1,h2{color:#000;font-weight:400;font-family:'Open Sans'}h1{font-size:36px;line-height:40px}a{text-decoration:none;color:var(--link-color)}section{color:#545454}.admonitionblock .icon .title{display:none}body{--header-height:64px;--promotion-bar-height:35px;--footer-height:104px;--footer-gap:60px;padding:0;margin:0;display:flex;flex-direction:column;min-height:100vh;background-color:var(--body-background);font-family:'Open Sans',sans-serif}body>section{flex:1}header{position:-webkit-sticky;position:sticky;top:0;z-index:2}*{box-sizing:border-box}@media (max-width:670px){body{--header-height:97px}}.left-nav{padding:10px 20px;width:289px;overflow-y:auto;top:calc(var(--header-height) + var(--promotion-bar-height));height:calc(100vh - var(--header-height) - var(--promotion-bar-height));font-family:'Open Sans';padding-top:var(--padding-top);background-color:var(--body-background)}.left-nav li{list-style:none}.left-nav a,.left-nav button{text-decoration:none;color:#757575;font-size:16px;display:inline-flex;width:100%;margin:2px 0;padding:.25em .375em;background:0 0;border:none;font:inherit;text-align:left}.left-nav a.active{color:var(--link-color)}.left-nav .nav-group{margin-left:6px;font-size:14px}.left-nav nav{border-left:2px solid #ddd;margin-bottom:5px}.left-nav nav.collapsed{display:none}.left-nav nav>li>a,.left-nav nav>li>button{padding-left:20px;text-align:left}.left-nav nav>li>a.active{border-left:var(--orange-line-thickness) solid var(--active-color);padding-left:calc(20px - var(--orange-line-thickness))}.left-nav nav.sub_pages{border:none}.left-nav nav.sub_pages a{padding-left:32px}.left-nav .state-indicator{margin-left:auto;margin-top:5px;width:6.2px;height:10px;flex:0 0 auto;filter:invert(49%) sepia(4%) saturate(5%) hue-rotate(23deg) brightness(92%) contrast(90%)}.left-nav button.expanded .state-indicator{transform:rotate(90deg)}.right-nav{width:289px;padding:12px 26px;overflow-y:auto;height:calc(100vh - var(--header-height));top:0;position:-webkit-sticky;position:sticky;display:flex;flex-direction:column;font-family:'Open sans';padding-top:var(--padding-top);background-color:#fff}.right-nav ul{list-style:none;padding:0;margin:0}.right-nav li{padding:0}.right-nav a{--border-width:0px;font-size:14px;color:#757575;padding-left:calc(15px * var(--nesting-level) + 8px - var(--border-width));margin:.3em 0;display:inline-block}.right-nav .sectlevel1{border-left:2px solid #ddd}.right-nav .sectlevel1{--nesting-level:0}.right-nav .sectlevel2{--nesting-level:1}.right-nav .sectlevel3{--nesting-level:2}@media (max-width:1200px){.right-nav{width:230px}}.right-nav footer{font-size:12px;padding:calc(var(--footer-gap) * .3) 0 5px;text-align:left;margin:auto 0 0}section.page-docs{display:grid;grid-template-columns:auto 1fr auto;grid-template-rows:100%;grid-template-areas:'left-nav content right-nav';line-height:20px;max-width:1440px;margin:auto;width:100%}section.page-docs>article{border-left:1px solid #eee;background-color:#fff;padding:0 50px 30px;grid-area:content;overflow:hidden;font-family:sans-serif;font-size:16px;color:#545454;line-height:1.6em}section.page-docs>article h1,section.page-docs>article h2{font-family:'Open Sans'}@media (max-width:800px){section.page-docs>article{padding-left:15px;padding-right:15px}}section.page-docs .edit-link{position:relative;top:10px;right:10px;float:right;padding-top:calc(var(--header-height) + var(--padding-top));margin-top:calc((-1 * var(--header-height)))}section.page-docs h1,section.page-docs h2{margin-bottom:0}section.page-docs h2[id]{margin-top:var(--margin-top);margin-bottom:calc(var(--margin-top) * .5);z-index:-1}section.page-docs .title{font-style:italic}section.page-docs h2[id]{--margin-top:1.2em}.left-nav{bottom:0;position:-webkit-sticky;position:sticky}.left-nav{grid-area:left-nav}.right-nav{grid-area:right-nav}.left-nav__overlay{display:none;background:rgba(0,0,0,.5);z-index:1;position:fixed;top:var(--header-height);bottom:0;left:0;right:0}@media (max-width:990px){body:not(.hide-left-nav) .left-nav__overlay{display:block}nav.left-nav{background:#fafafa;grid-area:left-nav;box-shadow:0 4px 4px 0 rgba(0,0,0,.24),0 0 4px 0 rgba(0,0,0,.12);min-height:calc(100vh - var(--header-height));max-height:calc(100vh - var(--header-height));position:fixed;bottom:0;top:var(--header-height);z-index:2}section.page-docs>article{grid-column-start:left-nav;grid-column-end:content;grid-row:content}}@media (max-width:800px){nav.right-nav{display:none}}:target:before{content:"";display:block;margin-top:calc(var(--header-height) * -1);height:var(--header-height);width:1px}@media (min-width:600px) and (max-width:900px){:target:before{content:"";display:block;width:1px;margin-top:-150px;height:150px}}
#header #promotion-bar { background-color: #333333; padding: 8px; }
#header #promotion-bar p { font-size: 14px; line-height: 1.4em; font-weight: 600; padding: 0; margin: 0; color: #f0f0f0; text-align: center;}
#header #promotion-bar p a { color: #FCB903; } </style>
<meta name="ignite-version" content="3.1.0" />
<title>Apache Ignite 3 | Ignite Documentation</title>
<link rel="canonical" href="/docs/latest/index" />
<link rel="shortcut icon" href="/favicon.ico">
<meta name='viewport' content='width=device-width, height=device-height, initial-scale=1.0, minimum-scale=1.0'>
<link rel="preload" as="style" href="/assets/css/fonts.css" />
<link rel="stylesheet" href="/assets/css/fonts.css" media="print" onload="this.media='all'">
<noscript>
<link rel="stylesheet" href="/assets/css/fonts.css">
</noscript>
<link href="/docs/pagefind/pagefind-ui.css" rel="stylesheet">
<script src="/docs/pagefind/pagefind-ui.js"></script>
<script>
window.addEventListener('DOMContentLoaded', () => {
new PagefindUI({
element: "#search",
showSubResults: true,
showImages: false,
});
});
</script>
<script src="/assets/js/mermaid.min.js"></script>
<script>
document.addEventListener('DOMContentLoaded', function () {
const blocks = document.querySelectorAll('.mermaid');
if (blocks.length) {
mermaid.initialize({ startOnLoad: false });
mermaid.run();
}
});
</script>
<script>
// AnchorJS - v4.2.0 - 2019-01-01
// https://github.com/bryanbraun/anchorjs
// Copyright (c) 2019 Bryan Braun; Licensed MIT
!function(A,e){"use strict";"function"==typeof define&&define.amd?define([],e):"object"==typeof module&&module.exports?module.exports=e():(A.AnchorJS=e(),A.anchors=new A.AnchorJS)}(this,function(){"use strict";return function(A){function f(A){A.icon=A.hasOwnProperty("icon")?A.icon:"",A.visible=A.hasOwnProperty("visible")?A.visible:"hover",A.placement=A.hasOwnProperty("placement")?A.placement:"right",A.ariaLabel=A.hasOwnProperty("ariaLabel")?A.ariaLabel:"Anchor",A.class=A.hasOwnProperty("class")?A.class:"",A.base=A.hasOwnProperty("base")?A.base:"",A.truncate=A.hasOwnProperty("truncate")?Math.floor(A.truncate):64,A.titleText=A.hasOwnProperty("titleText")?A.titleText:""}function p(A){var e;if("string"==typeof A||A instanceof String)e=[].slice.call(document.querySelectorAll(A));else{if(!(Array.isArray(A)||A instanceof NodeList))throw new Error("The selector provided to AnchorJS was invalid.");e=[].slice.call(A)}return e}this.options=A||{},this.elements=[],f(this.options),this.isTouchDevice=function(){return!!("ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch)},this.add=function(A){var e,t,i,n,o,s,a,r,c,h,l,u,d=[];if(f(this.options),"touch"===(l=this.options.visible)&&(l=this.isTouchDevice()?"always":"hover"),A||(A="h2, h3, h4, h5, h6"),0===(e=p(A)).length)return this;for(function(){if(null===document.head.querySelector("style.anchorjs")){var A,e=document.createElement("style");e.className="anchorjs",e.appendChild(document.createTextNode("")),void 0===(A=document.head.querySelector('[rel="stylesheet"], style'))?document.head.appendChild(e):document.head.insertBefore(e,A),e.sheet.insertRule(" .anchorjs-link { opacity: 0; text-decoration: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }",e.sheet.cssRules.length),e.sheet.insertRule(" *:hover > .anchorjs-link, .anchorjs-link:focus { opacity: 1; }",e.sheet.cssRules.length),e.sheet.insertRule(" [data-anchorjs-icon]::after { content: attr(data-anchorjs-icon); }",e.sheet.cssRules.length),e.sheet.insertRule(' @font-face { font-family: "anchorjs-icons"; src: url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype"); }',e.sheet.cssRules.length)}}(),t=document.querySelectorAll("[id]"),i=[].map.call(t,function(A){return A.id}),o=0;o<e.length;o++)if(this.hasAnchorJSLink(e[o]))d.push(o);else{if(e[o].hasAttribute("id"))n=e[o].getAttribute("id");else if(e[o].hasAttribute("data-anchor-id"))n=e[o].getAttribute("data-anchor-id");else{for(c=r=this.urlify(e[o].textContent),a=0;void 0!==s&&(c=r+"-"+a),a+=1,-1!==(s=i.indexOf(c)););s=void 0,i.push(c),e[o].setAttribute("id",c),n=c}n.replace(/-/g," "),(h=document.createElement("a")).className="anchorjs-link "+this.options.class,h.setAttribute("aria-label",this.options.ariaLabel),h.setAttribute("data-anchorjs-icon",this.options.icon),this.options.titleText&&(h.title=this.options.titleText),u=document.querySelector("base")?window.location.pathname+window.location.search:"",u=this.options.base||u,h.href=u+"#"+n,"always"===l&&(h.style.opacity="1"),""===this.options.icon&&(h.style.font="1em/1 anchorjs-icons","left"===this.options.placement&&(h.style.lineHeight="inherit")),"left"===this.options.placement?(h.style.position="absolute",h.style.marginLeft="-1em",h.style.paddingRight="0.5em",e[o].insertBefore(h,e[o].firstChild)):(h.style.paddingLeft="0.375em",e[o].appendChild(h))}for(o=0;o<d.length;o++)e.splice(d[o]-o,1);return this.elements=this.elements.concat(e),this},this.remove=function(A){for(var e,t,i=p(A),n=0;n<i.length;n++)(t=i[n].querySelector(".anchorjs-link"))&&(-1!==(e=this.elements.indexOf(i[n]))&&this.elements.splice(e,1),i[n].removeChild(t));return this},this.removeAll=function(){this.remove(this.elements)},this.urlify=function(A){return this.options.truncate||f(this.options),A.trim().replace(/\'/gi,"").replace(/[& +$,:;=?@"#{}|^~[`%!'<>\]\.\/\(\)\*\\\n\t\b\v]/g,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=A.firstChild&&-1<(" "+A.firstChild.className+" ").indexOf(" anchorjs-link "),t=A.lastChild&&-1<(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ");return e||t||!1}}});
</script>
</head>
<body>
<header>
<!--#include virtual="/includes/promotion_banner.html" -->
<div class="container">
<button type='button' class='menu' title='Docs menu'>
<img src="/assets/images/menu-icon.svg" width="18" height="12" alt="menu icon" />
</button>
<div class='home'>
<a href="/" class='home' title='Apache Ignite home'>
<img src="/assets/images/apache_ignite_logo.svg" alt="Apache Ignite logo" width="103" height="36" >
</a>
</div>
<select id="product-selector">
<option value="/docs/ignite2/latest" >Ignite 2</option>
<option value="/docs/ignite3/latest"selected>Ignite 3</option>
</select>
<select id="version-selector">
<option value="3.1.0">3.1.0</option>
</select>
<nav id="api-docs"><ul>
<li><a href="#">APIs</a>
<nav class='dropdown'>
<ul>
<li class="dropdown-item"><a href="/releases/ignite3/3.1.0/javadoc/">Java</a></li>
<li class="dropdown-item"><a href="/releases/ignite3/3.1.0/dotnetdoc/">C#/.NET</a></li>
<li class="dropdown-item"><a href="/releases/ignite3/3.1.0/cppdoc/">C++</a></li>
<li class="dropdown-item"><a href="/releases/ignite3/3.1.0/openapi.yaml">OpenAPI</a></li>
</ul>
</nav>
</li>
<li><a href="#">Examples</a>
<nav class="dropdown">
<ul>
<li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/examples" target="_blank" rel="noopener" title="Apache Ignite Java examples">Java</a></li>
<li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/dotnet/examples" target="_blank" rel="noopener" title="Apache Ignite C#/.NET examples">C#/.NET</a></li>
<li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/cpp/examples" target="_blank" rel="noopener" title="Apache Ignite C++ examples">C++</a></li>
<li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/python/examples" target="_blank" rel="noopener" title="Apache Ignite Python examples">Python</a></li>
<li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/nodejs/examples" target="_blank" rel="noopener" title="Apache Ignite NodeJS examples">NodeJS</a></li>
<li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/php/examples" target="_blank" rel="noopener" title="Apache Ignite PHP examples">PHP</a></li>
</ul>
</nav>
</li></ul>
</nav>
<div id="search-button"></div>
<nav id="lang-selector"><ul>
<li><a href="#"><img src="/assets/images/icon_lang_en_75x75.jpg" alt="English language icon" width="25" height="25" /><span></span></a>
<nav class="dropdown">
<li class="dropdown-item"><a href="/docs/latest/" ><img src="/assets/images/icon_lang_en_75x75.jpg" alt="English language icon" width="25" height="25" /><span>English</span></a></li>
<li class="dropdown-item"><a href="https://www.ignite-service.cn/doc/java/" target="_blank" rel="noopener"><img src="/assets/images/icon_lang_cn_75x75.jpg" width="25" height="25" alt="Chinese language icon" /><span>Chinese</span></a></li>
</nav>
</li></ul>
</nav>
<button type='button' class='top-nav-toggle'></button>
</div>
<div id="search-wrapper">
<div id="search"></div>
</div>
</header>
<link rel="stylesheet" href="/assets/css/docs.css">
<section class='page-docs'>
<nav class='left-nav' data-swiftype-index='false'>
<li>
<a href="/docs/ignite3/latest/index" class='active' >About Apache Ignite 3</a>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Installation<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/ignite3/latest/installation/installing-using-zip"
class=''
>Installing Using ZIP Archive</a>
</li>
<li>
<a href="/docs/ignite3/latest/installation/deb-rpm"
class=''
>Installing DEB or RPM package</a>
</li>
<li>
<a href="/docs/ignite3/latest/installation/installing-using-docker"
class=''
>Installing Docker</a>
</li>
<li>
<a href="/docs/ignite3/latest/installation/migration-from-ai3-1"
class=''
>Migration From Ignite 3.0</a>
</li>
<li>
<button
type='button'
class='collapsed '>Migration From Ignite 2<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/ignite3/latest/installation/migration-from-ai2/config" class=''>Configuration Migration</a></li>
<li><a href="/docs/ignite3/latest/installation/migration-from-ai2/persistent-migration" class=''>Persistent Data Migration</a></li>
<li><a href="/docs/ignite3/latest/installation/migration-from-ai2/ai2-functions" class=''>SQL Function Comparison</a></li>
</nav>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Getting Started<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/ignite3/latest/quick-start/getting-started-guide"
class=''
>Quick Start</a>
</li>
<li>
<a href="/docs/ignite3/latest/quick-start/start-cluster"
class=''
>Start Ignite 3 Cluster</a>
</li>
<li>
<a href="/docs/ignite3/latest/quick-start/explore-sql"
class=''
>Explore SQL Capabilities</a>
</li>
<li>
<a href="/docs/ignite3/latest/quick-start/persist-data"
class=''
>Persist Your Data</a>
</li>
<li>
<a href="/docs/ignite3/latest/quick-start/java-api"
class=''
>Use Java API</a>
</li>
</nav>
</li>
<li>
<a href="/docs/ignite3/latest/quick-start/embedded-mode" class='' >Embedded Mode</a>
</li>
<li>
<a href="/docs/ignite3/latest/ignite-cli-tool" class='' >Ignite CLI Tool</a>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Developers Guide<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/ignite3/latest/developers-guide/table-api"
class=''
>Table API</a>
</li>
<li>
<button
type='button'
class='collapsed '>Clients<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/ignite3/latest/developers-guide/clients/overview" class=''>Overview</a></li>
<li><a href="/docs/ignite3/latest/developers-guide/clients/java" class=''>Java Clients</a></li>
<li><a href="/docs/ignite3/latest/developers-guide/clients/dotnet" class=''>.NET Clients</a></li>
<li><a href="/docs/ignite3/latest/developers-guide/clients/cpp" class=''>C++ Clients</a></li>
<li><a href="/docs/ignite3/latest/developers-guide/clients/python" class=''>Python Clients</a></li>
<li><a href="/docs/ignite3/latest/developers-guide/clients/ado" class=''>ADO.NET Integration</a></li>
<li><a href="/docs/ignite3/latest/developers-guide/clients/linq" class=''>.NET LINQ Queries</a></li>
<li><a href="/docs/ignite3/latest/developers-guide/clients/jdbc-driver" class=''>JDBC Driver</a></li>
</nav>
</li>
<li>
<button
type='button'
class='collapsed '>Working with SQL<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/ignite3/latest/developers-guide/sql/calcite-based-sql-engine" class=''>Introduction</a></li>
<li><a href="/docs/ignite3/latest/developers-guide/sql/sql-api" class=''>SQL API</a></li>
<li><a href="/docs/ignite3/latest/developers-guide/sql/jdbc-driver" class=''>JDBC Driver</a></li>
<li><a href="/docs/ignite3/latest/developers-guide/sql/odbc/odbc-driver" class=''>ODBC Driver</a></li>
<li><a href="/docs/ignite3/latest/developers-guide/sql/odbc/connection-string" class=''>ODBC Connection String</a></li>
<li><a href="/docs/ignite3/latest/developers-guide/sql/odbc/querying-modifying-data" class=''>Querying and Modifying Data</a></li>
<li><a href="/docs/ignite3/latest/developers-guide/sql/odbc/specification" class=''>Standard Conformance</a></li>
</nav>
</li>
<li>
<a href="/docs/ignite3/latest/developers-guide/java-to-tables"
class=''
>Tables from Java Classes</a>
</li>
<li>
<button
type='button'
class='collapsed '>Distributed Computing<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/ignite3/latest/developers-guide/compute/compute" class=''>Compute API</a></li>
<li><a href="/docs/ignite3/latest/developers-guide/compute/serialization" class=''>Serialization</a></li>
</nav>
</li>
<li>
<a href="/docs/ignite3/latest/developers-guide/transactions"
class=''
>Transactions</a>
</li>
<li>
<a href="/docs/ignite3/latest/developers-guide/data-streamer"
class=''
>Data Streaming</a>
</li>
<li>
<a href="/docs/ignite3/latest/developers-guide/code-deployment/code-deployment"
class=''
>Code Deployment</a>
</li>
<li>
<button
type='button'
class='collapsed '>Events<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/ignite3/latest/developers-guide/events/overview" class=''>Overview</a></li>
<li><a href="/docs/ignite3/latest/developers-guide/events/events-list" class=''>Events List</a></li>
</nav>
</li>
<li>
<a href="/docs/ignite3/latest/developers-guide/rest/rest-api"
class=''
>REST API</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>Administrator's Guide<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<button
type='button'
class='collapsed '>Ignite Configuration<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/ignite3/latest/administrators-guide/config/node-config" class=''>Node Configuration Parameters</a></li>
<li><a href="/docs/ignite3/latest/administrators-guide/config/cluster-config" class=''>Cluster Configuration Parameters</a></li>
<li><a href="/docs/ignite3/latest/administrators-guide/config/cli-config" class=''>CLI Configuration</a></li>
</nav>
</li>
<li>
<button
type='button'
class='collapsed '>Distributed Storage<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/ignite3/latest/administrators-guide/storage/storage-overview" class=''>Storage Overview</a></li>
<li><a href="/docs/ignite3/latest/administrators-guide/storage/storage-profiles" class=''>Storage Profiles</a></li>
<li><a href="/docs/ignite3/latest/administrators-guide/storage/data-partitions" class=''>Data Partitions</a></li>
<li><a href="/docs/ignite3/latest/administrators-guide/storage/distribution-zones" class=''>Distribution Zones</a></li>
</nav>
</li>
<li>
<button
type='button'
class='collapsed '>Storage Engines<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/ignite3/latest/administrators-guide/storage/engines/storage-engines" class=''>Storage Engines Overview</a></li>
<li><a href="/docs/ignite3/latest/administrators-guide/storage/engines/aipersist" class=''>AIPersist Engine</a></li>
<li><a href="/docs/ignite3/latest/administrators-guide/storage/engines/rocksdb" class=''>RocksDB Engine</a></li>
<li><a href="/docs/ignite3/latest/administrators-guide/storage/engines/aimem" class=''>AIMem Engine</a></li>
</nav>
</li>
<li>
<a href="/docs/ignite3/latest/administrators-guide/lifecycle"
class=''
>Cluster Lifecycle</a>
</li>
<li>
<a href="/docs/ignite3/latest/administrators-guide/colocation"
class=''
>Data Colocation</a>
</li>
<li>
<a href="/docs/ignite3/latest/administrators-guide/disaster-recovery"
class=''
>Disaster Recovery for Partitions</a>
</li>
<li>
<a href="/docs/ignite3/latest/administrators-guide/system-groups-recovery"
class=''
>Disaster Recovery for System Groups</a>
</li>
<li>
<a href="/docs/ignite3/latest/administrators-guide/cluster-security"
class=''
>Cluster Security</a>
</li>
<li>
<button
type='button'
class='collapsed '>Security and Authentication<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/ignite3/latest/administrators-guide/security/ssl-tls" class=''>SSL/TLS</a></li>
<li><a href="/docs/ignite3/latest/administrators-guide/security/authentication" class=''>Authentication</a></li>
</nav>
</li>
<li>
<button
type='button'
class='collapsed '>Metrics and Monitoring<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/ignite3/latest/administrators-guide/metrics/configuring-metrics" class=''>Configuring Metrics</a></li>
<li><a href="/docs/ignite3/latest/administrators-guide/metrics/metrics-list" class=''>Metrics List</a></li>
<li><a href="/docs/ignite3/latest/administrators-guide/metrics/system-views" class=''>System Views</a></li>
</nav>
</li>
<li>
<a href="/docs/ignite3/latest/administrators-guide/handling-exceptions"
class=''
>Handling Exceptions</a>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>SQL Reference<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/ignite3/latest/sql-reference/ddl"
class=''
>Data Definition Language (DDL)</a>
</li>
<li>
<a href="/docs/ignite3/latest/sql-reference/dml"
class=''
>Data Manipulation Language (DML)</a>
</li>
<li>
<a href="/docs/ignite3/latest/sql-reference/transactions"
class=''
>Transactions</a>
</li>
<li>
<a href="/docs/ignite3/latest/sql-reference/distribution-zones"
class=''
>Distribution Zones</a>
</li>
<li>
<a href="/docs/ignite3/latest/sql-reference/data-types"
class=''
>Data Types</a>
</li>
<li>
<a href="/docs/ignite3/latest/sql-reference/operators-and-functions"
class=''
>Supported Operators and Functions</a>
</li>
<li>
<a href="/docs/ignite3/latest/sql-reference/operational-commands"
class=''
>Operational Commands</a>
</li>
<li>
<a href="/docs/ignite3/latest/sql-reference/grammar-reference"
class=''
>Grammar Reference</a>
</li>
<li>
<a href="/docs/ignite3/latest/sql-reference/keywords"
class=''
>Keywords</a>
</li>
<li>
<a href="/docs/ignite3/latest/sql-reference/sql-conformance"
class=''
>SQL Conformance</a>
</li>
<li>
<button
type='button'
class='collapsed '>Explain Statement<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class="sub_pages collapsed">
<li><a href="/docs/ignite3/latest/sql-reference/explain-statement" class=''>Explain Statement</a></li>
<li><a href="/docs/ignite3/latest/sql-reference/explain-operators-list" class=''>List Of Operators</a></li>
</nav>
</li>
</nav>
</li>
<li>
<button type='button' class='group-toggle collapsed '>SQL Performance Tuning<img class="state-indicator" src="/assets/images/left-nav-arrow.svg" width="6" height="10"></button>
<nav class='nav-group collapsed'>
<li>
<a href="/docs/ignite3/latest/sql-tuning/sql-tuning"
class=''
>SQL Performance Tuning</a>
</li>
<li>
<a href="/docs/ignite3/latest/sql-tuning/using-explain"
class=''
>Improving Queries</a>
</li>
</nav>
</li>
<li>
<a href="/docs/ignite3/latest/general-tips" class='' >General Configuration Tips</a>
</li>
<li>
<a href="/docs/ignite3/latest/glossary/glossary" class='' >Glossary</a>
</li>
</nav>
<div class="left-nav__overlay"></div>
<article data-swiftype-index='true'>
<a class='edit-link' href="https://github.com/apache/ignite-3/tree/main/docs/_docs/index.adoc" target="_blank">Edit</a>
<h1>Apache Ignite 3</h1>
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>Apache Ignite 3 is the next step of development of Apache Ignite, reworking the product from its core to bring it to a new era of interconnected networks and fast-paced and fast scaling environments. This page helps you to quickly see the improvements over Ignite 2.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="core-improvements">Core Improvements</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Ignite core features have been reworked to better align with the most common usages.</p>
</div>
<div class="sect2">
<h3 id="streamlined-tables">Streamlined Tables</h3>
<div class="paragraph">
<p>In Ignite 2, data was stored in "Caches" in Binary Object format. To avoid discrepancies in SQL and other APIs, Ignite 3 was changed to directly work with both SQL and Key-Value API. So, data is now stored in "Tables".</p>
</div>
<div class="paragraph">
<p>Due to the way data was stored in Ignite 2, the same storage was represented by multiple objects with separate schemas. This could lead to issues in configuring the relationships and potential loss of data consistency. In Ignite 3, all objects are mapped to the same schema. This way you only have one point of interaction and a universally recognized API, regardless of what you store and what your goals are.</p>
</div>
</div>
<div class="sect2">
<h3 id="expanded-and-ubiquitous-transactions">Expanded and Ubiquitous Transactions</h3>
<div class="paragraph">
<p>Support for transactions in Ignite 2 required changing the atomicity of the cache and worked at the cost of cache performance. Transaction configuration was equally tricky, requiring the correct concurrency and isolation configuration to achieve the best results. Transactions support in Ignite 3 is vastly improved:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>All tables are transactional by default, with no major effect on performance</p>
</li>
<li>
<p>Both SQL and key-value transactions are supported</p>
</li>
<li>
<p>All transactions are MVCC based, ensuring the lack of deadlocks</p>
</li>
<li>
<p>All transactions are serializable</p>
</li>
<li>
<p>New read-only transactions are introduced, not requiring a lock on data</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="simpler-data-collocation-and-distribution">Simpler Data Collocation and Distribution</h3>
<div class="paragraph">
<p>Ignite 2 had multiple ways to handle data distribution in the cluster - data affinity, backup configuration, baseline topology, etc. The configuration you need may be difficult to find, and it was hard to understand how configurations were interacting with each other. Ignite 3 combines all properties related to data distribution into the distribution zones. In distribution zone configuration, you set up how you want to store data and where. Data collocation is also tied to distribution zones, all you need to specify is the key you want to collocate data by.</p>
</div>
<div class="paragraph">
<p>Ignite 3 removes custom affinity functions and instead uses the rendezvous hashing algorithm to reliably deliver consistent data distribution. Unlike in Ignite 2, you cannot create custom affinity function. This was a powerful functionality, but slight issues with custom implementation could cause security and stability risks. Instead, most cases that previously required custom affinity can now be handled safely and securely by <a href="/docs/ignite3/latest/sql-reference/distribution-zones">distribution zones</a>.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="better-clients">Better Clients</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Ignite 3 dispenses with the concept of thick clients, instead providing thin clients for all interactions with the cluster. With Ignite 3 clients, your applications do not need to get the whole Ignite application to handle operations.</p>
</div>
<div class="paragraph">
<p>The option to start Ignite from code as a client node remains, but this mode of operation is no longer the primary way to work with the cluster. This is now called running Ignite in Embedded mode.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="finer-control-over-distributed-computing">Finer Control over Distributed Computing</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Ignite 3 distributed computing API extends what was possible in Ignite 2. All features of Ignite 2 distributed computing are kept, and new APIs were added to keep active track of your job execution queues and job failover.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="management-improvements">Management Improvements</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Ignite 2 management tools provide access to all of its features, but in a number of areas it was difficult to get to specific parts of configuration, or it could be less transparent in where to configure the specific property.</p>
</div>
<div class="paragraph">
<p>Ignite 3 configuration is provided in lightweight and human-readable HOCON format, which is easy to both understand and edit. Configuration is also split between cluster-wide and individual node configuration, making each of them easier to manage.</p>
</div>
<div class="sect2">
<h3 id="management-tools">Management Tools</h3>
<div class="paragraph">
<p>Over its lifetime, Ignite 2 collected a number of management scripts, each having a separate purpose. This could lead to confusion when using the scripts to configure your cluster, or having to use multiple different scripts to configure something specific. The scripts were also part of the distribution.</p>
</div>
<div class="paragraph">
<p>Ignite 3 provides a brand-new management tool that can communicate with any node in the cluster to seamlessly apply the configuration, and provides you with an option to work in interactive mode with command autocomplete. This new tool is also provided as a separate distribution, so that it can be set up on any machine that has access to the node address.</p>
</div>
</div>
</div>
</div>
<div class="copyright">
© 2025 The Apache Software Foundation.<br/>
Apache, Apache Ignite, the Apache feather and the Apache Ignite logo are either registered trademarks or trademarks of The Apache Software Foundation.
</div>
</article>
<nav class="right-nav" data-swiftype-index='false'>
<div class="toc-wrapper">
<ul class="sectlevel1">
<li><a href="#core-improvements">Core Improvements</a>
<ul class="sectlevel2">
<li><a href="#streamlined-tables">Streamlined Tables</a></li>
<li><a href="#expanded-and-ubiquitous-transactions">Expanded and Ubiquitous Transactions</a></li>
<li><a href="#simpler-data-collocation-and-distribution">Simpler Data Collocation and Distribution</a></li>
</ul>
</li>
<li><a href="#better-clients">Better Clients</a></li>
<li><a href="#finer-control-over-distributed-computing">Finer Control over Distributed Computing</a></li>
<li><a href="#management-improvements">Management Improvements</a>
<ul class="sectlevel2">
<li><a href="#management-tools">Management Tools</a></li>
</ul>
</li>
</ul>
</div>
<nav class="promo-nav">
<!--#include virtual="/includes/docs_rightnav_promotion.html" -->
<!--a href="#" data-trigger-bugyard-feedback="true" id="doc-feedback-btn">Docs Feedback</a-->
</nav>
</nav>
</section>
<script type='module' src='/assets/js/code-copy-to-clipboard.js' async crossorigin></script>
<script>
// inits deep anchors -- needs to be done here because of https://www.bryanbraun.com/anchorjs/#dont-run-it-too-late
anchors.add('.page-docs h1, .page-docs h2, .page-docs h3:not(.discrete), .page-docs h4, .page-docs h5');
anchors.options = {
placement: 'right',
visible: 'always'
};
</script>
<script type='module' src='/assets/js/index.js?1763137388' async crossorigin></script>
<script type='module' src='/assets/js/versioning.js?1763137388' async crossorigin></script>
<script type='module' src='/assets/js/railroad-diagram.js?1763137388' async></script>
<script type='module' src='/assets/js/search.js?1763137388' defer crossorigin></script>
<link rel="stylesheet" href="/assets/css/styles.css?1763137388" media="print" onload="this.media='all'">
<noscript><link media="all" rel="stylesheet" href="/assets/css/styles.css?1763137388"></noscript>
<link rel="stylesheet" href="/assets/css/docsearch.min.css" media="print" onload="this.media='all'">
<noscript><link media="all" rel="stylesheet" href="/assets/css/docsearch.min.css"></noscript>
</body>
</html>