<!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>Distributed Database - Apache Ignite&reg;</title>
    <meta name="description" content="Apache Ignite is a best distributed database management system for high-performance computing with in-memory speed. Learn how to use the Ignite decentralized database system and get started." />
    <link rel="canonical" href="https://ignite.apache.org/" />
    <meta property="og:title" content="Distributed Database - Apache Ignite&amp;reg;" />
    <meta property="og:type" content="article" />
    <meta property="og:url" content="https://ignite.apache.org/" />
    <meta property="og:image" content="/img/og-pic.png" />
    <meta property="og:description" content="Apache Ignite is a best distributed database management system for high-performance computing with in-memory speed. Learn how to use the Ignite decentralized database system and get started." />
    <link rel="stylesheet" href="/js/vendor/hystmodal/hystmodal.min.css?ver=0.7" />
    <link rel="stylesheet" href="/css/utils.css?ver=0.7" />
    <link rel="stylesheet" href="/css/site.css?ver=0.7" />
    <link rel="stylesheet" href="../js/vendor/highlight/default.min.css?ver=0.7" />
    <link rel="stylesheet" href="../js/vendor/highlight/night-owl.css?ver=0.7" />
    <link rel="stylesheet" href="../js/vendor/swiper/swiper-bundle.min.css?ver=0.7" />
    <link rel="stylesheet" href="../css/native-persistence.css?ver=0.7" />
    <link rel="stylesheet" href="../css/events.css?ver=0.7" />
    <link rel="stylesheet" href="../css/tooling.css?ver=0.7" />
    <link rel="stylesheet" href="../css/frontpage.css?ver=0.7" />
    <script src="../js/vendor/highlight/highlight.min.js"></script>
    <script src="../js/vendor/swiper/swiper-bundle.min.js"></script>
    <link rel="stylesheet" href="/css/media.css?ver=0.7" media="only screen and (max-width:1199px)" />
    <link rel="icon" type="image/png" href="/img/favicon.png" />
  </head>
  <body>
    <!-- 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 -->

    <!-- 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>
    <div class="fronttop">
      <!-- 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="Логотип" /></a>
              <div class="mobmenu__menu">
                <ul>
                  <li>
                    <a href="/docs/latest/">Quick Start</a>
                  </li>
                  <li>
                    <a href="/resources.html">Resources</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="/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__dark 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.11 </a>
          <nav class="hdrmenu">
            <ul class="flexi">
              <li class="js-hasdrop"><a class="hdrmenu__current 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><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"><img src="/img/menu/icon-resources.svg" alt="" /><span>Resources</span></a>
                    </li>
                    <li>
                      <a class="dropmenu__iconitem" href="/faq.html"><img src="/img/menu/icon-question.svg" alt="" /><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>
          <!-- /.dropmeu-->
        </div>
      </header>
      <div class="dropmenu__back"></div>
      <header class="hdrfloat hdr__white jsHdrFloatBase"></header>
      <section class="innerhero fronthero">
        <div class="container innerhero__cont">
          <div class="innerhero__main innerhero__main--long">
            <h1 class="h1 innerhero__h1 innerhero__mega">Distributed Database For <br />High&#8209;Performance Applications <br />With In&#8209;Memory Speed</h1>
            <div class="innerhero__h2 h4 pt-2">Scale Across Memory And Disk With No Compromises</div>
            <div class="innerhero__action pt-5"><a class="button fronthero__button" href="https://ignite.apache.org/docs/latest/index">Start Coding</a></div>
          </div>
        </div>
      </section>
      <!-- /.innerhero-->
    </div>
    <section class="frontblue">
      <aside class="fronttopcards flexi container">
        <a class="frontcard" href="https://blogs.apache.org/ignite/entry/apache-ignite-momentum-highlights-from" target="_blank"
          ><div class="frontcard__title h5">A top-5 project of the Apache Software <br />Foundation</div>
          <div class="frontcard__prises pt-3 flexi">
            <div class="frontcard__price flexi">
              <div class="frontcard__iconwrap"><img src="/img/frontpage/b1-prize1.svg" alt="" /></div>
              <span>Big Data <br />Users Lists</span>
            </div>
            <div class="frontcard__price flexi">
              <div class="frontcard__iconwrap frontcard__iconwrap--blue"><img src="/img/frontpage/b1-prize1.svg" alt="" /></div>
              <span>Users Lists</span>
            </div>
            <div class="frontcard__price flexi">
              <div class="frontcard__iconwrap frontcard__iconwrap--grey"><img src="/img/frontpage/b1-prize1.svg" alt="" /></div>
              <span>Dev Lists</span>
            </div>
          </div></a
        ><!-- /.frontcard--><a class="frontcard" href="/use-cases/provenusecases.html"
          ><div class="frontcard__network"><img src="/img/frontpage/b1-planet.svg" alt="" /></div>
          <div class="frontcard__title h5 pt-3">Leading companies around the world select Ignite to speed and scale applications used by millions of&nbsp;people daily</div></a
        ><!-- /.frontcard-->
      </aside>
      <!-- /.fronttopcards-->
      <div class="container forntcodes">
        <h2 class="h3">Use Ignite Core Capabilities To Start Easily <br />And Scale Faster</h2>
        <div class="forntcodes__wrap flexi jsTabWrap pt-4">
          <div class="forntcodes__menu">
            <ul class="fz20">
              <li><a class="active" href="#" data-ftablink="frontcode-1">Multi-Tier Storage</a></li>
              <li><a href="#" data-ftablink="frontcode-2">Distributed SQL</a></li>
              <li><a href="#" data-ftablink="frontcode-3">ACID Transactions</a></li>
              <li><a href="#" data-ftablink="frontcode-4">Compute APIs</a></li>
              <li><a href="#" data-ftablink="frontcode-5">Machine Learning</a></li>
              <li><a href="#" data-ftablink="frontcode-6">Continuous Queries</a></li>
            </ul>
            <a class="forntcodes__menumore fz20" href="/features/">View all features</a>
          </div>
          <div class="forntcodes__tabwraps">
            <div class="forntcodes__tab active" data-ftab="frontcode-1">
              <p class="forntcodes__tabtitle fz20 pb-1">Multi-Tier Storage</p>
              <p>
                Ignite scales up and out across memory and disk. By default, Ignite operates in a pure in-memory mode. But, by toggling a single configuration setting, you can turn a cluster into a database that can grow beyond the
                cluster's memory capacity:
              </p>
              <div class="forntcodes__innertabs jsTabWrap">
                <div class="nativecode__tabctrls flexi">
                  <a class="nativecode__link active" href="#" data-tablink="nativeTabXML">XML</a><a class="nativecode__link" href="#" data-tablink="nativeTabJava">Java</a
                  ><a class="nativecode__link" href="#" data-tablink="nativeTabNET">C#/.NET</a>
                </div>
                <div class="nativecode__tabs">
                  <div class="nativecode__tab active" data-tab="nativeTabXML">
                    <pre class="nativecode__codebox"> <code class="xml">&lt;bean class=&quot;org.apache.ignite.configuration.IgniteConfiguration&quot;&gt;
    &lt;property name=&quot;dataStorageConfiguration&quot;&gt;
        &lt;bean class=&quot;org.apache.ignite.configuration.DataStorageConfiguration&quot;&gt;
            &lt;property name=&quot;defaultDataRegionConfiguration&quot;&gt;
                &lt;bean class=&quot;org.apache.ignite.configuration.DataRegionConfiguration&quot;&gt;
                    &lt;property name=&quot;persistenceEnabled&quot; value=&quot;true&quot;/&gt;
                &lt;/bean&gt;
            &lt;/property&gt;
        &lt;/bean&gt;
    &lt;/property&gt;
