NoSQL/KVSあれこれ:Red Hat JBoss Data Gridとは

2013年7月19日(金)
三木 雄平

JDGの特長

JDGは分散型KVSの機構を取り入れたPure Java(すべてJavaで記載された)製品です。長らくJava EEアプリケーションサーバであるJBoss Enterprise Application Platformのクラスタ機能の内部機構として利用され続けてきたJBoss Cacheプロジェクトの後継としてスタートしたInfinispanの成果物がベースになっています。

KVSとはKey-Value-Storeの略であり、値(Value)と、それを取得するためのキー(Key)からなるデータストア製品ですが、エンジニアの方であればMap構造と説明した方が理解は早いかもしれません。

図2:Key-Value-Store

JDGはまさにこのjava.util.Mapに良く似たAPIを提供しており、開発者はjava.util.Mapを利用する感覚でJDGを利用することが可能です。

また、JDGには下記の様な特徴があります。

大量のデータをオンメモリで高速処理

JDGは大容量のデータをオンメモリで保持することが可能です。多くのデータを複数のJDGインスタンスで分散して保持しますが、JDGを利用するアプリケーションはデータの格納先を全く意識する必要はありません。JDGがアプリケーションの要求に合わせて、然るべきデータを、そのデータが格納されているJDGインスタンスから取得し、返してくれます。また、基本的にすべてのデータがメモリ上(JavaVMヒープ上)に格納されているため、非常に高速に処理することができます。

高い耐障害性

JDGは基本的に複数のインスタンスを立ち上げ、運用しますが、その複数のJDGインスタンスで格納するデータを重複して保持することが可能です。

つまり、1つのJDGインスタンスがダウンした際、データは他のJDGインスタンスが保持しているので、なくなってしまうことはありません。データを重複して保持するJDGインスタンスも、その環境やシステム要求に合わせて任意の数を設定することが可能です。また、メモリ上のデータをファイルやDBに永続化するCacheStoreと言う機能も提供されています。

図3:JDGの耐障害性(クリックで拡大)

高いスケーラビリティ

JDGでは負荷状況やデータ量に合わせ、動的にノードの追加・削除を行うことができます。例えば、ECサイトのキャンペーンに伴い、アクセス数が急増する可能性がある場合、管理者はコールドスタンバイしているJDGインスタンスを起動させるだけでシステムを拡張させることができます。

JDGは同じグループに設定されている、それぞれのJDGインスタンス間で連携しており、そのグループの新しいJDGインスタンスが起動したタイミングで、自動的にその追加JDGインスタンスをグループに加えてくれます。

また、新しいJDGインスタンスがグループに加わったとしても、JDGを利用するアプリケーションではなんら意識する必要はありません。格納されているデータのリバランスやデータの取得および格納先の変更等は、すべて自動的にJDGが実施してくれます。

充実した管理機能

JDGを運用する場合、取り扱うデータ量によっては100以上のJDGインスタンスを立ち上げて運用しなければならない可能性があります。その場合、運用ツールが非常に大事になってきますが、JDGにはJBoss Operations Network for JDG と呼ばれるWebアプリケーションベースのGUI管理ツールが付属しています。この管理ツールを利用することで

  • JDGインスタンスのステータス確認
  • JDGインスタンスの起動/停止
  • 保持するキャッシュ量に関する情報
  • etc

さまざまな情報を1つのWeb管理コンソールで取得および実施することができます。

図4:JBoss Operations Network for JDG 画面(クリックで拡大)

先進的な機能

JDGはシンプルなKVSとしての側面が強いですが、値の書き込みや変更等のイベントを検知し動作するEventListenerや、キャッシュ値に対して一括して操作する場合に利用するDistributed Executor、合算処理などの結果を集約して取得する場合等に有効なMap/Reduce機能等、先進的な機能も標準で搭載しています。

企業向けサポート

企業システムでソフトウェアを利用する場合、サポートが提供されているか否かは大きなポイントになります。JDGはサブスクリプションを購入することで、レッドハットおよびレッドハットのパートナー企業から技術サポートを受けることができます。利用方法が分からない、製品の不具合が発生したかも知れない等、企業システムを開発、運用していく際に、さまざまな疑問が出てきますが、レッドハットのサポートに問い合わせることで、多くの問題がスムーズに解決するでしょう。

なお、サブスクリプションの数はサーバ側のCPUコアの総数で決定し、クライアント側での課金は発生しません。

いかがでしょうか?今回はJDGの特徴および概要について簡単に解説させて頂きました。次回、第2回はさらにJDGをご理解頂くためにJDGの重要な機能に関してもう少し細かく紹介したいと思います。

レッドハット株式会社

JBossグループ ソリューション・アーキテクト
株式会社SRAを経て、2002年に日本BEAシステムズ入社。カスタマーサポートチームにて、アプリケーションサーバおよびJava VM(JRockit)のサポートを担当。その後、プリセールスチームにてSIP Servlet関連の製品に携わる。2007年よりレッドハット JBossグループにてプリセールスを担当。
音楽(聴く&演奏)大好き。最近はJazzyなベースとリズムに魅了されてます。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています