BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

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

| 作者 Werner Schuster 关注 9 他的粉丝 ,译者 杨晨 关注 0 他的粉丝 发布于 2009年12月3日. 估计阅读时间: 4 分钟 | AICon 关注机器学习、计算机视觉、NLP、自动驾驶等20+AI热点技术和最新落地成功案例。

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT