BT

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

| 作者: Werner Schuster フォローする 9 人のフォロワー , 翻訳者 笹井 崇司 フォローする 0 人のフォロワー 投稿日 2009年11月26日. 推定読書時間: 3 分 |

原文(投稿日: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を試してみる気になったかい?

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT