Modelagem de Dados para BD NoSQL -...
Transcript of Modelagem de Dados para BD NoSQL -...
Modelagem de
Dados para BD
NoSQL
Danielle MonteiroDB4Beginners.com/e-book
twitter.com/danimonteirodba
facebook.com/DB4Beginners
www.linkedin.com/in/danimonteirodba
WBSoft.com.br
2
O que é
Modelagem?
4
5
6
1.
Key Value
REmote DIctionary Server
REDIS
7
× Muito rápido;
× O key-value mais usado;
× Dados em memória;
× Entenda como serão as pesquisas;
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)
9
Quais as melhores
chaves?
10
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
2.
Orientado a Documentos
MongoDB, o difícil é que é fácil!
12
MongoDB× Consolidado;
× Muitos recursos;
× Documentos tem o formato JSON;
× Dados podem ser normalizados;
× Dados podem ser desnormalizados;
13
14
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
Embeding
(Desnormalizado)
X
Referencing
(Normalizado)?
16
17
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
19
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
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
22
3.
Orientado a colunas
Cassandra!!!
Cassandra
23
× Desnormalizado;
× Distribuído;
× Tolerante a falhas;
× Abordagem orientada a consultas;
× Schema é muito importante;
× Design anel;
× master/ master;
× Escalabilidade linear
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
25
CQL (Cassandra Query Language)
× Baseada na SQL;
× 21 datatypes nativos;
× Alguns interessantes: counter, inet,
uuid
27
Í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
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
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
31
Qual é a query?
32
4.
Orientado a Grafos
Neo4J, poderoso nos relacionamentos!
34
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
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
Índices
• Encontrar o ponto de partida para consultas
• Busca mais eficiente
• Escritas mais lentas
38
Como as
informações estão
conectadas?
39
40
41
Casos de Uso
• Sistemas de Recomendação
• Detecção de fraudes
• Operações de redes
• Mecanismos de busca
• Machine learning
42
Danielle MonteiroDB4Beginners.com/e-book
twitter.com/danimonteirodba
facebook.com/DB4Beginners
www.linkedin.com/in/danimonteirodba
WBSoft.com.br
43