You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ds...@apache.org on 2015/09/28 05:51:54 UTC
svn commit: r1705596 - in /ignite/site/trunk: use-cases/compare/
use-cases/compare/hazelcast.html use-cases/datagridreplace/ usecases_new.html
Author: dsetrakyan
Date: Mon Sep 28 03:51:52 2015
New Revision: 1705596
URL: http://svn.apache.org/viewvc?rev=1705596&view=rev
Log:
Changed formating for HZ comparison
Added:
ignite/site/trunk/use-cases/compare/
- copied from r1705595, ignite/site/trunk/use-cases/datagridreplace/
ignite/site/trunk/usecases_new.html
- copied, changed from r1705592, ignite/site/trunk/usecases.html
Removed:
ignite/site/trunk/use-cases/datagridreplace/
Modified:
ignite/site/trunk/use-cases/compare/hazelcast.html
Modified: ignite/site/trunk/use-cases/compare/hazelcast.html
URL: http://svn.apache.org/viewvc/ignite/site/trunk/use-cases/compare/hazelcast.html?rev=1705596&r1=1705595&r2=1705596&view=diff
==============================================================================
--- ignite/site/trunk/use-cases/compare/hazelcast.html (original)
+++ ignite/site/trunk/use-cases/compare/hazelcast.html Mon Sep 28 03:51:52 2015
@@ -35,7 +35,7 @@ under the License.
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Apache Ignite - Hazelcast Replacement</title>
+ <title>Apache Ignite Data Grid vs Hazelcast Data Grid</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">
@@ -48,94 +48,297 @@ under the License.
<!--#include virtual="/includes/header.html" -->
<main id="main" role="main" class="container">
- <section id="hazelcast-replacement" class="usecase-page-section">
- <h2 class="first">Ignite as Hazelcast Replacement</h2>
+ <section id="hazelcast-replacement" class="page-section">
+ <h2 class="first">Ignite vs Hazelcast Data Grid</h2>
<p>
Both, Apache Ignite and Hazelcast provide a feature rich data grid functionality responsible for
partitioning and caching data in memory with the capability to scale out across distributed clusters.
- However, by switching from Hazelcast to Apache Ignite, developers can leverage all the additional features
- that Ignite provides as compared to Hazelcast.
</p>
+ <div class="page-links">
+ <a href="/benchmarks/ignite-vs-hazelcast.html">Click Here for Benchmark Results <i class="fa fa-angle-double-right"></i></a>
+ </div>
</section>
- <section id="comparison" class="page-section">
+ <section id="opensource" class="page-section">
+ <h3>Feature Comparison</h3>
+ <p>
+ Apache Ignite and Hazelcast 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>
+ <br/><br/>
<table class="formatted">
<thead>
- <tr>
- <th width="35%" class="left">Feature</th>
- <th>Comparison</th>
- </tr>
+ <tr>
+ <th style="text-align: center;font-size: larger">Apache Ignite</th>
+ <th style="text-align: center;font-size: larger">Hazelcast</th>
+ </tr>
</thead>
<tbody>
- <tr>
- <td class="left">JCache (JSR107)</td>
- <td><p>
- Both, Apache Ignite and Hazelcast implement JCache specification (JSR 107), so it should be
- a relatively easy process to switch from Hazelcast to Apache Ignite and take benefit of
- the additional functionality available in Ignite.
- </p></td>
- </tr>
- <tr>
- <td class="left">On-Heap vs. Off-Heap</td>
- <td><p>
- While <em>on-heap</em> memory is certainly the most natural way to cache data,
- JVM does not work well with large heap sizes (more than 16GB), causing lengthy GC pauses.
- Hazelcast does provide developers with a limited option to store the data <em>off-heap</em>,
- however indexes still remain <em>on-heap</em>. Given that indexes usually require about 30% of additional space,
- this can still lead to large GC pauses, which defeats the very reason to store the data <em>off-heap</em>
- to begin with. Apache Ignite, on the other hand, is able to store both, the cached data and the indexes
- in the <em>off-heap</em> memory,
- allowing to completely eliminate any GC overhead within user applications.
- </p></td>
- </tr>
- <tr>
- <td class="left">Standard SQL and JOIN Queries</td>
- <td><p>
- Hazelcast has limited support for SQL queries and absolutely no support for JOINs, even when using their predicate-based API. Apache Ignite, on the other hand,
- supports free-form SQL queries virtually without any limitations (ANSI 99 compliant). You can use any
- SQL function, any aggregation, any grouping and Ignite will figure out where to fetch the results from.
- Ignite also supports distributed SQL JOINs. Moreover, if the data resides in different caches,
- Ignite allows for cross-cache JOIN queries as well.
- </p></td>
- </tr>
- <tr>
- <td class="left">Cache Distribution</td>
- <td><p>
- Both, Apache Ignite and Hazelcast support <em>partitioned</em> as well as <em>replicated</em> caches.
- However, Hazelcast does not recommend using replicated caches due to its inability to keep data consistent on all nodes.
- Moreover, Hazelcast recommends storing only immutable objects when using a replicated cache, to avoid reading any stale data.
- In contrast, Apache Ignite guarantees full data consistency across all the nodes in the cluster,
- regardless of any data type, and any cache distribution mode configured.
- </p></td>
- <tr>
- <td class="left">Tiered Storage</td>
- <td><p>
- Apache Ignite provides tiered storage model, a feature not supported in Hazelcast,
- 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>
- </tr>
- <tr>
- <td class="left">Data Streaming</td>
- <td><p>
- Hazelcast does not possess real-time data processing capabilities.
- Apache Ignite streaming allows to process continuous never-ending streams of data in scalable and fault-tolerant fashion.
- Ignite streaming functionality also allows you to perform concurrent SQL queries on the streamed data.
- </p></td>
- </tr>
- <tr>
- <td class="left">.Net and C++ Client</td>
- <td><p>
- Apache Ignite provides .Net and C++ client to connect to Ignite nodes and perform most of the
- operations supported by Ignite In-Memory Data Grid. In Hazelcast, this feature is available only in enterprise edition.
- </p></td>
- </tr>
+ <tr><td colspan="2" style="text-align: center"><b>Open Source Focus</b></td></tr>
+ <tr>
+ <td width="50%" valign="top">
+ <p>
+ Ignite 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>
+ Hazelcast has continuously been removing features from its open source offering and
+ moving them to enterprise (paid) edition. This is true for features like
+ <i>off-heap memory</i>, <i>continuous queries</i>, <i>web-session clustering</i>,
+ <i>SSL encryption support</i>, and more.
+ </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>
+ Hazelcast 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>
+ Hazelcast supports <em><nobr>off-heap</nobr></em> memory only in its commercial (paid) offering.
+ </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>
+ Hazelcast does not have support for <em>off-heap</em> indexes.
+ </p>
+ </td>
+ </tr>
+ <tr><td colspan="2" style="text-align: center"><b>Continuous Queries</b></td></tr>
+ <tr>
+ <td valign="top">
+ <p>
+ Ignite provides support for <em>continuous queries</em>, i.e. allows clients and servers
+ to subscribe for continuous notifications to the data updates.
+ </p>
+ </td>
+ <td valign="top">
+ <p>
+ Hazelcast offers support for <em>continuous queries</em> only in its commercial (paid) edition.
+ </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>
+ Hazelcast has very limited support for SQL (only a few keywords).
+ </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> <i><nobr>select * from A a, B b where a.b_id = b.id</nobr></i></p>
+ </td>
+ <td valign="top">
+ <p>
+ Hazelcast 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>Query Consistency</b></td></tr>
+ <tr>
+ <td valign="top">
+ <p>
+ Ignite provides full query consistency, i.e. queries are executed on a certain snapshot
+ of data, and updates that happened after the query execution started do not affect
+ the query result.
+ </p>
+ </td>
+ <td valign="top">
+ <p>
+ Hazelcast queries are inconsistent and it is possible that part of the query result will
+ see a certain update and another part will not.
+ </p>
+ </td>
+ </tr>
+ <tr><td colspan="2" style="text-align: center"><b>Query Fault Tolerance</b></td></tr>
+ <tr>
+ <td valign="top">
+ <p>
+ Ignite queries are fault-tolerant, i.e. query result is always consistent and is not
+ affected by cluster topology changes, like nodes joining, leaving, or crashing.
+ </p>
+ </td>
+ <td valign="top">
+ <p>
+ Hazelcast queries are not fault-tolerant, i.e. query results become inconsistent
+ during cluster topology changes, while the data is being <nobr>re-balanced</nobr>
+ in the background.
+ </p>
+ </td>
+ </tr>
+ <tr><td colspan="2" style="text-align: center"><b>Data Consistency</b></td></tr>
+ <tr>
+ <td valign="top">
+ <p>
+ Ignite supports <em>atomic</em> and <em>transactional</em> consistency on all in-memory
+ data, regardless of whether data is stored in <em>PARTITIONED</em> or <em>REPLICATED</em>
+ caches.
+ </p>
+ </td>
+ <td valign="top">
+ <p>
+ Hazelcast supports <em>atomic</em> and <em>transactional</em> consistency only on
+ <em>PARTITIONED</em> caches. Data stored in <em>REPLICATED</em> caches does not have
+ any transactional guarantees at all.
+ </p>
+ </td>
+ </tr>
+ <tr><td colspan="2" style="text-align: center"><b>SSL Encryption</b></td></tr>
+ <tr>
+ <td valign="top">
+ <p>
+ Ignite supports SSL encryption for all network traffic, including client-server and
+ server-server communication.
+ </p>
+ </td>
+ <td valign="top">
+ <p>
+ Hazelcast offers SSL encryption support only in its commercial (paid) edition.
+ </p>
+ </td>
+ </tr>
+ <tr><td colspan="2" style="text-align: center"><b>Web Session Clustering</b></td></tr>
+ <tr>
+ <td valign="top">
+ <p>
+ Ignite supports caching and clustering <nobr>web-sessions</nobr> for all known application servers.
+ </p>
+ </td>
+ <td valign="top">
+ <p>
+ Hazelcast offers <nobr>web-session</nobr> clustering only in its commercial (paid) edition.
+ </p>
+ </td>
+ </tr>
+ <tr><td colspan="2" style="text-align: center"><b>Compute Grid</b></td></tr>
+ <tr>
+ <td valign="top">
+ <p>
+ Ignite has very rich computational support, including support for map-reduce, fork-join,
+ and basic distributed lambda processing on the cluster, including job load-balancing,
+ fault-tolerance, checkpointing, scheduling, etc.
+ </p>
+ </td>
+ <td valign="top">
+ <p>
+ Hazelcast only provides support random job distribution wihtin cluster.
+ </p>
+ </td>
+ </tr>
+ <tr><td colspan="2" style="text-align: center"><b>Streaming Grid</b></td></tr>
+ <tr>
+ <td valign="top">
+ <p>
+ Ignite provides support for in-memory streaming, including support for maintaining and
+ querying sliding windows of streaming data.
+ </p>
+ </td>
+ <td valign="top">
+ <p>
+ Hazelcast does not offer any support for streaming.
+ </p>
+ </td>
+ </tr>
+ <tr><td colspan="2" style="text-align: center"><b>Service Grid</b></td></tr>
+ <tr>
+ <td valign="top">
+ <p>
+ Ignite allows users to easily cluster-enable their services, including support for various
+ cluster-singletons.
+ </p>
+ </td>
+ <td valign="top">
+ <p>
+ Hazelcast managed services do not provide support for cluster-singletons.
+ </p>
+ </td>
+ </tr>
+ <tr><td colspan="2" style="text-align: center"><b>Fabric for .NET/C#</b></td></tr>
+ <tr>
+ <td valign="top">
+ <p>
+ Ignite provides full in-memory fabric APIs for .NET/C# users <nobr>(coming in 1.5)</nobr>.
+ </p>
+ </td>
+ <td valign="top">
+ <p>
+ Hazelcast provides .NET/C# limited client APIs only in its commercial (paid) edition.
+ </p>
+ </td>
+ </tr>
+ <tr><td colspan="2" style="text-align: center"><b>Fabric for C++</b></td></tr>
+ <tr>
+ <td valign="top">
+ <p>
+ Ignite provides full in-memory fabric APIs for C++ users <nobr>(coming in 1.5)</nobr>.
+ </p>
+ </td>
+ <td valign="top">
+ <p>
+ Hazelcast provides C++ limited client APIs only in its commercial (paid) edition.
+ </p>
+ </td>
+ </tr>
+ <tr><td colspan="2" style="text-align: center"><b>Fabric for Node.JS</b></td></tr>
+ <tr>
+ <td valign="top">
+ <p>
+ Ignite provides client API support for Node.JS users <nobr>(coming in 1.5)</nobr>.
+ </p>
+ </td>
+ <td valign="top">
+ <p>
+ Hazelcast does not have any support for Node.JS.
+ </p>
+ </td>
+ </tr>
</tbody>
</table>
- <br/>
</section>
</main>
-
<!--#include virtual="/includes/footer.html" -->
</div>
<!--#include virtual="/includes/scripts.html" -->
Copied: ignite/site/trunk/usecases_new.html (from r1705592, ignite/site/trunk/usecases.html)
URL: http://svn.apache.org/viewvc/ignite/site/trunk/usecases_new.html?p2=ignite/site/trunk/usecases_new.html&p1=ignite/site/trunk/usecases.html&r1=1705592&r2=1705596&rev=1705596&view=diff
==============================================================================
--- ignite/site/trunk/usecases.html (original)
+++ ignite/site/trunk/usecases_new.html Mon Sep 28 03:51:52 2015
@@ -54,7 +54,7 @@ under the License.
<section id="use-cases" class="page-section">
<h2 class="first">Ignite Use Cases</h2>
<div class="col-sm-12 col-md-12 col-xs-12 page-menu">
- <div class="col-sm-4 col-md-4 col-xs-12">
+ <div class="col-sm-4 col-md-4 col-xs-12" style="width: 265px;">
<h3>In-Memory Caching</h3>
<ul>
<li><a href="/use-cases/caching/database-caching.html">Database Caching</a></li>
@@ -65,23 +65,23 @@ under the License.
</ul>
</div>
<div class="col-sm-4 col-md-4 col-xs-12" style="width: 275px;">
- <h3>Ignite and Spark</h3>
+ <h3>Data Grid Comparisons</h3>
<ul>
- <li><a href="/use-cases/spark/shared-memory-layer.html">Shared Memory Layer</a></li>
- <li><a href="/use-cases/spark/sql-queries.html">Faster Sql Queries</a></li>
- <li class="empty"></li>
+ <li><a href="/use-cases/compare/hazelcast.html">Ignite vs Hazelcast</a></li>
+ <li><a href="/use-cases/compare/coherence.html">Ignite vs Oracle Coherence</a></li>
+ <li><a href="/use-cases/compare/gemfire.html">Ignite vs Pivotal Gemfire</a></li>
<li class="empty"></li>
<li class="empty"></li>
</ul>
</div>
- <div class="col-sm-4 col-md-4 col-xs-12" style="width: 275px;">
- <h3 class="last">Ignite and Hadoop</h3>
+ <div class="col-sm-4 col-md-4 col-xs-12">
+ <h3 class="last">Ignite with Spark & Hadoop</h3>
<ul class="last">
+ <li><a href="/use-cases/spark/shared-memory-layer.html">Shared Memory Layer for Spark</a></li>
+ <li><a href="/use-cases/spark/sql-queries.html">Faster Sql Queries for Spark</a></li>
<li><a href="/use-cases/hadoop/hdfs-cache.html">IGFS as HDFS Cache</a></li>
<li><a href="/use-cases/hadoop/mapreduce.html">Faster In-Memory MapReduce</a></li>
<li class="empty"></li>
- <li class="empty"></li>
- <li class="empty"></li>
</ul>
</div>
</div>