Author: dmagda
Date: Fri Jan 31 20:53:39 2020
New Revision: 1873446

URL: http://svn.apache.org/viewvc?rev=1873446&view=rev
Log:
Updated in-memory caching and data grid pages

Added:
    ignite/site/branches/ignite-redisign/use-cases/in-memory-cache.html
      - copied, changed from r1873445, 
ignite/site/branches/ignite-redisign/use-cases/caching/database-caching.html
    ignite/site/branches/ignite-redisign/use-cases/spark-acceleration.html
      - copied unchanged from r1873445, 
ignite/site/branches/ignite-redisign/use-cases/spark/spark-acceleration.html
Removed:
    ignite/site/branches/ignite-redisign/use-cases/caching/database-caching.html
    
ignite/site/branches/ignite-redisign/use-cases/database/distributed-database-2.html
    ignite/site/branches/ignite-redisign/use-cases/database/sql-database-2.html
    ignite/site/branches/ignite-redisign/use-cases/spark/
Modified:
    ignite/site/branches/ignite-redisign/.htaccess
    ignite/site/branches/ignite-redisign/features/datagrid.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=1873446&r1=1873445&r2=1873446&view=diff
==============================================================================
--- ignite/site/branches/ignite-redisign/.htaccess (original)
+++ ignite/site/branches/ignite-redisign/.htaccess Fri Jan 31 20:53:39 2020
@@ -12,7 +12,8 @@ Redirect 301 /memorycentric.html /arch/m
 Redirect 301 /features/persistence.html /arch/persistence.html
 Redirect 301 /features/deploy.html /arch/clustering.html
 Redirect 301 /features/igniterdd.html /use-cases/spark/shared-memory-layer.html
-Redirect 301 /use-cases/spark/shared-memory-layer.html 
/use-cases/spark/spark-acceleration.html
+Redirect 301 /use-cases/spark/shared-memory-layer.html 
/use-cases/spark-acceleration.html
+Redirect 301 /use-cases/caching/database-caching.html 
/use-cases/in-memory-cache.html
 
 RewriteEngine On 
 

Modified: ignite/site/branches/ignite-redisign/features/datagrid.html
URL: 
http://svn.apache.org/viewvc/ignite/site/branches/ignite-redisign/features/datagrid.html?rev=1873446&r1=1873445&r2=1873446&view=diff
==============================================================================
--- ignite/site/branches/ignite-redisign/features/datagrid.html (original)
+++ ignite/site/branches/ignite-redisign/features/datagrid.html Fri Jan 31 
20:53:39 2020
@@ -33,15 +33,16 @@ under the License.
 <!DOCTYPE html>
 <html lang="en">
 <head>
-    <link rel="canonical" 
href="https://ignite.apache.org/features/datagrid.html"; />
+    <link rel="canonical" 
href="https://ignite.apache.org/features/datagrid.html"/>
     <meta charset="utf-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <meta http-equiv="Cache-Control" content="no-cache, no-store, 
must-revalidate" />
-    <meta http-equiv="Pragma" content="no-cache" />
-    <meta http-equiv="Expires" content="0" />
-    <meta name="description" content="Apache Ignite In-Memory Data Grid is a 
distributed transactional key-value store that stores data
-        in-memory and on-disk and supports key-value, SQL, and processing 
APIs"/>
+
+    <meta name="description"
+          content="Apache Ignite as an In-Memory Data Grid accelerates and 
scales your databases, services, and APIs
+          with support of ANSI SQL, ACID transactions, co-located compute, and 
machine learning."/>
+
     <title>In-Memory Data Grid - Apache Ignite</title>
+
     <!--#include virtual="/includes/styles.html" -->
 
     <!--#include virtual="/includes/sh.html" -->
@@ -55,30 +56,49 @@ under the License.
             <h1 class="first">Key-Value In-Memory Data Grid</h1>
             <div class="col-sm-12 col-md-12 col-xs-12" style="padding:0 0 20px 
0;">
                 <p>
