Page 1
Bancos de Dados de
Grafos
Jaudete Daltio
MC536
1
Page 2
Motivações para novos SGBDs▪ Volume de dados crescent
▪ Distribuídos, heterogêneos e interligados
▪ Questões sobre armazenamento e processamento descentralizado, desempenhoe semântica
2
Page 3
Tendência (1): volume
3https://pt.slideshare.net/sfamilian/working-with-big-data-jan-2016-part-1/6-CONTEXT_WHATS_BIG_DATAHOW_BIG
Page 4
Tendência (1): volume
4https://pt.slideshare.net/sfamilian/working-with-big-data-jan-2016-part-1/6-CONTEXT_WHATS_BIG_DATAHOW_BIG
Page 5
Tendência (2): conectividade
5
Page 6
Tendência (3): heterogeneidade
6
Page 7
Tendência (4): arquiteturas
7
Page 8
NOSQL
8
No to SQL Never SQL
Page 9
NOT ONLY SQL
Reconhecer que para alguns problemaspodem existir soluções de persistência
customizadas com melhor desempenhoOU mais amigaveis
9
Page 10
NOSQL “SGBDs”• Não possuem todas as propriedades de um
SGBD relacional (p ex, consistência)
• Noção de esquema é fuzzy
• Em um mesmo BD, duas instancias de umamesma entidade podem ter atributos diferentes
• Diferentes modelos de dados
10
Page 11
Modelo de Dados (Codd, 1980)
• Coleção de elementos para representar dados e expressar detalhes semânticos
• Componentes
• Tipos de estruturas de dados
• Restrições de integridade para definir estados consistentes do banco de dados
• Operadores para recuperar dados
11
Page 12
Categorias: Modelos de Dados
12
Page 13
NOSQL Databases
13
Page 14
Tamanho X Complexidade
14
Page 15
Lápide
▪ER
▪Modelagem
▪Mapeamento
▪Especificação
▪Normalização
15
Page 16
Bancos de Dados
de Grafos
16
Page 17
O que é um BD grafos ?
• BD NOSQL
• Utiliza modelos de dados baseados em grafos
17
Page 18
Um grafo é
• um conjunto V de vértices(vértice = nó)
• um conjunto E de arestas: pares ordenados v e w ∈ V(aresta = arco)
18
Page 19
Por que grafos ?
▪ Vários cenários e problemas do mundo real podem ser mapeados como grafos
19
Page 20
Tráfego
Fonte: slides Neo4j GraphDays, 2016
20
Page 21
Hotéis
Fonte: slides Neo4j GraphDays, 2016
21
Page 22
Relacionamentos
Fonte: slides Neo4j GraphDays, 2016
22
Page 23
Twitter (Influência)
Page 24
Cadeia AlimentarFishBase
Page 25
Proteínas da Levedura
Yeast proteins: Sergei Maslov and Kim Sneppen,Specificity and stability in topology of protein networks,Science 296, 910-913 (2002).
Page 26
Rede hidrográfica Brasil – 620K nós
26
Page 28
Modelo de Dados (Codd, 1980)
• Coleção de elementos para representar dados e expressar detalhes semânticos
• Componentes
• Tipos de estruturas de dados
• Restrições de integridade para definir estados consistentes do banco de dados
• Operadores para recuperar dados
28
Page 29
Estrutura de Dados
29
● Variações sob a definição básica
● Aumentar expressividade
● Representar cenários específicos de forma menos ambígua
Page 32
Grafo de Propriedades
32
Page 33
Modelo de Dados (Codd, 1980)
• Coleção de elementos para representar dados e expressar detalhes semânticos
• Componentes
• Tipos de estruturas de dados
• Restrições de integridade para definir
estados consistentes do banco de
dados
• Operadores para recuperar dados33
Page 34
DB Grafos http://db-engines.com/en/ranking/graph+dbms
34
342 sistemas
30 de grafos
Neo4J – 22
Giraph - 124
Page 35
DB Grafos http://db-engines.com/en/ranking/graph+dbms
35
MULTI?
Page 36
DB Grafos
36
http://db-engines.com/en/ranking/graph+dbms
Page 37
Neo4j
• Grafo rotulado de propriedades tipadas
• Arestas possuem tipos
• É possível mais de uma aresta, de tipos diferentes, entre dois vértices
• Vértices podem possuir rótulos
• É possível múltiplos rótulos em um mesmo vértice
Fonte: slides Michael Hunger, Relational to Graph, 2015
37
Page 38
Em 2015
38
Fonte: slides Michael Hunger, Relational to Graph, 2015
Page 39
Empresas que adotam
39
Fonte: slides Michael Hunger, Relational to Graph, 2015
Page 40
Como adotam
40
Fonte: slides Michael Hunger, Relational to Graph, 2015
Page 41
Estudos de Caso (Neo4j)
Fonte: slides Neo4j GraphDays, 2016
41
Page 42
Estudos de Caso - Recomendação
Fonte: slides Neo4j GraphDays, 2016
42
Page 43
Fonte: slides Neo4j GraphDays, 2016
43
Page 44
Estudos de Caso - Buscas
Fonte: slides Neo4j GraphDays, 2016
44
Page 45
Conceitos basicos – modelo de
dados do Neo4j
45
Page 46
Grafo de Propriedades
Fonte: slides Michael Hunger Graph Database Introduction, 2014
46
Page 47
Rótulos (Labels)
47
Fonte: slides Michael Hunger Graph Database Introduction, 2014
Page 48
Atributos
48
Fonte: slides Michael Hunger Graph Database Introduction, 2014
Page 49
Arestas
49
Fonte: slides Michael Hunger Graph Database Introduction, 2014
Page 50
Tipos de Arestas
50
Fonte: slides Michael Hunger Graph Database Introduction, 2014
Page 51
Mapeamento dos Relacionamentos
51
Page 52
Mapeamento dos Relacionamentos
52
Page 53
Cypher
• Declarativo
• Busca Padrões
53
Page 54
Consultas em Grafos – “Percurso”Em Neo4j - Cypher
54
1. Ache nó inicial
Page 55
Consultas em Grafos – “Percurso”
55
2. Percorra o
grafo
Page 56
ExemploQuem se reporta a quem ?
Fonte: slides Michael Hunger, Relational to Graph, 2015
56
Page 57
Consulta
57
Fonte: slides Michael Hunger, Relational to Graph, 2015
Page 58
Consulta
58
Fonte: slides Michael Hunger, Relational to Graph, 2015
Page 59
Quem se reporta a quem ?
59
Fonte: slides Michael Hunger, Relational to Graph, 2015
Page 60
Quem se reporta a quem ?
60
Fonte: slides Michael Hunger, Relational to Graph, 2015
Page 61
Pessoas a quem o Robert se reporta
61
Fonte: slides Michael Hunger, Relational to Graph, 2015
Page 62
Quem é o chefe ?
62
Fonte: slides Michael Hunger, Relational to Graph, 2015
Page 63
Estrutura de uma Consulta
63
Fonte: slides Michael Hunger Graph Database Introduction, 2014
Page 64
MATCH - Padrão
64
Fonte: slides Michael Hunger Graph Database Introduction, 2014
Page 65
WHERE – Seleção (Filtro)
65
Fonte: slides Michael Hunger Graph Database Introduction, 2014
Page 66
RETURN - Projeção
66
Fonte: slides Michael Hunger Graph Database Introduction, 2014
Page 67
ORDER BY
67
Fonte: slides Michael Hunger Graph Database Introduction, 2014
Page 68
WITH + WHERE = HAVING (SQL)
68
Fonte: slides Michael Hunger Graph Database Introduction, 2014
Page 69
Collections
69
Fonte: slides Michael Hunger Graph Database Introduction, 2014
Page 70
FOREACH | CREATE | MERGE
70
Fonte: slides Michael Hunger Graph Database Introduction, 2014
Page 71
Prática – Neo4j
• www.ic.unicamp.br/~cmbm/MC536/
• > neo4j console
• //localhost:7474
71
Page 72
Em resumo ...
● Novas tendências e demandas levaram a emergir novas frentes em BD
● NOSQL● Vários modelos de dados - requisitos
específicos● BD Grafos: grafos como modelo de dados● Neo4j
○ Grafo de Propriedades - tipado e rotulado○ Linguagem de consulta Cypher
72