BT

LevelDB do Google: open source e alto desempenho com estruturas chave-valor

por Abel Avram , traduzido por Leonardo Galvão em 03 Ago 2011 |

[Esta tradução adapta e enriquece o original do InfoQ.com]

O LevelDB foi liberado na semana passada pelo Google como open source, sob uma licença no estilo BSD. O projeto é uma datastore embarcada baseada em pares chaves-valor, cujos elementos são arrays de bytes arbitrários ordenados por chave (o mecanismo de ordenação pode ser redefinido). O datastore é usado como uma biblioteca em aplicações, e o funcionamento essencial é simples. Cada base de dados é um conjunto de arquivos em um diretório e as operações básicas são Put(chave,valor), Get(chave) e Delete(chave).

No LevelDB, os dados são comprimidos automaticamente, usando a biblioteca de compressão de alto desempenho Snappy, usada pelo Google no BigTable e no MapReduce, e que foi também liberada recentemente como open source. O LevelDB é otimizado para operações de escrita em lote. Ele acumula várias mudanças de forma ordenada em memória e as escreve para o disco quando um tamanho máximo configurável é atingido. O resultado é um excelente desempenho de escrita.

Veja um exemplo de uso, que ilustra a escrita em lotes (extraído da documentação):

#include "leveldb/include/write_batch.h"
... 
std::string valor;
leveldb::Status s = db->Get(leveldb::ReadOptions(), chave1, &valor);
if (s.ok()) {
  leveldb::WriteBatch lote;
  lote.Delete(chave1);
  lote.Put(chave2, valor); 
 s = db->Write(leveldb::WriteOptions(), &lote);
}

Em alguns testes, o LevelDB mostrou-se uma ordem de grandeza mais rápido que o SQLite3, de acordo com benchmarks do Google – a maior diferença foi na escrita aleatória. O SQLite, no entanto, é um pouco mais rápido em leituras aleatórias e cerca de duas vezes mais performático na escrita de grandes quantidades de dados. No mesmo conjunto de benchmarks, o LevelDB se mostrou mais rápido que o Kyoto Cabinet, uma base de dados de chave-valor similar; mas a diferença foi menor que em relação ao SQLLite.

O LevelDB foi escrito em C++ e tem poucas dependências externas. Foi portado com sucesso para Windows, Mac OS X, Android e para várias versões do Unix. É usado também em versões experimentais do Chrome para implementar a API IndexDB da W3C, para o armazenamento em nível de nó (node). Também é utilizado pela empresa especializada em mapas em 3D, UpNext.

A documentação detalhada, em uma única página html, mostra como usar o LevelDB na maioria das situações e alguns detalhes específicos de implementação podem ser vistos aqui.

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.