BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース MagLev Ruby VMが公開される、GemStoneの永続化をRubyに

MagLev Ruby VMが公開される、GemStoneの永続化をRubyに

原文(投稿日:2009/11/21)へのリンク

MagLevは、GemStoneによって開発されたSmalltalk VM上のRuby実装だ。GemStoneのSmalltalk製品であるGemStone/Sには数十年もの実績があり、特に成熟した分散処理と永続化機能を備えていることで知られている。

2008年にMagLevへの取り組みがアナウンスされてからも、チームはずっと開発に励んでいた。しばらくはプライベートアルファの状態だったが、それももう終わりだ。ついに、MagLevの公開バージョンが登場した。これにはGitHubでホストされているMagLevのソースコードも含まれている。

MagLevを試してみるためには、まずソースコードを取得しよう。

git clone git://github.com/MagLev/maglev.git

続いて、MegLevのソースディレクトリで以下を実行する。

./install.sh

後は指示にしたがえばよい。

MagLevを動かすには、以下を実行する。

rake maglev:start

すると、システムが起動するはずだ。取り急ぎRubyコードを実行するには、maglev-irbを使うとよいだろう。これは共通のMagLevバックエンドに接続する。  maglev-rubymaglev-gem も利用可能だ。

examplesディレクトリを調べると、Avi Bryant氏が最初のMagLevデモで紹介した hat_trick が見つかるだろう。これは永続化機能を見せるためのサンプルだ。一方のirbインスタンスで用意したオブジェクトを、もう一方のirbインスタンスからアクセスすることができる。

このデモを実行するには、MagLevと2つのmaglev-irbインスタンスを起動すればよい。オブジェクトを作るために、一方のmaglev-irbインスタンスで以下を実行する。

Maglev.persistent do
 Maglev::PERSISTENT_ROOT[:stuff] = ["hello world"]
end
Maglev.commit_transaction

次に、もう一方のmaglev-irbインスタンスに切り替えて、以下を実行する。

Maglev::PERSISTENT_ROOT[:stuff]

すると、文字列 "hello world" が返ってくるはずだ。

もちろん、これは永続化機能のごく単純なデモにすぎない。詳しくは、MagLevのpersistence APIのドキュメントを見てみよう。

もう少し複雑なサンプルとしては、永続化機能を使ってRubyのPStoreを実装したものがある。 これはGemStoneの永続化機能を使うと、ORMを扱う必要なく、簡単にすべてのオブジェクトグラフ永続化が実現できることを示している。

MagLev上ではまだRailsはサポートされていないが、RackSinatra の動作サンプルは利用可能になっている。

進捗を追いかけるには、公開されている MagLevのTracを見ればよい。互換性について確認したければ、RubySpecsのパス数を示したグラフがある。詳細な結果が見たければ、こちらのリンクを見てみよう。

MegLevのライセンスについて、詳細情報はまだ公開されていないようだが、おそらくGemStoneはGemStone/Sのようにフリー版を提供するだろう。GemStone/Sの場合、WebフレームワークのSeasideをバンドルして、4GBのデータまでフリーで提供されている。

最近、NoSQLデータベースが話題になっているが、GemStone/Sは数十年もの実績のある成熟したソリューションだ。そして、MagLevはこうした機能をRubyに密に統合したものだ。どうだい、MagLevを試してみる気になったかい?

この記事に星をつける

おすすめ度
スタイル

BT