blob: 6ae41f2b0a2b13c520bd890b7a1d34ae49284b64 [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 Gemfire</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="gemfire-replacement" class="usecase-page-section">
<h2 class="first">Ignite vs Gemfire</h2>
<p>
Both, Apache Ignite and Pivotal Gemfire 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 Gemfire 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 Gemfire">
<thead>
<tr>
<th style="text-align: center;font-size: larger">Apache Ignite</th>
<th style="text-align: center;font-size: larger">Gemfire</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>
Gemfire is a proprietary Pivotal software.
</p>
</td>
</tr>
<tr><td colspan="2" style="text-align: center"><b>JCache (JSR107)</b></td></tr>
<tr>
<td width="50%" valign="top">
<p>
Ignite data grid is an implementation of <span style="white-space: nowrap">JCache (JSR 107)</span> specification.
JCache provides a very simple to use, but yet very powerful API for data access.
</p>
</td>
<td width="50%" valign="top">
<p>
Gemfire does not implement JCache (JSR 107) and uses proprietary APIs.
</p>
</td>
</tr>
<tr><td colspan="2" style="text-align: center"><b>On-Heap vs. Off-Heap</b></td></tr>
<tr>
<td width="50%" 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 width="50%" valign="top">
<p>
Gemfire does not offer any support for storing data off-heap.
</p>
</td>
</tr>
<tr><td colspan="2" style="text-align: center"><b>SQL Queries</b></td></tr>
<tr>
<td width="50%" valign="top">
<p>
Ignite supports complete SQL (ANSI-99) syntax for querying in-memory data.
</p>
</td>
<td width="50%" valign="top">
<p>
Gemfire does not support the standard SQL syntax. Instead it comes with its own
object query language, called OQL.
</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>
Gemfire does not have any support for <em>JOIN</em> queries across caches or regions.
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>Cross-Partition Transactions</b></td></tr>
<tr>
<td width="50%" valign="top">
<p>
Ignite supports cross-partition transactions where transactions can be performed on
all partitions of a cache across the whole cluster.
</p>
</td>
<td width="50%" valign="top">
<p>
Gemfire does not support transactions across multiple cache partitions or nodes.
</p>
</td>
</tr>
<tr><td colspan="2" style="text-align: center"><b>Tiered Storage</b></td></tr>
<tr>
<td width="50%" valign="top">
<p>
Apache 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>
Gemfire 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>
Gemfire 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>
Gemfire uses a proprietary XML format for configuration and does not
have any support for configuring a system directly from code.
</p>
</td>
</tr>
<tr><td colspan="2" style="text-align: center"><b>Deployment</b></td></tr>
<tr>
<td width="50%" valign="top">
<p>
Ignite nodes are peers and automatically join the cluster on startup (without any
locator servers).
</p>
</td>
<td width="50%" valign="top">
<p>
Gemfire requires a locator service to be started and maintained in order for
nodes to join or leave the cluster.
</p>
</td>
</tr>
</tbody>
</table>
</section>
</main>
<!--#include virtual="/includes/footer.html" -->
</div>
<!--#include virtual="/includes/scripts.html" -->
</body>
</html>