40
Modelagem de Dados para BD NoSQL

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

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Í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

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

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

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

Qual é a query?

32

Page 31: 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

Referências× https://www.datastax.com/

× http://cassandra.apache.org/

33

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

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

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

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

Í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

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

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

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

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

Danielle MonteiroDB4Beginners.com/e-book

twitter.com/danimonteirodba

facebook.com/DB4Beginners

www.linkedin.com/in/danimonteirodba

WBSoft.com.br

43