Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Banco de Dados NoSQL
Prof. Msc. Henrique Mota
henrique.gama@estacio.br
fev/2021
Tipos de dados
Dados estruturados
• Informações formatadas e transformadas em um modelo de 
dados bem definido e de fácil análise;
• Dados brutos mapeados em campos predefinidos que 
podem ser posteriormente extraídos e lidos por meio de 
linguagem de consulta (SQL por exemplo);
• Os bancos de dados relacionais SQL, consistindo em tabelas 
com linhas e colunas, são o exemplo perfeito de dados 
estruturados.
• ex.: tabelas; planilhas eletrônicas
Dados não estruturados
• Dados presentes na sua forma bruta absoluta;
• São de difícil processamento devido à sua complexidade de 
organização e formatação;
• Podem ser qualquer coisa que não esteja em um formato 
específico.
• ex.: comentários em mídias sociais, chats, imagens de satélite, dados 
do sensor IoT, e-mails e apresentações.
Dados semi-estruturados
• Em alguns casos os dados podem não ser estruturados ou 
não estruturados;
• Tipo de dado que possui algumas características consistentes 
e definidas, não se limitando a uma estrutura rígida como a 
necessária para bancos de dados relacionais;
• Propriedades organizacionais, como metadados ou tags
semânticas, são usadas com dados semiestruturados para 
torná-los mais gerenciáveis; no entanto, ainda contêm alguma 
variabilidade e inconsistência;
• Em algumas ocasiões, os dados não estruturados são 
classificados como semiestruturados porque possuem um ou 
mais atributos de classificação.
• ex.: arquivos delimitados; arquivos JSON; páginas web
Bancos relacionais
• Dados estruturados de acordo com o modelo relacional;
• Padrão de fato para a grande maioria dos SGBDs (SQL Server, 
Oracle, PostgreSQL, MySQL, DB2, etc).
• Elementos básicos: Relações (tabelas) e registros (tuplas);
• Características fundamentais: Restrições de integridade (PK, 
FK, UK, CK, NN); Normalização; Linguagem SQL (Structured
Query Language)
Bancos NoSQL
• NoSQL – termo genérico para definir bancos de dados não-
relacionais (década de 60);
• Tecnologia popularizada por empresas líderes da Internet 
(Google, Facebook , Amazon e LinkedIn);
• Objetivo de superar as limitações (45 anos de uso da 
tecnologia) de banco de dados relacional para aplicações 
web modernas (2009);
• 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.
Bancos NoSQL
Atualmente existe um grande movimento por parte das 
empresas de tecnologia por adotar NoSQL;
A escolha é impulsionada por quatro megatendências inter-
relacionadas:
I. Big Users
II. Big Data
III. Internet das coisas
IV. Cloud Computing
Big Users
Uso crescente de aplicativos online resultou em um número 
crescente de operações de banco de dados e a necessidade de 
uma maneira mais fácil de escalar bancos de dados para 
atender a essas demandas;
Um grande número de usuários, combinados com a natureza 
dinâmica dos padrões de uso está demandando uma 
tecnologia de banco de dados mais facilmente escalável.
Big Data
É necessário uma solução altamente flexível, que acomode facilmente 
qualquer novo tipo de dado (não-estruturado e semi-estruturado) e 
que não seja corrompida por mudanças na estrutura de conteúdo.
NoSQL fornece um modelo de dados sem esquema muito mais 
flexível que mapeia melhor a organização de dados de uma aplicação 
e simplifica a interação entre a aplicação e o banco de dados, 
resultandoem menos código para escrever, depurar e manter.
Internet das coisas (IoT)
• Mais de 50 bilhões de coisas vão estar conectadas a Internet;
• 79,4 zettabytes (ZB) de dados serão gerados por sistemas 
embarcados (em 2025);
• 21% dos mais valiosos dados serão gerados por sistemas 
embarcados (hoje 8%); 
• Empresas inovadoras estão utilizando tecnologia NoSQL para 
dimensionar o acesso simultâneo de dados para milhões de 
dispositivos e sistemas conectados, armazenar bilhões de 
pontos de dados e atender aos requisitos de infraestrutura e 
operações de missão crítica de performance.
Cloud Computing
• Atualmente a maioria das novas aplicações são executados 
em sistemas em nuvem privado, público ou híbrido;
• Suportam grande número de usuários e usam, comumente, 
uma arquitetura de três camadas;
• Na camada de banco de dados, bancos relacionais são 
originalmente a escolha popular;
• Seu uso é cada vez mais problemático por possuírem 
tecnologia centralizada com escalabilidade vertical ou invés 
de horizontal, fazendo com que não se tornem adequados 
para aplicações que requerem escalabilidade fácil e dinâmica.
Cloud Computing
• A escalabilidade diz respeito à capacidade de um sistema se 
expandir sem perder o desempenho;
• Simplificando: se um sistema de computação em nuvem 
(redes, armazenamento, servidores, aplicativos e serviços) 
puder responder rapidamente para atender a novas 
demandas – em tamanho ou volume – ele é escalável.
Internet das coisas (IoT)
Internet das coisas (IoT)
Tipos de bancos NoSQL
• Podemos classificar os modelos existentes de acordo com a 
estrutura de armazenamento;
• Atualmente, existem 4 modelos principais: o modelo 
orientado a chave-valor, orientado a documentos orientado a 
colunas, orientado a grafos,.
Modelo chave-valor
• Formado por conjuntos de chaves (normalmente string), que 
por sua vez são acompanhados de valores (de qualquer tipo). 
A estrutura chave-valor também é bem flexível e própria para 
armazenamento de big data. Esse formato é altamente 
disponível. ex.: REDIS e MemcacheD;
• Embora a estrutura simples do banco de dados orientado a 
chave-valor ofereça benefícios, ela também possui algumas 
limitações. Nesse tipo de banco, o conteúdo do campo valor 
é "opaco", não sendo possível fazer uma indexação com esse 
campo e uma consulta mais complexa.
Modelo de documentos
• Considerado uma extensão do modelo chave-valor, os dados 
são “documentos”. Modelo altamente flexível e não carece 
de colunas pré-montadas. 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. ex.: MongoDB.
• Oferece meios de criação de índices sobre os valores dos 
dados armazenados, enriquecendo as possibilidades de 
consultas, além de permitir normalização de dados e muitos 
outros conceitos oriundos do banco de dados relacional, tais 
como a criação de joins e definição de esquemas rígidos. No 
entanto, esses recursos não são obrigatórios como nos 
bancos de dados relacionais.
Modelo orientado a colunas
• Provavelmente o mais complexo dos modelos. Também é 
considerado uma extensão do armazenamento orientado a 
chave-valor e possui conceitos similares ao do modelo 
relacional, como a criação de linhas e colunas. 
• Faz o armazenamento em linhas particulares de tabela. Esse 
esquema é o perfeito oposto dos bancos relacionais, que 
armazenam conjuntos de dados em uma única linha. ex.: 
Hbase e Cassandra.
Modelo orientado a grafos
• Em situações como foco no relacionamento dos dados, o 
banco de dados orientado a grafos é o mais recomendado 
entres os quatro tipos de armazenamento NoSQL;
• Diferente dos outros modelos, em vez dos dados serem 
modelados utilizando um formato de linhas e colunas, eles 
possuem uma estrutura definida na teoria dos grafos, usando 
vértices e arestas para armazenar os dados dos itens 
coletados e os relacionamentos entre esses dados, 
respectivamente;
• Oferece maior desempenho nas aplicações que precisam 
traçar os caminhos existentes nos relacionamentos entre os 
dados, como por exemplo, as que precisam identificar como 
um conjunto de amigos está conectado em uma rede, ou 
descobrir a melhor rota para se chegar a um local em menor 
tempo. ex.: Neo4j, ArangoDB.
Qual o melhor banco NoSQL?
Os Bancos de Dados NoSQL referem-se a uma série de tecnologias
diferentes, que não são essencialmenterelacionais. O que os
melhores bancos de dados NoSQL têm em comum?
MongoDB
• Líder de mercado dos bancos de dados NoSQL;
• Possui funcionalidades interessantes como: replicação, 
indexação, balanceamento de carga;
• Quanto ao armazenamento, utiliza alguns documentos muito 
similares ao formato JSON.
Cassandra
• Desenvolvido no Facebook, hoje, assim como o Hbase, são 
mantidos pela Apache Foundation;
• Muito popular para trabalhar com BigData por ser otimizado 
para clusters, especialmente por funcionar sem mestres 
(funcionamento distribuído);
• Um outro ponto forte é o conceito de orientação por coluna, 
o que torna a latência bem menor em algumas pesquisas.
Redis
• Modelo de armazenamento de dados open source;
• 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 para consultas.
NoSQL x 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
Escalabilidade vertical Escalabilidade horizontal
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)
NoSQL x SQL
Item SQL NoSQL
Modelo de dados
Normaliza dados em estruturas tabulares 
conhecidas como tabelas, que consistem 
em linhas e colunas. Um schema define 
estritamente as tabelas, colunas, índices, 
relações entre tabelas e outros elementos 
do banco de dados.
Normalmente não aplicam um schema. 
Geralmente, uma chave de partição é usada 
para recuperar valores, conjuntos de colunas 
ou documentos semiestruturados JSON, 
XML ou outros que contenham atributos de 
itens relacionados.
Propriedades ACID
Conjunto de propriedades ACID: 
Atomicidade, Constância, Isolamento e 
Durabilidade.
Modelo de dados mais flexível que escala 
horizontalmente. Essas características fazem 
dos bancos de dados NoSQL uma excelente 
opção em situações em que os RDBMS 
deparam com desafios de arquitetura e 
precisam solucionar uma combinação de 
gargalos de desempenho, escalabilidade, 
complexidade operacional e custos 
crescentes de administração e suporte.
Desempenho
O desempenho normalmente depende do 
subsistema do disco. A otimização de 
consultas, índices e estrutura de tabela é 
necessária para alcançar máximo 
desempenho.
Desempenho geralmente é uma função do 
tamanho do cluster do hardware subjacente, 
da latência de rede e da aplicação que faz a 
chamada.
NoSQL x SQL
Item SQL NoSQL
Escala
Mais fácil de aumentar a escala 
"verticalmente" com hardware mais 
rápido. Outros investimentos são 
necessários para tabelas relacionais para 
abranger um sistema distribuído.
Projetado para aumentar a escala 
"horizontalmente" usando clusters 
distribuídos de hardware de baixo custo para 
aumentar a transferência sem aumentar a 
latência.
APIs
As solicitações para armazenar e recuperar 
dados são comunicadas usando consultas 
compatíveis com structured query 
language (SQL). Essas consultas são 
analisadas e executadas por sistemas de 
gerenciamento de bancos de dados 
relacionais (RDBMS).
APIs baseadas em objetos permitem que 
desenvolvedores de aplicações armazenem e 
restaurem facilmente estruturas de dados na 
memória. As chaves de partição permitem 
que os aplicativos procurem pares de chave-
valor, conjuntos de colunas ou documentos 
semiestruturados contendo objetos e 
atributos de aplicativos serializados.
Ferramentas
Os bancos de dados SQL normalmente 
oferecem um rico conjunto de ferramentas 
para simplificar o desenvolvimento de 
aplicações orientadas ao banco de dados.
Os bancos de dados NoSQL normalmente 
oferecem ferramentas para gerenciar clusters 
e escalabilidade. As aplicações são a 
interface principal com os dados 
subjacentes.
Conclusões
• 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;
• 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.
Obrigado!
Prof. Henrique Mota
henrique.gama@estacio.br

Mais conteúdos dessa disciplina