-                    Ignite provides extensive and rich key-value APIs and can 
act as an in-memory data grid.
-                    You can think of Ignite as of a distributed partitioned 
hash map with every
-                    cluster node owning a portion of the overall data set. 
Unlike other in-memory data grids (IMDG),
-                    Ignite enables storing data both, in memory and on disk, 
and
-                    therefore is able to store more data than can fit in the 
physical memory.
+                    Apache Ignite provides an extensive set of APIs to act as 
an in-memory data grid that integrates into
+                    your existing architecture and accelerates databases, 
services, or custom APIs.
+                </p>
+                <p>
+                    An in-memory data grid type of deployment is also known as 
a read-through/write-through caching
+                    strategy. With this strategy, Ignite plugs into your 
existing architecture seamlessly, and the
+                    application layer starts treating it as a primary store. 
Your application layer writes to and reads
+                    from Ignite, while the latter ensures that any underlying 
external databases stay updated and
+                    consistent with in-memory data.
+                </p>
+                <p>
+                    As an in-memory data grid, Ignite provides all the 
essential developer APIs needed to simplify its
+                    adoption. The APIs include distributed key-value and ANSI 
SQL queries, ACID transactions,
+                    co-located computations, and machine learning models. 
While key-value and SQL calls let you request,
+                    join, and group distributed data sets, the compute and 
machine learning components help to eliminate
+                    data shuffling over the network, thus, boosting compute 
and data-intensive calculations.
                 </p>
                 <p>
-                    Ignite data grid is one of the fastest implementations of 
ACID transactions or
-                    atomic data updates in distributed clusters today. We know 
it because we constantly benchmark it ourselves.
+                    Ignite is capable of storing data both in memory and on 
disk with two options for data persistence
+                    -- you can persist changes in an external database or let 
Ignite keep data in its native persistence.
+                    Let's review two of them.
                 </p>
+
                 <div class="col-sm-8 col-md-8 col-xs-12" 
style="padding-left:0; padding-right:0">
-                    <div class="page-heading">3rd Party Databases</div>
+                    <div class="page-heading">Ignite and External 
Databases</div>
+                    <p>
+                        Ignite as an in-memory data grid can improve 
performance and scalability of existing external
+                        databases such as RDBMS, NoSQL or Hadoop, by sliding 
in as an in-memory cache between the application
+                        and database layers. Ignite will automatically 
write-through or write-behind all the changes to
+                        an external store. It also includes ACID transactions 
- Ignite coordinates and commits a
+                        transaction across its in-memory cluster as well as a 
relational database.
+                    </p>
                     <p>
-                        Ignite in-memory data grid can improve performance and 
scalability of existing 3rd party databases - RDBMS,
-                        NoSQL, or Hadoop-based storages, by sliding in as a 
distributed cache between the application and database layers.
-                        Ignite will automatically write-through or 
read-through all the updates
-                        or reads to or from the underlying database. Ignite 
will also merge with the underlying database
-                        transactions, providing transparent transactional 
behavior to the users.
+                        In addition to that, Ignite can be deployed as a 
shared and unified in-memory layer that stores
+                        data sets originating from disjointed databases. Your 
applications can consume all the data from
+                        Ignite as a single store while Ignite can keep the 
original databases in sync whenever in-memory
+                        data gets updated.
                     </p>
                     <p>
-                        However, this approach has its limitations. For 
example, SQL or scan queries will only include the
-                        results stored in memory, and not in the external 
database, since Ignite cannot index the external data.
-                        If you require that data on disk should be indexed and 
accessible via SQL queries, we recommend that you look at
-                        <a href="/arch/persistence.html">Ignite native 
persistence</a>.
+                        However, there are some limitations if an external 
database is used as a persistence layer for
+                        Ignite deployments. For instance, if you run Ignite 
SQL or scan queries, you need to ensure
+                        that all the data has already been preloaded to the 
in-memory cluster. Note that Ignite SQL or
+                        scan queries can read data from disk only if it's 
stored in Ignite native persistence.
                     </p>
                 </div>
 
@@ -86,435 +106,65 @@ under the License.
                     <img class="img-responsive" src="/images/IMDG.png" 
width="300px" style="float:right;"/>
                 </div>
             </div>
+
             <div class="col-sm-12 col-md-12 col-xs-12" style="padding:0 0 20px 
0;">
                 <div class="col-sm-8 col-md-8 col-xs-12" 
style="padding-left:0; padding-right:0">
-                    <div class="page-heading">Native Persistence</div>
+                    <div class="page-heading">Ignite Native Persistence</div>
                     <p>
