带有基于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。

相关赞助商

posted on 2011-11-19 03:11  lexus 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/lexus/archive/2011/11/19/2254815.html

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

  1. 微信回应朋友圈表情包评论关闭:灰度测试;Twitter漏洞波及1700万用户;Ruby 2.7.0发布 | 极客头条...

    整理 | 郭芮 快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注 ...

  2. 华为天才少年稚晖君被曝离职;苹果 A16“挤牙膏”原因曝光;​Ruby 3.2.0 发布|极客头条

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  3. Element 2.6.0 发布,基于 Vue 2.0 的桌面端组件库

    开发四年只会写业务代码,分布式高并发都不会还做程序员?   Element 2.6.0 发布了,Element 是一套为开发者.设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库,提供了配套设 ...

  4. Sequelize 4.43.0 发布,基于 Nodejs 的异步 ORM 框架

    Sequelize 4.43.0 发布了,Sequelize 是一款基于 Nodejs 的异步 ORM 框架,它同时支持 PostgreSQL.MySQL.SQLite 和 MSSQL 多种数据库,很 ...

  5. iView 3.3.0 发布,基于 Vue.js 的企业级 UI 组件库

    iView 3.3.0 发布了,代号 Transistor ,iView 是一套基于 Vue.js 的企业级 UI 组件库,主要服务于 PC 界面的中后台产品. 本次更新如下: https://www ...

  6. 最简单的基于FFMPEG+SDL的视频播放器 ver2 (采用SDL2.0)

    ===================================================== 最简单的基于FFmpeg的视频播放器系列文章列表: 100行代码实现最简单的基于FFMPEG ...

  7. Element 2.13.0 发布,基于 Vue 的桌面端组件库

    Element 2.13.0 发布了.Element 是一套为开发者.设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库,提供了配套设计资源,帮助你的网站快速成型.由饿了么公司前端团队开源. ...

  8. 基于Java的开源 Carrot2 搜索结果聚合聚类引擎 2.0发布了

    基于Java的开源 Carrot2 搜索结果聚合聚类引擎 2.0发布了 专注是不断前进的指南针   --- 题记 基于Java的开源 Carrot2 搜索结果聚合聚类引擎 2.0发布了. Carrot ...

  9. iView 3.4.0 发布,基于 Vue.js 的企业级 UI 组件库

    百度智能云 云生态狂欢季 热门云产品1折起>>>   iView 3.4.0 发布了,iView 是一套基于 Vue.js 的企业级 UI 组件库,主要服务于 PC 界面的中后台产品 ...

最新文章

  1. java的本地文件操作
  2. Python Django 模型类字段常用属性
  3. 004. ES6之函数的扩展
  4. java - 计算距离和反弹
  5. 一次项目测评反思:数据准备、测评要求和各种问题记录
  6. javascript面向对象编程实现[定义(静态)属性方法--继承]
  7. 3年10亿怎么花?支付宝小程序公布生态孵化细则!
  8. gdp笔记本 linux,Ubuntu MATE 19.04和18.04.2现在可用于GPD Pocket和GDP Pocket 2
  9. AtCoder Beginner Contest 132 解题报告
  10. orc识别较慢_OCR 中文识别用哪种软件识别率比较高?
  11. Android性能优化之启动速度优化
  12. 我的世界win10java_我的世界java版和win10版的区别
  13. spring aop的术语
  14. 哪些字段适合建立索引
  15. 微信开工具报getLocation:fail, the permission value is offline verifying
  16. Syzkaller测试
  17. 数据库—distinct是什么意思?select distinct怎么用?
  18. [小代码]通过IP和端口连接到远程摄像机
  19. iOS CoreAnimation专题——实战篇(四)基于拖动手势的视图3D旋转效果
  20. 微信小程序设置启动页面

热门文章

  1. React 18的基本使用
  2. Android Webrtc使用Wifi Direct无法建立P2P连接
  3. Linux常用基本命令大全
  4. 经验正交分解EOF的Matlab的实现示例
  5. 数据库(笔记)——候选码、主码、外码以及关系的完整性
  6. html下拉复选框联动,HTML : CheckBox 复选框成组联动(JavaScript)
  7. node 连接MySQL
  8. Java基础部分 阶段一(语法基础)1、开发环境搭建(计算机编程及开发语言)
  9. python中常用的模块(cleandar模块,time模块,datetime模块,OS模块,shutil()模块,random模块)
  10. Error evaluating expression ‘xxxxx != null and xxxxxx!= ’