仕事やプライベートで調べたことのメモ書きなど(@札幌)

仕事やプライベートで調べたこと、興味ある事のメモ書きです。2016年4月から札幌で働いてます。※このブログは個人によるもので、団体を代表するものではありません。

Apache GeodeとApache Igniteについて調べたメモ書き2

先日書いた投稿に対して、ありがたくコメントをいただきましたので、紹介いただいた参照先を調べてみました。
takumats.hatenablog.com

GridGainのページにある、Pivotal Gemfireとの比較記事

www.gridgain.com
それぞれ商用版ですが、背後にはオープンソースのプロダクトがあります。

細かい○×表もあるのですが、ここからダウンロードできる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側に多くの機能が実装されているように見受けられました。

結局のところ

性能面とか機能面の大きな違いは、触ったわけではないのでよくわかってはいないのですが・・・。それは同じ目的に対する製品間の違いのようなものでしょうから、違いを論ずることはあまり意味がないかもしれません。あとは使ってみて、目的に沿った使いやすさ、導入のしやすさなどで選択するんでしょうね。

その他参考

dev.classmethod.jp
ameblo.jp