Banco de Dados

13 fev, 2019

Banco de dados NoSQL: um manual prático e didático

Publicidade

Banco de dados NoSQL é um assunto em alta. Segundo a Google, são hoje 86 mil resultados indexados na web. Não é pouca coisa, viu?

Também pudera, o assunto ‘Big Data’ está tão presente no nosso dia a dia, que chega a lembrar comentários políticos em época de eleição.

Ok, exagerei um pouco – ninguém fala de dados o tempo todo. Todo mundo produz dados o tempo todo.

Se hoje você produz dados usando o seu celular, no futuro você gerará dados andando dentro da sua casa. Não é exagero, ioT é uma realidade em amadurecimento.

  • “Tá, mas o que o banco de dados NoSQL tem a ver com isso tudo?”

Na realidade, tudo. Big data é a matéria prima dos bancos de dados NoSQL e, se você quer se aprofundar em Data Science, Engenharia de Dados, BI, entre tantas outras áreas de TI, não vai conseguir sem conhecer NoSQL.

Vamos entender mais sobre NoSQL?

Um pouco de cultura SQL

O termo “NoSQL” surgiu em 1998, mas foi em 2006 – quando foi citado pelo Google – que o termo se popularizou. Era uma época onde os bancos relacionais não mais suportavam a massa de dados da internet. Só a internet hoje armazena alguns terabytes de dados.

Como estaremos em 2050?

Banco de Dados NoSQL: como funciona?

O termo “NoSQL’’ é utilizado para designar os bancos de dados não relacionais e quase sempre é relacionado com Big Data.

Isso porque, como já explicamos, Big Data está em ascensão e é matéria prima dos bancos de dados NoSQL. Para entender os NoSQLs, é importante saber que a linguagem SQL sempre foi usada para tratamento de dados em bancos relacionais ao longo dos anos.

Mas por que NoSQL? Parece que estamos falando de bancos que invariavelmente não podem ser tratados com a linguagem SQL, quando na verdade não é bem assim.

Na verdade, a nomenclatura NoSQL é só para fazer uma diferenciação entre bancos reconhecidamente relacionais, como MySQL, PostgreSQL e etc.

Em suma, a principal diferença entre os bancos de dados relacionais e NoSQL é que o segundo permite maior velocidade, flexibilidade e escalabilidade ao armazenar e acessar dados não estruturados.

NoSQL: tipos de bancos de dados

Modelo Colunas

No modelo colunas, o banco de dados faz armazenamento em linhas particulares de tabela. Esse esquema é o perfeito oposto dos bancos relacionais, que armazenam conjuntos de dados em uma única linha.

Exemplos clássicos do modelo de colunas são os bancos Hbase e Cassandra.

Modelo Grafos

Armazena dados na forma de grafo. Isto é: aqui, os dados são dispostos no formato de arcos conectados por arestas. Podemos definir como um conjunto de linhas conectadas por vértices também.

O modelo de grafos é vantajoso frente à pesquisas complexas, pois a latência e a performance promete ser menor do que no modelo chave-valor, por exemplo.

Um exemplo prático disso é o banco Neo4j.

Modelo Chave-Valor

Em chave-valor, nós temos um banco que é formado por conjuntos de chaves, que por sua vez são acompanhados de valores como tabelas hash. A estrutura chave-valor também é bem flexível e própria para armazenamento de big data.

É interessante, também, frisar que esse formato é altamente disponível. Exemplos práticos são Redis e MemcacheD.

Modelo documento

Neste modelo, os dados são “documentos”. É o esquema de armazenamento do MongoDB, por exemplo. Esse modelo é altamente flexível e não carece de colunas pré montadas, como é o caso do Cassandra.

Esse modelo é especialmente eficiente para tratar dados não estruturados, já que uma única coleção pode contar com grupos de dados (documentos) de diversos formatos diferentes.

Qual o melhor banco NoSQL?

Os Bancos de Dados NoSQL referem-se a uma série de tecnologias diferentes, que não são essencialmente relacionais.

Mas o que os melhores bancos de dados NoSQL têm em comum?

MongoDB

Quando falamos em MongoDB estamos falando de um líder de mercado dos bancos de dados NoSQL.

O MongoDB também possui features bem legais para produção. São eles: replicação, indexação, balanceamento de carga.

Para armazenar dados, o MongoDB utiliza alguns documentos muito similares ao formato JSON. O melhor de tudo – e talvez a razão de ser líder de mercado – é que o MongoDB é open source, o que contribui muito para a evolução da sua tecnologia.

Amazon DynamoDB

Mais um produto excelente da AWS (Amazon Web Services). O banco de dados DynamoDB é totalmente cloud e viabiliza um desempenho confiável e em escala.

Um ponto bem importante: a Amazon confirma que a latência é consistente e fica abaixo de 10 milissegundos. Além disso, tem recursos valiosos de segurança, baseados em cache de memória, backup e restauração de dados.

O DynamoDB também funciona por meio de vários mestres.

Este banco de dados já é amplamente utilizado, assim como o MongoDB, e pode ser utilizado para criação de datastore, jogos, ad tech e aplicativos web sem servidor.

Vale a pena conferir também!

Cassandra

Muitas pessoas não sabem, mas o Cassandra foi desenvolvido no Facebook. Hoje em dia, o Cassandra – assim como o HBase – são mantidos pela Apache Foundation.

Isso até faz sentido, considerando a quantidade de dados que a rede social gera a cada milissegundo.

Mas, afinal, por que Cassandra é tão popular para trabalhar com Big Data?

O fato é que Cassandra é muito otimizado para clusters, especialmente por funcionar sem mestres. O fato de ter mecanismos distribuídos também otimiza bastante a operação com os clusters.

Um outro ponto forte do Cassandra é o conceito de orientação por coluna, o que torna a latência bem menor em algumas pesquisas.

Redis

O Redis é um modelo de armazenamento de dados, que é open source e foi lançado em 2009. Os dados são armazenados na forma de chave-valor e na memória do Redis, o que o torna rápido e flexível. Trata-se do banco NoSQL mais famoso do tipo chave-valor.

Assim como os dois primeiros, o Redis possui baixíssima latência. O Redis também é fácil de usar e muito rápido.

HBase

O HBase é um banco de dados open source, orientado a colunas e distribuído. Atualmente, Spotify e Facebook são algumas das grandes corporações que utilizam esse modelo de armazenamento.

O HBase foi formatado a partir do BigTable do Google e também é escrito em Java. É justamente por isso que tem fácil integração com o MapReduce.

Pra quem não sabe, o MapReduce é uma ferramenta do framework Apache Hadoop, uma das principais plataformas para tratamento de big data.

Por fazer parte do Projeto Apache, diretamente ligado à ciência de dados, o HBase é outro modelo de armazenamento bem famoso.

Um dos seus pontos fortes é a pesquisa de dados que oferece uma resposta rápida – transforma terabytes em milissegundos.

Recomendo a leitura do artigo a seguir:

NoSQL vs SQL

Concluindo

Bancos de dados NoSQL são extremamente úteis quando o assunto é grande volume de dados. Se estivermos falando de uma corporação pequena, que não aprofunda tanto assim a análise e tratamento de dados, o banco relacional funciona muito bem.

E não, o banco de dados NoSQL não veio para substituir o relacional. Veio para ser uma alternativa, em meio a um mundo onde pouquíssimos dados ainda são usados para inteligência.

E aí? Na sua empresa o relacional funciona bem, ou já estão prontos para implementar o NoSQL?

***

Artigo original publicado na GeekHunter e republicado com a autorização da autora: Banco de Dados NoSQL: Um manual prático e didático