Author: dmagda
Date: Fri Mar 13 15:56:03 2020
New Revision: 1875164
URL: http://svn.apache.org/viewvc?rev=1875164&view=rev
Log:
recovered edits by Prachi for multi-tier storage, persistence and sql
Modified:
ignite/site/branches/ignite-redisign/arch/multi-tier-storage.html
ignite/site/branches/ignite-redisign/arch/persistence.html
ignite/site/branches/ignite-redisign/features/sql.html
Modified: ignite/site/branches/ignite-redisign/arch/multi-tier-storage.html
URL:
http://svn.apache.org/viewvc/ignite/site/branches/ignite-redisign/arch/multi-tier-storage.html?rev=1875164&r1=1875163&r2=1875164&view=diff
==============================================================================
--- ignite/site/branches/ignite-redisign/arch/multi-tier-storage.html (original)
+++ ignite/site/branches/ignite-redisign/arch/multi-tier-storage.html Fri Mar
13 15:56:03 2020
@@ -33,141 +33,199 @@ under the License.
<!DOCTYPE html>
<html lang="en">
<head>
-<link rel="canonical"
href="https://ignite.apache.org/arch/multi-tier-storage.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"/>
-<title>Multi-Tier Storage - Apache Ignite</title>
-<meta name="description"
- content="Apache Ignite multi-tier storage uses memory, disk and
Intel® Optane⢠as active storage tiers. Speed of
- memory with the consistency of disk-based databases and no need for
memory warm-ups on restarts."/>
+ <link rel="canonical"
href="https://ignite.apache.org/arch/multi-tier-storage.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"/>
-<!--#include virtual="/includes/styles.html" -->
+ <title>Multi-Tier Storage - Apache Ignite</title>
-<!--#include virtual="/includes/sh.html" -->
+ <meta name="description"
+ content="Apache Ignite multi-tier storage uses memory, disk, and
Intel® Optane⢠as active storage tiers to
+ provide the speed of memory with the consistency of disk-based
databases without the need for memory
+ warm-ups on restarts."/>
+
+ <!--#include virtual="/includes/styles.html" -->
+
+ <!--#include virtual="/includes/sh.html" -->
</head>
<body>
-<!--#include virtual="/includes/header.html" -->
+
+ <!--#include virtual="/includes/header.html" -->
<article>
- <div class="container">
-
- <h1>Multi-Tier <strong>Storage</strong></h1>
-
- <p> Apache Ignite is designed to work with memory, disk and Intel®
Optane⢠as active storage tiers.
- The memory tier allows to use DRAM and Intel® Optane⢠operating
in the Memory Mode for data storage and processing needs.
- The disk tier is optional with the support of two options -- you can
persist data in an external database or keep it in the Ignite native
persistence. SSD, Flash, HDD or Intel® Optane⢠operating in the AppDirect
Mode can be used as a storage device. </p>
- <img class="img-fluid diagram-right" src="/images/durable_memory.png" />
-
- <p> Ignite takes full control of its memory tier by allocating and
managing off-heap regions. Each Ignite
- server node allocates memory regions during bootstrap, splits the
regions into pages, and keeps data
- records with indexes there. Java heap is used to keep temporary
objects such as queries results sets,
- metrics samples, objects generated by your application code. All these
objects are garbage collected
- eventually. </p>
- <p> If you select the native persistence as the disk tier, then most of
the processing will still
- take place in memory on cached data, but, with a full copy stored on
disk. If any record is
- missing in memory, Ignite will read it from disk, allowing you to
persist much larger data sets
- than you can cache in memory. That also eliminates the need for
time-consuming memory warm-ups
- on restarts. As soon as your cluster reconnects after a restart,
Ignite will serve most of the
- data from disk warming the memory tier up in the background. </p>
-
- <h2>Multi-Tier Storage Usage Modes <a
href="/arch/multi-tier-storage.html#storage-usage-modes"><i class="fa
fa-anchor"></i></a> </h2>
-
- <p>Below you can see primary modes for multi-tier storage usage and
configuration:</p>
-
- <table class="table table-bordered table-striped" name="Deployment
Options Features">
- <thead>
- <tr>
- <th width="35%" class="left">Mode</th>
- <th>Description</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td class="left">In-Memory</td>
- <td><p> The whole data set is available in memory only. In order
to survive node failures, it is
- recommended to keep at least one backup copy of the data
across the cluster. DRAM or Intel®
- Optane⢠operating in the Memory Mode can be used as a
storage device. </p>
- <p> <strong>Use cases</strong>: general in-memory caching,
high-performance
- computing, web-session caching, real-time processing of
continuous data streams. </p></td>
- </tr>
- <tr>
- <td class="left">In-Memory + External Database</td>
- <td><p> Ignite is deployed as a distributed caching layer on top
of an existing external database.
- This mode is for the acceleration of disk-based databases and
your services with APIs that
- interact with them. </p>
- <p> <strong>Use cases</strong>: acceleration of services and
APIs with write-through/behind
- capability, to an external database (aka. in-memory data
grid). </p></td>
- </tr>
- <tr>
- <td class="left">In-Memory Cache + Native Persistence</td>
- <td><p> 100% of data is persisted to disk, and the same or smaller
amount is cached in memory.
- The more data is cached, the faster is the performance. The
disk serves as the primary
- storage that survives any cluster failures and restarts. No
need for memory warm-ups on
- restarts as long as Ignite can serve data from disk. SSD,
Flash, HDD or Intel®
- Optane⢠operating in the AppDirect Mode can be used as a
storage device. </p>
- <p> <strong>Use cases</strong>: Ignite as an in-memory database
or digital integration hub
- with the active persistence layer. </p></td>
- </tr>
- </tbody>
- </table>
-
-
- <h2>Partitioning & Replication <a
href="/arch/multi-tier-storage.html#partitioning"><i class="fa
fa-anchor"></i></a> </h2>
- <p>Depending on the configuration, Ignite can both partition or
replicate data across the cluster. With the replicated mode, each cluster node
keeps a full copy of the data that is advantageous for frequently accessed
dictionaries. As for the partitioned mode, Ignite spreads the data across all
the cluster nodes evenly, allowing to store much more than a single machine can
fit in.</p>
-
- <h2>Durability and Consistency <a
href="/arch/multi-tier-storage.html#durability"><i class="fa
fa-anchor"></i></a> </h2>
- <p>Ignite provides strong ACID durability guarantees to the data:</p>
- <ul class="page-list" style="margin-bottom: 20px;">
- <li>Committed transactions always survive failures.</li>
- <li>The cluster can always be recovered to the latest successfully
committed transaction.</li>
- </ul>
-
+ <div class="container">
+ <h1>Multi-Tier <strong>Storage</strong></h1>
- <h2>Write-Ahead Logging and Checkpointing <a
href="/arch/multi-tier-storage.html#write-ahead-log"><i class="fa
fa-anchor"></i></a></h2>
- <p> If Ignite native persistence is selected as a disk tier, then
every time a record is updated in memory, the change is added to the
write-ahead log (WAL). The purpose of the WAL is to propagate updates to disk
in the fastest way possible and provide a consistent recovery mechanism that
supports full cluster failures. </p>
- <p> As WAL grows, it periodically gets checkpointed to the main
storage. Checkpointing is the process of copying dirty pages from the memory
tier to the partition files on disk. A dirty page is a page that was updated in
memory, was appended to WAL, but was not written to a respective partition file
on disk yet. </p>
-
- <div class="jumbotron jumbotron-fluid">
- <div class="container">
- <div class="display-6 title">Learn More</div>
- <hr class="my-4">
- <div class="row">
- <div class="col-6 col-xs-12">
- <ul>
- <li>
- <p><a
href="https://cwiki.apache.org/confluence/display/IGNITE/Ignite+Durable+Memory+-+under+the+hood"
target="docs">Multi-Tier Storage Implementation Details <i class="fa
fa-angle-double-right"></i></a></p>
- </li>
- <li>
- <p><a href="/arch/persistence.html"> Native Persistence <i
class="fa fa-angle-double-right"></i></a></p>
- </li>
- <li>
- <p><a href="/features/datagrid.html"> Ignite as an
In-Memory Data Grid <i class="fa fa-angle-double-right"></i></a></p>
- </li>
- </ul>
- </div>
- <div class="col-6 col-xs-12">
- <ul>
- <li>
- <p><a href="/use-cases/in-memory-database.html"> Ignite as
an In-Memory Database <i class="fa fa-angle-double-right"></i></a></p>
- </li>
- <li>
- <p><a href="/use-cases/dih.html"> Ignite as a Digital
Integration Hub <i class="fa fa-angle-double-right"></i></a></p>
- </li>
- <li>
- <p><a href="/use-cases/hpc.html"> Ignite for High
Performance Computing <i class="fa fa-angle-double-right"></i></a></p>
- </li>
- </ul>
+
+ <p>
+ Apache Ignite is designed to work with memory, disk, and Intel®
Optane⢠as active storage tiers.
+ The memory tier allows using DRAM and Intel® Optane⢠operating
in the Memory Mode for data storage
+ and processing needs. The disk tier is optional with the support
of two options -- you can
+ persist data in an external database or keep it in the Ignite
native persistence. SSD, Flash,
+ HDD, or Intel® Optane⢠operating in the AppDirect Mode can be
used as a storage device.
+ </p>
+
+ <img class="img-responsive diagram-right"
src="/images/durable_memory.png" />
+ <p>
+ Ignite takes full control of its memory tier by allocating and
managing off-heap regions. Each Ignite
+ server node allocates memory regions during bootstrap, splits the
regions into pages, and keeps data
+ records with indexes in those pages. Java heap is used to keep
temporary objects such as query result
+ sets, metrics samples, and objects generated by your application
code. All these objects are garbage
+ collected eventually.
+ </p>
+ <p>
+ If you select the native persistence as the disk tier, then most
of the processing will still take place
+ in memory on cached data, but, with a full copy stored on disk. If
any record is missing in memory,
+ Ignite will read it from disk, allowing you to persist much larger
data sets than you can cache in memory.
+ This also eliminates the need for time-consuming memory warm-ups
on restarts. As soon as your cluster
+ reconnects after a restart, Ignite will serve most of the data
from disk warming up the memory tier in
+ the background.
+ </p>
+
+ <h2>Multi-Tier Storage Usage Modes</h2>
+
+ <table class="table table-bordered table-striped" name="Deployment
Options Features">
+ <thead>
+ <tr>
+ <th width="35%" class="left">Mode</th>
+ <th>Description</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td class="left">In-Memory</td>
+ <td>
+ <p>
+ The whole data set is available in memory only. In
order to survive node failures, we
+ recommend keeping at least one backup copy of the
data across the cluster. DRAM or
+ Intel® Optane⢠operating in the Memory Mode can
be used as a storage device.
+ </p>
+
+ <p>
+ <strong>Use cases</strong>: general in-memory
caching, high-performance
+ computing, web-session caching, real-time
processing of continuous data streams.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td class="left">In-Memory + External Database</td>
+ <td>
+ <p>
+ Ignite is deployed as a distributed caching layer
on top of an existing external database.
+ This mode is for accelerating disk-based databases
and your services with APIs that
+ interact with them.
+ </p>
+
+ <p>
+ <strong>Use cases</strong>: acceleration of
services and APIs with write-through and
+ write-behind capability, to an external database.
+ </p>
+ </td>
+ </tr>
+ <tr>
+ <td class="left">In-Memory Cache + Native Persistence</td>
+ <td>
+ <p>
+ 100% of data is persisted to disk, and the same or
smaller amount is cached in memory. The
+ more data is cached, the faster is the
performance. The disk serves as the primary storage
+ that survives any cluster failures and restarts.
There is no need for memory warm-ups on
+ restarts since Ignite can serve data from disk.
SSD, Flash, HDD or Intel® Optane⢠operating
+ in the AppDirect Mode can be used as a storage
device.
+ </p>
+
+ <p>
+ <strong>Use cases</strong>: Ignite as an in-memory
database or digital integration hub
+ with the active persistence layer.
+ </p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <h2 id="partitioning">
+ Partitioning & Replication
+ </h2>
+ <p>
+ Depending on the configuration, Ignite can both partition or
replicate data across the cluster. In the
+ replicated mode, each cluster node keeps a full copy of the
data, but the size of a replicated cache is
+ limited by the amount of memory available on the node. In the
partitioned mode, Ignite spreads the data
+ across all the cluster nodes evenly, allowing you to store
much more than what can fit in a single machine.
+ </p>
+
+ <h2 id="durability">
+ Durability and Consistency
+
+ </h2>
+ <p>
+ Ignite provides the following ACID guarantees across the
cluster:
+ </p>
+
+ <ul >
+ <li>Committed transactions always survive failures.</li>
+ <li>
+ The cluster can always be recovered to the latest
successfully committed transaction.
+ </li>
+ </ul>
+
+
+ <h2 id="write-ahead-log">
+ Write-Ahead Logging and Checkpointing
+
+ </h2>
+ <p>
+ If Ignite native persistence is selected as a disk tier, then
every time a record is updated in memory,
+ the change is added to the write-ahead log (WAL). The purpose
of the WAL is to propagate updates to disk
+ in the fastest way possible and provide a consistent recovery
mechanism that supports full cluster failures.
+ </p>
+
+ <p>
+ As WAL grows, it periodically gets checkpointed to the main
storage. Checkpointing is the process of
+ copying dirty pages from the memory tier to the partition
files on disk. A dirty page is a page that was
+ updated in memory, was appended to WAL, but was not written to
the respective partition file on disk yet.
+ </p>
+
+ <div class="jumbotron jumbotron-fluid">
+ <div class="container">
+ <div class="display-6 title">Learn More</div>
+ <hr class="my-4">
+ <div class="row">
+ <div class="col-6 col-xs-12">
+ <ul>
+ <li>
+ <p><a
href="https://cwiki.apache.org/confluence/display/IGNITE/Ignite+Durable+Memory+-+under+the+hood"
target="docs">Multi-Tier Storage Implementation Details <i class="fa
fa-angle-double-right"></i></a></p>
+ </li>
+ <li>
+ <p><a href="/arch/persistence.html"> Native
Persistence <i class="fa fa-angle-double-right"></i></a></p>
+ </li>
+ <li>
+ <p><a href="/features/datagrid.html"> Ignite as an
In-Memory Data Grid <i class="fa fa-angle-double-right"></i></a></p>
+ </li>
+ </ul>
+ </div>
+ <div class="col-6 col-xs-12">
+ <ul>
+ <li>
+ <p><a href="/use-cases/in-memory-database.html">
Ignite as an In-Memory Database <i class="fa fa-angle-double-right"></i></a></p>
+ </li>
+ <li>
+ <p><a href="/use-cases/dih.html"> Ignite as a
Digital Integration Hub <i class="fa fa-angle-double-right"></i></a></p>
+ </li>
+ <li>
+ <p><a href="/use-cases/hpc.html"> Ignite for High
Performance Computing <i class="fa fa-angle-double-right"></i></a></p>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div>
</div>
</div>
- </div>
- </div>
-
- </div>
- </article>
-<!--#include virtual="/includes/footer.html" -->
+ </article>
+
+ <!--#include virtual="/includes/footer.html" -->
+
<!--#include virtual="/includes/scripts.html" -->
</body>
</html>
Modified: ignite/site/branches/ignite-redisign/arch/persistence.html
URL:
http://svn.apache.org/viewvc/ignite/site/branches/ignite-redisign/arch/persistence.html?rev=1875164&r1=1875163&r2=1875164&view=diff
==============================================================================
--- ignite/site/branches/ignite-redisign/arch/persistence.html (original)
+++ ignite/site/branches/ignite-redisign/arch/persistence.html Fri Mar 13
15:56:03 2020
@@ -55,67 +55,66 @@ under the License.
<article>
<div class="container">
<h1>Apache Ignite <strong>Native Persistence</strong></h1>
- <p>
+ <img class="img-responsive" src="/images/native_persistence.png"
alt="Apache Ignite Native Persistence"/></a>
+ <p>
Even though Apache Ignite is broadly used as a caching layer on
top of external databases, it
- comes with its native persistence that is a distributed, ACID, and
SQL-compliant disk-based
- store.
- The native persistence integrates into the Ignite multi-tier
storage as a disk tier that can
- be turned on to let Ignite store more data on disk than it can
cache in memory and to enable
+ comes with its native persistence - a distributed, ACID, and
SQL-compliant disk-based
+ store. The native persistence integrates into the Ignite
multi-tier storage as a disk tier that
+ can be turned on to let Ignite store more data on disk than it can
cache in memory and to enable
fast cluster restarts.
</p>
<p>
With native persistence enabled, Ignite always stores a superset
of data on disk, and caches as
- much as
- it can in memory. For example, if your application stores 200
records in an Ignite cluster and
- your
- memory capacity allows caching only 150 of them, then those 150
records will be served from
- memory while
- the rest 50 from disk whenever the application requests them.
+ much as it can in memory. For example, if your application needs
to store 200 records in an
+ Ignite cluster and the memory capacity allows caching only 150
records, then all 200 will be
+ stored on disk, out of which 150 will be served from memory while
the rest 50 from disk whenever
+ the application requests them.
</p>
- <a href="/images/native_persistence.png"><img class="img-responsive
diagram-right" src="/images/native_persistence.png" alt="Apache Ignite Native
Persistence"/></a>
-
-
- <h2>Ignite Persistence vs. External Databases</h2>
- <p>
- The native persistence has the following advantages over external
databases that can also be used as
- the disk tier in Ignite:
- </p>
- <ul class="page-list" >
- <li>
- An ability to cache a subset of the data - the native
persistence always stores 100% of data on
- disk and lets you cache as much as required in memory.
- </li>
- <li>
- An ability to query data from disk - if any record is missing in
memory, then Ignite takes it from
- disk. This is supported for all the APIs including SQL.
- </li>
- <li>
- Instantaneous cluster restarts - Ignite becomes fully
operational from disk upon a cluster
- startup or restarts without requiring to preload or warm up the
memory tier.
- </li>
- </ul>
-
- <h2>Write-Ahead Logging and Checkpointing</h2>
- <p>
- If Ignite native persistence is
selected as a disk tier, then every time a record is updated in memory, the
change is added to the write-ahead log (WAL). The purpose of the WAL is to
propagate updates to disk in the fastest way possible and provide a consistent
recovery mechanism that supports full cluster failures.</p>
-
- <p>As WAL grows, it periodically gets
checkpointed to the main storage. Checkpointing is the process of copying dirty
pages from the memory tier to the partition files on disk. A dirty page is a
page that was updated in memory, was appended to WAL, but was not written to a
respective partition file on disk yet.
- </p>
-
+
+ <h2>Ignite Persistence vs. External Databases</h2>
+ <p>
+ The native persistence has the following advantages over external
databases:
+ </p>
+ <ul>
+ <li>
+ The ability to cache a subset of the data - the native
persistence always stores 100% of data on
+ disk and lets you cache as much as required in memory.
+ </li>
+ <li>
+ The ability to query data from disk - if any record is missing
in memory, then Ignite reads it from
+ disk. This is supported for all the APIs including SQL.
+ </li>
+ <li>
+ Instantaneous cluster restarts - Ignite becomes fully
operational from disk upon a cluster
+ startup or restarts without requiring to preload or warm up
the memory tier.
+ </li>
+ </ul>
- <h2>Durability</h2>
- <p>
- Ignite provides strong ACID durability guarantees to the data:
- </p>
+ <h2>Write-Ahead Logging and Checkpointing</h2>
+ <p>
+ If Ignite native persistence is selected as a disk tier, then
every time a record is updated in memory,
+ the change is added to the write-ahead log (WAL). The purpose of
the WAL is to propagate updates to disk
+ in the fastest way possible and provide a consistent recovery
mechanism that supports full cluster
+ failures.
- <ul class="page-list" >
- <li>
- Committed transactions always survive failures.
- </li>
- <li>
- The cluster can always be recovered to the latest
successfully committed transaction.
- </li>
- </ul>
+ As WAL grows, it periodically gets checkpointed to the main
storage. Checkpointing is the process of
+ copying dirty pages from the memory tier to the partition files on
disk. A dirty page is a page that was
+ updated in memory, was appended to WAL, but was not written to the
respective partition file on disk yet.
+ </p>
+
+ <h2>Durability</h2>
+ <p>
+ Ignite native persistence provides the following ACID guarantees
across the cluster:
+ </p>
+
+ <ul>
+ <li>
+ Committed transactions always survive failures.
+ </li>
+ <li>
+ The cluster can always be recovered to the latest successfully
committed transaction.
+ </li>
+ </ul>
<div class="jumbotron jumbotron-fluid">
<div class="container">
@@ -150,9 +149,7 @@ under the License.
</div>
</div>
</div>
- </div>
-
-
+ </div>
</div><!-- end .container -->
</article>
<!--#include virtual="/includes/footer.html" -->
Modified: ignite/site/branches/ignite-redisign/features/sql.html
URL:
http://svn.apache.org/viewvc/ignite/site/branches/ignite-redisign/features/sql.html?rev=1875164&r1=1875163&r2=1875164&view=diff
==============================================================================
--- ignite/site/branches/ignite-redisign/features/sql.html (original)
+++ ignite/site/branches/ignite-redisign/features/sql.html Fri Mar 13 15:56:03
2020
@@ -48,100 +48,105 @@ under the License.
<!--#include virtual="/includes/sh.html" -->
</head>
<body>
-<!--#include virtual="/includes/header.html" -->
+
+ <!--#include virtual="/includes/header.html" -->
<article>
- <div class="container">
- <h1>Distributed ANSI SQL <strong>With JOINs</strong></h1>
-
- <p>
- Apache Ignite comes with ANSI-99 compliant, horizontally scalable,
and fault-tolerant SQL engine.
- That allows you to interact with Ignite as with a regular SQL
database using JDBC, ODBC drivers,
- or native SQL APIs available for Java, C#, C++, Python, and other
programming languages.
- </p>
- <p>
- Ignite supports all DML commands, including SELECT, UPDATE, INSERT,
and DELETE
- queries as well as a subset of DDL commands relevant for distributed
systems.
- </p>
-
- <img class="img-responsive diagram-right" alt="SQL Database diagram"
src="/images/sql_database.png" />
-
- <h2>SQL Joins</h2>
- <p>
- Ignite fully supports distributed joins for advanced querying
needs. A distributed join is a SQL statement
- with a join clause that combines two or more tables. If the
tables are joined on the partitioning column
- (affinity or primary key), the join is called a co-located
join. Otherwise, if the tables were not
- co-located initially, then Ignite does the join in a
non-colocated fashion. The co-located joins avoid
- data shuffling between nodes, minimizes network usage, thus,
performing much faster than a non
- co-located counterpart.
- </p>
-
- <h2>SQL and In-Memory Mode</h2>
- <p>
- Apache Ignite can function in a pure in-memory mode when all
data and indexes are located solely in memory.
- In this mode, Ignite SQL shows the highest performance as long
as all the data is served from memory,
- and there is no need to update the disk tier.
- </p>
-
- <h2>SQL and Native Persistence</h2>
- <p>
- In this mode, Ignite persists 100% of data and indexes in the
native persistence while caching as much
- as possible in memory. Ignite SQL engine does not require to
cache an entire data set in memory to
- operate correctly. If the engine finds that any record is not
cached, then it will be taken from disk.
- Your application merely executes SQL queries, and Ignite gets
the records from both memory and disk
- automatically.
- </p>
- <p>
- On cluster restarts, Ignite reads data and indexes from disk,
eliminating the need for memory warm-up.
- That significantly decreases the time of any potential
downtimes.
- </p>
-
- <h2>SQL and 3rd Party Databases</h2>
- <p>
- Ignite can be used as a caching layer for external databases
such as RDBMS, NoSQL, or Hadoop.
- In this mode, the Ignite SQL engine requires to cache all the
data needed for SQL queries in memory as
- long as the engine does not support federated queries at the
moment.
- </p>
-
- <p>
- If federate queries between Ignite and an external database
are required, then you can consider Ignite
- integration for Spark -- DataFrames API can join data stored
in Ignite and other systems.
- </p>
-
- <div class="jumbotron jumbotron-fluid">
- <div class="container">
- <div class="display-6 title">Learn More</div>
- <hr class="my-4">
- <div class="row">
- <div class="col-6 col-xs-12">
- <ul>
- <li>
- <p><a
href="https://apacheignite-sql.readme.io/docs/how-ignite-sql-works"
target="docs">Ignite SQL implementation details <i class="fa
fa-angle-double-right"></i></a></p>
- </li>
- <li>
- <p><a
href="https://apacheignite-sql.readme.io/docs/distributed-joins"
target="docs">Distributed JOINs <i class="fa fa-angle-double-right"></i></a></p>
- </li>
- <li>
- <p><a
href="https://apacheignite-sql.readme.io/docs/sql-reference-overview"
target="docs">SQL Reference <i class="fa fa-angle-double-right"></i></a></p>
- </li>
- </ul>
- </div>
- <div class="col-6 col-xs-12">
- <ul>
- <li>
- <p><a href="/use-cases/spark-acceleration.html">Apache
Ignite and Spark <i class="fa fa-angle-double-right"></i></a></p>
- </li>
- <li>
- <p><a href="/arch/multi-tier-storage.html">Multi-Tier
Storage <i class="fa fa-angle-double-right"></i></a></p>
- </li>
- </ul>
- </div>
- </div>
- </div>
- </div>
-
+ <div class="container">
+ <h1>Distributed ANSI SQL <strong>With JOINs</strong></h1>
+
+ <img class="img-responsive diagram-right" alt="SQL Database diagram"
src="/images/sql_database.png" />
+ <p>
+ Apache Ignite comes with ANSI-99 compliant, horizontally scalable,
and fault-tolerant SQL engine
+ allowing you to interact with Ignite as with a regular SQL
database using JDBC, ODBC drivers, or
+ native SQL APIs available for Java, C#, C++, Python, and other
programming languages.
+
+ </p>
+ <p>
+ Ignite supports all DML commands, including SELECT, UPDATE,
INSERT, and DELETE queries as well
+ as a subset of DDL commands relevant for distributed systems.
+ </p>
+
+ <h2>SQL Joins</h2>
+ <p>
+ Ignite fully supports distributed joins for advanced querying
needs. A distributed join is a SQL statement
+ with a join clause that combines two or more tables. If the tables
are joined on the partitioning column
+ (affinity or primary key), the join is called a co-located join.
Otherwise, if the tables were not
+ co-located initially, then Ignite does the join in a non-colocated
fashion. Co-located joins avoid data
+ shuffling between nodes and minimize network usage, thus,
performing much faster than a non-colocated
+ counterpart.
+ </p>
+
+ <h2>SQL and In-Memory Mode</h2>
+ <p>
+ Apache Ignite can function in a pure in-memory mode when all the
data and indexes are located solely in
+ memory. In this mode, Ignite SQL shows the highest performance
since all the data is served from memory
+ with no usage of the disk tier at all.
+ </p>
+
+ <h2>SQL and Native Persistence</h2>
+ <p>
+ In this mode, Ignite persists 100% of data and indexes in the
native persistence while caching as much
+ as possible in memory. Ignite SQL engine does not require to cache
an entire data set in memory to
+ operate correctly. If the engine finds that a record is not
cached, then it will read the record from
+ disk. Your application only executes SQL queries, and Ignite gets
the records from both memory and disk
+ automatically.
+ </p>
+ <p>
+ On cluster restarts, Ignite reads data and indexes from disk,
eliminating the need for memory warm-up,
+ which significantly decreases the time of any potential downtimes.
+
+ </p>
+
+ <h2>SQL and 3rd Party Databases</h2>
+ <p>
+ Ignite can be used as a caching layer for external databases such
as RDBMS, NoSQL, or Hadoop. In this mode,
+ the Ignite SQL engine requires caching all the data needed for SQL
queries in memory since the engine
+ currently does not support federated queries.
+ </p>
+
+ <p>
+ If federated queries between Ignite and an external database are
required, then you can consider Ignite
+ integration for Spark, where the DataFrames API can join the data
stored in Ignite and other systems.
+ </p>
+
+ <div class="jumbotron jumbotron-fluid">
+ <div class="container">
+ <div class="display-6 title">Learn More</div>
+ <hr class="my-4">
+ <div class="row">
+ <div class="col-6 col-xs-12">
+ <ul>
+ <li>
+ <p><a
href="https://apacheignite-sql.readme.io/docs/how-ignite-sql-works"
target="docs">Ignite SQL implementation details <i class="fa
fa-angle-double-right"></i></a></p>
+ </li>
+ <li>
+ <p><a
href="https://apacheignite-sql.readme.io/docs/distributed-joins"
target="docs">Distributed JOINs <i class="fa fa-angle-double-right"></i></a></p>
+ </li>
+ <li>
+ <p><a
href="https://apacheignite-sql.readme.io/docs/sql-reference-overview"
target="docs">SQL Reference <i class="fa fa-angle-double-right"></i></a></p>
+ </li>
+ </ul>
+ </div>
+ <div class="col-6 col-xs-12">
+ <ul>
+ <li>
+ <p><a
href="/use-cases/spark-acceleration.html">Apache Ignite and Spark <i class="fa
fa-angle-double-right"></i></a></p>
+ </li>
+ <li>
+ <p><a
href="/arch/multi-tier-storage.html">Multi-Tier Storage <i class="fa
fa-angle-double-right"></i></a></p>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+
</div>
</article>
+
+
<!--#include virtual="/includes/footer.html" -->
+
<!--#include virtual="/includes/scripts.html" -->
</body>
</html>