blob: 565a0c7a7ea3ca5b4783832b364c368949eb18e0 [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/whatisignite.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>What is Apache Ignite</title>
<meta name="description" content="Apache Ignite components and facts: in-memory and persistent modes, distributed SQL
database, in-memory data grid, in-memory database, ACID transactions, collocated processing, and more..."/>
<!--#include virtual="/includes/styles.html" -->
<!--#include virtual="/includes/sh.html" -->
</head>
<body>
<!--#include virtual="/includes/header.html" -->
<article>
<header> <div class="container">
<h1>IGNITE <strong>FACTS</strong></h1>
</div>
</header>
<div class="container">
<div class="row">
<div class="col-md-6 fact-question">
<h3 class="ignite-facts-question">Is Ignite a distributed cache?</h3>
<p>
<strong>Yes</strong>. When native persistence is disabled, Ignite becomes a distributed in-memory cache
with support for JCache specification (JSR 107), distributed ACID transactions,
SQL queries, on-disk persistence, and more.
</p>
<p>Read more: <a href="/use-cases/caching/database-caching.html" aria-label="Database Caching">Database Caching</a></p>
</div>
<div class="col-md-6 fact-question">
<h3 class="ignite-facts-question">Is Ignite a distributed database?</h3>
<p>
<strong>Yes</strong>. Ignite is a strongly consistent distributed database. Data in Ignite is
stored in-memory and/or on-disk and is either partitioned or replicated across a cluster of
multiple nodes. This provides for scalability, performance, and resiliency.
</p>
<p>Read more: <a href="/use-cases/database/distributed-database.html" aria-label="Distributed Database">Distributed Database</a></p>
</div>
<div class="col-md-6 fact-question">
<h3 class="ignite-facts-question">Is Ignite an in-memory database?</h3>
<p>
<strong>Yes</strong>. Even though Ignite memory-centric storage works well in-memory and on-disk, the disk
persistence can be disabled and Ignite can act as a distributed in-memory database, with
support for SQL and distributed joins.
</p>
<p>Read more: <a href="/use-cases/database/in-memory-database.html" aria-label="In-Memory Database">In-Memory Database</a></p>
</div>
<div class="col-md-6 fact-question">
<h3 class="ignite-facts-question">Is Ignite an in-memory data grid?</h3>
<p>
<strong>Yes</strong>. Ignite is a full-featured distributed key-value data grid, which can be used either in
memory-only mode or with Ignite native persistence. It can also automatically integrate with any 3rd party databases,
including any RDBMS or NoSQL stores.
</p>
<p>Read more: <a href="/use-cases/datagrid.html" aria-label="In-Memory DataGrid">In-Memory Data Grid</a></p>
</div>
<div class="col-md-6 fact-question">
<h3 class="ignite-facts-question">Is Ignite an SQL database?</h3>
<p>
<strong>Not fully</strong>. Although Ignite aims to behave like any other relational SQL database,
there are differences in how Ignite handles constraints and indexes. Ignite supports primary and
secondary indexes, however, the uniqueness can only be enforced for the primary indexes.
Ignite also does not support foreign key constraints.
</p>
<p>Read more: <a href="/use-cases/database/sql-database.html" aria-label="SQL Database">SQL Database</a></p>
</div>
<div class="col-md-6 fact-question">
<h3 class="ignite-facts-question">Is Ignite a disk or memory-only storage?</h3>
<p>
<strong>Both</strong>. Native persistence in Ignite can be turned on and off. This allows Ignite to store
data sets bigger than can fit in the available memory. Essentially, smaller operational data sets
can be stored in-memory only, and larger data sets that do not fit in memory can be stored on disk,
using memory as a caching layer for better performance.
</p>
<p>Read more: <a href="/arch/persistence.html" target="_blank" rel="noopener" aria-label="Persistence">Native Persistence</a></p><br/><br/>
</div>
<div class="col-md-6 fact-question">
<h3 class="ignite-facts-question">Is Ignite a NoSQL database?</h3>
<p>
<strong>Not exactly</strong>. Just like other NoSQL databases, Ignite is highly available and
horizontally scalable. However, unlike other NoSQL databases, Ignite supports SQL and ACID transactions
across multiple cluster nodes.
</p>
<p>Read more: <a href="/use-cases/comparison/ignite-for-nosql.html" aria-label="Ignite for NoSQL">Ignite for NoSQL</a></p>
</div>
<div class="col-md-6 fact-question">
<h3 class="ignite-facts-question">Is Ignite a transactional database?</h3>
<p>
<strong>Not fully</strong>. ACID Transactions are supported, but only at key-value API level.
Ignite also supports cross-partition transactions, which means that transactions can span keys
residing in different partitions on different servers. <br/> <br/>
At SQL level Ignite supports atomic, but not yet transactional consistency.
SQL transactions implementation is already
<a href="https://cwiki.apache.org/confluence/display/IGNITE/IEP-3%3A+Transactional+SQL" target="_blank" rel="noopener" aria-label="in the works">in the works</a>
and will be released in one of the upcoming versions.
</p>
<p>Read more: <a href="https://apacheignite.readme.io/docs/transactions" aria-label="Transactions">ACID Transactions</a></p>
</div>
<div class="col-md-6 fact-question">
<h3 class="ignite-facts-question">Is Ignite a multi-model database?</h3>
<p>
<strong>Yes</strong>. Ignite supports both, key-value and SQL for modelling and accessing data.
In addition, Ignite provides strong processing APIs for computing on distributed data.
</p>
<p>Read more: <a href="/use-cases/database/distributed-database.html" aria-label="Distributed Database">Distributed Database</a></p>
</div>
<div class="col-md-6 fact-question">
<h3 class="ignite-facts-question">Is Ignite a key-value store?</h3>
<p>
<strong>Yes</strong>. Ignite provides a feature rich key-value API, that is JCache (JSR-107) compliant
and supports Java, C++, <nobr>and .NET.</nobr>
</p>
<p>Read more: <a href="/use-cases/database/key-value-store.html" aria-label="Key-Value Store">Key-Value Store</a></p><br/><br/>
</div>
</div>
</div>
</article>
<!--#include virtual="/includes/footer.html" -->
<!--#include virtual="/includes/scripts.html" -->
</body>
</html>