Manual do Hacker Especial | 75
A principal vantagem de banco de
dados NoSQL é que eles são adequados e
eficientes para grandes armazenamento de
dados e aplicações web em tempo real. Eles
também oferecem fácil escalabilidade e
permitem a implementação de alta
disponibilidade de forma indolor. Eles
também são geralmente mais fáceis de
administrar, configurar e executar, e podem
armazenar objetos complexos. Além disso,
é mais fácil desenvolver aplicativos para e
com bases de dados NoSQL. Seu esquema
pode mudar facilmente sem tempo de
inatividade porque, na verdade, eles não
possuem esquemas. A maioria dos bancos
de dados NoSQL, com exceção do Oracle
NoSQL, são projetos de código fonte
abertos.
As principais desvantagens dos bancos
de dados NoSQL incluem o fato de que eles
exigem uma maneira totalmente nova de
pensar e você, ainda, precisa de um DBA em
projetos grandes e/ou críticos. Se a sua
empresa precisar usar bancos de dados SQL
e NoSQL, você terá dois sistemas totalmente
diferentes para programar e administrar e,
portanto, de mais pessoas. Os bancos de
dados NoSQL, sendo relativamente novos,
não são tão maduros como os bancos de
dados relacionais; portanto, escolher banco
de dados NoSQL para um problema crítico
pode não parecer a solução mais segura, mas
isso não será um problema em alguns anos. A
última desvantagem é o fato de que, embora
pareçam ter nenhum esquema, você
precisará assumir
um esquema
implícito na hora de
fazer um trabalho
mais sério com seus
dados. Isso não é
inesperado, porque
enquanto você
estiver trabalhando
com dados, não
poderá fugir do
esquema, mesmo
um informal.
Existe vários
tipos de bancos de
dados NoSQL, cada
um sendo bom em
uma ou mais áreas, mas não em todas. Você
pode categorizar os bancos de dados NoSQL
de acordo com seus modelos de dados:
Document Este é um modelo de dados
muito comum. Ele interpreta o banco de
dados como um grande armazenamento
para documentos, em que cada documento
é uma estrutura de dados de várias partes,
normalmente representada na forma de
JSON. Você pode, ainda, armazenar
documentos em qualquer formato desejado.
MongoDB, CouchDB e RavenDB são
documentos representativos do banco de
dados NoSQL.
Key-Value Este também é um modelo
de dados comum que é semelhante à
estrutura de dados do mapa hash de
estrutura de dados, em que você tem a
chave (key) e solicita ao banco de dados
que ele devolva o valor armazenado para a
chave em questão. Este valor pode ser
qualquer coisa, de um único número a um
documento completo. Exemplos de banco
de dados key-value NoSQL incluem Riak,
Redis e Project Voldemort.
Column-family Este é um modelo de
banco de dados bastante complexo. Você
tem uma ‘row key’ (chave linha) que permite
armazenar e acessar múltiplas “column
families” (famílias de colunas, numa
tradução livre). Cada columm family é uma
combinação de colunas que se ajustam. As
row keys devem ser exclusivas dentro de uma
família de colunas. O modelo de dados pode
ser mais complicado do que os outros, mas
resulta em tempos de recuperação mais
rápidos. Exemplos de bancos de dados
columm-family NoSQL incluem Cassandra e
Apache HBase.
Graph Este modelo é totalmente diferente
dos outros três, pois é baseado na estrutura
do Graph. Como uma consequência lógica,
os bancos de dados Graph NoSQL
manipulam muito bem as hierarquias e os
relacionamentos entre si; fazer coisas
similares com um banco de dados relacional
seria uma tarefa extremamente desafiadora e
lenta. Neo4j é um exemplo de banco de
dados ghaph NoSQL. Neste capítulo, como
teste, usaremos o Riak como nosso banco de
dados NoSQL.
Instalando o Riak
A primeira coisa que você deve saber antes
de instalar a Riak é que você precisa de
Erlang no seu sistema. A melhor maneira de
instalar o Riak é compilá-lo diretamente da
fonte, para que você tenha maior controle e
uma compilação totalmente autônoma do
Riak. Faça o seguinte:
$ wget http://s3.amazonaws.com/downloads.
basho.com/riak/2.0/2.0.2/riak-2.0.2.tar.gz
$ tar zxvf riak-2.0.2.tar.gz
$ cd riak-2.0.2
$ make rel
Alternativamente, você pode pegar o
código fonte do Riak a partir do GitHub e
compilá-lo como já demonstrado:
$ git clone git://github.com/basho/riak.git
$ cd riak
$ make rel
Ambas as formas devem funcionar sem
problemas – aqui, usamos o primeiro modo
de compilar o Riak. Depois de compilá-lo com
sucesso, você pode encontrar seus principais
arquivos binários dentro do diretório ./rel/
riak/bin.
No mesmo diretório em que criou o Riak,
você pode executar make devrel e estará
pronto para executar o banco de dados Riak
que usaremos como exemplo. Esta é a
principal razão para obter o código fonte Riak
e compilá-lo por si mesmo.
Todo servidor Riak possui uma interface web. Nesse caso,
estamos acessando as estatísticas de servidor por meio de:
http://localhost:10018/stats/. A porta e o número IP são
definidos em riak.conf.
MapReduce
MapReduce é uma técnica de consulta
avançada, bem como uma ferramenta para
agregação de dados usada em bancos de
dados NoSQL. É uma técnica alternativa
para consultar um banco de dados que
difere das técnicas de consulta declarativas
usuais. Você dá as instruções ao banco de
dados sobre como encontrar os dados que
você está procurando e o MapReduce tenta
encontrar os dados. Usar o MapReduce, às
vezes, pode ser muito complicado. No
entanto, ele permite que você crie
consultas que teriam sido extremamente
desafiadoras de criá-las por meio do SQL.
Depois de entender e praticar o processo,
você irá considerá-lo mais confiável e útil. A
solução MapReduce leva mais tempo para
ser implementada, mas pode desenvolver-
se melhor do que uma solução SQL. O
mais complicado é decidir se a técnica
MapReduce é ou não apropriada para o
problema específico que você está
querendo resolver. Esse tipo de
conhecimento vem com a experiência!
Grupo Unico PDF Passe@diante