MagLev 是由 GemStone 在 Smalltalk 虚拟机 GemStone/S 上构建的一个 Ruby 实现。虚拟机 GemStone/S 是 GemStone 的主要产品之一,已经发布数年,并且以其成熟的分布式和持久能力而闻名。
在 2008 年宣布 MagLev 之后,这个团队就一心扑在这个项目上。经过一个内部的 Alpha 测试版,现在有一个消息可以告诉大家: MagLev 公开的版本,包括托管在 GitHub 上的 MagLev 源代码现在均已可用。
尝试一下 MagLev?首先获得源代码:
git clone git://github.com/MagLev/maglev.git
然后在 MagLev 源码目录中运行
./install.sh
最后按照它提供的指令一步一步来即可。想要运行 MagLev 的话,只需
rake maglev:start
这样系统就启动了。使用maglev-irb
可以快速运行 Ruby 代码,它能和 MagLev 的通用后端进行通信;maglev-ruby
和maglev-gem
也均已可用。
如果细细读过这些样例,便不难发现 hat_trick 这个例子,它被 Avi Bryant 用于第一次展示 MagLev 的 demo。这个例子介绍了持久性,能够允许在一个irb
实例中设置一个对象然后在另外一个实例中访问它。
要运行这个例子,只需要简单地运行 MagLev 以及两个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”。
很显然,这是一个非常简单的用于展示持久性的 demo;更多 MagLev 持久性的 API 请参见文档。
另一个相关的例子是一个使用持久性的Ruby 的PStore 实现。它告诉开发者GemStone 的持久特性是如何无需处理ORM 就能够将整个对象图面持久化的。
虽然MagLev 现在还不支持Rails,但是 Rack 和 Sinatra 的示例已经可以正常工作了。
一个公开的 MagLev Trac 现已可用,开发者可以用来跟踪整个开发过程。为了兼容性考虑,这个图给出了通过Ruby 规范的数目,当然详细结果的链接也会给出。
看起来MagLev 没有任何许可证,但是GemStone 确实会发布免费版本,例如捆绑了web 架构Seaside 的GemStone/S ,基于64bit,能够管理大于4G 的数据。
虽然这些日子关于NoSQL 数据库有些小小的争论,但是GemStone/S 的确是一个已经使用多年的成熟的解决方案。MagLev 现在紧密地将这些特性和Ruby 结合在一起。你会选择谁?你会尝试MagLev 吗?
查看英文原文: MagLev Ruby VM Now Available, Brings GemStone’s Persistence to Ruby
评论