Back-End

15 jan, 2014

Level – Um framework NoSql para Node.js

Publicidade

Para entendemos melhor o que é o projeto Level, primeiro temos que entender um pouco mais do seu principal engine chamado LevelDB, banco de dados NoSql do tipo Key/Value, onde o value pode ser um Json{}, open source e idealizado pelo Google.

A princípio, o Google desejava encontrar um substituto ao SqlLite que estava sendo utilizado em seu navegador Chrome e levar alguns conceitos do Big Table para o Chrome. Assim, o LevelDB foi implementado no chrome como IndexedDB.

O LevelDB rapidamente mostrou-se tão poderoso que a empresa Basho fez um fork para erlang e adotou no seu framework de alta disponibilidade chamado RIAK, que é utilizado como banco de dados para o game Angry Birds e pelo Best-Buy, entre outros. Para maiores informações acesse: http://basho.com/assets/RelationaltoRiak.pdf

Com o passar do tempo, surgiram vários outros forks do LevelDB, entre eles o Hyper da empresa e o RocksDB do facebook.

Maiores informações sobre a arquitetura do levelDb podem ser encontradas nos links:

Visto isso, o senhor Rod Vagg, um dos committers do LevelDB e apaixonado por Node.js, teve a brilhante ideia de criar um framework Node.js que pudesse adotar os diversos sabores do LevelDB, porém a ideia acabou se estendento para outros bancos tais como: Mysql, LMDB, etc.

O projeto Level mais uma vez foi rapidamente adotado pelos principais criadores do Node.js e amantes do Javascript, sendo assim, ocorreu uma febre de pacotes NPM implementando “N” funcionalidades ao Level, entre elas destacam-se: LevelWeb, Level-subLevel, Level-live-Stream, level-schedule, level-replicate, level-Master, MultiLevel, Level-WriteStream, Level-Sessions, Level-Inverted-Index(full text search), entre outros.

A lista completa de modulos encontra-se em neste link

Para quem é usuário de MongoDB, o jsonquery-engine pode ser uma boa opção.

A imagem abaixo demonstra o ecossistema do projeto Level e seu criador Rod Vaag:

level_ecosystem-1

Outro projeto muito interessante é o é o LevelGraph, criado por Matteo Collina, que aplica a teoria de Graphos sobre o Leveldb, sendo uma excelente alternativa ao Neo4J, porém este vai ser assunto para um próximo artigo.

já para os fanáticos em Benchmarks: https://github.com/rvagg/node-leveldown/tree/master/bench. Porém não se assustem! Nos meus testes ele foi pelo menos duas vezes mais rápido do que o MongoDB: (Notebook intel core i7 de 2º geração e HD SATA).

Isso sem levar em conta que o Level pode ser configurado para trabalhar no modo Master-Master e o MongoDB não pode.

Para os maiores interessados veja aqui uma palestra do @rvaag criador do level.