MagLev Ruby VM 发布,将 GemStone 持久特性引入 Ruby

  • 2009-12-01
  • 本文字数:1005 字

    阅读完需:约 3 分钟

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-rubymaglev-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