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

  • Werner Schuster
  • 杨晨

2009 年 12 月 1 日

话题:Ruby数据库DevOps语言 & 开发架构

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,但是RackSinatra的示例已经可以正常工作了。

一个公开的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

Ruby数据库DevOps语言 & 开发架构