Data Grid と Compute Grid (1) : GemFire導入
こんにちは。Tsuchiyamaです。
以前Data Gridミドルウェアの1つであるPivotal GemFireについて調べていたことがあったので書きます。
今回は紹介&すこし動かしてみるぐらいです。最終的にはCompute Gridミドルウェアの1つであるIBM Spectrum Symphony
https://www-01.ibm.com/common/ssi/cgi-bin/ssialias?htmlfid=DCD12359JPJA
と組み合わせて動かすことをゴールにし、何回かに分けて続ける予定です。
1.GemFireとは
GemFireについて詳しくはこちらご覧いただくとして
https://pivotal.io/jp/pivotal-gemfire
一言でいえばインメモリ型の分散データキャッシュミドルウェアです。
大量のデータを複数のサーバへよしなに分散してばら撒きインメモリで保管してくれて、かつ高速アクセスできるという代物です。
イベント飛ばしてキャッシュされたデータを利用する計算を該当データのあるサーバで実行することもできます。
計算対象となるデータがどこに保管されているかを気にすることなく、条件絞ってイベントを発行するだけであとはGemFireがよろしくやってくれます。
一度入信すると「お布施がたりない」というご神託に悩まされることで有名な某DB製品にもありそうな機能です。お布施積み増せばできるんでしょうかね?
2.準備する
Pivotal GemFireのオープンソース版であるApache Geodeを使います。
バイナリをdownloadして展開し、パスを設定するだけの簡単インストールです↓。
http://geode.apache.org/docs/guide/11/getting_started/installation/install_standalone.html
Javaでしか動かないようなので、仕方なくJREも準備しておきましょう。
コンソール画面で
> gfsh
を起動し、次のような管理画面のプロンプトが出ればインストール成功です。

3.データを入れて覗いてみる
gfshのプロンプトからまずはマネージャ相当であるlocatorを起動します。
gfsh > start locator --name=myLocator1

gfshを起動したディレクトリの下に
myLocator1 ディレクトリが作成されているはずです。
次にサーバを1つ立ち上げます[サーバ名:myServer1 ポート:40411]。
gfsh > start server --name=myServer1 --server-port=40411

myServer1 ディレクトリが作成されているはずです。
データを入れる箱[region] を作成します[region名:iremonoA type:replicate(=複製モード)]。
gfsh > create region --name=iremonoA --type=REPLICATE

別コンソールを起動してもう1つサーバ[サーバ名:myServer9 ポート:40421]を立ち上げてみます。 この際、マネージャになっているlocatorへの接続を先に実施します。
gfsh > connect --locator=localhost[10334] gfsh > start server --name=myServer9 --server-port=40421

先ほど作成した入れ物[iremonoA] を確認してみます。
gfsh > list regions

サーバ[myServer1] からサーバ[myServer9]が参加してるのを確認してみます。
gfsh > list members

サーバ[myServer1]でデータを入れて中身を確認してみましょう。
gfsh > put --region=iremonoA --key="key1" --value="apple" gfsh > put --region=iremonoA --key="key1" --value="melon" gfsh > query --query="select * from /iremonoA"

サーバ[myServer9]からも覗いてみます。その前に複製モードで入れ物が作成できているか確認するため、先にmyServer1を落としてみます。
gfsh > stop server --name=myServer1

サーバ[myServer9]から入れ物を覗いてみましょう。
gfsh > query --query="select * from /iremonoA"

リンゴとメロンが入ってますね。素晴らしい。
さいごに
GemFireを少し触って見ました。
gfsh経由のコマンド操作ではなく、コードからデータの出し入れできないと意味ないので次回はそれで。
*文中に登場する商品名等は各社の登録商標です
Discussion