BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース JavaのSpace4Jとのメモリ内パーシスタンス

JavaのSpace4Jとのメモリ内パーシスタンス

Space4J(リンク)は単純なデータベースであり、メモリのJava Collectionsと動作させる。メモリは、データへのランダムアクセスのディスクよりも高速な絶対値の複数の命令であるので、Space4Jはパ フォーマンスを必要とする「リアルタイム」Webアプリケーションおよびシステムに対し、より良いスケーラビリティーを提供している。

Space4Jで、SQL SELECTを実行して、データベーステーブルからUserをフェッチする代わりに、デベロッパはユーザマップ(java.util.Map)にアクセス しusers.get(id)を呼び出す。すべてのデータはJVM内のメモリに保持されるので、追加のデータベースアプリケーション、ソケット接続、 JDBCドライバー、SQLステートメントやORMツールは不要である。データはオブジェクトやJavaマップにある。データを修正するオペレーションに ついては、Commandオブジェクトが作成され、直列化され、ログファイルのディスクに保存される。リスタート時は、過去のコマンドはログファイルから 読み取られ、再適用され、たとえばシステムの異常終了前にあったデータセットとまったく同じデータセットを生成する。

ログファイルが時々巨大になるのを防止する目的で、アプリケーションは全てのデータのスナップショットをとることができる。Space4Jは、すべての データをSpaceオブジェクト内に保持する。スナップショットをとる場合、Spaceオブジェクト全体がシリアライズされ、ディスクに保存される。最後 のスナップショットは再適用される必要があるので、リスタート時はコマンドのみである。スナップショットのサイズは、アプリケーションによって決まる。ま た、スナップショットをディスクに保存する際、Space4Jクラスタを使用する場合を除き、システムは読み取り専用モードにする必要がある。そのような デプロイメントの例は、ロードバランシングのWebアプリケーションであろうが、すべてのWebサーバにはクラスタから独自のSpace4Jノードがあ る。

Space4Jは、完全な索引付けフレームワークを搭載している。異なる4タイプの索引がデータを検索するのをさまざまな方法でサポートするものである。 また、オフライン作業における通常のデータベース、データウェアハウジング、レポートなどと同時に使用することができる。

Space4Jは、データへの並行読み取り/書き込みアクセスのJava 1.6並行データ構造を使用する。そのため書き込みプログラムは書き込みプログラムのみをブロックし、読み取りプログラムは、何もブロックしないし、何に よってもブロックされない。これは、1つずつ修正がおこなわれるが、 ConcurrentModification例外なしで、読み取りアクセス操作が同時に実行されることを意味する。

最新のリリース(0.9.1)をダウンロードしたり(ZIP)、ソースリポジトリをリポジトリをブラウズすることができる(リンク)

パフォーマンスやその他のデータアクセス問題(参考記事リンク)のため、ディスクからメモリへデータアクセスを遷移する、新出のパラダイムについて詳しくは、Steven Robbins氏によるInfoQの記事「RAMが新たなるディスクとなる...」(参考記事)を参照のこと。

原文はこちらです:http://www.infoq.com/news/2008/09/space4j

この記事に星をつける

おすすめ度
スタイル

BT