-                        Ignite <a href="/arch/persistence.html">native 
persistence</a> is a distributed ACID and SQL-compliant disk store that 
transparently
-                        integrates with Ignite's durable memory. Ignite 
persistence is optional and can be turned on and off.
-                        When turned off, Ignite becomes a pure in-memory 
store. When native persistence is enabled, Ignite stores
-                        both data and indexes on disk. A subset of data and 
the most frequently used indexes are stored in memory.
-                        Additionally, since Ignite persists indexes on disk, 
they do not have to be rebuilt on cluster
-                        restart making the system faster than other in-memory 
databases.
+                        Ignite native persistence is a distributed ACID and 
SQL-compliant disk store that transparently
+                        integrates with Ignite in-memory layer. When native 
persistence is enabled, Ignite stores
+                        both data and indexes on disk.
+                        The native 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 -- 
let it be SQL, key-value, or scan queries.
                     </p>
                 </div>
 
                 <div class="col-sm-4 col-md-4 col-xs-12" 
style="padding-right:0">
-                    <img class="img-responsive" 
src="/images/native_persistence_key_value.png" width="300px" 
style="float:right;"/>
+                    <img class="img-responsive" 
src="/images/native_persistence_key_value.png" width="300px"
+                         style="float:right;"/>
                 </div>
             </div>
 
-            <div class="page-heading">Key-Value APIs</div>
+            <div class="page-heading">Learn More</div>
             <p>
-                In addition to the standard <a 
href="/use-cases/caching/jcache-provider.html">JCache (JSR 107)</a> API, 
Ignites supports distributed ACID transactions,
-                scan and continuous queries, collocated processing and more.
+                <a href="/features/sql.html">
+                    <b>Distributed SQL <i class="fa 
fa-angle-double-right"></i></b>
+                </a>
             </p>
-
             <p>
-                The data grid has been built from the ground up to linearly 
scale to hundreds of nodes with strong
-                semantics for data locality and affinity data routing to 
reduce redundant data noise. 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 cache.
+                <a href="/features/collocatedprocessing.html">
+                    <b>Co-located processing <i class="fa 
fa-angle-double-right"></i></b>
+                </a>
             </p>
-
-            <div class="page-heading">Affinity Collocation</div>
             <p>
-                To improve performance and scalability of an application, 
Ignite allows collocating data with data or compute with data.
-                By collocating related cache keys together, you can make sure 
that all keys will be cached on the same processing node,
-                hence avoiding costly network trips to fetch data from remote 
nodes.
-                It is also possible to route computations to the nodes where 
the data is cached.
+                <a href="/features/machinelearning.html">
+                    <b>Machine Learning <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="/arch/persistence.html">
+                    <b>Native Persistence <i class="fa 
fa-angle-double-right"></i></b>
+                </a>
+            </p>
+            <p>
+                <a href="/use-cases/database/in-memory-database.html">
+                    <b>Ignite as an In-Memory Database <i class="fa 
fa-angle-double-right"></i></b>
+                </a>
+            </p>
+            <p>
+                <a href="TODO">
+                    <b>Ignite as a Digital Integration Hub <i class="fa 
fa-angle-double-right"></i></b>
+                </a>
             </p>
 
