带有基于Smalltalk的Ruby VM的NoSQL OODB:MagLev 1.0发布了

http://www.infoq.com/cn/news/2011/11/ruby-maglev-10

 

MagLev 1.0发布了,它是一个构建在64位Smalltalk VM GemStone/S之上的Ruby VM。但MagLev并不只是一个Ruby VM,它包含了一个成熟的NoSQL数据存储,从它的网站上可以看到:

MagLev VM充分利用GemStone/S JIT获得本地代码的性能、分布式共享缓存、完全支持ACID事务处理,以及企业级NoSQL数据管理能力,提供健壮和持久的编程平台。它可以透明地管理比内存大得多的数据和代码(兆兆字节级别)。

InfoQ就MagLev 1.0采访了VMWare的Monty Williams(GemStone已被VMWare收购)。

InfoQ:MagLev在目前的NoSQL家族处于什么位置?

  • 我并不把MagLev看作一个整合了NoSQL数据库的Ruby VM,而是把它看作一个使用Ruby作为数据操作语言的NoSQL数据库。
  • 我认为人们还没意识到的一点是MagLev提供了一个“单一对象空间”。没有东西会发送到一个独立的数据库,也没有东西从一个独立的数据库获取。你的全部代码都是“在数据库里”执行的。你甚至不用跟踪已被修改的对象并把它们保存到磁盘里,MagLev会自动处理这些事情。 
  • 你可以保存任何Ruby对象,即使是proc、lambda、线程或者continuation。这里有个例子示范了停止、复制、保存线程,然后在另一个不同的VM里重新启动它。http://blog.bithug.org/2011/09/maglev-debug
  • MagLev的持久化类似影像持久化(Image Persistence),即对象持久化到磁盘的格式和它们在共享缓存里面的一样。你不必对它们进行封送或者把它们转换成JSON或其它格式。
  • MagLev的事务处理是ACID,这意味着多个VM可以与相同的数据仓库和共享状态、对象以及代码交互,并且保持引用完整性。
  • 当你启动一个新的MagLev VM时,由另一个VM加载的代码可能还在缓存里,因此加载/使用它们可能很快。

InfoQ:VMWare的云服务是否支持MagLev?

现在还没有。早在八月份我们就开发了一个原型,也希望提供这种支持,但这取决于实际的需求。

InfoQ:前支持哪个版本的Ruby语言,1.8.7?有没有1.9的计划?

目前只支持到1.8.7,因为这是最稳定的平台。1.9的变化太快了,无法在1.0里采用它。不过,是否采用1.9还是取决于实际的需求。

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使用Green Thread。不过,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解决方案有什么关系?

它们都使用了相同的JIT、字节代码循环、缓存和GemStone/S提供的持久化。底层的VM可以运行Ruby和Smalltalk代码,因此你可以在MagLev VM上运行Seaside。

通过rvm安装MagLev非常简单:

rvm install maglev
rvm use maglev

更多信息可以参见《Get Started with MagLev》,包括文档和相关链接。示例部分包含了示例代码,示范MagLev对Sinatra或者Rails 3.1的支持。

查看英文原文:NoSQL OODB with Smalltalk-based Ruby VM: MagLev 1.0 Released

译者 李永伦 从02年开始关注.NET,读过4年工商管理,任过3届微软MVP,最近恋上Ruby。

相关赞助商

你可能感兴趣的:(smalltalk)