1. Início
  2. Back-end
  3. Banco de dados NoSQL: um manual prático e didático

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

imagem de um banco de dados

NoSQL significa ‘não relacional’. Bancos NoSQL são comumente usados em áreas de conhecimento como Data Science. As maior diferença entre bancos NoSQL e relacionais é que bancos relacionais trabalham com tabelas, enquanto em Bancos NoSQL todos os dados constam no mesmo registro.

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 banco de dados NoSQL tem a ver com isso tudo mesmo?’ 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

sql banco de dados

O termo “NoSQL” surgiu em 1998, mas foi em 2006, quando foi citado pelo Google, que o termo popularizou-se. 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?

O que são bancos de dados NoSQL?

hardware de um banco de dados

Os bancos de dados NoSQL são, basicamente, bancos de dados que não são relacionais (SQL). O nome NoSQL já indica “Not Only SQL”. As NoSQL databases não precisam, necessariamente, ser parecidas entre si. São classificadas assim justamente por serem diferentes das relacionais.

Ainda não entendeu qual é o objetivo desejável ao se utilizar um banco de dados NoSQL? Se preferir uma explicação mais aprofundada, separamos um vídeo que pode ajudar:

>>Leitura Recomendada:
SQL, NoSQL, NewSQL:
Qual banco de dados usar?

Banco de Dados NoSQL: como funciona?

hardware de um banco de dados

O termo “NoSQL’’ é utilizado para designar os banco 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.

>>Leitura Recomendada:
Leia nosso artigo sobre os
melhores softwares para Big Data

NoSQL: tipos de bancos de dados

data center com clusters distribuidos

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.

>>Leitura Recomendada:
Um guia para o programador iniciante

Qual o melhor banco NoSQL?

marcas de bancos de dados

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 – é o que o MongoDB é open source, o que contribui muito para a evolução da sua tecnologia.

*(Java Script Object Notation)

>> Leitura Recomendada:
JSON vs XML, qual é a melhor escolha para você?

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 é consistência 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!

>>Leitura Recomendada:
Leia nosso artigo sobre 5 ferramentas de Big Data para você conhecer

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.

Para 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.

>>Leitura recomendada: 
Qual a melhor linguagem para ciência de dados?

NoSQL vs SQL

mulher socando um homem usando luvas de boxe
SQLNoSQL
Armazenamento de Dados Estruturados por TabelaArmazenamento de Dados estruturados e não-estruturados por colunas, grafos, chave-valor e documentos.
Esquema estáticoEsquema dinâmico
Maturidade de suporte maior (geralmente pago)Suporte por comunidade independente (open source)
Escalabilidade verticalEscalabilidade horizontal
PagoGratuito
O desempenho não é alto em todas as consultas. Não suporta pesquisas e cruzamentos muito complexos.Alto desempenho em consultas
Necessidade de predefinição de
um esquema de tabela antes da
adição de qualquer dado
Altamente flexível (fácil adição de colunas e campos de dados não estruturados)

Concluindo…

Bancos de Dados NoSQL são extremamente úteis quando 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?


Categorias

Leituras Recomendadas

Quer receber conteúdos incríveis como esses?

Assine nossa newsletter para ficar por dentro de todas as novidades do universo de TI e carreiras tech.