You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by dm...@apache.org on 2020/02/05 16:41:53 UTC

svn commit: r1873655 - in /ignite/site/branches/ignite-redisign: ./ features/ includes/ use-cases/ use-cases/database/

Author: dmagda
Date: Wed Feb  5 16:41:53 2020
New Revision: 1873655

URL: http://svn.apache.org/viewvc?rev=1873655&view=rev
Log:
Updated key-value store use case page

Added:
    ignite/site/branches/ignite-redisign/use-cases/key-value-store.html
      - copied, changed from r1873654, ignite/site/branches/ignite-redisign/use-cases/database/key-value-store.html
Removed:
    ignite/site/branches/ignite-redisign/features/igfs.html
    ignite/site/branches/ignite-redisign/features/mapreduce.html
    ignite/site/branches/ignite-redisign/test.php
    ignite/site/branches/ignite-redisign/use-cases/database/
    ignite/site/branches/ignite-redisign/usecases.html
    ignite/site/branches/ignite-redisign/whatisignite-bk.html
Modified:
    ignite/site/branches/ignite-redisign/.htaccess
    ignite/site/branches/ignite-redisign/download.html
    ignite/site/branches/ignite-redisign/includes/footer.html
    ignite/site/branches/ignite-redisign/includes/header.html

Modified: ignite/site/branches/ignite-redisign/.htaccess
URL: http://svn.apache.org/viewvc/ignite/site/branches/ignite-redisign/.htaccess?rev=1873655&r1=1873654&r2=1873655&view=diff
==============================================================================
--- ignite/site/branches/ignite-redisign/.htaccess (original)
+++ ignite/site/branches/ignite-redisign/.htaccess Wed Feb  5 16:41:53 2020
@@ -6,7 +6,7 @@ Redirect 301 /features/java.html /featur
 Redirect 301 /features/dotnet.html /features/multilanguage.html
 Redirect 301 /features/cpp.html /features/multilanguage.html
 Redirect 301 /features/clientprotos.html /features/multilanguage.html
-Redirect 301 collocatedprocessing.html /features/collocatedprocessing.html
+Redirect 301 /collocatedprocessing.html /features/collocatedprocessing.html
 Redirect 301 /features/durablememory.html /arch/memorycentric.html
 Redirect 301 /arch/durablememory.html /arch/memorycentric.html
 Redirect 301 /memorycentric.html /arch/memorycentric.html
@@ -20,6 +20,10 @@ Redirect 301 /use-cases/database/distrib
 Redirect 301 /use-cases/database/sql-database.html /use-cases/in-memory-database.html
 Redirect 301 /use-cases/hadoop/mapreduce.html /use-cases/hadoop-acceleration.html
 Redirect 301 /use-cases/hadoop/hdfs-cache.html /use-cases/hadoop-acceleration.html
+Redirect 301 /features/igfs.html /use-cases/hadoop-acceleration.html
+Redirect 301 /features/mapreduce.html /use-cases/hadoop-acceleration.html
+Redirect 301 /use-cases/database/key-value-store.html /use-cases/key-value-store.html
+Redirect 301 /usecases.html /
 
 RewriteEngine On
 

Modified: ignite/site/branches/ignite-redisign/download.html
URL: http://svn.apache.org/viewvc/ignite/site/branches/ignite-redisign/download.html?rev=1873655&r1=1873654&r2=1873655&view=diff
==============================================================================
--- ignite/site/branches/ignite-redisign/download.html (original)
+++ ignite/site/branches/ignite-redisign/download.html Wed Feb  5 16:41:53 2020
@@ -1774,7 +1774,6 @@ under the License.
                 <!--<ul class="list-unstyled">-->
                     <!--<li><a href="/index.html#overview">Overview</a></li>-->
                     <!--<li><a href="/features.html">Features</a></li>-->
-                    <!--<li><a href="/usecases.html">Use Cases</a></li>-->
                     <!--<li><a href="http://apacheignite.readme.io/docs">Documentation</a></li>-->
                     <!--<li><a href="http://apache-ignite-users.70518.x6.nabble.com/">Ask Question</a></li>-->
                     <!--<li><a href="/community/resources.html">Community</a></li>-->

