InfoQ

News

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

作者 Dionysios G. Synodinos, 翻訳者 編集部 投稿日 2008年9月26日 午前12時38分

コミュニティ
Java
トピック
データアクセス,
パフォーマンス&スケーラビリティ

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

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

ジャンル別一覧

Agile2008 チーム参加レポート - 動機/準備編

筆者はアジャイルソフトウェア開発についての年に一度の国際会議であるAgile2008に初めて参加してきました。今年の日本からの参加者の数は14名にも及び、発表者は5名、受け持ったセッションは8つに及び、例年にない活躍を見せました。なぜ今年のAgile2008では、これほど多くの日本人が参加し発表に至ったのか? そのレポートをお届けします。

Javaトラブルシューティングメルマガ総集編 2008/08~09

エスエムジーでは、Java全般を対象にしたトラブルシューティングサービス「JaTS」を提供しています。この記事では、前回に引き続き、JaTSにて蓄積したトラブル事例とその解決ノウハウの一部をお送りしている「Javaトラブルシューティングメールマガジン」(JTSMM)の総集編として、過去2ヶ月のトラブル事例と追加情報をダイジェストとして提供いたします。

モデル駆動アプローチがうまく機能しない(しなくなる)8 つの理由

この記事では、モデル駆動アプローチがうまく機能しない、または機能しなくなることによって期待した結果が実現できなくなる 8 つの理由について書きたいと思います。

消費者主導契約を使ったサービス指向開発

この論文では、組織のサービス開発能力改善を目指した実用的な提案をします。

スケーラビリティの構築とパフォーマンスの達成:バーチャルパネル

InfoQ.com向けのこのバーチャルパネルでは、大企業やプロジェクトからスケーラビリティやパフォーマンスの著名人を招待し、みんなが夢に描いているような結果を達成するための秘密を明かしてもらいました。

アジリティのためにコンポーネントチームより機能チームを選ぶ

Craig Larman氏とBas Vodde氏は、どのように、そして、なぜ機能チームがうまくいくのかを説明し、この主要な組織の変化が価値あるものであることを主張します。

仮想化とセキュリティ

仮想化にはたくさんの利点がありますが、かと言って、その上に実装するアプリケーションのセキュリティをないがしろにしてはいけないのです。

Rubyのオープンクラス:猿のようにパッチを当てない方法

最近リリースされたRuby 1.8.7のプレビューリリースをウオッチしていたRails開発者はすぐに1.8.7プレビュー1に関してあることに気がつきました。それは、1.8.7プレビュー1がRailsを破壊してしまうということです。