BT

Moneta: Uma interface para armazenagem Key-Value como Tokyo Cabinet e Memcache

por Mirko Stocker , traduzido por Felipe Rodrigues em 03 Mar 2009 |

Banco de dados relacionais são apenas uma das opções quando se trata de armazenar dados. Dependendo do caso atual, pode valer a pena olhar para a armazenagem chave-valor. Se os dados são armazenados e acessados principalmente por uma chave primária, um banco key-value pode ser uma opção mais adequada que o modelo relacional. Então, o que são bancos chave-valor? O nome soa como o bom e velho hash e conceitualmente, é isso mesmo.

Comparado a um RDBMS completo, bancos chave-valor são bem mais simples, o que é também a razão de existirem muitas implementações concorrentes disponíveis. Nós olhamos para o Tokyo Cabinet e Moneta, uma interface unificada para diferentes bancos chave-valor.

O Tokyo Cabinet é uma biblioteca C que implementa um banco chave-valor muito rápido e eficiente:

O banco é um arquivo de dados simples contendo os registros, onde cada um é um par de chave e valor. Cada chave e valor são um seriais de bytes com tamanho variável. Tanto dados binários quanto cadeias de caracteres podem ser usados como chave e um valor. Não existe o conceito de tabelas e nem de tipos de dados. Os registros são organizados em uma tabela hash, B+ tree ou array de tamanho fixo.

Além da API para Ruby, há também APIs para Perl, Java, e Lua disponíveis.

PAra compartilhar o Tokyo Cabinet entre máquinas, o Tokyo Tyrant oferece um servidor para conexões concorrentes e remotas. Para ver alguns exemplos e mais informação sobre o Tokyo Cabinet, você pode ver o artigo de introdução do Ilya Grigorik.

Suponha que você decidiu usar um banco chave-valor, mas não quer decidir sobre uma implementação específica ainda, então o Moneta pode vir a calhar. Seu objetivo é oferecer uma interface unificada para bancos chave-valor, de forma similar ao que o Rack faz para web servers e como Yehuda Katz explica, "bibliotecas que querem oferecer mais facilidade em relação aos bancos chave/valor (ex: suporte a caching do Rails e Merb)podem usar o Moneta como backend".

Por padrão, o Moneta suporta armazenagem em arquivo, memcache, in-memory, o xattrs em um file-system, DataMapper, além do tão mencionado Tokyo Cabinet (através do rufus-tokyo, uma "interface baseada no ruby-ffi para o Tokyo Cabinet e Tokyo Tyrant").

Leia mais sobre o Moneta no blog do Yehuda ou olhe no repositório do github.

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber menssagens dessa discussão

Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2013 C4Media Inc.
Política de privacidade
BT