Modified: ignite/site/branches/ignite-redisign/includes/footer.html
URL: http://svn.apache.org/viewvc/ignite/site/branches/ignite-redisign/includes/footer.html?rev=1873655&r1=1873654&r2=1873655&view=diff
==============================================================================
--- ignite/site/branches/ignite-redisign/includes/footer.html (original)
+++ ignite/site/branches/ignite-redisign/includes/footer.html Wed Feb  5 16:41:53 2020
@@ -10,7 +10,6 @@
                 <!--<ul class="list-unstyled">-->
                     <!--<li><a href="/index.html#overview">Overview</a></li>-->
                     <!--<li><a href="/features.html">Features</a></li>-->
-                    <!--<li><a href="/usecases.html">Use Cases</a></li>-->
                     <!--<li><a href="http://apacheignite.readme.io/docs">Documentation</a></li>-->
                     <!--<li><a href="http://apache-ignite-users.70518.x6.nabble.com/">Ask Question</a></li>-->
                     <!--<li><a href="/community/resources.html">Community</a></li>-->

Modified: ignite/site/branches/ignite-redisign/includes/header.html
URL: http://svn.apache.org/viewvc/ignite/site/branches/ignite-redisign/includes/header.html?rev=1873655&r1=1873654&r2=1873655&view=diff
==============================================================================
--- ignite/site/branches/ignite-redisign/includes/header.html (original)
+++ ignite/site/branches/ignite-redisign/includes/header.html Wed Feb  5 16:41:53 2020
@@ -54,7 +54,7 @@
                                                onclick="ga('send', 'event', 'apache_ignite_features', 'menu_click', 'distributed_sql');">
                                             Distributed SQL</a>
                                         </li>
-                                        <li><a href="#TODO" aria-label="DataGrid"
+                                        <li><a href="/use-cases/key-value-store.html" aria-label="DataGrid"
                                                onclick="ga('send', 'event', 'apache_ignite_features', 'menu_click', 'distributed_key_value');">
                                             Distributed Key-Value</a>
                                         </li>
@@ -117,7 +117,7 @@
                                                onclick="ga('send', 'event', 'apache_ignite_usecases', 'menu_click', 'distributed-database');">
                                             In-Memory Database</a>
                                         </li>
-                                        <li><a href="/use-cases/database/key-value-store.html" aria-label="Key-Value Store"
+                                        <li><a href="/use-cases/key-value-store.html" aria-label="Key-Value Store"
                                                onclick="ga('send', 'event', 'apache_ignite_usecases', 'menu_click', 'key_value_store');">
                                             Key-Value Store</a>
                                         </li>

Copied: ignite/site/branches/ignite-redisign/use-cases/key-value-store.html (from r1873654, ignite/site/branches/ignite-redisign/use-cases/database/key-value-store.html)
URL: http://svn.apache.org/viewvc/ignite/site/branches/ignite-redisign/use-cases/key-value-store.html?p2=ignite/site/branches/ignite-redisign/use-cases/key-value-store.html&p1=ignite/site/branches/ignite-redisign/use-cases/database/key-value-store.html&r1=1873654&r2=1873655&rev=1873655&view=diff
==============================================================================
--- ignite/site/branches/ignite-redisign/use-cases/database/key-value-store.html (original)
+++ ignite/site/branches/ignite-redisign/use-cases/key-value-store.html Wed Feb  5 16:41:53 2020
@@ -36,7 +36,13 @@ under the License.
     <link rel="canonical" href="https://ignite.apache.org/use-cases/database/key-value-store.html"/>
     <meta charset="utf-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>Key-Value Store - Apache Ignite</title>
+
+    <meta name="description"
+          content="Apache Ignite operates as a distributed key-value store that stores data both in memory and on disk
+          with support of key-value, SQL, ACID transactions, compute and machine learning APIs."/>
+
+    <title>Distributed Key-Value Store - Apache Ignite</title>
+
     <!--#include virtual="/includes/styles.html" -->
 
     <!--#include virtual="/includes/sh.html" -->
