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>&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>
+                                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>