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

Prévia do material em texto

Introdução a Bancos de 
Dados NoSQL
Prof. Júlio César Andrade
Tema da aula:
Objetivos da aula
● Compreender os princípios fundamentais do 
NoSQL
● Explorar os diferentes tipos de bancos de 
dados NoSQL
● Entender os conceitos BASE
● Identificar quando utilizar bancos de dados 
NoSQL
● Estudar as vantagens e limitações dos 
bancos de dados NoSQL
● Explorar o conceito de escalabilidade em 
bancos NoSQL
2
Começando do começo…
O que são banco de dados relacionais?
Bancos de dados relacionais são sistemas 
de armazenamento de dados baseados 
no modelo relacional, onde os dados são 
organizados em tabelas.
3
Bancos Relacionais
● Modelo Relacional: Usa tabelas (ou relações) para representar 
dados e suas interconexões.
● Tabelas: Estruturas organizadas em linhas (tuplas) e colunas 
(atributos).
● Chave Primária: Identificador único para cada linha de uma tabela.
● Chave Estrangeira: Campo que referencia a chave primária de 
outra tabela, estabelecendo relacionamentos entre tabelas.
● Linguagem SQL (Structured Query Language): Usada para 
inserir, consultar, atualizar e excluir dados no banco.
4
5
SQL (Structured Query Language)
Definição: SQL é uma linguagem padrão para gerenciar e 
manipular bancos de dados relacionais.
Finalidade: Permite a criação, consulta, atualização e 
exclusão de dados em bancos relacionais.
6
SQL (Structured Query Language)
DDL (Data Definition Language) – Define a estrutura do banco de dados.
● CREATE TABLE – Cria tabelas.
● ALTER TABLE – Modifica tabelas.
● DROP TABLE – Remove tabelas.
DML (Data Manipulation Language) – Manipula os dados dentro das tabelas.
● INSERT INTO – Adiciona registros.
● UPDATE – Modifica registros.
● DELETE – Remove registros.
DQL (Data Query Language) – Recupera informações.
● SELECT – Consulta dados.
7
SQL (Structured Query Language)
DDL (Data Definition Language) – Define a estrutura do banco de dados.
● CREATE TABLE – Cria tabelas.
● ALTER TABLE – Modifica tabelas.
● DROP TABLE – Remove tabelas.
DML (Data Manipulation Language) – Manipula os dados dentro das tabelas.
● INSERT INTO – Adiciona registros.
● UPDATE – Modifica registros.
● DELETE – Remove registros.
DQL (Data Query Language) – Recupera informações.
● SELECT – Consulta dados.
8
Principais bancos de dados relacionais
9
ACID
O modelo ACID é um conjunto de 
propriedades que garantem que as 
transações em bancos de dados 
relacionais sejam processadas de forma 
confiável.
10
ACID
Atomicidade (Atomicity)
● Significado: A transação é "tudo ou nada". Ou todas as 
operações dentro de uma transação são executadas com 
sucesso, ou nenhuma delas é aplicada. Se ocorrer algum 
erro, todas as modificações feitas são desfeitas.
● Exemplo: Se você estiver transferindo dinheiro de uma 
conta bancária para outra, a transação deve ser concluída 
por completo. Se a transferência falhar após a dedução do 
valor da conta de origem, a transação é cancelada, e o valor 
volta à conta original.
11
A
ACID
Consistência (Consistency)
● Significado: Uma transação leva o banco de dados de um 
estado válido para outro estado válido. Ou seja, as 
transações devem respeitar todas as regras de integridade e 
consistência definidas para os dados.
● Exemplo: Em uma base de dados bancária, não deve ser 
possível realizar uma transação que deixe o saldo de uma 
conta com valor negativo (se a regra de negócio não 
permitir).
12
C
ACID
Isolamento (Isolation)
● Significado: Transações simultâneas não devem interferir 
umas nas outras. Os efeitos de uma transação não devem 
ser visíveis para outras até que ela esteja completamente 
concluída.
● Exemplo: Se dois usuários tentarem atualizar o saldo da 
mesma conta ao mesmo tempo, a transação deve ser 
isolada para que nenhuma alteração se sobreponha à outra, 
garantindo que o saldo final seja correto.
13
I
ACID
Durabilidade (Durability)
● Significado: Uma vez que uma transação foi confirmada 
(commit), suas mudanças são permanentes no banco de 
dados, mesmo que ocorra uma falha no sistema (como uma 
queda de energia).
● Exemplo: Se você fizer um depósito bancário e a transação 
for confirmada, o valor depositado deve ser persistido, 
mesmo que o servidor falhe imediatamente após o commit.
14
D
Tipos de dados
15
Tipos de dados
Dados Estruturados
● Organizados em um formato fixo, geralmente em 
tabelas com linhas e colunas.
● Facilmente armazenados e manipulados em bancos de 
dados relacionais (SQL).
● Possuem um esquema rígido e bem definido.
● Exemplos:
○ Informações em bancos relacionais (clientes, 
pedidos, produtos).
○ Registros de transações financeiras.
○ Planilhas de Excel.
16
Tipos de dados
Dados Não Estruturados
● Não possuem um formato fixo ou predefinido.
● Difíceis de armazenar e processar com bancos relacionais 
tradicionais.
● Normalmente armazenados em bancos NoSQL, sistemas de 
arquivos ou data lakes.
● Exemplos:
○ Imagens, vídeos e áudios.
○ E-mails e postagens em redes sociais.
○ Documentos em formato livre, como PDFs e textos 
digitados
17
Tipos de dados
Dados Semiestruturados
● Não seguem um esquema rígido, mas possuem uma 
organização parcial.
● Usam marcadores ou etiquetas para estruturar as informações.
● Armazenados em formatos flexíveis, como JSON e XML.
● Exemplos:
○ Arquivos JSON e XML usados em APIs.
○ Dados em bancos NoSQL baseados em documentos 
(MongoDB).
○ Logs de servidores e metadados de arquivos multimídia.
18
Resumo
19
Escalabilidade
20
Escalabilidade de Bancos de Dados
A escalabilidade refere-se à capacidade 
de um banco de dados aumentar seu 
desempenho e capacidade à medida que 
a demanda cresce.
21
Escalabilidade de Bancos de Dados
Escalabilidade Vertical (Scale-Up)
● Consiste em aumentar a capacidade de um único servidor 
adicionando mais recursos (CPU, RAM, armazenamento).
● Mantém a estrutura centralizada e pode exigir interrupções no 
serviço para upgrades.
22
Escalabilidade de Bancos de Dados
Escalabilidade Vertical (Scale-Up)
● Vantagens:
○ Simples de implementar.
○ Ideal para cargas de trabalho que não crescem 
exponencialmente.
● Desvantagens:
○ Custo elevado de hardware.
○ Limitação física do servidor.
○ Ponto único de falha.
● Exemplo: Atualizar um servidor com mais memória RAM e um 
processador mais potente para suportar mais consultas.
23
Escalabilidade de Bancos de Dados
Escalabilidade Horizontal (Scale-Out)
● Aumenta o desempenho distribuindo a carga entre múltiplos 
servidores (clusters).
● Comum em bancos de dados NoSQL e aplicações que lidam com 
Big Data.
24
Escalabilidade de Bancos de Dados
Escalabilidade Horizontal (Scale-Out)
Vantagens:
● Melhor tolerância a falhas.
● Pode crescer indefinidamente com a adição de mais servidores.
● Custo distribuído ao longo do tempo.
Desvantagens:
● Mais complexo de gerenciar.
● Requer estratégias como sharding (divisão de dados entre 
servidores).
Exemplo: Um banco NoSQL como MongoDB distribuindo dados entre 
vários nós para suportar milhões de requisições simultâneas.
25
26
Banco de dados NoSQL
27
NoSQL é o nome dado aos bancos de dados que não se baseiam no 
conhecido modelo relacional. Ou seja, os bancos NoSQL não usam tabelas 
com colunas e linhas para armazenar os dados. Ao invés disso, eles 
implementam diferentes modelos.
28
Existem vários tipos de bancos de dados NoSQL.
29
Tipos de Bancos de Dados NoSQL
Bancos de Dados Chave-Valor (Key-Value)
Os bancos de dados chave-valor são um dos tipos mais simples e eficientes de bancos NoSQL. 
Eles armazenam dados como um par chave → valor.
30
Tipos de Bancos de Dados NoSQL
Bancos de Dados Chave-Valor (Key-Value)
Características
● Armazenamento Simples: Cada registro é identificado por uma chave única e um valor 
associado.
● Desempenho Alto: Como os dados são acessados diretamente pela chave, a recuperação é 
extremamente rápida.
● Flexibilidade: O valor pode armazenar diferentes formatos, como strings, listas, objetos 
JSON ou binários.
● EscalabilidadeHorizontal: Fácil distribuição de dados entre múltiplos servidores.
● Baixa Complexidade: Não há necessidade de esquemas rígidos, tornando-o ideal para 
aplicações dinâmicas.
31
Tipos de Bancos de Dados NoSQL
Bancos de Dados Chave-Valor (Key-Value)
● A chave geralmente é do tipo String, já o valor pode ser qualquer 
tipo;
● Usado tanto para persistir dados, quanto para ficar em memória 
formando caches;
● Adequado para aplicações de leituras frequentes;
● Pesquisa em banco fica limitada ao campo chave, não podendo 
fazer consultas mais elaboradas;
● Ideal para resolver questões de lentidão para leitura e escrita de 
dados em grande variedade e volume;
● Limitação: Campo valor não permite indexação.
32
Tipos de Bancos de Dados NoSQL
Bancos de Dados Baseados em Documentos
● Armazenam dados no formato de documentos, como JSON, BSON ou XML.
● Cada documento contém pares chave-valor organizados de forma flexível.
● Permitem estruturação dinâmica dos dados, sem necessidade de um esquema 
fixo.
● Casos de uso: Aplicações web, catálogos de produtos, perfis de usuários.
● Exemplos:
○ MongoDB: Muito usado para aplicativos modernos devido à sua 
flexibilidade.
33
Tipos de Bancos de Dados NoSQL
34
Bancos de Dados Baseados em Documentos
Tipos de Bancos de Dados NoSQL
Bancos de Dados Baseados em Documentos
● Pode realizar vários tipos de consultas e filtros nos valores 
armazenados e não somente no campo chave;
● Os documentos podem ser formados por dados semiestruturados, 
como XML e JSON;
● O foco de um banco de dados de documentos é a funcionalidade 
de consulta.
35
Tipos de Bancos de Dados NoSQL
Bancos de Dados Baseados em Documentos
Terminologia:
36
Tipos de Bancos de Dados NoSQL
Bancos de Dados Baseados em Colunas
● Diferente dos bancos relacionais, armazenam dados em colunas 
em vez de linhas.
● Melhor desempenho em consultas que exigem leitura de grandes 
quantidades de dados.
● Utilizados principalmente para Big Data e aplicações analíticas.
● Casos de uso: Data warehouses, análise de logs, 
recomendações personalizadas.
● Exemplos:
○ Apache Cassandra: Alta escalabilidade e resistência a 
falhas.
37
Tipos de Bancos de Dados NoSQL
Bancos de Dados Baseados em Grafos
● Armazenam informações como nós (entidades) 
e arestas (relações entre entidades).
● Ideais para modelar relações complexas entre 
dados.
● Casos de uso: Redes sociais, detecção de 
fraudes, mecanismos de recomendação.
● Exemplos:
○ Neo4j: Popular em redes sociais e 
sistemas de recomendação.
38
Tipos de Bancos de Dados NoSQL
Bancos de Dados Orientados a Grafos
Ideal para contextos onde as relações entre os 
dados são tão importantes quanto os próprios 
dados, como em redes sociais, sistemas de 
recomendação e detecção de fraudes.
39
Tipos de Bancos de Dados NoSQL
Bancos de Dados Baseados em Grafos
Composição de Nós e Arestas
● O banco de dados é composto por nós (entidades) e arestas 
(relacionamentos).
● Nó: Pode representar uma pessoa, organização, local ou qualquer entidade de 
interesse.
● Aresta: Representa a relação entre dois nós, como amizade, compra ou 
associação.
● Cada nó tem um identificador único, arestas de saída (conexões para outros 
nós) e arestas de entrada (conexões de outros nós).
● As propriedades dos nós e arestas são armazenadas como pares chave/valor, 
permitindo flexibilidade na definição dos dados.
40
Princípios BASE dos bancos de dados NoSQL
Os princípios BASE (acrônimo 
para Basically Available, Soft 
state, Eventual consistency) 
são frequentemente usados para 
descrever o comportamento dos 
bancos de dados NoSQL.
41
Princípios BASE dos bancos de dados NoSQL
Basically Available (Disponibilidade Básica)
● Significado: O sistema garante que estará disponível para 
fornecer uma resposta, mesmo que parte do sistema falhe.
● Exemplo: Em sistemas distribuídos, um banco NoSQL como 
Cassandra pode retornar dados de um nó, mesmo que 
outros nós estejam fora do ar, priorizando a 
disponibilidade.
42
BA
Princípios BASE dos bancos de dados NoSQL
Soft State (Estado Suave)
● Significado: O estado do banco de dados pode mudar ao 
longo do tempo, mesmo sem novas entradas de dados, 
devido à falta de consistência forte.
● Explicação: O estado dos dados pode ser alterado por 
processos internos de sincronização (como replicação).
● Exemplo: Um banco de dados NoSQL pode atualizar 
dados em segundo plano, sem a necessidade de ações 
explícitas do usuário. Isso pode ocorrer após algum tempo 
ou com a propagação de alterações entre diferentes nós.
43
S
Princípios BASE dos bancos de dados NoSQL
Eventual Consistency (Consistência Eventual)
● Significado: O sistema garante que, após um período de 
tempo, todos os nós do banco de dados convergirão para o 
mesmo valor de dados, mas não garante consistência 
imediata.
● Exemplo: Em Cassandra ou Amazon DynamoDB, quando 
um dado é atualizado em um nó, ele pode não estar 
imediatamente sincronizado com outros nós. Após algum 
tempo, todos os nós terão a versão mais recente do dado.
44
E
Resumo
45
Como escolher entre 
bancos de dados não 
relacionais (NoSQL) e 
relacionais (SQL)
46
Melhor para:
47
NoSQL ou não relacional
● Processar dados grandes, não 
relacionados, indeterminados ou em 
mudança constante.
● Dados independentes de esquema ou 
com esquema definido pelo aplicativo.
● Aplicativos em que o desempenho e a 
disponibilidade são mais importantes que 
uma consistência forte.
● Aplicativos Always On que atendem a 
usuários em todo o mundo.
SQL ou relacional
● Processa dados relacionais e tem requisitos 
discretos e lógicos que podem ser 
identificados com antecedência.
● Esquema que precisa ser mantido e 
sincronizado entre o aplicativo e o banco de 
dados.
● Sistemas herdados criados para estruturas 
relacionais.
● Aplicativos que exigem consultas complexas 
ou transações com várias linhas.
Cenário:
48
NoSQL ou não relacional
● Aplicativos móveis.
● Análise em tempo real.
● Gerenciamento de conteúdo.
● Personalização.
● Aplicativos IoT.
● Migração de banco de dados.
SQL ou relacional
● Contabilidade, finanças e sistemas bancários.
● Sistemas de gerenciamento de estoque.
● Sistemas de gerenciamento de transações.
Escala:
49
NoSQL ou não relacional
● Escala dados horizontalmente ao 
fragmentá-los entre os servidores.
SQL ou relacional
● Escala dados verticalmente, aumentando a 
carga do servidor.
Quando Usar Cada Tipo de Banco de Dados
50
Obrigado! Até a próxima aula.
51
Obrigado!

Mais conteúdos dessa disciplina