@@ -47,16 +53,16 @@ under the License.
 
     <main id="main" role="main" class="container">
         <section id="key-value-store" class="page-section">
-            <h1 class="first">Key-Value Store</h1>
+            <h1 class="first">Distributed Key-Value Store</h1>
             <div class="col-sm-12 col-md-12 col-xs-12" style="padding:0 0 10px 0;">
                 <div class="col-sm-6 col-md-6 col-xs-12" style="padding-left:0; padding-right:0">
                     <p>
-                        Ignite can be accessed with simple key-value APIs and, thus, act as a distributed key-value store
-                        (aka. <a href="/features/datagrid.html">data grid</a>). In this scenario, you can think of Ignite as of a distributed partitioned
-                        hash map with every cluster node owning a portion of the overall data set. It's worth mentioning,
-                        that even if you see or use Ignite as a key-value store, you're not limited to the key-value operations
-                        and can always leverage from other available APIs such as SQL, collocated computations, machine
-                        learning, streaming.
+                        Apache Ignite can operate as a distributed key-value store that stores data both in memory
+                        and on disk. In this deployment mode, you can think of Ignite as of a distributed partitioned
+                        hash map with every cluster node owning a portion of the overall data set. As with
+                        standard key-value stores, you can access the cluster with key-value requests or take
+                        advantage of APIs available exclusively in Ignite - distributed ACID transactions, SQL,
+                        co-located computations, and machine learning.
                     </p>
                 </div>
                 <div class="col-sm-6 col-md- col-xs-12" style="padding-right:0">
@@ -64,349 +70,94 @@ under the License.
                 </div>
             </div>
 
-            <div class="page-heading">JCache APIs</div>
+            <div class="page-heading">JCache and Extended Key-Value APIs</div>
             <p>
-                Ignite key-value APIs comply with <a href="/use-cases/caching/jcache-provider.html">JCache (JSR 107)</a>
-                specification that supports the following:
+                Ignite key-value APIs comply with JCache (JSR 107) specification supporting the following:
             </p>
+
             <ul class="page-list">
-                <li>In-Memory Key Value Store</li>
-                <li>Basic Cache Operations</li>
+                <li>Basic Cache Put/Get Operations</li>
                 <li>ConcurrentMap APIs</li>
-                <li>Collocated Processing (EntryProcessor)</li>
+                <li>EntryProcessor and CacheInterceptor APIs</li>
                 <li>Events and Metrics</li>
-                <li>Pluggable Persistence</li>
             </ul>
 
-            <div class="page-heading">Extended Key-Value APIs</div>
             <p>
-                In addition to the standard JCache API, Ignites supports distributed ACID transactions,
-                scan and continuous queries, collocated processing and more.
+                In addition to that, Ignite extends JCache specification supporting distributed key-value ACID
+                transactions, scan and continuous queries, co-located computations, and much more. For instance,
+                continuous queries are handy for cases when you want an application to be notified whenever any record
+                gets updated on the server nodes. While ACID transactions let you update a set of records stored in
+                different caches/tables consistently.
             </p>
 
