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.

Avalie esse artigo

Relevância
Estilo/Redação

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 mensagens dessa discussão
Comentários da comunidade

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

Receber mensagens dessa discussão

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

Receber mensagens dessa discussão

Dê sua opinião
Feedback geral
Bugs
Publicidade
Editorial
Marketing
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2016 C4Media Inc.
Política de privacidade
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.