-            <div class="videos">
-                <div class="page-heading">Videos</div>
-                <ul class="page-list">
-                    <li>
-                        <i class="fa fa-lg fa-play-circle-o"></i>
-                                <span class="video-title">
-                                    <a target="youtube" 
href="https://www.youtube.com/watch?v=pFbDWpOiMOU";>Getting Started with Data 
Grid</a>
-                                </span>
-                        <span class="video-duration">03:49</span>
-                    </li>
-                </ul>
-            </div>
-
-            <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>
-                    <li><a href="#datagrid-example-sqlquery" role="tab" 
data-toggle="tab">SQL Query</a></li>
-                    <li><a href="#datagrid-example-sqljoin" role="tab" 
data-toggle="tab">SQL Join</a></li>
-                    <li><a href="#datagrid-example-sqlaggregation" role="tab" 
data-toggle="tab">SQL Aggregation</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 role="tabpanel" class="tab-pane" 
id="datagrid-example-sqlquery">
-                        <pre class="brush:java">
-                            IgniteCache&lt;Long, Person&gt; cache = 
ignite.cache("mycache");
-
-                            SqlFieldsQuery sql = new SqlFieldsQuery(
-                              "select concat(firstName, ' ', lastName) from 
Person");
-
-                            // Select concatinated first and last name for all 
persons.
-                            try (QueryCursor&lt;List&lt;?&gt;&gt; cursor = 
cache.query(sql)) {
-                              for (List&lt;?&gt; row : cursor)
-                                System.out.println("Full name: " + row.get(0));
-                            }
-                        </pre>
-                    </div>
-                    <div role="tabpanel" class="tab-pane" 
id="datagrid-example-sqljoin">
-                        <pre class="brush:java">
-                            IgniteCache&lt;Long, Person&gt; personCache = 
ignite.cache("personCache");
-
-                            // Select with join between Person and 
Organization to
-                            // get the names of all the employees of a 
specific organization.
-                            SqlFieldsQuery sql = new SqlFieldsQuery(
-                                "select p.name  "
-                                    + "from Person p, 
\"orgCache\".Organization o where "
-                                    + "p.orgId = o.id "
-                                    + "and o.name = ?");
-
-                            // Execute the query and obtain the query result 
cursor.
-                            try (QueryCursor&lt;List&lt;?&gt;&gt; cursor =  
personCache.query(sql.setArgs("Ignite"))) {
-                                for (List&lt;?&gt; row : cursor)
-                                    System.out.println("Person name=" + row);
-                            }
-                        </pre>
-                    </div>
-                    <div role="tabpanel" class="tab-pane" 
id="datagrid-example-sqlaggregation">
-                        <pre class="brush:java">
-                            IgniteCache&lt;Long, Person&gt; personCache = 
ignite.cache("personCache");
-
-                            // Select average age of people working within 
different departments.
-                            SqlFieldsQuery sql = new SqlFieldsQuery(
-                                "select avg(p.age) as avg_age, d.name as 
dpmt_name, o.name as org_name "
-                                    + "from Person p, \"depCache\".Department 
d, \"orgCache\".Organization o "
-                                    + "where p.depid = d.id and d.orgid = o.id 
"
-                                    + "group by d.name, o.name "
-                                    + "order by avg_age";
-
-                            // Execute the query and obtain the query result 
cursor.
-                            try (QueryCursor&lt;List&lt;?&gt;&gt; cursor =  
personCache.query(sql.setArgs("Ignite"))) {
-                                for (List&lt;?&gt; row : cursor)
-                                    System.out.println("Average age by 
department and organization: " + row);
-                            }
-                        </pre>
-                    </div>
-                </div>
-            </div>
-        </section>
-
-        <section id="key-features" class="page-section">
-            <h2>More on Data Grid</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">Key-Value Store</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="/use-cases/database/key-value-store.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 supports distributed ACID transactions for 
key-value as well as SQL operations.
-                        </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>
     </main>
 

Modified: ignite/site/branches/ignite-redisign/includes/header.html
URL: 
http://svn.apache.org/viewvc/ignite/site/branches/ignite-redisign/includes/header.html?rev=1873446&r1=1873445&r2=1873446&view=diff
==============================================================================
--- ignite/site/branches/ignite-redisign/includes/header.html (original)
+++ ignite/site/branches/ignite-redisign/includes/header.html Fri Jan 31 
20:53:39 2020
@@ -54,14 +54,14 @@
                                                onclick="ga('send', 'event', 
'apache_ignite_features', 'menu_click', 'distributed_sql');">
                                             Distributed SQL</a>
                                         </li>
-                                        <li><a href="/features/datagrid.html" 
aria-label="DataGrid"
+                                        <li><a href="#TODO" 
aria-label="DataGrid"
                                                onclick="ga('send', 'event', 
'apache_ignite_features', 'menu_click', 'distributed_key_value');">
                                             Distributed Key-Value</a>
                                         </li>
-                                        <!--<li><a 
href="/arch/persistence.html"-->
-                                        <!--onclick="ga('send', 'event', 
'apache_ignite_features', 'menu_click', 'persistence');">-->
-                                        <!--Distributed Persistence</a>-->
-                                        <!--</li>-->
+                                        <li><a href="/arch/persistence.html"
+                                        onclick="ga('send', 'event', 
'apache_ignite_features', 'menu_click', 'persistence');">
+                                        Native Persistence</a>
+                                        </li>
                                         <li><a 