-            <div class="code-examples">
-                <div class="page-heading">Code Examples</div>
-                <!-- Nav tabs -->
-                <ul id="datagrid-examples" class="nav nav-tabs">
-                    <li class="active"><a href="#datagrid-example-basic" role="tab" data-toggle="tab">Put and Get</a></li>
-                    <li><a href="#datagrid-example-transactions" role="tab" data-toggle="tab">Transactions</a></li>
-                    <li><a href="#datagrid-example-locks" role="tab" data-toggle="tab">Locks</a></li>
-                </ul>
-
-                <!-- Tab panes -->
-                <div class="tab-content">
-                    <div role="tabpanel" class="tab-pane active" id="datagrid-example-basic">
-                        <pre class="brush:java">
-                            Ignite ignite = Ignition.ignite();
-
-                            // Get an instance of named cache.
-                            final IgniteCache&lt;Integer, String&gt; cache = ignite.cache("cacheName");
-
-                            // Store keys in cache.
-                            for (int i = 0; i < 10; i++)
-                                cache.put(i, Integer.toString(i));
-
-                            // Retrieve values from cache.
-                            for (int i = 0; i < 10; i++)
-                                System.out.println("Got [key=" + i + ", val=" + cache.get(i) + ']');
-
-                            // Remove objects from cache.
-                            for (int i = 0; i < 10; i++)
-                                cache.remove(i);
-
-                            // Atomic put-if-absent.
-                            cache.putIfAbsent(1, "1");
-
-                            // Atomic replace.
-                            cache.replace(1, "1", "2");
-                        </pre>
-                    </div>
-                    <div role="tabpanel" class="tab-pane" id="datagrid-example-transactions">
-                        <pre class="brush:java">
-                            Ignite ignite = Ignition.ignite();
-
-                            // Clone every object we get from cache, so we can freely update it.
-                            IgniteCache&lt;Integer, Account&gt; cache = ignite.cache("cacheName");
-
-                            try (IgniteTx tx = Ignition.ignite().transactions().txStart()) {
-                                Account acct = cache.get(acctId);
-
-                                assert acct != null;
-
-                                // Deposit $20 into account.
-                                acct.setBalance(acct.getBalance() + 20);
-
-                                // Store updated account in cache.
-                                cache.put(acctId, acct);
-
-                                tx.commit();
-                            }
-                        </pre>
-                    </div>
-                    <div role="tabpanel" class="tab-pane" id="datagrid-example-locks">
-                        <pre class="brush:java">
-                            Ignite ignite = Ignition.ignite();
-
-                            // Get an instance of named cache.
-                            final GridCache&lt;String, Integer&gt; cache = ignite.cache("cacheName");
-
-                            // Lock cache key "Hello".
-                            Lock lock = cache.lock("Hello");
-
-                            lock.lock();
-
-                            try {
-                                cache.put("Hello", 11);
-                                cache.put("World", 22);
-                            }
-                            finally {
-                                lock.unlock();
-                            }
-                        </pre>
-                    </div>
-                </div>
-            </div>
+            <div class="page-heading">Near Cache</div>
+
+            <p>
+                Near cache is a local client-side cache that stores the most frequently used data on the application end.
+                This caching technique is supported for key-value APIs only and can be considered for applications that
+                require a consistent response time withing a low microseconds range. The near cache is invalidated and
+                updated by Ignite automatically. Whenever a primary copy of a record gets updated on a server node,
+                the change will be propogated to all the nodes that store its backup copy as well as to your applications
+                that keep a record's copy in their near caches.
+            </p>
+
+            <div class="page-heading">Read-through and Write-Through/Behind</div>
+
+            <p>
+                If Ignite is deployed as a key-value store on top of an external database, then it can automatically
+                write-through or write-behind all the changes to that external store for every key-value request
+                issued by your applications. It also includes key-value ACID transactions - Ignite coordinates and
+                commits a transaction across its in-memory cluster as well as a relational database.
+            </p>
+
+            <p>
+                The read-through capability implies that Ignite can read data from an external database if a record is
+                missing in memory. This feature is fully supported for both JCache and extended key-value APIs.
+            </p>
 