&lt;/bean&gt;</code></pre>
                  </div>
                  <div class="nativecode__tab" data-tab="nativeTabJava">
                    <pre class="nativecode__codebox"> <code class="java">IgniteConfiguration cfg = new IgniteConfiguration();

DataStorageConfiguration storageCfg = new DataStorageConfiguration();

// Enable Ignite Persistence
storageCfg.getDefaultDataRegionConfiguration().setPersistenceEnabled(true);

// Using the new storage configuration
cfg.setDataStorageConfiguration(storageCfg);
</code></pre>
                  </div>
                  <div class="nativecode__tab" data-tab="nativeTabNET">
                    <pre class="nativecode__codebox"> <code class="csharp">var cfg = new IgniteConfiguration
{
    DataStorageConfiguration = new DataStorageConfiguration
    {
        DefaultDataRegionConfiguration = new DataRegionConfiguration
        {
            Name = &quot;Default_Region&quot;,
            PersistenceEnabled = true
        }
    }
};
</code></pre>
                  </div>
                </div>
                <div class="forntcodes__bottom"><a class="button" href="/arch/multi-tier-storage.html">Learn More About Multi-Tier Storage</a></div>
              </div>
              <!-- /.forntcodes__innertabs-->
            </div>
            <!-- /.forntcodes__tab1 (END Multi-Tier Storage)-->
            <div class="forntcodes__tab" data-ftab="frontcode-2">
              <p class="forntcodes__tabtitle fz20 pb-1">Distributed SQL</p>
              <p>
                Use Ignite as a traditional SQL database by leveraging JDBC drivers, ODBC drivers, or the native SQL APIs that are available for Java, C#, C++, Python, and other programming languages. Seamlessly join, group, aggregate, and
                order your distributed in-memory and on-disk data:
              </p>
              <div class="forntcodes__innertabs jsTabWrap">
                <div class="nativecode__tabctrls flexi"><a class="nativecode__link active" href="#" data-tablink="sqlTabSQL">SQL</a></div>
                <div class="nativecode__tabs">
                  <div class="nativecode__tab active" data-tab="sqlTabSQL">
                    <pre class="nativecode__codebox"> <code class="sql">SELECT country.name, city.name, MAX(city.population) as max_pop