href="/features/transactions.html" aria-label="Transactions"
                                                onclick="ga('send', 'event', 
'apache_ignite_features', 'menu_click', 'acid_transactions');">
                                             ACID Transactions</a>
@@ -103,7 +103,8 @@
                                     <a class="dropdown-toggle" 
data-toggle="dropdown" aria-label="Use Cases">Use Cases<span 
class="caret"></span></a>
                                     <ul class="dropdown-menu" role="menu">
 
-                                        <li><a 
href="/use-cases/caching/database-caching.html"
+                                        <li role="presentation" 
class="submenu-header">Caching & Database</li>
+                                        <li><a 
href="/use-cases/in-memory-cache.html"
                                                aria-label="In-Memory Cache"
                                                onclick="ga('send', 'event', 
'apache_ignite_usecases', 'menu_click', 'in_memory_cache');">
                                             In-Memory Cache</a>
@@ -116,15 +117,26 @@
                                                onclick="ga('send', 'event', 
'apache_ignite_usecases', 'menu_click', 'distributed-database');">
                                             In-Memory Database</a>
                                         </li>
-                                        <li><a href="#" aria-label="Digital 
Integration Hub"
-                                               onclick="ga('send', 'event', 
'apache_ignite_usecases', 'menu_click', 'digital_integration_hub');">
-                                            Digital Integration Hub</a>
-                                        </li>
                                         <li><a 
href="/use-cases/database/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>
-                                        <li><a 
href="/use-cases/spark/spark-acceleration.html"
+                                        <li class="divider">
+
+                                        <li role="presentation" 
class="submenu-header">Data & Compute Hubs</li>
+                                        <li><a href="#TODO" 
aria-label="Digital Integration Hub"
+                                               onclick="ga('send', 'event', 
'apache_ignite_usecases', 'menu_click', 'digital_integration_hub');">
+                                            Digital Integration Hub</a>
+                                        </li>
+                                        <li><a href="#TODO" 
aria-label="Compute Engine"
+                                               onclick="ga('send', 'event', 
'apache_ignite_usecases', 'menu_click', 'massive_parallel_processing');">
+                                            Compute Engine</a>
+                                        </li>
+
+                                        <li class="divider">
+
+                                        <li role="presentation" 
class="submenu-header">Faster Analytics</li>
+                                        <li><a 
href="/use-cases/spark-acceleration.html"
                                                aria-label="Apache Spark 
Acceleration"
                                                onclick="ga('send', 'event', 
'apache_ignite_usecases', 'menu_click', 'apache_spark_acceleration');">
                                             Apache Spark Acceleration</a>
@@ -134,7 +146,11 @@
                                                onclick="ga('send', 'event', 
'apache_ignite_usecases', 'menu_click', 'hadoop_acceleration');">
                                             Apache Hadoop Acceleration</a>
                                         </li>
-                                        <li><a href="/provenusecases.html" 
aria-label="Proven Use Cases"
+
+                                        <li class="divider">
+
+                                        <li role="presentation" 
class="submenu-header">Ignite in Production</li>
+                                        <li><a href="/provenusecases.html" 
aria-label="Powered by Ignite"
                                                onclick="ga('send', 'event', 
'apache_ignite_usecases', 'menu_click', 'proven_usecases');">
                                             Powered by Ignite</a>
                                         </li>

Copied: ignite/site/branches/ignite-redisign/use-cases/in-memory-cache.html 
(from r1873445, 
ignite/site/branches/ignite-redisign/use-cases/caching/database-caching.html)
URL: 
http://svn.apache.org/viewvc/ignite/site/branches/ignite-redisign/use-cases/in-memory-cache.html?p2=ignite/site/branches/ignite-redisign/use-cases/in-memory-cache.html&p1=ignite/site/branches/ignite-redisign/use-cases/caching/database-caching.html&r1=1873445&r2=1873446&rev=1873446&view=diff
==============================================================================
--- 
ignite/site/branches/ignite-redisign/use-cases/caching/database-caching.html 
(original)
+++ ignite/site/branches/ignite-redisign/use-cases/in-memory-cache.html Fri Jan 
31 20:53:39 2020
@@ -36,7 +36,13 @@ under the License.
 <link rel="canonical" 
