Quitada ブログ HAX

Hatena Blog でも Quitada ブログ

VMware vFabric GemFire を弄り初めて一ヶ月

お仕事で VMware vFabric GemFire(以下、単に GemFire)を弄りはじめて一ヶ月ほどたったので、日本語のリソースもあまりなさそうなのでちょっとまとめてみる。

#なお、個人的な主観・推測がたぶんに含まれているので話半分なブログエントリということでお願いいたします。

GemFire って何ですか?

はやりの言葉で一口にいうと、Java ベースの NoSQL なインメモリ型 KVS だけど、そういったバズワードが流行る以前から「データグリッド製品だよ」みたいなカテゴライズがされていて、似たような製品の Oracle Coherence とともに金融市場系システムで鍛えられてきただけあって、以下のような機能もサポートしています。さすが商用製品。

  • トランザクションが話せる(JTA 対応)
  • Key・Value として Java オブジェクトをつっこめるオブジェクトサーバの側面もある
  • シェアードナッシング型の分散構成が可能で高いスケーラビリティーを提供
  • データエントリをディスクにも書き込める
    • 強制的にディスク書き込みしたり、メモリが足りなくなったときのスワップ領域としてディスクに書き込んだり
  • データドリブンで指定したロジックを実行可能なので、アプリケーションサーバ的な側面がある
    • データドリブンな部分は、指定したデータテーブル(GemFire 用語ではリージョンという)にデータエントリが書き込まれたらイベントをあげて、事前にサブスクライブしていたクライアントが受け取るといったことができるので、メッセージキューイングシステムのような側面。また、イベントドリブンで指定したロジックを実行できたりとか(キャッシュリスナ)
    • 任意のロジックを実行可能な部分は、アプリケーション実行基盤としての側面(Function Execution Service)→ Hadoop みたいなことができたり
  • 構成が自由きわまりない
    • クライアント・サーバ構成で稼働できるし、ライブラリとして任意の Java アプリケーションに組み込んで使用する P2P な構成ができたり
    • サーバ、あるいはピアを稼働させるのに、独自コマンドラインからも可能だし、所定の API コールで作成した Java アプリでも可能
  • Continuous Query サポート
    • 指定したクエリを継続的に実行して、条件に合致した Key・Value セットが現れたらイベントをあげるような機能で、たとえば、指定した銘柄の株価がある条件を満たしたらイベントをあげてそれにひも付いて自動的に投資行動を行うといったシステムに適用可能
    • クエリとして OQL も使える
  • データ通信プロトコルとして、TCPUDP(当然リライアブルな方)をサポート
  • クライアント API として、Java 以外に、C#C++ をサポート
  • 基本はほとんど pure java で記述されているので、サポート対象プラットフォーム以外でも、Java さえサポートしていればまず動く
    • 当方は、基本、Mac OS X で動かしております(えぇ、えぇ、サポート対象外のプラットフォームです)
  • WAN 越しのデータ連携機能(WAN Gateway
    • 異なる拠点にある GemFire クラスタ(Gem 用語で Distributed System)のデータを、WAN 経由で非同期データ連携可能
    • この機能を使って、データを RDBMS とかに非同期で永続化したりとか可能
  • GemFire ベースのインメモリ RDBMS がまもなくリリース

と、つれづれなるままに書き殴ってみましたが、これを見て「あんなことができそう。。。」とか妄想を抱けるあなたは、GemFire を楽しめることでしょう。ぐふふ。

GemFire の歴史

GemFire の歴史というか、開発元の旧 GemStone Systems 社の買収歴史なんですが、2010 年の 5 月に EMC に買収された VMware に買収された SpringSource 配下におさまったわけですが、GemStone のサイト自体もいまだに残っていて(2011 年 7 月現在)、こちらで会社情報とか見てみると、そもそも Smalltalk ベースのオブジェクトサーバ製品(GemStone/S)のベンダとしてスタートしたようである。

Smalltalk というと今となっては聞いたこともないという IT エンジニアもいるかと思いますが、詳しくは Wikipediaこちらをみていただくとして、オブジェクト指向言語ならびに開発・実行環境の先駆的存在ですが、ざっくり Java に通じているところはあるので、そのノウハウをもって IT システム開発におけるメインストリーム言語となった Java をベースとした GemFire の開発へとつながったのは自然の流れのような印象でもある。

#ともあれ、GemStone/S の Smalltalk VM ベースのスケールアウト型 Ruby 実行環境である MAGLEV や、同じく Smalltalk ベースの Web アプリケーションフレームワークGLASSデベロッパーやコミュニティサイトのタイムスタンプを見る限り、開発が進められているようで、Smalltalk もまだまだやるな!って感じ。

SMALLTALKで学ぶ オブジェクト指向プログラミングの本質

SMALLTALKで学ぶ オブジェクト指向プログラミングの本質

GemFire を弄ろう

すべて英語ですが、ドキュメントからチュートリアル、サンプルコードが結構豊富に無償提供されていて、一通りサンプル動かしたりしたらだいたい理解できる印象です。チュートリアル、ドキュメントなどのサイトは、以下です。

community.gemstone.com - GemFire Enterprise

こちらのサイトには、VMware の GemFire ダウンロードサイトへのリンクがあって、VMware にアカウント登録(無償)しておけば、ダウンロードし放題です。周辺ツール(VSD とか GFMon、NativeClient、Data Broweser Tool)もダウンロード可能です。

一応、無償評価期間 60 日とあるけど、GemFire 自体は、3 メンバー(3 JVM プロセス)、3 クライアントまでなら、ライセンスフリーで使えるので、個人的に弄ったり、開発用ということであれば実質無償です。これはよいですね。