zoukankan      html  css  js  c++  java
  • 带有基于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。

    相关赞助商

  • 相关阅读:
    如何增加按钮的点击间隔时间
    如何增加button的点击范围
    定时器Timer的使用
    NSCache
    GCD和NSOperation的区别
    NSOperation实现线程间通信
    NSOperation添加操作依赖和监听
    自定义NSOperation
    NSOperation的多线程
    单例的实现(完整版代码)
  • 原文地址:https://www.cnblogs.com/lexus/p/2254815.html
Copyright © 2011-2022 走看看