| <!-- |
| ▄▄▄ ██▓███ ▄▄▄ ▄████▄ ██░ ██ ▓█████ ██▓ ▄████ ███▄ █ ██▓▄▄▄█████▓▓█████ |
| ▒████▄ ▓██░ ██▒▒████▄ ▒██▀ ▀█ ▓██░ ██▒▓█ ▀ ▓██▒ ██▒ ▀█▒ ██ ▀█ █ ▓██▒▓ ██▒ ▓▒▓█ ▀ |
| ▒██ ▀█▄ ▓██░ ██▓▒▒██ ▀█▄ ▒▓█ ▄ ▒██▀▀██░▒███ ▒██▒▒██░▄▄▄░▓██ ▀█ ██▒▒██▒▒ ▓██░ ▒░▒███ |
| ░██▄▄▄▄██ ▒██▄█▓▒ ▒░██▄▄▄▄██ ▒▓▓▄ ▄██▒░▓█ ░██ ▒▓█ ▄ ░██░░▓█ ██▓▓██▒ ▐▌██▒░██░░ ▓██▓ ░ ▒▓█ ▄ |
| ▓█ ▓██▒▒██▒ ░ ░ ▓█ ▓██▒▒ ▓███▀ ░░▓█▒░██▓░▒████▒ ░██░░▒▓███▀▒▒██░ ▓██░░██░ ▒██▒ ░ ░▒████▒ |
| ▒▒ ▓▒█░▒▓▒░ ░ ░ ▒▒ ▓▒█░░ ░▒ ▒ ░ ▒ ░░▒░▒░░ ▒░ ░ ░▓ ░▒ ▒ ░ ▒░ ▒ ▒ ░▓ ▒ ░░ ░░ ▒░ ░ |
| ▒ ▒▒ ░░▒ ░ ▒ ▒▒ ░ ░ ▒ ▒ ░▒░ ░ ░ ░ ░ ▒ ░ ░ ░ ░ ░░ ░ ▒░ ▒ ░ ░ ░ ░ ░ |
| ░ ▒ ░░ ░ ▒ ░ ░ ░░ ░ ░ ▒ ░░ ░ ░ ░ ░ ░ ▒ ░ ░ ░ |
| ░ ░ ░ ░░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ |
| --> |
| |
| <!-- |
| 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" --> |
| |
| <!--#include virtual="/includes/sh.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/persistence.html">Native Persistence <i |
| class="fa fa-angle-double-right"></i></a></li> |
| <li><a href="/features/collocatedprocessing.html">Co-located Processing <i |
| class="fa fa-angle-double-right"></i></a></li> |
| <li><a href="/features/sql.html">Distributed SQL <i class="fa fa-angle-double-right"></i></a> |
| </li> |
| <li><a href="/features/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/datagrid.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> |