href="https://ignite.apache.org/use-cases/caching/database-caching.html"; />
     <meta charset="utf-8">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>Distributed In-Memory Cache With SQL and ACID Transactions - Apache 
Ignite</title>
+
+    <meta name="description"
+          content="Apache Ignite as an In-Memory Cache accelerates and scales 
your databases, services, and APIs
+          with support of ANSI SQL, ACID transactions, co-located compute, and 
machine learning."/>
+
+    <title>In-Memory Cache - Apache Ignite</title>
+
     <!--#include virtual="/includes/styles.html" -->
 
     <!--#include virtual="/includes/sh.html" -->
@@ -47,16 +53,14 @@ under the License.
 
     <main id="main" role="main" class="container">
         <section id="database-caching" class="page-section">
-            <h1 class="first">Distributed In-Memory Cache With SQL and ACID 
Transactions</h1>
+            <h1 class="first">In-Memory Cache With ANSI SQL, ACID Transactions 
and Compute APIs</h1>
             <div class="col-sm-12 col-md-12 col-xs-12" style="padding:0 0 20px 
0;">
                 <div class="col-sm-6 col-md-6 col-xs-12" 
style="padding-left:0;">
                     <p>
-                        Distributed in-memory cache that supports ANSI SQL, 
ACID transactions and co-located
-                        computations is one of the usage scenarios Apache 
Ignite is selected for. From web sessions
-                        and financial instruments caching to external APIs and 
existing databases acceleration, Ignite
-                        provides all essential components needed to speed up 
enterprise applications as well as
-                        microservices-based architectures that require more 
than standard key-value look-ups for data
-                        processing.
+                        Distributed in-memory cache that supports ANSI SQL, 
ACID transactions, and co-located
+                        computations is one of the usage scenarios Apache 
Ignite is selected for. From sessions and
+                        APIs caching to databases and microservices 
acceleration, Ignite provides all essential
+                        components needed to speed things up.
                     </p>
                 </div>
                 <div class="col-sm-6 col-md-5 col-xs-12" 
style="padding-right:0">
@@ -65,65 +69,63 @@ under the License.
             </div>
 
             <p>
-                As a typical distributed cache, you would span Ignite cluster 
across several interconnected
-                physical or virtual machines letting it utilize all the 
available memory and CPU resources.
-                However, the difference comes in a way you can utilize the 
cluster once it's up and running. In
-                addition to classic key-value APIs you can run distributed SQL 
queries joining and grouping
-                various data sets. If strong consistency is required, you can 
execute multi-records and
-                cross-cache ACID transactions in both pessimistic and 
optimistic modes. Next, if an
-                application runs compute or data-intensive logic, you can 
minimize data shuffling and network
-                utilization by running co-located computations and distributed 
machine learning APIs on the cluster
-                nodes that store actual data.
+                As with classic distributed caches, you would span an Ignite 
cluster across several interconnected
+                physical or virtual machines letting it utilize all the 
available memory and CPU resources. However,
+                the difference comes in a way you can use the cluster once 
it's up and running. In addition to
+                standard key-value APIs, you can run distributed SQL queries 
joining and grouping various data sets.
+                If strong consistency is required, you can execute 
multi-records and cross-cache ACID transactions in
+                both pessimistic and optimistic modes. Next, if an application 
runs compute or data-intensive logic,
+                you can minimize data shuffling with network utilization by 
running co-located computations and
+                distributed machine learning APIs right on the cluster nodes 
that store your data.
             </p>
 
             <p>
                 There are two primary deployment strategies for Ignite as an 
in-memory cache -- the cache-aside one and
-                read-through/write-through caching. Let's review both 
separately.
+                read-through/write-through caching. Let's review two of them.
             </p>
 
             <div class="page-heading">Cache-Aside Deployment</div>
             <p>
