设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 数据 手机
当前位置: 首页 > 教程 > 正文

NoSQL OODB MagLev 1.0发布 新特性预览

发布时间:2017-01-08 10:31 所属栏目:61 来源:李永伦 译
导读:MagLev 1.0发布了,它是一个构建在64位Smalltalk VM GemStone/S之上的Ruby VM。但MagLev并不只是一个Ruby VM,它包含了一个成熟的NoSQL数据存储,从它的网站上可以看到……

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

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

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

  记者: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加载的代码可能还在缓存里,因此加载/使用它们可能很快。

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

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

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

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

  记者:是否支持FFI或者本地扩展?

  FFI和本地扩展的支持都是内置的,不必运行MRI需要的所有东西。MagLev有一个内存压缩GC,它要求本地代码“循规蹈矩”。相关限制以及如何处理可以在这里找到:https://github.com/MagLev/maglev/blob/master/lib/ruby/1.8/include/Maglev_c_extensions.md.

  记者:MagLev在线程/并发方面如何?

  MagLev使用Green Thread。不过,MagLev有一个共享的、支持事务的对象空间,因而内置了一个可伸缩的跨越多个MagLev VM的并行模型。因为“所有”关联的MagLev VM看到的是相同的对象,所以MagLev可以有上千个真正的并行线程运行在相同的对象之上。

  记者:MagLev使用了MIT许可协议,GemStone/S VM的许可协议又是什么呢?

  需要澄清的是,我们为MagLev写的Ruby和Smalltalk代码使用了MIT许可协议。我们使用的Ruby库和其它开源组件的许可协议不尽相同。详情参见https://github.com/MagLev/maglev/tree/master/Licenses(特别是README这个文件)

  记者:MagLev是否分为有所限制的免费版本和商业版本,还是全部免费?

  永远都会有一个免费的版本。唯一的限制是2GB的共享缓存,详情参见https://github.com/MagLev/maglev/blob/master/etc/maglev.demo.key-Linux-x86_64.

  这不会限制你可以存储的数据量,只限制了共享内存的缓存。

  记者:简而言之,如果我使用MagLev,我需要付费吗?不用付费,看情况,还是需要付费?

  仅当你需要支持或者更大的缓存时才要付费。

  记者: 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的支持。

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读