/
(, .
.4 •
,[
"'
- • _,-
,.
-
◄
..
.
J• - :,
'.
•
'' ·.::
r• j ' i ' ,
." .,
.
' . ... -
' ·
'I, . 'to ,.·'
r ,. ·-.
.
.
.
;
,; •
I .. t
I '
'.., .
. ..,1
1
(. I •
• l•
l
<
.,, ·
.. .....
l
"' ·,... , ,
"
.. . . .
•
.
. .--.r .,
1 ·
,. ' ''
..
1
·.
í
.. ;- "
1 '
\
... f
'
• ··J
J,,•
; ,J\ '
" .,
U ri lFi .
• · - - ,,
"A vida é uma caixinha de
surpresas"
- Josef Climber
O que temos para hoje?
• 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
Ramon Paixão
NoSQL Especialista em Engenharia da
Computação
• Explorar o conceito de escalabilidade em bancos
NoSQL
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.
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.
1
On
(O n)
(O,
)
11
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.
SELEC NomeProduto Prec
T ,
FROM Produtos o
WHERE
ORDER
Preca>BY Preco
DESC;
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.
Principais bancos de dados relacionais
M
SQ LSe rve
icrosoft®
r®
O R A C LE
Postg re S O ®
L DATABASE
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.
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.
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).
ACID
Isolamento {lsolation)
• 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.
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.
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).
orne CPF Endereço Telefo e
º Registros de transações financeiras.
Marcela Freitas 11111 Rua A, nº 1 101010
º Planilhas de Excel.
João Augusto 22222 Rua B, nº 2 202020
Pablo Silva 33333 Rua e, nº 3 303030
A dré Me 44444 Rua D, º4 404040
des
uliana Freitas 55555 Rua E, º5 505050
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
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 APls.
º Dados em bancos NoSQL baseados em
documentos (MongoDB).
º Logs de servidores e metadados de
arquivos multimídia.
Resumo
Escalabilidade de Bancos de Dados
A escalabilidade refere-se à capacidade de
um banco de dados aumentar seu
desempenho e capacidade à medida que
a emanda cresce.
d
v
s
Escalabilidade Vertical Escalabilidade Horizontal
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.
v
s
Escalabilidade Vertical
Escalabilidade de Bancos de Dados
Escalabilidade Vertical (Scale-Up)
• Vantagens:
º Simples de implementar.
º Ideal para cargas de trabalho que não crescem v
exponencialmente. s
• Desvantagens:
º Custo elevado de hardware.
º Limitação física do servidor. scalabilidade Ve ic
1
º Ponto único de falha.
• Exemplo: Atualizar um servidor com mais memória RAM e um
processador mais potente para suportar mais consultas.
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 aue lidam com
Big Data.
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.
Escalabilidade Horizontal
. .
o o o o 1 o
O
o o
•
O or
1
o s
e • • •
Cr 1 1 e e o
e 1
oco co L CIO co oS
L
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
Existem vários tipos de bancos de dados NoSQL.
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.
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.
• Escalabilidade Horizontal: 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.
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.
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
fiexibiIidade.
m ongo DB
Tipos de Bancos de Dados NoSQL
Bancos de Dados Baseados em Documentos
e aci•ona [ ão e acional
J
Ba co de ados Ba co de dados
.--------------, Tabelas
1
1
- - - - - - - -, - 1
Coleções
r::
1 1 1
1 1
r-----
1
- - - - ---
-- - - - - - - - -
1
1 1 1
Linhas
1 1 1 1 1
1-
:: Co nas :,---,:- - - - - - - - - - -: Do1
1 1 - - - - - - ------
' 1 1
r---------------.
- -, -
1
1 1 1
1 . - - -- - - - - ------. 1
:
:
Campos 1
:c 1
..!
:------------------------------ :
II . _ _ _ _ _ , 11 11 11 I I . ... 11
:
- 1 . ,
I 1 1
1
•--------------------------4
1
1 1
1
•--------------------------
I
: u 1 1
4
1
1
·l----m
1
1
' -------------------------------
e----------------------------
-
t
o
s 1
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.
Tipos de Bancos de Dados NoSQL
Bancos de Dados Baseados em Documentos
Terminologia:
e p1
.
1
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.
Tipos de Bancos de Dados NoSQL
Bancos de Dados Baseados em Grafos
Properties:
• Armazenam informações como nós (entidades) e Post times omp
(Node) content
number _of
arestas (relações entre entidades). _nodes
likes
• Ideais para modelar relações complexas entre (relationship/edge)
likes
dados.
• Casos de uso: Redes sociais, detecção de Properties:
user_name Post
fraudes, mecanismos de recomendação. email
dote _of _ birth
likes (Node)
• Exemplos:
º Neo4j: Popular em redes sociais e follows
(relationship/edge)
sistemas de recomendação.
User Post
( ode) likes (Node)
Tipos de Bancos de Dados NoSQL
Bancos de Dados Orientados a Grafos Properties:
Post times omp
Ideal para contextos onde as relações entre os (Node) content
number _of
_nodes
dados são tão importantes quanto os próprios likes
(relationship/edge)
dados, como em redes sociais, sistemas de likes
recomendação e detecção de fraudes. Properties:
user_na Post
me email likes (Node)
dote _of _birt h
follows
(relationship/edge)
User Post
( ode) likes (Node)
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
assoc1 aç ao .
■ -
• 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.
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.
,
,
,
,
asical y Soft state ve tua ly consi ent
Ava1lable
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.
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.