带有基于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。
相关赞助商
转载于:https://www.cnblogs.com/lexus/archive/2011/11/19/2254815.html
带有基于Smalltalk的Ruby VM的NoSQL OODB:MagLev 1.0发布了相关推荐
- 微信回应朋友圈表情包评论关闭:灰度测试;Twitter漏洞波及1700万用户;Ruby 2.7.0发布 | 极客头条...
整理 | 郭芮 快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注 ...
- 华为天才少年稚晖君被曝离职;苹果 A16“挤牙膏”原因曝光;Ruby 3.2.0 发布|极客头条
「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...
- Element 2.6.0 发布,基于 Vue 2.0 的桌面端组件库
开发四年只会写业务代码,分布式高并发都不会还做程序员? Element 2.6.0 发布了,Element 是一套为开发者.设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库,提供了配套设 ...
- Sequelize 4.43.0 发布,基于 Nodejs 的异步 ORM 框架
Sequelize 4.43.0 发布了,Sequelize 是一款基于 Nodejs 的异步 ORM 框架,它同时支持 PostgreSQL.MySQL.SQLite 和 MSSQL 多种数据库,很 ...
- iView 3.3.0 发布,基于 Vue.js 的企业级 UI 组件库
iView 3.3.0 发布了,代号 Transistor ,iView 是一套基于 Vue.js 的企业级 UI 组件库,主要服务于 PC 界面的中后台产品. 本次更新如下: https://www ...
- 最简单的基于FFMPEG+SDL的视频播放器 ver2 (采用SDL2.0)
===================================================== 最简单的基于FFmpeg的视频播放器系列文章列表: 100行代码实现最简单的基于FFMPEG ...
- Element 2.13.0 发布,基于 Vue 的桌面端组件库
Element 2.13.0 发布了.Element 是一套为开发者.设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库,提供了配套设计资源,帮助你的网站快速成型.由饿了么公司前端团队开源. ...
- 基于Java的开源 Carrot2 搜索结果聚合聚类引擎 2.0发布了
基于Java的开源 Carrot2 搜索结果聚合聚类引擎 2.0发布了 专注是不断前进的指南针 --- 题记 基于Java的开源 Carrot2 搜索结果聚合聚类引擎 2.0发布了. Carrot ...
- iView 3.4.0 发布,基于 Vue.js 的企业级 UI 组件库
百度智能云 云生态狂欢季 热门云产品1折起>>> iView 3.4.0 发布了,iView 是一套基于 Vue.js 的企业级 UI 组件库,主要服务于 PC 界面的中后台产品 ...
最新文章
- java的本地文件操作
- Python Django 模型类字段常用属性
- 004. ES6之函数的扩展
- java - 计算距离和反弹
- 一次项目测评反思:数据准备、测评要求和各种问题记录
- javascript面向对象编程实现[定义(静态)属性方法--继承]
- 3年10亿怎么花?支付宝小程序公布生态孵化细则!
- gdp笔记本 linux,Ubuntu MATE 19.04和18.04.2现在可用于GPD Pocket和GDP Pocket 2
- AtCoder Beginner Contest 132 解题报告
- orc识别较慢_OCR 中文识别用哪种软件识别率比较高?
- Android性能优化之启动速度优化
- 我的世界win10java_我的世界java版和win10版的区别
- spring aop的术语
- 哪些字段适合建立索引
- 微信开工具报getLocation:fail, the permission value is offline verifying
- Syzkaller测试
- 数据库—distinct是什么意思?select distinct怎么用?
- [小代码]通过IP和端口连接到远程摄像机
- iOS CoreAnimation专题——实战篇(四)基于拖动手势的视图3D旋转效果
- 微信小程序设置启动页面
热门文章
- React 18的基本使用
- Android Webrtc使用Wifi Direct无法建立P2P连接
- Linux常用基本命令大全
- 经验正交分解EOF的Matlab的实现示例
- 数据库(笔记)——候选码、主码、外码以及关系的完整性
- html下拉复选框联动,HTML : CheckBox 复选框成组联动(JavaScript)
- node 连接MySQL
- Java基础部分 阶段一(语法基础)1、开发环境搭建(计算机编程及开发语言)
- python中常用的模块(cleandar模块,time模块,datetime模块,OS模块,shutil()模块,random模块)
- Error evaluating expression ‘xxxxx != null and xxxxxx!= ’