Apache GeodeとApache Igniteについて調べたメモ書き2
先日書いた投稿に対して、ありがたくコメントをいただきましたので、紹介いただいた参照先を調べてみました。
takumats.hatenablog.com
GridGainのページにある、Pivotal Gemfireとの比較記事
www.gridgain.com
それぞれ商用版ですが、背後にはオープンソースのプロダクトがあります。
- GridGain : Apache Ignite
- Pivotal Gemfire : Apache Geode
細かい○×表もあるのですが、ここからダウンロードできるpdfに「Key Differences」というのがあるので、そこを勝手に訳してみます。
オープンソース or NOT
GridGainはApache Igniteをベースに開発されておりAPIの互換性もある。一方、GemFireはApache Geodeをベースにしているものの、APIの互換性がないため、オープンソースベースとはいえ互換性が低い。
ベンダーニュートラル
GridGainとApache Igniteは、Javaの仕様「JCache(JSR 107)」に基づいて実装されているとのこと。GemFireは独自である。
JSR107について
The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 107
そもそもJSRについて
yyyank.blogspot.jp
Apache GeodeのJSRサポートについても、以下にサポートされていないと記載があります。
Technology FAQ - Geode - Apache Software Foundation
※他にJSR107をサポートしている製品がたくさんあるのであれば確かにそう言えるかもしれません。(他にあるか調べてません)
Off-heap index
GridGainはそのように設定すれば、値もインデックスも off heap memory 上に構成できます。一方で、GemFireはデータが off heap メモリ上へ構築されていたとしても、インデックスを off heap メモリへ構築することができません。インデックスを off heap memory 上へ構築できることは、インデックスが肥大化して20GBを超えるようになってくるとGCの問題が出てくる可能性があるため非常に重要です。
これは性能に影響しそうですね。でもきっと、性能差異は他にも存在するとは思います。実装が違うわけですから・・。
以下、参考ブログ。
adtech.cyberagent.io
ODBC & JDBC
GridGainはODBC/JDBCをサポートしており、標準SQLクエリでアクセスすることができます。一方で、GemFireはODBC/JDBC接続をサポートしておらず、独自のクエリ言語によってアクセス可能です。
Deadlock-Free Transactions
GridGainはデッドロックのないトランザクションをサポートし、ロック順序の心配をする必要がありません。このトランザクションはパフォーマンスもずっとよいです。GemFireでは、デッドロックを気にしながらデータの更新などを行う必要があり、大きなプロジェクトではしばしば困難に直面します。
Cross-Partition Transactions
GridGainのトランザクションは全クラスタ上のキャッシュパーティションに対して実行することができますが、GemFireは複数のキャッシュパーティションに渡ったクエリを実行することはできません。
Data Streaming
GridGainはインメモリストリーミングをサポートしており、ストリーミングデータのSliding Windowのクエリをサポートします。GemFireではサポートしていません。
○×表
その他、実際に○×表を見るとGridGainの方にできることが明らかに多いようです。p.8のConfigurationi & Grid Managementあたりや、Security and AuditあたりはGemFire側に多くの機能が実装されているように見受けられました。
結局のところ
性能面とか機能面の大きな違いは、触ったわけではないのでよくわかってはいないのですが・・・。それは同じ目的に対する製品間の違いのようなものでしょうから、違いを論ずることはあまり意味がないかもしれません。あとは使ってみて、目的に沿った使いやすさ、導入のしやすさなどで選択するんでしょうね。