-            <section id="key-features" class="page-section">
-                <h2>More on Key-Value APIs</h2>
-                <table class="formatted" name="key-value-apis">
-                    <thead>
-                    <tr>
-                        <th width="35%" class="left">Feature</th>
-                        <th>Description</th>
-                    </tr>
-                    </thead>
-                    <tbody>
-                    <tr>
-                        <td class="left">Data Grid</td>
-                        <td>
-                            <p>
-                                Ignite data grid is a <code>key-value store</code> which can store data both, in-memory
-                                and on-disk. It can be viewed as a distributed partitioned hash map, with every cluster
-                                node owning a portion of the overall data. This way the more cluster nodes we add,
-                                the more data we can store:
-                            </p>
-
-                            <div class="page-links">
-                                <a href="/features/datagrid.html">Docs for this Feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left">Durable Memory</td>
-                        <td>
-                            <p>
-                                Ignite <code>Durable Memory</code> allows storing and processing data and indexes
-                                both, in memory and on disk. The in-memory data, including indexes, is always
-                                stored and managed <code>off-heap</code>, completely removing any type of Garbage
-                                Collection overhead.
-                            </p>
-                            <div class="page-links">
-                                <a href="https://apacheignite.readme.io/docs/durable-memory" target="docs">Docs for this Feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left">JCache (JSR 107)</td>
-                        <td>
-                            <p>
-                                Ignite is a 100% compliant implementation of <span style="white-space: nowrap">JCache (JSR 107)</span> specification.
-                                JCache provides a very simple to use, yet very powerful API for data caching:
-                            </p>
-                            <div class="page-links">
-                                <a href="/use-cases/caching/jcache-provider.html">Docs for this Feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left">Memory-Centric Storage</td>
-                        <td>
-                            <p>
-                                Apache Ignite is based on distributed <i>memory-centric architecture</i> that combines the
-                                performance and scale of in-memory computing together with the disk durability and strong
-                                consistency in one system:
-                            </p>
-                            <div class="page-links">
-                                <a href="/arch/memorycentric.html">Docs for this Feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left">Collocated Processing</td>
-                        <td>
-                            <p>
-                                Ignite allows executing any native Java, C++, and .NET/C# code directly on the server-side,
-                                close to the data, in collocated fashion:
-                            </p>
-                            <div  class="page-links">
-                                <a href="/features/collocatedprocessing.html" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left">Client-side Near Caches</td>
-                        <td>
-                            <p>
-                                Near cache is local client-side cache that stores the most recently and most frequently accessed data.
-                            </p>
-                            <div class="page-links">
-                                <a href="http://apacheignite.readme.io/docs/near-caches" target="docs">Docs for this Feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left">ACID Transactions</td>
-                        <td>
-                            <p>
-                                Ignite provides fully ACID compliant distributed transactions that ensure guaranteed consistency.
-                            </p>
-                            <div class="page-links">
-                                <a href="/features/transactions.html">Docs for this Feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left" width="35%">Deadlock-Free Transactions</td>
-                        <td>
-                            <p>
-                                Ignite supports deadlock-free, optimistic transactions, which do not acquire any locks,
-                                and free users from worrying about the lock order.
-                                Such transactions also provide much better performance:
-                            </p>
-                            <div  class="page-links">
-                                <a href="https://apacheignite.readme.io/docs/transactions" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left" width="35%">Transactional Entry Processor</td>
-                        <td>
-                            <p>
-                                Ignite transactional entry processor allows executing collocated user logic on the server
-                                side within a transaction:
-                            </p>
-                            <div  class="page-links">
-                                <a href="https://apacheignite.readme.io/docs/affinity-collocation#ignitecompute-vs-entryprocessor" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left" width="35%">Cross-Partition Transactions</td>
-                        <td>
-                            <p>
-                                In Ignite, transactions can be performed on all partitions of a cache across the whole
-                                cluster:
-                            </p>
-                            <div  class="page-links">
-                                <a href="https://apacheignite.readme.io/docs/transactions#ignitetransactions" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left" width="35%">Locks</td>
-                        <td>
-                            <p>
-                                Ignite allows developers to define explicit locks enforcing mutual exclusion on cached objects:
-                            </p>
-                            <div  class="page-links">
-                                <a href="https://apacheignite.readme.io/docs/distributed-locks" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left" width="35%">Continuous Queries</td>
-                        <td>
-                            <p>
-                                Continuous queries are useful for cases when you want to execute a query and then
-                                continue to get notified about the data changes that fall into your query filter:
-                            </p>
-                            <div  class="page-links">
-                                <a href="https://apacheignite.readme.io/docs/continuous-queries" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left" width="35%">Write-Through</td>
-                        <td>
-                            <p>
-                                Write-Through mode allows updating the data in the database.
-                            </p>
-                            <div  class="page-links">
-                                <a href="https://apacheignite.readme.io/docs/3rd-party-store#read-through-and-write-through" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left">Read-Through</td>
-                        <td>
-                            <p>
-                                Read-Through mode allows reading the data from the database.
-                            </p>
-                            <div  class="page-links">
-                                <a href="https://apacheignite.readme.io/docs/3rd-party-store#read-through-and-write-through" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left">Write-Behind Caching</td>
-                        <td>
-                            <p>
-                                Ignite provides an option to asynchronously perform updates to the database via Write-Behind Caching.
-                            </p>
-                            <div  class="page-links">
-                                <a href="https://apacheignite.readme.io/docs/3rd-party-store#section-write-behind-caching" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left">Hibernate L2 Caching</td>
-                        <td>
-                            <p>
-                                Ignite data grid can be used as <code>Hibernate Second-Level Cache</code> (or L2 cache),
-                                which can significantly speed-up the persistence layer of your application.
-                            </p>
-                            <div class="page-links">
-                                <a href="https://apacheignite-mix.readme.io/docs/hibernate-l2-cache" target="docs">Docs for this Feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left">Spring Caching</td>
-                        <td>
-                            <p>
-                                Ignite provides Spring-annotation-based way to enable caching for Java methods so that
-                                the result of a method execution is stored in the Ignite cache. If later the same
-                                method is called with the same set of parameters, the result will be retrieved from
-                                the cache instead of actually executing the method.
-                            </p>
-                            <div class="page-links">
-                                <a href="http://apacheignite-mix.readme.io/docs/spring-caching" target="docs">Docs for this Feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left">Spring Data</td>
-                        <td>
-                            <p>
-                                Apache Ignite implements Spring Data <code>CrudRepository</code> interface that not only supports basic CRUD operations but also provides access to the Apache Ignite SQL capabilities via the unified Spring Data API.
-                            </p>
-                            <div class="page-links">
-                                <a href="https://apacheignite-mix.readme.io/docs/spring-data" target="docs">Docs for this Feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    <tr>
-                        <td class="left">OSGI Support</td>
-                        <td>
-                            <p></p> &nbsp;
-                            <div  class="page-links">
-                                <a href="https://apacheignite-mix.readme.io/docs/starting-inside-an-osgi-container" target="docs">Docs for this feature <i class="fa fa-angle-double-right"></i></a>
-                            </div>
-                        </td>
-                    </tr>
-                    </tbody>
-                </table>
-            </section>
+            <div class="page-heading">Ignite Native Persistence</div>
+
+            <p>
+                If you want Ignite to function as a key-value store that caches data in memory and persists it to
+                disk, then, alternatively to an external database, you can enable Ignite native persistence. Ignite
+                persistence lets eliminate time-consuming data reloading phase from external databases as well as a
+                cache warm-up step. Furthermore, since the native persistence always keeps a full copy of data on disk,
+                you are free to cache a subset of records in memory. If Ignite finds that a record is missing in memory,
+                then it will read it from disk automatically
+                regardless of the API you use.
+            </p>
+
+            <div class="page-heading">Learn More</div>
+            <p>
+                <a href="/arch/memorycentric.html">
+                    <b>Memory-Centric Storage <i class="fa fa-angle-double-right"></i></b>
+                </a>
+            </p>
+            <p>
+                <a href="/arch/persistence.html">
+                    <b>Native Persistence <i class="fa fa-angle-double-right"></i></b>
+                </a>
+            </p>
+            <p>
+                <a href="/features/transactions.html">
+                    <b>ACID Transactions <i class="fa fa-angle-double-right"></i></b>
+                </a>
+            </p>
+            <p>
+                <a href="/features/collocatedprocessing.html">
+                    <b>Co-located Processing <i class="fa fa-angle-double-right"></i></b>
+                </a>
+            </p>
+            <p>
+                <a href="/features/sql.html">
+                    <b>Distributed SQL <i class="fa fa-angle-double-right"></i></b>
+                </a>
+            </p>
+            <p>
+                <a href="/features/machinelearning.html">
+                    <b>Machine and Deep Learning <i class="fa fa-angle-double-right"></i></b>
+                </a>
+            </p>
         </section>
     </main>