| <!-- |
| ▄▄▄ ██▓███ ▄▄▄ ▄████▄ ██░ ██ ▓█████ ██▓ ▄████ ███▄ █ ██▓▄▄▄█████▓▓█████ |
| ▒████▄ ▓██░ ██▒▒████▄ ▒██▀ ▀█ ▓██░ ██▒▓█ ▀ ▓██▒ ██▒ ▀█▒ ██ ▀█ █ ▓██▒▓ ██▒ ▓▒▓█ ▀ |
| ▒██ ▀█▄ ▓██░ ██▓▒▒██ ▀█▄ ▒▓█ ▄ ▒██▀▀██░▒███ ▒██▒▒██░▄▄▄░▓██ ▀█ ██▒▒██▒▒ ▓██░ ▒░▒███ |
| ░██▄▄▄▄██ ▒██▄█▓▒ ▒░██▄▄▄▄██ ▒▓▓▄ ▄██▒░▓█ ░██ ▒▓█ ▄ ░██░░▓█ ██▓▓██▒ ▐▌██▒░██░░ ▓██▓ ░ ▒▓█ ▄ |
| ▓█ ▓██▒▒██▒ ░ ░ ▓█ ▓██▒▒ ▓███▀ ░░▓█▒░██▓░▒████▒ ░██░░▒▓███▀▒▒██░ ▓██░░██░ ▒██▒ ░ ░▒████▒ |
| ▒▒ ▓▒█░▒▓▒░ ░ ░ ▒▒ ▓▒█░░ ░▒ ▒ ░ ▒ ░░▒░▒░░ ▒░ ░ ░▓ ░▒ ▒ ░ ▒░ ▒ ▒ ░▓ ▒ ░░ ░░ ▒░ ░ |
| ▒ ▒▒ ░░▒ ░ ▒ ▒▒ ░ ░ ▒ ▒ ░▒░ ░ ░ ░ ░ ▒ ░ ░ ░ ░ ░░ ░ ▒░ ▒ ░ ░ ░ ░ ░ |
| ░ ▒ ░░ ░ ▒ ░ ░ ░░ ░ ░ ▒ ░░ ░ ░ ░ ░ ░ ▒ ░ ░ ░ |
| ░ ░ ░ ░░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ |
| --> |
| |
| <!-- |
| 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 much larger data sets from disk with no need for memory warm-ups on restarts."/> |
| |
| <title>In-Memory Database - Apache Ignite</title> |
| |
| <!--#include virtual="/includes/styles.html" --> |
| |
| <!--#include virtual="/includes/sh.html" --> |
| </head> |
| <body> |
| <div id="wrapper"> |
| <!--#include virtual="/includes/header.html" --> |
| |
| <main id="main" role="main" class="container"> |
| <section id="key-value-store" class="page-section"> |
| <h1 class="first">In-Memory Database With Transactional Persistence</h1> |
| <div class="col-sm-12 col-md-12 col-xs-12" style="padding:0 0 10px 0;"> |
| <div class="col-sm-6 col-md-6 col-xs-12" style="padding-left:0; padding-right:0"> |
| <p> |
| Apache Ignite, as an in-memory database, is a high-performant system-of-records that is capable |
| of storing and querying much larger data sets from disk with no need for memory warm-ups on |
| restarts. |
| </p> |
| <p> |
| That's a distributed database that scales horizontally across memory and disk tiers and supports |
| ACID transactions, ANSI SQL, key-value, compute, machine learning, and other data processing |
| APIs. |
| </p> |
| </div> |
| <div class="col-sm-6 col-md-5 col-xs-12" style="padding-right:0"> |
| <img class="img-responsive" src="/images/sql_database.png" width="400px" style="float:right;"/> |
| </div> |
| </div> |
| |
| <div class="page-heading">Memory-Centric Architecture</div> |
| <p> |
| Apache Ignite memory management system is memory-centric in the sense that most of the processing takes |
| place in-memory on cached data with a superset of data persisted to disk. Such an architecture lets |
| combine advantages of in-memory computing with the disk durability and strong consistency in one system. |
| </p> |
| <p> |
| When the native persistence is enabled, Ignite allows you to control how much memory space is to be |
| consumed by Ignite. Depending on the memory space available, Ignite either caches a full data set in |
| memory, thus, performing as fast as it can or keeps only the most frequently data there, pulling |
| missing records from disk. For instance, if there are 100 records and your memory capacity allows to |
| cache only 20 of them, then all 100 will be stored on disk, and only 20 will be cached in memory for |
| better performance. |
| </p> |
| |
| <p> |
| Overall, these are the primary advantages of Ignite memory-centric architecture: |
| </p> |
| <ul class="page-list" style="margin-bottom: 20px;"> |
| <li> |
| Flexible configuration of available memory and disk resources as long as Ignite allows storing a |
| superset of data on disk and only the most frequently used subsets in memory. |
| </li> |
| <li> |
| Ignite SQL queries and all other APIs can query both cached data sets as well as other data that |
| is kept on disk only. |
| </li> |
| <li> |
| Instantaneous cluster restarts. Ignite becomes fully operational from disk immediately upon cluster |
| startup or restarts. There is no need to preload or warm up the in-memory caches. |
| </li> |
| </ul> |
| |
| <div class="page-heading">Better High-Availability With Instantaneous Cluster Restarts</div> |
| |
| <p> |
| If you enable Ignite native persistence for your deployments, then there is no need to worry about |
| time-consuming memory warm-ups on cluster restarts. As long as Ignite persistence always keeps a |
| superset of data on disk and treats it as one of the storage layers, Ignite starts reading data from |
| the persistence as soon as the cluster becomes active. The memory tier is warmed up in the background |
| with the data Ignite accesses on disk for you. |
| </p> |
| |
| <div class="page-heading">Avoiding Network Impact on Performance With Co-located Processing</div> |
| |
| <p> |
| The disk-centric systems, like RDBMS or NoSQL, generally utilize the classic client-server approach, |
| when the data is transferred from the server to the client-side where it gets processed and then usually |
| discarded. This approach does not scale well as moving the data over the network is the most expensive |
| operation in a distributed system. |
| </p> |
| <p> |
| Many distributed databases, including Apache Ignite, support another more scalable approach called |
| co-located processing that eliminates or reduces network traffic significantly by running application |
| logic right on the cluster nodes. This approach executes data or compute-intensive logic, including |
| distributed SQL with JOINs, exactly where the data resides, thus, reducing data shuffling over the network. |
| </p> |
| |
| <div class="page-heading">Learn More</div> |
| <p> |
| <a href="/arch/memorycentric.html"> |
| <b>Memory-Centric Storage <i class="fa fa-angle-double-right"></i></b> |
| </a> |
| </p> |
| <p> |
| <a href="/arch/persistence.html"> |
| <b>Native Persistence <i class="fa fa-angle-double-right"></i></b> |
| </a> |
| </p> |
| <p> |
| <a href="/features/collocatedprocessing.html"> |
| <b>Co-located Processing <i class="fa fa-angle-double-right"></i></b> |
| </a> |
| </p> |
| <p> |
| <a href="/features/sql.html"> |
| <b>Distributed SQL <i class="fa fa-angle-double-right"></i></b> |
| </a> |
| </p> |
| <p> |
| <a href="/features/transactions.html"> |
| <b>ACID Transactions <i class="fa fa-angle-double-right"></i></b> |
| </a> |
| </p> |
| <p> |
| <a href="/features/machinelearning.html"> |
| <b>Machine and Deep Learning <i class="fa fa-angle-double-right"></i></b> |
| </a> |
| </p> |
| <p> |
| <a href="/features/datagrid.html"> |
| <b>Ignite as an In-Memory Data Grid <i class="fa fa-angle-double-right"></i></b> |
| </a> |
| </p> |
| <p> |
| <a href="/use-cases/in-memory-cache.html"> |
| <b>Ignite as an In-Memory Cache <i class="fa fa-angle-double-right"></i></b> |
| </a> |
| </p> |
| <p> |
| <a href="/use-cases/dih.html"> |
| <b>Ignite as a Digital Integration Hub <i class="fa fa-angle-double-right"></i></b> |
| </a> |
| </p> |
| </section> |
| </main> |
| |
| <!--#include virtual="/includes/footer.html" --> |
| </div> |
| <!--#include virtual="/includes/scripts.html" --> |
| </body> |
| </html> |