blob: e483c427b65e3d2921b0a1a8898c1840f56690c5 [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>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Apache Ignite vs Coherence</title>
<link media="all" rel="stylesheet" href="/css/all.css">
<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="coherence-replacement" class="usecase-page-section">
<h2 class="first">Ignite vs Coherence</h2>
<p>
Both, Apache Ignite and Oracle Coherence provide a feature rich data grid functionality responsible for
partitioning and caching data in memory with the capability to scale out across distributed clusters.
</p>
<p>
Ignite and Coherence have many differences in the way caching, transactions, and data querying
are supported. Below we outline only major differences, which in our opinion are most important whenever
choosing an in-memory data grid product.
</p>
</section>
<section id="comparison">
<table class="formatted" name="Feature Comparison Apache Ignite vs Coherence">
<thead>
<tr>
<th style="text-align: center;font-size: larger">Apache Ignite</th>
<th style="text-align: center;font-size: larger">Coherence</th>
</tr>
</thead>
<tbody>
<tr><td colspan="2" style="text-align: center"><b>Open Source vs. Closed Source</b></td></tr>
<tr>
<td width="50%" valign="top">
<p>
Ignite is an Apache project and has been growing and enhancing its open source feature set. The latest
major additions include <i>Ignite Fabric for C++</i> and <i>.NET/C#</i>, with
<i>Node.JS</i> integration coming soon as well.
</p>
</td>
<td width="50%" valign="top">
<p>
Coherence is a proprietary Oracle software and does not have a free open source offering.
</p>
</td>
</tr>
<tr><td colspan="2" style="text-align: center"><b>JCache (JSR 107)</b></td></tr>
<tr>
<td valign="top">
<p>
Ignite is fully compliant with <i><nobr>JCache (JSR 107)</nobr></i> specification for caching.
</p>
</td>
<td valign="top">
<p>
Coherence is fully compliant with <i><nobr>JCache (JSR 107)</nobr></i> specification for caching.
</p>
</td>
</tr>
<tr><td colspan="2" style="text-align: center"><b>Off-Heap Memory</b></td></tr>
<tr>
<td valign="top">
<p>
Ignite supports storing data in <em><nobr>on-heap</nobr></em> or <em><nobr>off-heap</nobr></em> memory,
depending on user configuration.
</p>
</td>
<td valign="top">
<p>
Oracle Coherence does provide developers with a limited option to store the data in <em><nobr>off-heap</nobr></em> memory.
</p>
</td>
</tr>
<tr><td colspan="2" style="text-align: center"><b>Off-Heap Indexes</b></td></tr>
<tr>
<td valign="top">
<p>
Whenever configured with <em>off-heap memory</em>, Ignite will store query indexes
off-heap as well (in order not to affect on-heap memory used by user applications).
</p>
</td>
<td valign="top">
<p>
Coherence does not have support for <em>off-heap</em> indexes.
</p>
</td>
</tr>
<tr><td colspan="2" style="text-align: center"><b>SQL Queries</b></td></tr>
<tr>
<td valign="top">
<p>
Ignite supports complete SQL (ANSI-99) syntax for querying in-memory data.
</p>
</td>
<td valign="top">
<p>
Coherence does not support SQL.
</p>
</td>
</tr>
<tr><td colspan="2" style="text-align: center"><b>Queries with JOINs</b></td></tr>
<tr>
<td valign="top">
<p>
Ignite SQL includes full support for <em><nobr>SQL JOINs</nobr></em>, including
<em>JOINs</em> across multiple caches, for example:
</p>
<p>&nbsp;&nbsp;&nbsp;<i><nobr>select * from A a, B b where a.b_id = b.id</nobr></i></p>
</td>
<td valign="top">
<p>
Coherence does not have any support for <em>JOIN</em> queries (with or without SQL).
Whenever needed, users perform <em>JOINs</em> by manually combining multiple query results.
</p>
</td>
</tr>
<tr><td colspan="2" style="text-align: center"><b>ACID Transactions</b></td></tr>
<tr>
<td valign="top">
<p>
Ignite transactions provide excellent performance with 100s of thousands transactions/sec per server.
</p>
</td>
<td valign="top">
<p>
Coherence does not recommend using transactions due to its poor performance.
</p>
</td>
</tr>
<tr><td colspan="2" style="text-align: center"><b>Tiered Storage</b></td></tr>
<tr>
<td width="50%" valign="top">
<p>
Ignite provides tiered storage model where data can be stored and moved between
<em>on-heap</em>, <em>off-heap</em>, and <em>swap</em> space. Going up the tier
provides more data storage capacity, with gradual increase in latency.
</p>
</td>
<td width="50%" valign="top">
<p>
Coherence does not have any support for tiered storage.
</p>
</td>
</tr>
<tr><td colspan="2" style="text-align: center"><b>Data Streaming</b></td></tr>
<tr>
<td width="50%" valign="top">
<p>
Ignite provides support for in-memory streaming, including support for maintaining and
querying sliding windows of streaming data.
</p>
</td>
<td width="50%" valign="top">
<p>
Coherence does not offer any support for streaming.
</p>
</td>
</tr>
<tr><td colspan="2" style="text-align: center"><b>Configuration</b></td></tr>
<tr>
<td width="50%" valign="top">
<p>
Ignite supports standard Java beans for configuration and natively integrates with
Spring XML, as well as provides ability to easily configure the system directly from code.
</p>
</td>
<td width="50%" valign="top">
<p>
Coherence uses a proprietary XML format for configuration and does not
have any support for configuring a system directly from code.
</p>
</td>
</tr>
</tbody>
</table>
</section>
</main>
<!--#include virtual="/includes/footer.html" -->
</div>
<!--#include virtual="/includes/scripts.html" -->
</body>
</html>