Bancos de dados NoSQL desempenham um importante papel em aplicações de Big Data. Apesar desta tecnologia não ser tão recente, ela ainda é pouco difundida em termos de uso no mercado corporativo. Vamos descrever resumidamente do que se trata e como esta tecnologia se integra nas soluções de Big Data.
Para entendermos melhor o que são bancos NoSQL, vamos primeiro falar sobre os sistemas gerenciadores tradicionais de bancos de dados relacionais (RDBMS). Eles estão presentes no mundo corporativo há várias décadas e desempenham um papel tecnológico importantíssimo ao gerenciar os dados de forma consistente e segura. A utilização principal desses gerenciadores de bancos de dados está ligada aos sistemas transacionais (OLTP) e aos sistemas de suporte à decisão (OLAP) e, para tal, devem atender a requisitos associados a consistência, integridade e relacionamentos, tais como:
- controle transacional, consistência para cada sessão, o que podemos resumir com o termo ACID (Atomicidade, Consistência, Isolamento e Durabilidade);
- chaves estrangeiras e primárias, integridade rígida;
- linguagem SQL, relacionamentos e joins, possibilidade de realizar a leitura de várias tabelas ao mesmo tempo;
- consistência em todos os nós do cluster, em qualquer momento.
Existem alguns estudos, entre eles o teorema CAP (CAP Theorem), que estabelecem uma relação antagônica entre consistência e disponibilidade em sistemas distribuídos, ou seja, quanto maior for uma, menor será a outra. Pois bem, diferentemente dos bancos de dados relacionais, os bancos NoSQL privilegiam a disponibilidade em detrimento da consistência com o objetivo de facilitar a escalabilidade em um cluster distribuído de baixo custo. Fica a cargo da aplicação preocupar-se com a integridade dos dados.
Os bancos NoSQL geralmente trabalham com estruturas de dados do tipo chave-valor, nas quais o valor pode assumir o formato JSON (utilizado por diversas redes sociais), XML, BLOBs (imagens, vídeos etc) ou formatos customizados. Geralmente, esses bancos não oferecem SQL nem joins. Essa forma de trabalho possibilita que a tecnologia tenha performance e escalabilidade muitíssimo superiores para consulta e inserção de dados, trabalhando com facilidade enormes volumes, o que a torna uma ferramenta importante quando falamos de Big Data, principalmente em casos de uso Real-Time.
Muitos sites na Internet estão gerenciando os perfis dos consumidores utilizando essa tecnologia, armazenando dados cadastrais e históricos de interações com o usuário. Programas específicos podem então trabalhar esses dados, gerando recomendações personalizadas para o consumidor. Sites de busca e redes sociais também estão entre os grande usuários de bancos de dados NoSQL.
Existem diversas opções open-source e comerciais de bancos de dados NoSQL no mercado. Podemos relacionar algumas: HBase (que utiliza o armazenamento em Hadoop/HDFS), Cassandra, Aerospike, DynamoDB, MongoDB, Couchbase (muito utilizado com aplicações Mobile) e Oracle NoSQL (que possui versões Community e Enterprise).
Big Data é um assunto bastante abrangente e complexo. Estarei postando, sempre que possível, novas matérias sobre o tema. Fique a vontade para comentar meus artigos e para sugerir temas para os próximos posts.