Moneta: Uma interface para armazenagem Key-Value como Tokyo Cabinet e Memcache
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.
Conteúdo educacional
Mobilidade: Frameworks, SOs e o Mercado
Ricardo Ogliari 23 Mai, 2013
Caminhos de uma estratégia mobile
Sérgio Lopes 23 Mai, 2013
Complexidade organizacional no Século 21
Alexandre Magno 16 Mai, 2013

Olá visitante
Você precisa cadastrar-se no InfoQ Brasil ou Login para enviar comentários. Há muitas vantagens em se cadastrar.Obtenha o máximo da experiência do InfoQ Brasil.
Dê sua opinião