NoSQL significa ‘não relacional’. Banco 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
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?
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?
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
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?
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
SQL | NoSQL |
Armazenamento de Dados Estruturados por Tabela | Armazenamento de Dados estruturados e não-estruturados por colunas, grafos, chave-valor e documentos. |
Esquema estático | Esquema dinâmico |
Maturidade de suporte maior (geralmente pago) | Suporte por comunidade independente (open source) |
Escalabilidade vertical | Escalabilidade horizontal |
Pago | Gratuito |
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?