NoSQL/KVSあれこれ:Red Hat JBoss Data Gridとは
JDGの特長
JDGは分散型KVSの機構を取り入れたPure Java(すべてJavaで記載された)製品です。長らくJava EEアプリケーションサーバであるJBoss Enterprise Application Platformのクラスタ機能の内部機構として利用され続けてきたJBoss Cacheプロジェクトの後継としてスタートしたInfinispanの成果物がベースになっています。
KVSとはKey-Value-Storeの略であり、値(Value)と、それを取得するためのキー(Key)からなるデータストア製品ですが、エンジニアの方であればMap構造と説明した方が理解は早いかもしれません。
JDGはまさにこのjava.util.Mapに良く似たAPIを提供しており、開発者はjava.util.Mapを利用する感覚でJDGを利用することが可能です。
また、JDGには下記の様な特徴があります。
大量のデータをオンメモリで高速処理
JDGは大容量のデータをオンメモリで保持することが可能です。多くのデータを複数のJDGインスタンスで分散して保持しますが、JDGを利用するアプリケーションはデータの格納先を全く意識する必要はありません。JDGがアプリケーションの要求に合わせて、然るべきデータを、そのデータが格納されているJDGインスタンスから取得し、返してくれます。また、基本的にすべてのデータがメモリ上(JavaVMヒープ上)に格納されているため、非常に高速に処理することができます。
高い耐障害性
JDGは基本的に複数のインスタンスを立ち上げ、運用しますが、その複数のJDGインスタンスで格納するデータを重複して保持することが可能です。
つまり、1つのJDGインスタンスがダウンした際、データは他のJDGインスタンスが保持しているので、なくなってしまうことはありません。データを重複して保持するJDGインスタンスも、その環境やシステム要求に合わせて任意の数を設定することが可能です。また、メモリ上のデータをファイルやDBに永続化するCacheStoreと言う機能も提供されています。
高いスケーラビリティ
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管理コンソールで取得および実施することができます。
先進的な機能
JDGはシンプルなKVSとしての側面が強いですが、値の書き込みや変更等のイベントを検知し動作するEventListenerや、キャッシュ値に対して一括して操作する場合に利用するDistributed Executor、合算処理などの結果を集約して取得する場合等に有効なMap/Reduce機能等、先進的な機能も標準で搭載しています。
企業向けサポート
企業システムでソフトウェアを利用する場合、サポートが提供されているか否かは大きなポイントになります。JDGはサブスクリプションを購入することで、レッドハットおよびレッドハットのパートナー企業から技術サポートを受けることができます。利用方法が分からない、製品の不具合が発生したかも知れない等、企業システムを開発、運用していく際に、さまざまな疑問が出てきますが、レッドハットのサポートに問い合わせることで、多くの問題がスムーズに解決するでしょう。
なお、サブスクリプションの数はサーバ側のCPUコアの総数で決定し、クライアント側での課金は発生しません。
いかがでしょうか?今回はJDGの特徴および概要について簡単に解説させて頂きました。次回、第2回はさらにJDGをご理解頂くためにJDGの重要な機能に関してもう少し細かく紹介したいと思います。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- IoTに適したNoSQL・分散Key-Valueストア
- JBoss Data Gridを使ってみる:インストール編
- JBoss Data Gridをライブラリモードで使ってみよう
- Hadoopがスケール・アウトする仕組み
- データ分析システムの全体像を理解する(7) データレイクとNoSQLデータベース
- Red Hatが提供するJBoss Enterprise Middlewareとは
- 企業向けデータグリッド:Red Hat JBoss Data Gridの特徴
- JBoss Data Gridの構成とチューニングポイント
- Hibernate Searchって何だ?
- JBoss Data Gridを監視してみよう