FROM country JOIN city ON city.countrycode = country.code
WHERE country.code IN ('USA','BRA','ESP','JPN')
GROUP BY country.name, city.name
ORDER BY max_pop DESC LIMIT 3;</code></pre>
                  </div>
                </div>
                <div class="forntcodes__bottom"><a class="button" href="/features/sql.html">Learn More About Distributed SQL</a></div>
              </div>
              <!-- /.forntcodes__innertabs-->
            </div>
            <!-- /.forntcodes__tab2 (END Distributed SQL)-->
            <div class="forntcodes__tab" data-ftab="frontcode-3">
              <p class="forntcodes__tabtitle fz20 pb-1">ACID Transactions</p>
              <p>Ignite can operate in a strongly consistent mode that provides full support for distributed ACID transactions. Transact across multiple cluster nodes, caches, tables, and partitions:</p>
              <div class="forntcodes__innertabs jsTabWrap">
                <div class="nativecode__tabctrls flexi"><a class="nativecode__link active" href="#" data-tablink="acidTabJava">Java</a><a class="nativecode__link" href="#" data-tablink="acidTabSharp">C#/.NET</a></div>
                <div class="nativecode__tabs">
                  <div class="nativecode__tab active" data-tab="acidTabJava">
                    <pre class="nativecode__codebox"> <code class="java">IgniteTransactions transactions = ignite.transactions();

try (Transaction tx = transactions.txStart()) {
    Integer hello = cache.get(&quot;Hello&quot;);

    if (hello == 1)
        cache.put(&quot;Hello&quot;, 11);

    cache.put(&quot;World&quot;, 22);

    tx.commit();
}</code></pre>
                  </div>
                  <div class="nativecode__tab" data-tab="acidTabSharp">
                    <pre class="nativecode__codebox"> <code class="csharp">var transactions = ignite.GetTransactions();

using (var tx = transactions.TxStart()) {
    int hello = cache.Get(&quot;Hello&quot;);

    if (hello == 1) {
        cache.Put(&quot;Hello&quot;, 11);
    }

    cache.Put(&quot;World&quot;, 22);

    tx.Commit();
}</code></pre>
                  </div>
                </div>
                <div class="forntcodes__bottom"><a class="button" href="/features/acid-transactions.html">Learn More About Transactions</a></div>
              </div>
              <!-- /.forntcodes__innertabs-->
            </div>
            <!-- /.forntcodes__tab3 (END ACID Transactions)-->
            <div class="forntcodes__tab" data-ftab="frontcode-4">
              <p class="forntcodes__tabtitle fz20 pb-1">Compute APIs In Java, Scala, Kotlin, C#, C++</p>
              <p>
                With traditional databases, for in-place calculations, you use stored procedures that are written in a language such as PL/SQL. With Ignite, you use modern JVM languages, C# or C++ to develop and execute custom tasks across
                your distributed database:
              </p>
              <div class="forntcodes__innertabs jsTabWrap">
                <div class="nativecode__tabctrls flexi"><a class="nativecode__link active" href="#" data-tablink="compTabJava">Java</a><a class="nativecode__link" href="#" data-tablink="compTabSharp">C#/.NET</a></div>
                <div class="nativecode__tabs">
                  <div class="nativecode__tab active" data-tab="compTabJava">
                    <pre class="nativecode__codebox"> <code class="java">// Broadcast the task to server nodes only.
IgniteCompute compute = ignite.compute(ignite.cluster().forServers());

// Each remote server node will execute the logic of the task/lambda below.
compute.broadcast(() -&gt; System.out.println(
    &quot;Hello Node: &quot; + ignite.cluster().localNode().id()));</code></pre>
                  </div>
                  <div class="nativecode__tab" data-tab="compTabSharp">
                    <pre class="nativecode__codebox"> <code class="csharp">// Broadcast the task to server nodes only.
var compute = ignite.GetCluster().ForServers().GetCompute();

// Each remote server node will execute the custom PrintNodeIdAction task.
compute.Broadcast(new PrintNodeIdAction());</code></pre>
                  </div>
                </div>
                <div class="forntcodes__bottom"><a class="button" href="/features/compute-apis.html">Learn More About Compute APIs</a></div>
              </div>
              <!-- /.forntcodes__innertabs-->
            </div>
            <!-- /.forntcodes__tab4 (END Compute APIs)-->
            <div class="forntcodes__tab" data-ftab="frontcode-5">
              <p class="forntcodes__tabtitle fz20 pb-1">Built-In Machine Learning</p>
              <p>
                Ignite machine learning uses built-in algorithms and tools, as well as TensorFlow integration, to enable the building of scalable machine learning models and avoid costly data transfers. Train, deploy, evaluate, and update
                your ML and DL models continuously and at scale:
              </p>
              <div class="forntcodes__innertabs jsTabWrap">
                <div class="nativecode__tabctrls flexi"><a class="nativecode__link active" href="#" data-tablink="machineTabJava">Java</a></div>
                <div class="nativecode__tabs">
                  <div class="nativecode__tab active" data-tab="machineTabJava">
                    <pre class="nativecode__codebox"> <code class="java">// Create the trainer
KNNClassificationTrainer trainer = new KNNClassificationTrainer()
.withK(3).withIdxType(SpatialIndexType.BALL_TREE)
.withDistanceMeasure(new EuclideanDistance())
.withWeighted(true);

// Train the model
KNNClassificationModel knnMdl = trainer.fit(ignite, dataCache, vectorizer);

