NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

  • 2011-11-18
  • 本文字数:1716 字

    阅读完需:约 6 分钟

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

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2011-11-18 06:451323

评论

发布
暂无评论
发现更多内容

2022 读过的书 -- 《Github入门与实践》

SkyFire

GitHub 读书

架构实战营模块 6 作业

Naoki

架构实战营

kafka 生产者分区策略演进

布兰特

kafka

架构实战营 模块六作业

挖了蘑菇哩斯

架构实战营

Qt | 播放音频文件 QMediaplayer

YOLO.

音视频 qt 多媒体 播放 7月月更

冻结JS对象方法技术详解

猪痞恶霸

js 7月月更

【Docker 那些事儿】如何安全地进入到容器内部

Albert Edison

Docker Kubernetes 容器 云原生 7月月更

设计微博系统中"微博评论"的高性能高可用计算架构

Geek_7a789a

小程序电商业务微服务设计与基础设施选型

Geek_e8bfe4

Java中二进制转换的多种方法

工程师日月

Java’ 7月月更

Python Asyncio 二探:使用和用途

宇宙之一粟

Python asyncio 7月月更

【LeetCode】装满杯子需要的最短总时长Java题解

Albert

LeetCode 7月月更

ArrayBlockingQueue源码分析-新增和获取数据

zarmnosaj

7月月更

企业无忧 | Apipost私有化部署活动 火热开启

Xd

后端 接口测试工具

解读《深入理解计算机系统(CSAPP)》第6章存储器层次结构

小明Java问道之路

cpu 内存 存储器 高速缓存 7月月更

应用容器化迁移步骤

穿过生命散发芬芳

应用迁移 7月月更

leetcode 312. Burst Balloons 戳气球(困难)

okokabcd

LeetCode 动态规划 分治 数据结构与算法

Electron入门【01】

坚果

7月月更

成年人的周末 2022.7.10

贾献华

7月月更

大风车吱呀吱哟哟地转,这个风车加载指示组件真有趣!

岛上码农

flutter ios 前端 安卓开发 7月月更

Java注解详情与自定义注解实战

宁在春

aop 注解 反射 Java’ 7月月更

项目研发流程规范

源字节1号

机器学习-回归分析

AIWeker

机器学习 回归分析 7月月更

TypeScript学习后续之受挫的经历

为自己带盐

7月月更

动态注册广播流程学习

北洋

Andriod 7月月更

TiFlash 源码解读(四) | TiFlash DDL 模块设计及实现分析

TiDB 社区干货传送门

集群管理

Envoy整体架构概述

阿泽🧸

envoy 7月月更

拆分电商系统为微服务

Geek_7a789a

聊聊乐观锁 & 悲观锁

Steven

2022读过的书--《操作系统导论》

SkyFire

读书 操作系统

一款宝藏工具:Apipost

Xd

Java 后端 接口测试

带有基于Smalltalk的Ruby VM的NoSQL OODB:MagLev 1.0发布了_Ruby_Werner Schuster_InfoQ精选文章