Olá pessoal, tudo bem? Hoje vamos entender um pouco sobre um conceito bem legal que é o de Banco de Dados NoSQL, você já ouviu esse termo?
NoSQL (“não SQL” ou “não relacional”, posteriormente atualizado para Not Only SQL – Não Somente SQL) é um termo genérico que representa os bancos de dados não relacionais. É um movimento que promove soluções de armazenamento de dados não relacionais. É composto por diversas ferramentas que buscam resolver problemas como tratamento de grandes volumes de dados, execução de consultas com baixa latência e modelos flexíveis de armazenamento de dados, como documentos XML ou JSON.
As tecnologias NoSQL, inicialmente tinha a intenção de ser os substitutos naturais dos bancos relacionais – RDBMS (Relational Database Management System), lembrando que estes surgiram nos anos 70 do século passado, logo como toda tecnologia tem seu ciclo de vida os entusiastas desse movimento achavam que essas soluções seriam os substitutos naturais mas os bancos SQL continuam em plena utilização até mesmo pela sua origem fundamentados em forte base matemática. [1]
Então hoje, se fala que os bancos NoSQL não têm como objetivo substituir os bancos de dados relacionais, em resumo se não pode vencê-los una-se a eles… foi o que aconteceu com os bancos NOSQL…. e sua utilização é muito comum em algumas soluções em determinados cenários. Desta forma é possível trabalhar com tecnologias NoSQL e banco de dados relacionais dentro de uma mesma aplicação.
Uma das características básicas do conjunto de banco NoSQL, já que existe inúmeros tipos como veremos nesse artigo, é a questão do esquema implícito diferentemente dos bancos relacionais que tem o seu esquema explícito, para entender melhor esse conceito podemos ver a Figura 1.
Então nos Bancos SQL o schema da informação é conhecido e está exposto muitas vezes é um catalógo dos dados, sendo um tipo de dados estruturado e nos Bancos NoSQL o schema é implicíto isso quer dizer que está junto e misturado ao dado, e muita vezes pode ser entendido como um dado semiestruturado já que o shema pode ser facilmente modificado. [2]
Tipos de BD NoSQL
Existem inúmeros tipos de BD NoSQL mas basicamente temos essas 4 macro classificações [3]:
- Chave-Valor [4]
- Armazena dados como um conjunto de pares de chave-valor em que uma chave funciona como um identificador único.
- A chave e os valores podem ser qualquer tipo de objeto, desde objetos simples até objetos compostos complexos.
- São altamente particionáveis e permitem escalabilidade horizontal que outros tipos de bancos de dados não conseguem alcançar.
- Grafos
- são similares, mas adicionam outra camada, o relacionamento, que permite que eles liguem documentos para acesso rápido.
- Colunar
- Enquanto um BD relacional é otimizado para armazenar linhas de dados, geralmente para aplicativos transacionais, um banco de dados colunar é otimizado para recuperação rápida de colunas de dados, normalmente em aplicativos analíticos.
- Documento (document store)
- Desenvolvidos para armazenar, consultar e gerenciar dados orientadas a documentos, também conhecidas como dados semiestruturados.
- São uma subclasse do armazenamento chave-valor. A diferença está na maneira que os dados são processados.
Podemos ver esses 4 tipos na Figura 2, abaixo:
Existem ainda outros dois tipos menos conhecidos que são :
- Memória
- Utilizados em aplicativos de jogos e publicidade têm como exemplos de uso placares de líderes, armazenamentos de sessões e análises em tempo real que exigem tempos de resposta em microssegundos e podem ter grandes picos de tráfego.
- Pesquisa
- Desenvolvido para fornecer visualizações e análises em tempo real de dados gerados por máquina ao indexar, agregar e pesquisar registros e métricas semiestruturadas. Procura ser um mecanismo de pesquisa de alta performance para pesquisa de textos completos.
E onde utilizar essas soluções de armazenamento?
Em cenários onde sistemas de banco de dados tradicionais não são suficientes ou adequados às necessidades específicas, tais como:
Necessidade de consultas com baixa latência, grandes volumes de dados, escalabilidade ou estruturas em que as conexões entre os dados são tão importantes quanto o próprio dado.
Todas as tecnologias abordadas apresentam situações de uso particulares, que podem ser úteis na substituição dos tradicionais bancos de dados relacionais.
Vamos ver então na Figura 3 alguns cenários de utilização dos bancos relacionais (SQL) e NoSQL.
E na Figura 4 uma lista de soluções de bancos NOSQL.
Então agora vamos ver duas questões sobre o assunto.
Ano: 2014 Banca: CESPE Órgão: TJ-SE Prova: CESPE – 2014 – TJ-SE – Analista Judiciário – Banco de Dados
Acerca de bancos de dados semiestruturados e bancos de dados NOSQL, julgue os itens subsecutivos:
Bancos de dados NoSQL orientados a documentos são apropriados para o armazenamento de dados semiestruturados.
Certo
Errado
Ano: 2019 Banca: CCV-UFC Órgão: UFC Prova: CCV-UFC – 2019 – UFC – Técnico de Tecnologia da Informação – Desenvolvimento de Sistemas
Sobre os bancos de dados NoSQL, assinale a afirmativa correta:
a) Bancos de dados NoSQL não podem ser indexados.
b) Bancos de dados NoSQL são considerados banco de dados relacionais.
c) Nos bancos de dados NoSQL devem ser definidos um esquema de dados fixo antes de qualquer operação.
d) São exemplos de bancos de dados NoSQL: MongoDB, Firebird, DynamoDB, SQLite, Microsoft Access e Azure Table Storage.
e) Os bancos de dados NoSQL usam diversos modelos para acessar e gerenciar dados, como documento, gráfico, chave-valor, em memória e, pesquisa.
Dessa forma encerro esse artigo com essa breve introdução sobre o assunto! E o gabarito está logo abaixo. Até mais!
GABARITO
- CERTO. Documentos representam a unidade básica neste tipo de tecnologia, sendo possível comparar os mesmos aos registros das tabelas convencionais. Embora exista um paralelo com as linhas do modelo relacional, um documento possui uma estrutura flexível e que não está presa à existência de colunas pré-definidas. Do ponto de vista prático, isto significa que inúmeros documentos vinculados a uma mesma coleção podem contar com formatos variáveis. Muitas das soluções orientadas a documento fazem uso do padrão JSON (JavaScript Object Notation) para o armazenamento de dados. Dentre os diversos bancos orientados a documento, é possível citar como exemplos o MongoDB, o DynamoDB (alternativa oferecida na nuvem pela Amazon) e o DocumentDB (este último um serviço que integra o Microsoft Azure).
- LETRA E. Foram apresentados exemplos de cada um dos diversos modelos, a Letra D está incorreta pois o banco de dados ACESS não é um banco NOSQL. A letra E só tem uma peculiaridade pois chama de gráficos os bancos que implementam grafos, mas um grafo é um gráfico ou estrutura que equivale a um conjunto de objetos nos quais alguns pares de objetos estão, em certo sentido, “relacionados”.
Referências
[1] DATE, Christopher J. Introdução a sistemas de banco de dados. 8. ed. Rio de Janeiro: Elsevier, 2003.
[2] ELMASRI, Ramez; NAVATHE, Shamkant B. Sistemas de banco de dados. 6. ed. São Paulo: Pearson, 2011.
[3] https://aws.amazon.com/pt/nosql/, Acesso em 24/08/2019.
[4] https://aws.amazon.com/pt/nosql/key-value/, Acesso em 16/10/2020.
Professor MSC, Washington Almeida
Doutorando e Mestre em Engenharia de Software pelo Centro de Estudos e Sistemas Avançados do Recife – C.E.S.A.R. Atualmente é Analista Judiciário na Justiça Federal (TRF1) e Professor no Gran Cursos Online.