blob: 9c1d29a396b97e3eea051dd9c69ae0f69e307502 [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>
<head>
<link rel="canonical" href="https://ignite.apache.org/use-cases/comparison/ignite-for-nosql.html" />
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Apache Ignite and NoSQL</title>
<link media="all" rel="stylesheet" href="/css/all.css?v=1514336027">
<link href="https://netdna.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.css" rel="stylesheet">
<link media="all" rel="stylesheet" href="/css/syntaxhighlighter.css">
<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="sql-queries" class="page-section">
<h1 class="first">Ignite for NoSQL Users</h1>
<div style="padding:0 0 20px 0;">
<p>
Apache Ignite as many other NoSQL databases is horizontally scalable, highly available and
fault-tolerant. Ignite acts as a distributed partitioned hash map making sure that every cluster
node owns a portion of the overall data set. This way the more cluster nodes you add, the more data
you can store in the cluster.
</p>
<p>
Ignite can either partition or replicate the data. Unlike <code>REPLICATED</code> mode, where data is
fully replicated across all nodes in the cluster, in <code>PARTITIONED</code> mode Ignite will
equally split the data across multiple cluster nodes, allowing for storing TBs of data both in
<i>memory</i> and on <i>disk</i>.
</p>
</div>
<section id="comparison-matrix-section" class="page-section" style="border: none">
<table class="comparison-matrix" name="comparison-matrix">
<thead>
<tr><th>Feature</th><th>NoSQL</th><th>Ignite</th></tr>
</thead>
<tbody>
<tr>
<td>Scalability</td>
<td><span class="check-mark">&#x2713;</span> horizontal</td>
<td class="highlight-ignite-comparison"><span class="check-mark">&#x2713;</span> horizontal</b></td>
</tr>
<tr>
<td>Availability</td>
<td><span class="check-mark">&#x2713;</span> high</td>
<td class="highlight-ignite-comparison"><span class="check-mark">&#x2713;</span> high</b></td>
</tr>
<tr>
<td>Consistency</td>
<td><span class="cross-mark">&#x2717;</span> eventual</td>
<td class="highlight-ignite-comparison"><span class="check-mark">&#x2713;</span> strong</b></td>
</tr>
<tr>
<td>In-Memory</td>
<td><span class="cross-mark">&#x2717;</span></td>
<td class="highlight-ignite-comparison"><span class="check-mark">&#x2713;</span> in-memory store</b></td>
</tr>
<tr>
<td>Persistence</td>
<td><span class="check-mark">&#x2713;</span></td>
<td class="highlight-ignite-comparison"><span class="check-mark">&#x2713;</span></b></td>
</tr>
<tr>
<td>SQL</td>
<td><span class="cross-mark">&#x2717;</span></td>
<td class="highlight-ignite-comparison"><span class="check-mark">&#x2713;</span></b></td>
</tr>
<tr>
<td>Key-Value</td>
<td><span class="check-mark">&#x2713;</span></td>
<td class="highlight-ignite-comparison"><span class="check-mark">&#x2713;</span></b></td>
</tr>
<tr>
<td>Collocated Processing</td>
<td><span class="cross-mark">&#x2717;</span></td>
<td class="highlight-ignite-comparison"><span class="check-mark">&#x2713;</span></b></td>
</tr>
</tbody>
</table>
<table class="comparison-matrix-mobile" name="comparison-matrix-sm">
<thead>
<tr><th>Scalability</th></tr>
</thead>
<tbody>
<tr><td><span class="left">NoSQL</span><span class="right"><span class="check-mark">&#x2713;</span> horizontal</span></td></tr>
<tr class="ignite"><td><span class="left"><b>Ignite</b></span><span class="right"><span class="check-mark">&#x2713;</span> <b>horizontal</b></span></td></tr>
</tbody>
<thead>
<tr><th>Availability</th></tr>
</thead>
<tbody>
<tr><td><span class="left">NoSQL</span><span class="right"><span class="check-mark">&#x2713;</span> high</span></td></tr>
<tr class="ignite"><td><span class="left"><b>Ignite</b></span><span class="right"><span class="check-mark">&#x2713;</span> <b>high</b></span></td></tr>
</tbody>
<thead>
<tr><th>Consistency</th></tr>
</thead>
<tbody>
<tr><td><span class="left">NoSQL</span><span class="right"><span class="cross-mark">&#x2717;</span> eventual</span></td></tr>
<tr class="ignite"><td><span class="left"><b>Ignite</b></span><span class="right"><span class="check-mark">&#x2713;</span> <b>strong</b></span></td></tr>
</tbody>
<thead>
<tr><th>In-Memory</th></tr>
</thead>
<tbody>
<tr><td><span class="left">NoSQL</span><span class="right"><span class="cross-mark">&#x2717;</span></span></td></tr>
<tr class="ignite"><td><span class="left"><b>Ignite</b></span><span class="right"><span class="check-mark">&#x2713;</span> <b>in-memory store</b></span></td></tr>
</tbody>
<thead>
<tr><th>Persistence</th></tr>
</thead>
<tbody>
<tr><td><span class="left">NoSQL</span><span class="right"><span class="check-mark">&#x2713;</span></span></td></tr>
<tr class="ignite"><td><span class="left"><b>Ignite</b></span><span class="right"><span class="check-mark">&#x2713;</span></span></td></tr>
</tbody>
<thead>
<tr><th>SQL</th></tr>
</thead>
<tbody>
<tr><td><span class="left">NoSQL</span><span class="right"><span class="cross-mark">&#x2717;</span></span></td></tr>
<tr class="ignite"><td><span class="left"><b>Ignite</b></span><span class="right"><span class="check-mark">&#x2713;</span></span></td></tr>
</tbody>
<thead>
<tr><th>Key-Value</th></tr>
</thead>
<tbody>
<tr><td><span class="left">NoSQL</span><span class="right"><span class="check-mark">&#x2713;</span></span></td></tr>
<tr class="ignite"><td><span class="left"><b>Ignite</b></span><span class="right"><span class="check-mark">&#x2713;</span></span></td></tr>
</tbody>
<thead>
<tr><th>Collocated-Processing</th></tr>
</thead>
<tbody>
<tr><td><span class="left">NoSQL</span><span class="right"><span class="cross-mark">&#x2717;</span></span></td></tr>
<tr class="ignite"><td><span class="left"><b>Ignite</b></span><span class="right"><span class="check-mark">&#x2713;</span></span></td></tr>
</tbody>
</table>
</section>
<p>
Unlike eventually consistent NoSQL databases, Ignite can operate in a <i>strongly consistent</i> mode,
guaranteeing the data consistency across all cluster nodes. In addition, ignte supports
<a href="https://apacheignite.readme.io/docs/transactions">ACID transactions</a> that can span
multiple keys acrsoss multiple cluster ndoes and partitions.
</p>
<p>
The other difference between Ignite and NoSQL databases is that, first, the memory is
treated as a fully functional storage, not just as a caching layer, like most databases do. Second,
in addition to
<a href="/features/datagrid.html">key-value</a> APIs, Ignite supports
<a href="/features/sql.html">distributed SQL</a> and
<a href="/collocatedprocessing.html">collocated processing</a> approach.
</p>
</section>
</main>
<!--#include virtual="/includes/footer.html" -->
</div>
<!--#include virtual="/includes/scripts.html" -->
</body>
</html>