InfoQ

InfoQ

Notícias

Meus Favoritos

Faça oLogin ou Cadastre-se para ativar o recurso de favoritos por tempo ilimitado.

O conteúdo foi adicionado aos favoritos!

Houve um erro ao adicionar aos favoritos! Por favor, tente novamente.

MagLev Ruby VM agora disponível, traz a persistência GemStone para o Ruby

Postado por Werner Schuster , traduzido por Christian Guimarães em 15 Dez 2009

Seções
Desenvolvimento,
Arquitetura e Design,
Operações e Infraestrutura
Tópicos
Runtimes ,
Desempenho e Escalabilidade ,
Design de Bancos de Dados ,
Acesso a Dados ,
Ruby
Tags
GemStone ,
Object Databases ,
Armazenamento de Dados ,
MagLev ,
Bancos de dados ,
SmallTalk ,
Gerenciamento do Banco de Dados

MagLev é uma implementação da linguagem Ruby feita pela empresa GemStone sobre sua VM Smalltalk. GemStone/S, que é a VM Smalltalk da GemStone, está aí há décadas e é particularmente conhecida por sua capacidade, já bastante experimentada, de distribuição e persistência.

MagLev foi anunciado em 2008, e, desde então, a equipe tem estado bastante ocupada trabalhando no projeto. Depois de um período em uma versão alpha (privada), o gato saiu da saco: uma versão pública do MagLev está disponível, e inclui o código fonte do MagLev, que está hospedado no GitHub.

Para experimentar o MagLev, primeiro obtenha o código fonte com um rápido

git clone git://github.com/MagLev/maglev.git

seguido de um

./install.sh

no diretório do código fonte e siga as instruções que seguem.

Para iniciar o MagLev use o comando

rake maglev:start

para arrancar o sistema. Uma maneira rápida de rodar código Ruby é maglev-irb, que irá conectar com o backend do MagLev. Também estão disponíveis os comandos maglev-ruby e maglev-gem.

Com uma rápida olhada no diretório de exemplos encontra-se o hat_trick (truque da cartola) que o Avi Bryant mostrou na primeira demonstração do MagLev. Ele mostra os recursos de persistência, que permitem configurar um objeto em uma instância irb e então acessá-lo em outra instância.

Para reproduzir este exemplo, simplesmente inicie o MagLev e duas instâncias do maglev-irb. Para criar um objeto persistente, execute o trecho de código a seguir em uma instância do maglev-irb:

Maglev.persistent do
 Maglev::PERSISTENT_ROOT[:stuff] = ["hello world"]
end
Maglev.commit_transaction

Vá para a outra instância maglev-irb e execute:

Maglev::PERSISTENT_ROOT[:stuff]

isso irá retornar a string "hello world".

Obviamente, isto é uma demonstração bastante simples dos recursos de persistência; veja o link a seguir para maiores detalhes da API de persistência do MagLev.

Um exemplo ligeiramente mais envolvente é uma implementação PStore Ruby usando os recursos de persistência. Ela mostra como os recursos de persistência do GemStone torna fácil a manutenção de todo o grafo de objetos persistentes sem ter que lida com um ORM.

Enquanto Rails ainda não é suportado pelo MagLev, exemplos funcionais de Rack e Sinatra estão disponíveis.

Um Trac público para o MagLev está disponível para acompanhar o progresso. Para questões de compatibilidade, este gráfico mostra o números de RubySpecs testadas, enquanto que links para resultados detalhados estão disponíveis também.

Nenhum detalhe sobre questões de licensa do MagLev parecem estar disponíveis, mas a GemStone oferece versões grátis, por exemplo, da GemStone/S que acompanha o framework web Seaside, que é free até 4 GB de dados.

Enquanto, hoje em dia, existe muito burburinho em torno dos bancos de dados NoSQL, a GemStone/S é uma solução bastante experimentada que está no mercado há muito tempo. MagLev fortemente integra estes recursos com Ruby. Qual a sua opinião - irá experimentar o MagLev?

Conteúdo Educacional

Formando equipes de alto desempenho, parte 1: Início e fases de evolução

Nesta primeira parte de uma série sobre equipes de alto desempenho e gerenciamento Agile, veja uma introdução geral e uma apresentação dos estágios de formação das equipes.

Business Model Canvas, passo a passo

O Business Model Canvas é uma ferramenta estratégica para a construção visual de novos produtos ou serviços. Conheça cada um dos seus elementos e como preencher o Canvas, passo a passo.

Google Apps Script, Parte 2: Google Docs, triggers e envio de emails

Nessa segunda e última parte de uma série sobre o Google Apps Script, conheça como funciona o envio de emails, a conversão de documentos e como criar menus e triggers.

Serviços de cloud computing PaaS: um guia para desenvolvedores Java

Este artigo avalia seis dos mais importantes fornecedores de serviços de cloud computing PaaS para desenvolvedores Java, analisando critérios como desempenho, escalabilidade e tecnologias suportadas.

Canvas de Modelo de Negócios: uma contribuição para o sucesso de Startups

O Canvas de Modelo de Negócios é um novo modo de comunicar e suportar a validação iterativa, incremental e empírica de modelos de negócio de startups e novos produtos substituindo o plano de negócios.

Entrevista com Rebecca Parsons Parte 2: Agile Distribuído, Arquitetura vs. Design e SOA

Nesta segunda e última parte de uma entrevista exclusiva para InfoQ Brasil, Rebecca Parsons, CTO da ThoughtWorks, fala sobre o Agile Distribuído e técnicas para definição de arquiteturas.

Entrevista com Rebecca Parsons Parte 1: Agile nas Empresas e Arquitetura Evolucionária

Nessa primeira parte de uma entrevista com a CTO da ThoughtWorks, veja recomendações sobre formas de construir e arquitetar sistemas para obter o máximo de flexibilidade e responsividade a mudanças.

Agile das equipes à organização: o papel do gerente, estratégias e dicas para a adoção

Os gerentes de projetos podem assumir o papel crítico de liderar a introdução do Agile. Vejas conceitos, dicas e técnicas para apoiar esse processo de mudanças.