-                With the cache-aside deployment strategy, the cache is 
deployed separately from a primary data store
-                and might not even know about existence of the latter. An 
application layer becomes in charge of
-                synchronization between a cache and a primary data store. If a 
record gets updated in the data store
-                then either the application or some change-data-capture (CDC) 
process needs to refresh a similar
-                record in the cache.
-            </p>
-            <p>
-                This strategy works well when the cached data is rather static 
and not updated frequently or
-                temporary data lag/inconsistency is allowed between the 
primary store and the in-memory cache. It's
-                assumed that the cache and the store will become consistent 
eventually as soon as soon as changes are
-                replicated in full.
-            </p>
-            <p>
-                If Apache Ignite is deployed in this configuration, then its 
native persistence can be used as a disk
-                store. This lets eliminate time-consuming data reloading phase 
from the primary store as well as
-                a cache warm-up step. Furthermore, the native persistence 
allows you to cache a subset of the data
-                by keeping the full copy on disk. If any piece of data is not 
cached in RAM then Ignite will take
-                it from disk automatically regardless of the API you use let 
it be SQL, key-value or scan queries.
+                With the cache-aside deployment strategy, a cache is deployed 
separately from a primary data store and
+                might not even know that the latter exists. An application or 
change-data-capture process (CDC) becomes
+                responsible for data synchronization between these two storage 
locations. For instance, if any record
+                gets updated in the primary store, then its new value needs to 
be replicated to the cache.
+            </p>
+            <p>
+                This strategy works well when the cached data is rather static 
and not updated frequently, or
+                temporary data lag/inconsistency is allowed between the two 
storage locations. It's usually assumed
+                that the cache and the primary store will become consistent 
eventually as soon as changes are replicated
+                in full.
+            </p>
+            <p>
+                If Apache Ignite is deployed in a cache-aside configuration, 
then its native persistence can be used as
+                a disk store for Ignite data sets. The native persistence lets 
eliminate time-consuming data reloading
+                phase from the primary store 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 -- let it be SQL, key-value, or scan queries.
             </p>
 
             <div class="page-heading">Read-Through/Write-Through Caching</div>
             <p>
-                The read-through/write-through caching strategy can also be 
classified as an in-memory data grid type
-                of deployment. When Apache Ignite is deployed as a data grid, 
the application layer starts
-                treating an Ignite cluster as the primary store. The 
applications write to and read from Ignite only
-                and it becomes Ignite's responsobility to keep an underlying 
external database updated and
-                consistent with the in-memory data.
+                The read-through/write-through caching strategy can also be 
classified as an in-memory data grid type of
+                deployment. When Apache Ignite is deployed as a data grid, the 
application layer starts treating Ignite
+                as the primary store. The applications write to and read from 
Ignite while the latter ensures that any
+                underlying external databases stay updated and consistent with 
the in-memory data.
             </p>
 
             <p>
-                This strategy is favorable for architectures that need to 
accelerate performance or scale external
-                disk-based databases such as RDBMS or NoSQL. Ignite integrates 
with many databases out-of-the box and
-                can write-through or write-behind all the changes to them. 
This also includes ACID transactions -
-                Ignite will coordinate and commit a transaction across its own 
in-memory cluster as well as to a
-                relational database.
+                This strategy is favorable for architectures that need to 
accelerate existing disk-based databases or
+                create a shared caching layer across many disconnected data 
sources. Ignite integrates with many
+                databases out-of-the box and can write-through or write-behind 
all the changes to them. This also
+                includes ACID transactions - Ignite will coordinate and commit 
a transaction across its own in-memory
+                cluster as well as to a relational database.
             </p>
             <p>
-                The read-through capability assumes that a cache can read data 
from the external database if a record
-                is missing in memory. Ignite fully supports this capability 
for key-value APIs. However, if Ignite
-                SQL is at use then you have to preload an entire data set from 
the underlying database first. (Note,
-                that Ignite SQL can query disk if data is persisted in its own 
native persistence).
+                The read-through capability implies that a cache can read data 
from an external database if a record is
+                missing in memory. Ignite fully supports this capability for 
key-value APIs. However, if Ignite SQL is
+                at use then you have to preload an entire data set in memory 
first. (Note, that Ignite SQL can query
+                data on disk only if it's located in its native persistence).
             </p>
             <div class="page-heading">Learn More</div>
             <p>
@@ -142,7 +144,7 @@ under the License.
                 </a>
             </p>
             <p>
-                <a 
href="https://apacheignite.readme.io/docs/distributed-persistent-store"; 
target="docs">
+                <a href="/arch/persistence.html">
                     <b>Native Persistence <i class="fa 
fa-angle-double-right"></i></b>
                 </a>
             </p>


Reply via email to