// Make a prediction
double prediction = knnMdl.predict(observation);</code></pre>
                  </div>
                </div>
                <div class="forntcodes__bottom"><a class="button" href="/features/machinelearning.html">Learn More About Machine Learning</a></div>
              </div>
              <!-- /.forntcodes__innertabs-->
            </div>
            <!-- /.forntcodes__tab5 (END Machine Learning)-->
            <div class="forntcodes__tab" data-ftab="frontcode-6">
              <p class="forntcodes__tabtitle fz20 pb-1">Continuous Queries</p>
              <p>
                With relational databases, you use triggers to react to certain events. With Ignite, you deploy continuous queries that are written in a modern programming language such as Java or C# and process streams of changes on the
                database and application side:
              </p>
              <div class="forntcodes__innertabs jsTabWrap">
                <div class="nativecode__tabctrls flexi"><a class="nativecode__link active" href="#" data-tablink="contTabJava">Java</a><a class="nativecode__link" href="#" data-tablink="contTabSharp">C#/.NET</a></div>
                <div class="nativecode__tabs">
                  <div class="nativecode__tab active" data-tab="contTabJava">
                    <pre class="nativecode__codebox"> <code class="java">ContinuousQuery qry = new ContinuousQuery&lt;&gt;();

// The callback that will be triggered on the application side.
qry.setLocalListener(new MyLocalListener());

// The callback that will be executed on the server side.
qry.setRemoteFilterFactory(new MyRemoteFilterFactory());

// Deploy the query in the cluster.
cache.query(query);</code></pre>
                  </div>
                  <div class="nativecode__tab" data-tab="contTabSharp">
                    <pre class="nativecode__codebox"> <code class="csharp">var cache = ignite.GetOrCreateCache(&quot;myCache&quot;);

var query = new ContinuousQuery(
    new MyLocalListener(), // Will be triggered on the application side.
    new MyRemoteFilter()); // Will be executed on the server side.

