| <!-- |
| ▄▄▄ ██▓███ ▄▄▄ ▄████▄ ██░ ██ ▓█████ ██▓ ▄████ ███▄ █ ██▓▄▄▄█████▓▓█████ |
| ▒████▄ ▓██░ ██▒▒████▄ ▒██▀ ▀█ ▓██░ ██▒▓█ ▀ ▓██▒ ██▒ ▀█▒ ██ ▀█ █ ▓██▒▓ ██▒ ▓▒▓█ ▀ |
| ▒██ ▀█▄ ▓██░ ██▓▒▒██ ▀█▄ ▒▓█ ▄ ▒██▀▀██░▒███ ▒██▒▒██░▄▄▄░▓██ ▀█ ██▒▒██▒▒ ▓██░ ▒░▒███ |
| ░██▄▄▄▄██ ▒██▄█▓▒ ▒░██▄▄▄▄██ ▒▓▓▄ ▄██▒░▓█ ░██ ▒▓█ ▄ ░██░░▓█ ██▓▓██▒ ▐▌██▒░██░░ ▓██▓ ░ ▒▓█ ▄ |
| ▓█ ▓██▒▒██▒ ░ ░ ▓█ ▓██▒▒ ▓███▀ ░░▓█▒░██▓░▒████▒ ░██░░▒▓███▀▒▒██░ ▓██░░██░ ▒██▒ ░ ░▒████▒ |
| ▒▒ ▓▒█░▒▓▒░ ░ ░ ▒▒ ▓▒█░░ ░▒ ▒ ░ ▒ ░░▒░▒░░ ▒░ ░ ░▓ ░▒ ▒ ░ ▒░ ▒ ▒ ░▓ ▒ ░░ ░░ ▒░ ░ |
| ▒ ▒▒ ░░▒ ░ ▒ ▒▒ ░ ░ ▒ ▒ ░▒░ ░ ░ ░ ░ ▒ ░ ░ ░ ░ ░░ ░ ▒░ ▒ ░ ░ ░ ░ ░ |
| ░ ▒ ░░ ░ ▒ ░ ░ ░░ ░ ░ ▒ ░░ ░ ░ ░ ░ ░ ▒ ░ ░ ░ |
| ░ ░ ░ ░░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ |
| --> |
| |
| <!-- |
| 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> |
| <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..."/> |
| <link media="all" rel="stylesheet" href="/css/all.css?v=1514336028"/> |
| <link href="https://netdna.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.css" rel="stylesheet"/> |
| <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,300,300italic,400italic,600,600italic,700,700italic,800,800italic' rel='stylesheet' type='text/css'/> |
| |
| <!--#include virtual="/includes/sh.html" --> |
| </head> |
| <body> |
| <div id="wrapper"> |
| <!--#include virtual="/includes/header.html" --> |
| |
| <main id="main" role="main" class="container"> |
| <section id="whatisignite" class="page-section" style="border: none;"> |
| <h1 class="first heading" style="text-align: center;"><span>Apache Ignite™ is ...</span></h1> |
| <div class="col-sm-12 col-md-12 col-xs-12 description-block"> |
| <p style="text-align: center;"><i>memory-centric distributed |
| <strong>database</strong>, <strong>caching</strong>, and <strong>processing</strong> platform for |
| transactional, analytical, and streaming workloads,<br/> |
| delivering <nobr>in-memory</nobr> speeds at petabyte scale</i> |
| </p> |
| </div> |
| <div class="col-sm-12 col-md-12 col-xs-12 img-holder"> |
| <a href="/images/durable-memory.png"><img class="img-responsive" src="/images/durable-memory.png" alt="Apache Ignite - Durable Memory" width="900px;"/></a> |
| </div> |
| </section> |
| |
| <section id="whatisignite-feature-desc" class="page-section" style="border: none;"> |
| <div class="col-sm-12 col-md-12 col-xs-12"> |
| <h3>Durable Memory</h3> |
| <p> |
| Ignite's durable memory component treats RAM not just as a caching layer but as a complete fully functional storage layer. |
| This means that users can turn the persistence on and off as needed. If the persistence is off, then Ignite |
| can act as a distributed <nobr><i><a href="/use-cases/database/in-memory-database.html">in-memory database</a></i></nobr> |
| or <nobr><i><a href="/features/datagrid.html">in-memory data grid</a></i></nobr>, |
| depending on whether you prefer to use SQL or key-value APIs. If the persistence is turned on, then Ignite becomes a distributed, |
| <nobr><i><a href="/features/sql.html">horizontally scalable database</a></i></nobr> that guarantees full data consistency and is |
| resilient to full cluster failures. |
| </p> |
| <h3>Ignite Persistence</h3> |
| <p> |
| Ignite <a href="/features/persistence.html">native persistence</a> is a distributed, |
| strongly consistent disk store that transparently integrates with Ignite's <i>durable memory</i>. |
| </p> |
| <h3>ACID Compliance</h3> |
| <p> |
| Data stored in Ignite is ACID-compliant both in memory and on disk, making Ignite a <i><strong>strongly consistent</strong></i> system. |
| Ignite transactions work across the network and can span multiple servers. |
| </p> |
| |
| <h3>Complete SQL Support</h3> |
| <p> |
| Ignite provides full support for SQL, DDL and DML, allowing users to interact with Ignite using pure SQL without writing any code. |
| This means that users can create tables and indexes as well as insert, update, and query data using only SQL. Having such complete SQL support makes Ignite a one-of-a-kind |
| <i><a href="/features/sql.html">distributed SQL database</a></i>. |
| </p> |
| |
| <h3>Key-Value</h3> |
| <p> |
| The in-memory data grid component in Ignite is a fully transactional <i><a href="/use-cases/database/key-value-store.html">distributed key-value store</a></i> that can scale horizontally |
| across 100s of servers in the cluster. When persistence is enabled, Ignite can also store more data than fits in memory and survive full cluster restarts. |
| </p> |
| |
| <h3>Collocated Processing</h3> |
| <p> |
| Most traditional databases work in a client-server fashion, meaning that data must be brought to the client side for processing. This approach requires |
| lots of data movement from servers to clients and generally does not scale. Ignite, on the other hand, allows for sending light-weight computations to the data, |
| i.e. <nobr><i><a href="/features/collocatedprocessing.html">collocating computations with data</a></i></nobr>. As a result, Ignite scales better and minimizes data movement. |
| </p> |
| |
| <h3>Scalability and Durability</h3> |
| <p> |
| Ignite is an elastic, horizontally scalable distributed system that supports adding and removing cluster nodes on demand. Ignite also allows for |
| storing multiple copies of the data, making it resilient to partial cluster failures. If the persistence is enabled, then data stored in Ignite |
| will also survive full cluster failures. Cluster restarts in Ignite can be very fast, as the data becomes operational instantaneously directly from disk. |
| As a result, the data does not need to be preloaded in-memory to begin processing, and Ignite caches will lazily warm up resuming the in memory performance. |
| </p> |
| </div> |
| </section> |
| |
| <section id="ignite-faq" class="page-section"> |
| <div class="col-sm-12 col-md-12 col-xs-12" style="margin-top: 20px;"> |
| <h2 style="text-align: center; color: #e50000;">Ignite Facts</h2> |
| <hr><br/><br/><br/> |
| |
| <h3>Is Ignite a persistent 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> |
| <br/><br/> |
| |
| <h3>Is Ignite an in-memory database (IMDB)?</h3> |
| <p> |
| <strong>Yes</strong>. Even though Ignite durable memory 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> |
| <br/><br/> |
| |
| <h3>Is Ignite an in-memory data grid (IMDG)?</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> |
| <br/><br/> |
| |
| <h3>Is Ignite a distributed cache?</h3> |
| <p> |
| <strong>Yes</strong>. When native persistence is disabled, Ignite becomes a distributed cache. |
| Ignite implements JCache specification (JSR 107) and provides |
| a lot more functionality than required by the specification, including partitioned and replicated |
| distribution modes, distributed ACID transactions, SQL queries, native persistence, and more. |
| </p> |
| <br/><br/> |
| |
| <h3>Is Ignite a distributed database?</h3> |
| <p> |
| <strong>Yes</strong>. Data in Ignite is either partitioned or replicated across a cluster of |
| multiple nodes. This provides scalability and adds resiliency to the system. Ignite automatically |
| controls how data is partitioned, however, users can plugin their own distribution (affinity) functions |
| and collocate various pieces of data together for efficiency. |
| </p> |
| <br/><br/> |
| |
| <h3>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> |
| Essentially, Ignite purposely does not support any constraints that would entail a cluster-wide broadcast |
| message for each update and significantly hurt performance and scalability of the system. |
| </p> |
| <br/><br/> |
| |
| <h3>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. |
| </p> |
| <br/><br/> |
| |
| <h3>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. |
| </p> |
| |
| <p> |
| At SQL level Ignite supports atomic, but not yet transactional consistency. Ignite community plans |
| to implement SQL transactions in version 2.5. |
| </p> |
| <br/><br/> |
| |
| <h3>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> |
| <br/><br/> |
| |
| <h3>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><a href="https://apacheignite.readme.io/docs/data-grid"></a></p><br/><br/> |
| |
| <h3>Book</h3> |
| <p>Learn even more from <a href="http://a.co/h4MBi1v" target="_blank">High-Performance in-memory computing with Apache Ignite</a> book.</p> |
| </div> |
| </section> |
| </main> |
| |
| <!--#include virtual="/includes/footer.html" --> |
| </div> |
| <!--#include virtual="/includes/scripts.html" --> |
| </body> |
| </html> |