Download - Introdução ao neo4j
![Page 1: Introdução ao neo4j](https://reader036.vdocuments.com.br/reader036/viewer/2022062522/58a160b31a28abc1708b4f1f/html5/thumbnails/1.jpg)
Introdução ao Neo4j – 3.0
(GRAPHS)[:ARE]›(EVERYWHERE)
![Page 2: Introdução ao neo4j](https://reader036.vdocuments.com.br/reader036/viewer/2022062522/58a160b31a28abc1708b4f1f/html5/thumbnails/2.jpg)
Jhonathan S. Soares
• MVP Microsoft – Visual Studio• Neo4j Certified Developer
• Criador do blog CodigoSimples.net
Leandro Domingues• Neo4j Certified Developer• SQL Server Specialist• Criador do blog CodificandoSempre.com.br
![Page 3: Introdução ao neo4j](https://reader036.vdocuments.com.br/reader036/viewer/2022062522/58a160b31a28abc1708b4f1f/html5/thumbnails/3.jpg)
Introdução ao Neo4j
• Tipos de NOSQL• Já somos 255 e crescendo \o/• Colunar | Wide Column | Column Families• Hadoop – Hbase – Cassandra – BigTable
• Orientado à Documentos| Document Store• ElasticSearch – OrientDB – MongoDB - DocumentDB
• Chave Valor | Tuple Store | Key Value• DynamoDB – Azure Table – Redis - MemcacheDB
• Orientado à Grafos | Graph Databases• Neo4j – ArangoDB – OrientDB - Titan
![Page 4: Introdução ao neo4j](https://reader036.vdocuments.com.br/reader036/viewer/2022062522/58a160b31a28abc1708b4f1f/html5/thumbnails/4.jpg)
Introdução ao Neo4j
• Graph Databases• Somos diferentes?
• Só você• Just you• Diferentão• Vanguardista• Pica das galáxias
• Está diretamente relacionado a um modelode dados estabelecido, o modelo de grafos.
![Page 5: Introdução ao neo4j](https://reader036.vdocuments.com.br/reader036/viewer/2022062522/58a160b31a28abc1708b4f1f/html5/thumbnails/5.jpg)
Introdução ao Neo4j
• Graph Databases• Representar os dados e / ou o esquema dos dados como grafos
dirigidos.
![Page 6: Introdução ao neo4j](https://reader036.vdocuments.com.br/reader036/viewer/2022062522/58a160b31a28abc1708b4f1f/html5/thumbnails/6.jpg)
Introdução ao Neo4j
• Dijkstra• Lei do menor caminho ou caminho com menor peso.
![Page 7: Introdução ao neo4j](https://reader036.vdocuments.com.br/reader036/viewer/2022062522/58a160b31a28abc1708b4f1f/html5/thumbnails/7.jpg)
Introdução ao Neo4j
• Graph Databases
• Porém, por meio dos relacionamentosinerentes aos grafos, estas consultas tornam-se mais simples e diretas.
![Page 8: Introdução ao neo4j](https://reader036.vdocuments.com.br/reader036/viewer/2022062522/58a160b31a28abc1708b4f1f/html5/thumbnails/8.jpg)
Introdução ao Neo4j
• Neo4j é feito do que? • Nós, Labels, Relacionamentos e Propriedades • Nós são os registros• Labels são conjunto agrupado de nós• Relacionamentos são as conexões entre os nós• Propriedades são definições de um nós ( Direção, Agrupamento etc)
![Page 9: Introdução ao neo4j](https://reader036.vdocuments.com.br/reader036/viewer/2022062522/58a160b31a28abc1708b4f1f/html5/thumbnails/9.jpg)
Instalação e Configuração
• Plataformas suportadas • Windows• Linux/Unix• Mac OSX
• Versões• Community Edition• Enterprise Edition
![Page 10: Introdução ao neo4j](https://reader036.vdocuments.com.br/reader036/viewer/2022062522/58a160b31a28abc1708b4f1f/html5/thumbnails/10.jpg)
Introdução à Cypher Query
• Conceitos
• Cypher é uma linguagem declarativa, de inspiração SQL para descrever padrões em gráficos utilizando uma sintaxe ascii-art.
• Ela nos permite selecionar, inserir, atualizar ou excluir dados do gráfico sem a necessidade de descrever exatamente como fazê-lo.
![Page 11: Introdução ao neo4j](https://reader036.vdocuments.com.br/reader036/viewer/2022062522/58a160b31a28abc1708b4f1f/html5/thumbnails/11.jpg)
Introdução à Cypher Query
• Conceitos• MATCH (p:pessoa{idade: 25}) RETURN p
• MATCH é o nosso comando de seleção• p:pessoa é o nosso conjunto de dados• {idade:25} é o nosso where• return p é quais registros eu quero que retorne
![Page 12: Introdução ao neo4j](https://reader036.vdocuments.com.br/reader036/viewer/2022062522/58a160b31a28abc1708b4f1f/html5/thumbnails/12.jpg)
Introdução à Cypher Query
• Conceitos• MATCH (p:pessoa{idade: 25}) RETURN p
• SELECT * FROM Pessoa WHERE idade = 25
• MATCH (p:pessoa{name:’Anakin’})-[:visitou]->(p) RETURN p
• SELECT p.* FROM Planetas p INNER JOIN VisitouPlaneta v ON p.id = v.planeta_id INNER JOIN Pessoa pe ON v.pessoa_id = pe.id WHERE pe.nome = 'Anakin'
![Page 13: Introdução ao neo4j](https://reader036.vdocuments.com.br/reader036/viewer/2022062522/58a160b31a28abc1708b4f1f/html5/thumbnails/13.jpg)
Linguagens de programação
• Neo4j se integra nativamente com:
• Java
• C#
• Python
• Ruby
• Javascript
• PHP• Exemplo com c# : github.com/Readify/Neo4jClient/wiki/cypher-examples
![Page 14: Introdução ao neo4j](https://reader036.vdocuments.com.br/reader036/viewer/2022062522/58a160b31a28abc1708b4f1f/html5/thumbnails/14.jpg)
Linguagens de programação
Imagine a seguinte classe em c#:
public class User
{
public long Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string Email { get; set; }
}
![Page 15: Introdução ao neo4j](https://reader036.vdocuments.com.br/reader036/viewer/2022062522/58a160b31a28abc1708b4f1f/html5/thumbnails/15.jpg)
Linguagens de programação
Retornar todos usuários
Cypher:
MATCH (user:User)
RETURN user
C#:
graphClient.Cypher
.Match("(user:User)")
.Return(user => user.As<User>())
.Results
![Page 16: Introdução ao neo4j](https://reader036.vdocuments.com.br/reader036/viewer/2022062522/58a160b31a28abc1708b4f1f/html5/thumbnails/16.jpg)
Linguagens de programação
Retornar usuário específico
Cypher:
MATCH (user:User)
WHERE user.Id = 1234
RETURN user
C#:
graphClient.Cypher
.Match("(user:User)")
.Where((User user) => user.Id == 1234)
.Return(user => user.As<User>())
.Results
![Page 17: Introdução ao neo4j](https://reader036.vdocuments.com.br/reader036/viewer/2022062522/58a160b31a28abc1708b4f1f/html5/thumbnails/17.jpg)
Aplicações e Usos
• Fraud Detection
• Real-time recommendations
• Social network
• Identity and access management
• Network ant IT operations
![Page 18: Introdução ao neo4j](https://reader036.vdocuments.com.br/reader036/viewer/2022062522/58a160b31a28abc1708b4f1f/html5/thumbnails/18.jpg)
Hora do Demo
![Page 19: Introdução ao neo4j](https://reader036.vdocuments.com.br/reader036/viewer/2022062522/58a160b31a28abc1708b4f1f/html5/thumbnails/19.jpg)
Hora do Demo
• Match
• Limit
• Insert
• Shortestpath
• Execution Plan
• WebAdmin
• Features “Escondidas”
![Page 20: Introdução ao neo4j](https://reader036.vdocuments.com.br/reader036/viewer/2022062522/58a160b31a28abc1708b4f1f/html5/thumbnails/20.jpg)
Features “Escondidas”
• :play query template
• :play sysinfo
• :config
• EXPLAIN + query
• PROFILE + query
• WebAdmin
![Page 21: Introdução ao neo4j](https://reader036.vdocuments.com.br/reader036/viewer/2022062522/58a160b31a28abc1708b4f1f/html5/thumbnails/21.jpg)
Dúvidas?
(graphs)[:ARE]›(everywhere)
![Page 22: Introdução ao neo4j](https://reader036.vdocuments.com.br/reader036/viewer/2022062522/58a160b31a28abc1708b4f1f/html5/thumbnails/22.jpg)
FIM!
http://codifiquesempre.com.brhttp://codigosimples.net