// Deploy the query in the cluster.
var handle = cache.QueryContinuous(query);</code></pre>
                  </div>
                </div>
                <div class="forntcodes__bottom"><a class="button" href="https://ignite.apache.org/docs/latest/key-value-api/continuous-queries" target="_blank">Learn More About Continuous Queries</a></div>
              </div>
              <!-- /.forntcodes__innertabs-->
            </div>
            <!-- /.forntcodes__tab6 (END Continuous Queries)-->
          </div>
        </div>
      </div>
      <!-- /.forntcodes-->
    </section>
    <!-- /.frontblue-->
    <section class="frontnewcards container">
      <h2 class="h3">New To Ignite? <br />Three Primary Usage Scenarios</h2>
      <div class="frontnewcards__wrap pt-5">
        <article class="frontsimplecard cardsimple">
          <h4 class="cardsimple__title">Application Acceleration <br />& Scale Out</h4>
          <div class="cardsimple__text cardsimple__text--long">
            Accelerate your existing applications by&nbsp;100x using Ignite as&nbsp;an&nbsp;in-memory cache or&nbsp;in-memory data grid that is&nbsp;deployed over one or&nbsp;more external databases.
          </div>
          <div class="cardsimple__bottom"><a class="cardsimple__button button button--shadow" href="/use-cases.html#usecase2">Learn More</a></div>
        </article>
        <article class="frontsimplecard cardsimple">
          <h4 class="cardsimple__title">Distributed Database For <br />HTAP Workloads</h4>
          <div class="cardsimple__text cardsimple__text--long">Build applications that support transactional and&nbsp;analytical workloads by&nbsp;using Ignite as&nbsp;a&nbsp;database that scales beyond available memory capacity.</div>
          <div class="cardsimple__bottom"><a class="cardsimple__button button button--shadow" href="/use-cases.html#database">Learn More</a></div>
        </article>
        <article class="frontsimplecard cardsimple">
          <h4 class="cardsimple__title">Digital Integration Hub<br />&nbsp;</h4>
          <div class="cardsimple__text cardsimple__text--long">Create an&nbsp;advanced platform architecture that aggregates multiple back-end systems and databases into a&nbsp;low-latency and shared data store.</div>
          <div class="cardsimple__bottom"><a class="cardsimple__button button button--shadow" href="/use-cases.html#digitalhub">Learn More</a></div>
        </article>
      </div>
    </section>
    <!-- /.frontnewcards-->
    <section class="frontstories container">
      <h2 class="h3">Ignite User Stories</h2>
      <ul class="frontstories__checkers pt-5 capstext">
        <li>Software & SaaS</li>
        <li>Banking</li>
        <li>Logistics & Transportation</li>
        <li>Financial Services</li>
        <li>Retail</li>
        <li>Biotech</li>
        <li>And others</li>
      </ul>
      <div class="frontstories__sliderwrap">
        <button class="ctrl ctrl--prev"><img src="/img/frontpage/icon-slider-arrow.svg" alt="" /></button><button class="ctrl ctrl--next"><img src="/img/frontpage/icon-slider-arrow.svg" alt="" /></button>
        <div class="swiper jsFrontVideosSwiper">
          <div class="swiper-wrapper">
            <div class="swiper-slide">
              <article class="comvideo">
                <div class="comvideo__box">
                  <a class="comvideo__screen" href="https://www.youtube.com/watch?v=3FFexcYIpmA" data-youtube="data-youtube"
                    ><span class="comvideo__txt comvideo__txt--small">Leveraging In&nbsp;Memory Compute Grids With Core Systems Of&nbsp;Record</span><img src="/img/poweredby/videos/001.png" alt=""
                  /></a>
                </div>
                <div class="comvideo__descr pt-1"></div>
              </article>
            </div>
            <div class="swiper-slide">
              <article class="comvideo">
                <div class="comvideo__box">
                  <a class="comvideo__screen" href="https://www.youtube.com/watch?v=Mhtt2QL_qCQ" data-youtube="data-youtube"
                    ><span class="comvideo__txt comvideo__txt--black comvideo__txt--small">How To&nbsp;Use Apache Ignite To&nbsp;Rescue The Backend Of&nbsp;A&nbsp;Bank</span><img src="/img/poweredby/videos/002.png" alt=""
                  /></a>
                </div>
                <div class="comvideo__descr pt-1"></div>
              </article>
            </div>
            <div class="swiper-slide">
              <article class="comvideo">
                <div class="comvideo__box">
                  <a class="comvideo__screen" href="https://www.youtube.com/watch?v=z28rthKIrDk" data-youtube="data-youtube"
                    ><span class="comvideo__txt comvideo__txt--small">S9D Using Apache Ignite As&nbsp;A&nbsp;Part Of&nbsp;Real Time Campaigning</span><img src="/img/poweredby/videos/003.png" alt=""
                  /></a>
                </div>
                <div class="comvideo__descr pt-1"></div>
              </article>
            </div>
            <div class="swiper-slide">
              <article class="comvideo">
                <div class="comvideo__box">
                  <a class="comvideo__screen" href="https://techblog.yahoo.co.jp/oss/yahoo_shopping_purchases_ignite/" target="_blank"
                    ><span class="comvideo__txt comvideo__txt--small">In-Memory Computing Patterns For High Volume, Real Time Applications</span><img src="/img/poweredby/videos/005.png" alt=""
                  /></a>
                </div>
                <div class="comvideo__descr pt-1"></div>
              </article>
            </div>
            <div class="swiper-slide">
              <article class="comvideo">
                <div class="comvideo__box">
                  <a class="comvideo__screen" href="https://www.youtube.com/watch?v=EdFOKJIjRSg" data-youtube="data-youtube"
                    ><span class="comvideo__txt comvideo__txt--small">Fitness + In Memory Computing = Getting Ahead Of The Game</span><img src="/img/poweredby/videos/008.png" alt=""
                  /></a>
                </div>
                <div class="comvideo__descr pt-1"></div>
              </article>
            </div>
            <div class="swiper-slide">
              <article class="comvideo">
                <div class="comvideo__box">
                  <a class="comvideo__screen" href="https://www.youtube.com/watch?v=jF9T2cJB6t0" data-youtube="data-youtube"
                    ><span class="comvideo__txt comvideo__txt--black comvideo__txt--small">High Performance Exposure Management With Apache Ignite</span><img src="/img/poweredby/videos/009.png" alt=""
                  /></a>
                </div>
                <div class="comvideo__descr pt-1"></div>
              </article>
            </div>
            <div class="swiper-slide">
              <article class="comvideo">
                <div class="comvideo__box">
                  <a class="comvideo__screen" href="https://www.youtube.com/watch?v=_mnZQ3JDcn8" data-youtube="data-youtube"
                    ><span class="comvideo__txt comvideo__txt--black comvideo__txt--small">Ignite Success Story: How Ignite Fuels The High Throughput Messaging In&nbsp;Sentienz Akiro</span><img src="/img/poweredby/videos/014.png" alt=""
                  /></a>
                </div>
                <div class="comvideo__descr pt-1"></div>
              </article>
            </div>
            <div class="swiper-slide">
              <article class="comvideo">
                <div class="comvideo__box">
                  <a class="comvideo__screen" href="https://techblog.yahoo.co.jp/oss/yahoo_shopping_purchases_ignite/" target="_blank"
                    ><span class="comvideo__txt comvideo__txt--small">&laquo;Recent Purchases&raquo; With Apache Ignite</span><img src="/img/poweredby/videos/004.png" alt=""
                  /></a>
                </div>
                <div class="comvideo__descr pt-1"></div>
              </article>
            </div>
            <div class="swiper-slide">
              <article class="comvideo">
                <div class="comvideo__box">
                  <a class="comvideo__screen" href="https://www.youtube.com/watch?v=CPmwnjDJ1Sk" data-youtube="data-youtube"
                    ><span class="comvideo__txt comvideo__txt--small">Embracing The Service Consumption Shift In&nbsp;Banking</span><img src="/img/poweredby/videos/006.png" alt=""
                  /></a>
                </div>
                <div class="comvideo__descr pt-1"></div>
              </article>
            </div>
          </div>
        </div>
        <div class="frontstories__pag"></div>
      </div>
      <div class="frontstories__bottom pt-5"><a class="button button--shadow" href="/use-cases/provenusecases.html">Watch Other Stories</a></div>
    </section>
    <!-- /.frontstories-->
    <section class="frontconfs container">
      <h2 class="h3">Join The Community At Events <br />And Meetups Worldwide</h2>
      <div class="frontconfs__wrap">
        <a class="frontconfcard frontconfcard--red" href="https://www.meetup.com/Apache-Ignite-Virtual-Meetup/" target="_blank"
          ><div class="frontconfs__iconwrap pb-3"><img src="/img/frontpage/events/001.svg" alt="" /></div>
          <h4 class="h5 frontconfcard__title pb-2">Ignite Virtual Meetup</h4>
          <p>Experts and practitioners give <strong>online-talks and presentations</strong> and share their Apache Ignite experience.</p>
          <div class="frontconfcard__bottom">
            <p class="capstext">Online</p>
            <div class="frontconfcard__cal">Regularly</div>
          </div></a
        ><a class="frontconfcard frontconfcard--blue" href="https://ignite-summit.org/" target="_blank"
          ><div class="frontconfs__iconwrap pb-3"><img src="/img/frontpage/events/002.svg" alt="" /></div>
          <h4 class="h5 frontconfcard__title pb-2">Ignite Summit</h4>
          <p>This <strong>virtual conference</strong> is a chance to learn more about up-to-date in-memory computing solutions.</p>
          <p>There are speakers from industry-leading companies and hundreds of participants from all over the world.</p>
          <div class="frontconfcard__bottom">
            <p class="capstext">Online</p>
            <div class="frontconfcard__cal">Annually</div>
          </div></a
        ><a class="frontconfcard" href="/events.html#upcoming" target="_blank"
          ><div class="frontconfs__iconwrap pb-3"><img src="/img/frontpage/events/003.svg" alt="" /></div>
          <h4 class="h5 frontconfcard__title pb-2">Other Events</h4>
          <p>Join us for <strong>conferences, presentations, and webinars</strong> to learn more about in-memory computing technologies.</p>
          <div class="frontconfcard__bottom">
            <p class="capstext">ONLINE <small>and</small> OFFLINE</p>
            <div class="frontconfcard__cal">Regularly</div>
          </div></a
        >
      </div>
      <div class="frontconfs__bottom pt-5"><a class="button button--shadow" href="/events.html">View All Events</a></div>
    </section>
    <!-- /.frontconfs-->
    <section class="event-featured container fronteventsbanner">
      <p class="capstext">Featured Event</p>
      <a class="event-featured__banner pt-5" href="https://ignite-summit.org/schedule/" target="_blank"
        ><picture
          ><source srcset="/img/events/event-banner-vert.jpg" media="(max-width: 767px)" />
          <img src="/img/events/event-banner.jpg" alt="" /></picture
      ></a>
    </section>
    <!-- /.event-featured-->
    <section class="frontresourse container">
      <h2 class="h3">Resources To Elevate Your <br />Ignite Experience</h2>
      <div class="frontresourse__subtitle pt-2">Get access to a variety of free technical <br />and learning resources</div>
      <div class="frontresourse__wrap flexi fz20">
        <div class="frontresourse__col">
          <div class="capstext pb-5">Technical resources</div>
          <a class="frontresitem flexi frontresitem--black" href="/resources.html#technical">
            <div class="frontresitem__icon"><img src="/img/frontpage/res-docs.svg" alt="" /></div>
            <div class="frontresitem__text">Apache Ignite technical documentation</div></a
          ><a class="frontresitem flexi frontresitem--gray" href="https://cwiki.apache.org/confluence/display/IGNITE/" target="_blank"
            ><div class="frontresitem__icon"><img src="/img/frontpage/res-wiki.svg" alt="" /></div>
            <div class="frontresitem__text">Ignite Wiki with a collection of low-level design documents and instructions</div></a
          ><a class="frontresitem flexi frontresitem--gray" href="/resources.html#git"
            ><div class="frontresitem__icon"><img src="/img/icon-github.svg" alt="" /></div>
            <div class="frontresitem__text">Git repositories with Ignite source code and code samples and examples</div></a
          >
        </div>
        <div class="frontresourse__col">
          <div class="capstext pb-5">Learning resources</div>
          <a class="frontresitem flexi frontresitem--red" href="/resources.html#learning">
            <div class="frontresitem__icon"><img src="/img/frontpage/res-videos.svg" alt="" /></div>
            <div class="frontresitem__text">Dozens of essential videos and webinar <br />recordings</div></a
          ><a class="frontresitem flexi frontresitem--rose" href="/resources.html#training"
            ><div class="frontresitem__icon"><img src="/img/frontpage/res-vebinar.svg" alt="" /></div>
            <div class="frontresitem__text">Trainings and courses that help building high-performance and data-intensive applications with&nbsp;the Apache Ignite</div></a
          ><a class="frontresitem flexi frontresitem--rose" href="https://www.shamimbhuiyan.com/ignitebook" target="_blank"
            ><div class="frontresitem__icon"><img src="/img/frontpage/res-book.svg" alt="" /></div>
            <div class="frontresitem__text">Apache Ignite book to expand your knowledge <br />in in-memory computing and distributed databases</div></a
          >
        </div>
      </div>
      <div class="frontconfs__bottom pt-5"><a class="button button--shadow" href="/resources.html">View All Resources</a></div>
    </section>
    <section class="toolingend toolingend--front">
      <div class="container flexi">
        <div class="toolingend__main">
          <p class="toolingend__title h3"><strong>Ready To Start?</strong></p>
          <p class="h5 pt-2">Discover our quick start guides and build your first <br />application in 5-10 minutes</p>
        </div>
        <div class="toolingend__action"><a class="button" href="https://ignite.apache.org/docs/latest/" target="_blank">Discover Quick Start Guide</a></div>
      </div>
    </section>
    <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="/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 - 2021 <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.7"></script>
  </body>
</html>
