Peepcode sponsors akitaonrails.com Locaweb sponsors akitaonrails.com

Madeleine

AkitaOnRails / 21.Dec.2007 at 04:05pm

Eu acabei de falar sobre SimpleDB e bancos de dados não-relacionais. Este é um mundo estranho mas cheio de grandes possibilidades. Infelizmente a maioria dos programadores já cresceu num mundo dominado pelos RDBMS, as commodities da tecnologia.

Durante a RejectConf tive o prazer de conhecer o Carlos Villela, atual ThoughtWorker que palestrou no nosso evento. Agora uma curiosidade que eu não sabia: ele foi desenvolvedor do projeto Java Prevayler.

Prevayler é um sistema de persistência de objetos. Neste momento a maioria vai pensar “hmm, mais um ORM, mais um Hibernate” e aqui está o primeiro erro pois Prevayler nada tem a ver com RDBMS. Estamos falando de objetos, o segundo pensamento é “hmm, ODBMS, Zope Database”

Errado novamente. Como o próprio nome diz Prevayler é baseado no conceito de Object Prevalence que o próprio Carlos explica neste artigo no IBM developerWorks de 2002. A grosso modo você lida com persistência de objetos em memória, de maneira robusta suportado por um sistema de journaling (tipo transaction log) e um snapshot em disco. Desta forma, se o sistema cai, ele pode ser recuperado até exatamente o estado imediatamente anterior ao crash.

Uma das características mais marcantes: prevalence é algumas ordens de grandeza mais rápido do que um RDBMS.

Object Pravalence é um conceito, sendo a implementação mais importante o Prevayler em Java, mas outras linguagens também tem suas implementações, incluindo Ruby, que tem o projeto Madeleine, inspirado na arquitetura do Prevayler. Infelizmente não é um projeto com o mesmo nível de reconhecimento que o ActiveRecord e mereceria mais atenção para evoluir melhor.

Por outro lado, não estou dizendo que devemos jogar fora os RDBMS e usar Prevalence para tudo. Vamos parar com esse pensamento binário “ou um ou outro”. É apenas mais uma tecnologia que merece ser estudada e que pode ser muito útil em vários cenários. Quem sabe, talvez até seja possível usar Rails + Madeleine, Merb + Madeleine em alguns casos. Alguém se habilita?

1 Comment

A muito eu vi comentarios do DHH sobre isso e penso que hj em dia os comentarios que ele fez na ehpoca (2005 eu acho) se tornam mais validos ainda.

Ele comentou que uma coisa importante por traz da tentativa de incorporar o Madeleine no Rails, era o fato de que certas coisas que hj sao atreladas a ActiveRecord devem ser removidas de lah e separadas em uma camada superior.

Os validadores sao um exemplo excepcional disso. Outras frameworks como a ActiveLDAP, o citado Madeleine e hj em dia a ActiveResources devem se beneficiar deste tipo de recurso…

A pouco mais de um ano eu tive que trabalhar no design (de um projeto proprietario), onde fui incubido de projetar uma camada de ORM em Java. A ehpoca eu projetei um sistema altamente baseado na ActiveRecord, mas adicionei algumas camadas para a mesma limpando a associacao principal com SQL e criando um protocolo dentro dela atraves de entidades de multiplos tipos, de forma que um modelo no projeto poderia ser oriundo de N fontes (a ehpoca iniciaram o desenvolvimento de um driver conector entre XML e outro para bancos MySQl), que sao acessados como uma coisa soh (finders comuns, methodos de create, update, etc).

Leave a Comment