MagLev 1.0がリリースされた。MagLev は、64ビット Smalltalk VMである GemStone/S上に構築された Ruby VMである。しかしMagLevはRuby VM以上であり、成熟したNoSQLデータストアを持っている。webサイトによると、
MagLev VMは GemStone/S JITの最大の利点が享受でき、ネイティブコードのパフォーマンス、分散した共有キャッシュ、完全なACIDトランザクション、エンタプライズクラスのNoSQLデータ管理能力により、堅牢で耐久性のあるプログラミングプラットフォームを提供する。メモリーに収まるよりもずっと大容量な(テラバイト)データとコードを透過的に管理できる。
InfoQは VMWare( GemStoneはVMWareによって買収された)の Monty Williams 氏に MagLev 1.0について話を聞いた。
InfoQ: MagLevは 現在のNoSQL領域のどこに合うのですか?
- 私はMagLevを単に組込みのNoSQLデータベースを持つ Ruby VMとは考えていません。 MagLevはNoSQLデータベースであり、そのデータ操作言語にRubyを使っている、と考えています。
- 私は、多くの人がMagLevが「単一のオブジェクト スペース」を提供している、ということを理解できていない、と思っています。別のデータベースには何も送りませんし、受け取りもしません。あなたの全てのコードが「データーベースで」実行されます。あなたはどのオブジェクトが修正されたかをトラックする必要はありませんので、ディスクにそれらを掃き出すことができます。MagLevが自動的にトラック処理をしてくれます。
- どんなRubyオブジェクト、Proc、lambda、Thread、 continuationなどでも保存できます。Threadを停め、コピーし、保存し、元と違うVMで再スタートする例が http://blog.bithug.org/2011/09/maglev-debugにあります。
- MagLevの永続性は Image Persistenceに似ています。すなわち共有キャッシュにあるのと同じフォーマットでオブジェクトはディスクに永続化されます。
- MagLevのトランザクションはACIDです。すなわち複数のVMが同じリポジトリとやり取りでき、参照整合性を維持しつつ、状態、オブジェクト、コードを共有できます。
- 新しいMagLev VMをスタートしても、他のVMによってロードされたコードは、キャッシュにほとんどの場合残ったままです。なのでそれのロード/要求は非常に速いです。
InfoQ: VMWareの クラウド製品でMagLevをサポートしていますか?
今のところサポートしていません。8月にプロタイプを作り、そうなることを願ってますが、需要次第です。
InfoQ: Ruby言語のサポート状況はどうですか? 1.8.7?1.9の計画はどうですか?
今は 1.8.7です。それが一番安定しているプラットフォームですから。1.9は、ずいぶん変化しているので1.0に入れるのは無理でした。
InfoQ: FFIやネイティブ拡張のサポートはありますか?
FFIもネイティブ拡張も組込まれています。両方共MRIが走らせられる全てを走らせることはできません。MagLevにはメモリーコンパクト化GCがありますが、ネイティブコードが幾分「行儀が良い」必要があります。この制限と回避方法は以下に書かれています。https://github.com/MagLev/maglev/blob/master/lib/ruby/1.8/include/Maglev_c_extensions.md.
InfoQ: MagLevのスレッド化と並列性に関してはどうですか?
MagLevはグリーンスレッドを使っています。しかしMagLevは共有した、トランザクショナルなオブジェクト スペースを持っているので、複数のMagLev VMに渡る並列性を実現するスケーラブルな組込みモデルがあります。「全ての」繋がったMagLev VMは同じオブジェクトを見ているので、MagLevは何千の本当に並列なスレッドを同じオブジェクト上で走らせることができます。
InfoQ: MagLevはMITライセンスを使っています。下にある GemStone/S VMのライセンス状況はどうなんですか?
明確にするために言いますが、 我々 が書いたMagLevの Ruby と SmalltalkのコードはMITライセンスです。我々が使ったRubyライブラリやオープンソースコンポーネントは違うライセンスです。 https://github.com/MagLev/maglev/tree/master/Licenses (特に README)を見てください。
InfoQ: MagLevには機能限定の無料バージョンと商用バージョンがありますか? あるいは全て無料ですか?
いつも無料バージョンは、あるでしょう。唯一の制限は2GBの共有キャッシュで、例えば https://github.com/MagLev/maglev/blob/master/etc/maglev.demo.key-Linux-x86_64を見てください。
ストアできるデータ量に制限はありません。共有メモリーにキャッシュできるデータ量だけです。
InfoQ: 要するに、もしMagLevを使いたければ、全く払う必要がないのか?時々あるいはいつも払う必要があるのでしょうか?
サポートが必要な時ともっとキャッシュが欲し時だけ払う必要があります。
InfoQ: MagLevはあなた方の Smalltalk とSeasideソリューションとどう関係しているのですか?
両方共 GemStone/Sで提供される、同じJIT、バイトコードループ、キャッシュ、永続性を使用しています。基礎となるVMは、RubyとSmalltalkの両方のコードを走らせることができるので、 MagLev VM上で Seasideも走らせることができます。
MagLevのインストールは簡単でrvmを使う。
rvm install maglev rvm use maglev
更に詳細は、"Get Started with MagLev"(文書とリンクされた資料)を見て欲しい。Examples セクションには MagLevがサポートするSinatra や Rails 3.1のようなフレームワーク用のサンプルコードが含まれている。