blob: f894b345d7ca1d0f5144abf18266ee5c652bf6a5 [file] [log] [blame]
<!--
▄▄▄ ██▓███ ▄▄▄ ▄████▄ ██░ ██ ▓█████ ██▓ ▄████ ███▄ █ ██▓▄▄▄█████▓▓█████
▒████▄ ▓██░ ██▒▒████▄ ▒██▀ ▀█ ▓██░ ██▒▓█ ▀ ▓██▒ ██▒ ▀█▒ ██ ▀█ █ ▓██▒▓ ██▒ ▓▒▓█ ▀
▒██ ▀█▄ ▓██░ ██▓▒▒██ ▀█▄ ▒▓█ ▄ ▒██▀▀██░▒███ ▒██▒▒██░▄▄▄░▓██ ▀█ ██▒▒██▒▒ ▓██░ ▒░▒███
░██▄▄▄▄██ ▒██▄█▓▒ ▒░██▄▄▄▄██ ▒▓▓▄ ▄██▒░▓█ ░██ ▒▓█ ▄ ░██░░▓█ ██▓▓██▒ ▐▌██▒░██░░ ▓██▓ ░ ▒▓█ ▄
▓█ ▓██▒▒██▒ ░ ░ ▓█ ▓██▒▒ ▓███▀ ░░▓█▒░██▓░▒████▒ ░██░░▒▓███▀▒▒██░ ▓██░░██░ ▒██▒ ░ ░▒████▒
▒▒ ▓▒█░▒▓▒░ ░ ░ ▒▒ ▓▒█░░ ░▒ ▒ ░ ▒ ░░▒░▒░░ ▒░ ░ ░▓ ░▒ ▒ ░ ▒░ ▒ ▒ ░▓ ▒ ░░ ░░ ▒░ ░
▒ ▒▒ ░░▒ ░ ▒ ▒▒ ░ ░ ▒ ▒ ░▒░ ░ ░ ░ ░ ▒ ░ ░ ░ ░ ░░ ░ ▒░ ▒ ░ ░ ░ ░ ░
░ ▒ ░░ ░ ▒ ░ ░ ░░ ░ ░ ▒ ░░ ░ ░ ░ ░ ░ ▒ ░ ░ ░
░ ░ ░ ░░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
-->
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="canonical" href="https://ignite.apache.org/use-cases/in-memory-database.html"/>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description"
content="Apache Ignite, as an in-memory database, is a high-performant system-of-records that is capable of
storing and querying large data sets from memory as well as disk without requiring to warm up the memory tier
on cluster restarts."/>
<title>In-Memory Database - Apache Ignite</title>
<!--#include virtual="/includes/styles.html" -->
</head>
<body>
<!--#include virtual="/includes/header.html" -->
<article>
<header>
<div class="container">
<h1><strong>In-Memory Database</strong> With Apache Ignite</h1>
</div>
</header>
<div class="container">
<p>
Apache Ignite® is a distributed in-memory database that scales horizontally across memory and disk tiers.
Ignite supports ACID transactions, ANSI-99 SQL, key-value, compute, machine learning, and other data
processing APIs. As a database, Ignite uses memory, disk or Intel® Optane™ as active storage tiers and
removes the need to cache all the data and the need for memory warm-ups.
</p>
<img class="diagram-right img-responsive" src="/images/svg-diagrams/database.svg" alt="In-Memory Database diagram" />
<h2>Multi-Tier Storage</h2>
<p>
Apache Ignite works with memory, disk, and Intel Optane as active storage tiers. This architecture combines,
in one system, the advantages of in-memory computing with disk durability and strong consistency.
</p>
<p>
When the native persistence is enabled, Ignite allows you to control the amount of memory it should
consume. Depending on the memory space available, Ignite either caches the full data set in memory or
keeps only the most frequently used data there and retrieves missing records from disk when needed.
For instance, if there are 100 records and the memory of your system can accommodate only 20 of them,
then all 100 records will be stored on disk and only 20 records will be cached in memory for better
performance.
</p>
<p>
The following are the primary advantages of Ignite memory management architecture:
</p>
<ul class="page-list">
<li>
Multi-tiered storage - Ignite treats disk as an active storage layer allowing to
cache a subset of the data in memory and query both in-memory and disk-only records with SQL and
all other available APIs.
</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>Better High-Availability With Instantaneous Cluster Restarts</h2>
<p>
Ignite native persistence takes away the trouble of time-consuming memory warm-ups on cluster restarts.
When the native persistence is enabled, Ignite stores a superset of data on disk treats it as one of the
storage layers. Hence, Ignite starts reading data from the persistence layer as soon as the cluster becomes
active. As you begin to run the queries, the memory tier is warmed up in the background with the data Ignite
accesses from the disk.
</p>
<h2>Avoiding Network Impact on Performance With Co-located Processing</h2>
<p>
Disk-centric systems, like RDBMS or NoSQL, generally use the classic client-server approach when
transferring data from the server to the client-side where it gets processed and then discarded. This
approach does not scale very well because moving data over the network is the most expensive operation
in a distributed system.
</p>
<p>
Many distributed databases, including Apache Ignite, support a more scalable approach called co-located
processing, which eliminates or significantly reduces network traffic by running application logic right
on the cluster nodes. This approach executes data or compute-intensive queries, including distributed
SQL with JOINs, exactly where the data resides.
</p>
<div class="jumbotron jumbotron-fluid">
<div class="container">
<div class="title display-6">Learn More</div>
<hr class="my-4">
<div class="row">
<div class="col-sm-6">
<ul>
<li><a href="/arch/multi-tier-storage.html">Multi-Tier Storage <i
class="fa fa-angle-double-right"></i></a></li>
<li><a href="/arch/native-persistence.html">Native Persistence <i
class="fa fa-angle-double-right"></i></a></li>
<li><a href="/features/collocated-processing.html">Co-located Processing <i
class="fa fa-angle-double-right"></i></a></li>
<li><a href="/features/sql.html">Distributed SQL <i class="fas fa-angle-double-right"></i></a>
</li>
<li><a href="/features/acid-transactions.html">ACID Transactions <i
class="fa fa-angle-double-right"></i></a></li>
</ul>
</div>
<div class="col-sm-6">
<ul>
<li><a href="/features/machinelearning.html">Machine and Deep Learning <i
class="fa fa-angle-double-right"></i></a></li>
<li><a href="/use-cases/in-memory-data-grid.html">Ignite as an In-Memory Data Grid <i
class="fa fa-angle-double-right"></i></a></li>
<li><a href="/use-cases/in-memory-cache.html">Ignite as an In-Memory Cache <i
class="fa fa-angle-double-right"></i></a></li>
<li><a href="/use-cases/digital-integration-hub.html">Ignite as a Digital Integration Hub <i
class="fa fa-angle-double-right"></i></a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
</article>
<!--#include virtual="/includes/footer.html" -->
<!--#include virtual="/includes/scripts.html" -->
</body>
</html>