modelagem de dados para bd nosql -...
TRANSCRIPT
![Page 1: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/1.jpg)
Modelagem de
Dados para BD
NoSQL
![Page 2: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/2.jpg)
Danielle MonteiroDB4Beginners.com/e-book
twitter.com/danimonteirodba
facebook.com/DB4Beginners
www.linkedin.com/in/danimonteirodba
WBSoft.com.br
2
![Page 3: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/3.jpg)
O que é
Modelagem?
4
![Page 4: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/4.jpg)
5
![Page 5: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/5.jpg)
6
1.
Key Value
REmote DIctionary Server
![Page 6: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/6.jpg)
REDIS
7
× Muito rápido;
× O key-value mais usado;
× Dados em memória;
× Entenda como serão as pesquisas;
![Page 7: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/7.jpg)
Tipo de dados
8
× string
× list (acesso nas pontas mais rápido)
× set (coleção de strings)
× sorted set (coleção de strings ordenadas)
× hash (chaves e conteúdos string)
![Page 8: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/8.jpg)
9
![Page 9: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/9.jpg)
Quais as melhores
chaves?
10
![Page 10: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/10.jpg)
Dicas
11
× Lembre-se que a pesquisa é feita pela chave
× É a base de dados principal? (sim, é possível!)
× Cuidado com a redundância
× list -> filas
× sorted set -> notícias, tweets… ordem temporal.
× hash -> dados genéricos de forma compactada
![Page 11: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/11.jpg)
2.
Orientado a Documentos
MongoDB, o difícil é que é fácil!
12
![Page 12: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/12.jpg)
MongoDB× Consolidado;
× Muitos recursos;
× Documentos tem o formato JSON;
× Dados podem ser normalizados;
× Dados podem ser desnormalizados;
13
![Page 13: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/13.jpg)
14
![Page 14: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/14.jpg)
Tipos de Dados× Documento armazenado em formato BSON
× Data, string, ObjectID, NumberLong, NumberInt,
NumberDecimal, Object, Array…
× Tuning começa com o data type correto.
15
![Page 15: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/15.jpg)
Embeding
(Desnormalizado)
X
Referencing
(Normalizado)?
16
![Page 16: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/16.jpg)
17
![Page 17: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/17.jpg)
Quando usar documentos Embeded?
• Relacionamentos 1:1
• Relacionamentos 1:n
• Entre uma entidade fraca e uma entidade forte
• Coleções que contém um número grande de documentos pequenos
• Dados que são lidos sempre juntos
18
![Page 18: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/18.jpg)
19
![Page 19: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/19.jpg)
Quando usar documentos Referencing?
• Quando uma parte do documento é frequentemente lida/ atualizada e a outra parte não.
• O tamanho do documento excede 16MB.
• Quando os dados não devem ser duplicados!
• Quando um objeto é referenciado em muitos outros
• Em complexos relacionamentos MXN
• Em modelos muito grandes e hierárquicos
20
![Page 20: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/20.jpg)
Informações importantes
• Possui linguagem própria
• Suporte a vários tipos de índice
• Governança facilitada com a validação de schemas nativa
21
![Page 21: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/21.jpg)
22
3.
Orientado a colunas
Cassandra!!!
![Page 22: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/22.jpg)
Cassandra
23
× Desnormalizado;
× Distribuído;
× Tolerante a falhas;
× Abordagem orientada a consultas;
× Schema é muito importante;
× Design anel;
× master/ master;
× Escalabilidade linear
![Page 23: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/23.jpg)
Conceitos importantes× Keyspace
× Onde definimos o fator de replicação
× Família de Colunas
× Contém colunas
× Contém linhas
× Separação lógica de dados semelhantes
× Colunas
× Estrutura básica
× nome, valor e timestamp.
24
![Page 24: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/24.jpg)
25
![Page 25: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/25.jpg)
CQL (Cassandra Query Language)
× Baseada na SQL;
× 21 datatypes nativos;
× Alguns interessantes: counter, inet,
uuid
27
![Page 26: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/26.jpg)
Índices
× Melhores em tabelas grandes;
× Índices secundários:
× Podem destruir o desempenho da sua query;
× Complexos;
× Criados em background (default), sem bloquear
leituras ou gravações;
28
![Page 27: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/27.jpg)
Primary Key× Identifica uma coluna
× Primeiro elemento é a chave da partição
× Determina a localização dos dados
× Colunas depois da chave de partição são
chamadas de clustering columns
× As clustering columns especifica a ordem em
que os dados são organizados dentro da
partição.
29
![Page 28: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/28.jpg)
30
1
2
3
4
5
6
7
8
CREATE TABLE user_videos (
userid uuid,
added_date timestamp,
videoid uuid,
name text,
preview_image_location text,
PRIMARY KEY (userid, added_date, videoid)
);
Mostre-me todos os vídeos associados a um
determinado usuário
![Page 29: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/29.jpg)
31
![Page 30: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/30.jpg)
Qual é a query?
32
![Page 32: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/32.jpg)
4.
Orientado a Grafos
Neo4J, poderoso nos relacionamentos!
34
![Page 33: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/33.jpg)
Neo4J× BD gráfico é um banco de dados projetado para
tratar as relações entre os dados;
× Pesquisas em grandes quantidades de dados;
× Ideal para consultas complexas;
× Desempenho muito bom;
× Compatível com ACID;
× Cypher
35
![Page 34: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/34.jpg)
Conceitos Importantes× Nodes = entidades
× Relacionamentos = eventos ou conceitos que
relacionam nós
× os relacionamentos são especificados na
inclusão, não tem JOIN
36
![Page 35: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/35.jpg)
Índices
• Encontrar o ponto de partida para consultas
• Busca mais eficiente
• Escritas mais lentas
38
![Page 36: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/36.jpg)
Como as
informações estão
conectadas?
39
![Page 37: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/37.jpg)
40
![Page 38: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/38.jpg)
41
![Page 39: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/39.jpg)
Casos de Uso
• Sistemas de Recomendação
• Detecção de fraudes
• Operações de redes
• Mecanismos de busca
• Machine learning
42
![Page 40: Modelagem de Dados para BD NoSQL - DB4Beginnersdb4beginners.com/.../05/Net-SP-Modelagem-para-BD-NoSQL.pdfTipo de dados 8 × string × list (acesso nas pontas mais rápido) × set (coleção](https://reader036.vdocuments.mx/reader036/viewer/2022081623/61408bba2e263e64232a21ff/html5/thumbnails/40.jpg)
Danielle MonteiroDB4Beginners.com/e-book
twitter.com/danimonteirodba
facebook.com/DB4Beginners
www.linkedin.com/in/danimonteirodba
WBSoft.com.br
43