Criando sistemas de recomendação com neo4j

22
Introdução ao Neo4j – 3.x (GRAPHS)[:ARE]›(EVERYWHERE)

Transcript of Criando sistemas de recomendação com neo4j

Page 1: Criando sistemas de recomendação com  neo4j

Introdução ao Neo4j – 3.x

(GRAPHS)[:ARE]›(EVERYWHERE)

Page 2: Criando sistemas de recomendação com  neo4j

Jhonathan S. Soares

• MVP Microsoft – Visual Studio• Neo4j Top 50 Certified Developer

• Criador do blog CodigoSimples.net

Page 3: Criando sistemas de recomendação com  neo4j

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: Criando sistemas de recomendação com  neo4j

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: Criando sistemas de recomendação com  neo4j

Introdução ao Neo4j

• Graph Databases• Representar os dados e / ou o esquema dos dados como grafos

dirigidos.

Page 6: Criando sistemas de recomendação com  neo4j

Introdução ao Neo4j

• Dijkstra• Lei do menor caminho ou caminho com menor peso.

Page 7: Criando sistemas de recomendação com  neo4j

Introdução ao Neo4j

• Graph Databases

• Porém, por meio dos relacionamentosinerentes aos grafos, estas consultas tornam-se mais simples e diretas.

Page 8: Criando sistemas de recomendação com  neo4j

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: Criando sistemas de recomendação com  neo4j

Instalação e Configuração

• Plataformas suportadas • Windows• Linux/Unix• Mac OSX

• Versões• Community Edition• Enterprise Edition

Page 10: Criando sistemas de recomendação com  neo4j

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: Criando sistemas de recomendação com  neo4j

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: Criando sistemas de recomendação com  neo4j

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: Criando sistemas de recomendação com  neo4j

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: Criando sistemas de recomendação com  neo4j

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: Criando sistemas de recomendação com  neo4j

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: Criando sistemas de recomendação com  neo4j

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: Criando sistemas de recomendação com  neo4j

Aplicações e Usos

• Fraud Detection

• Real-time recommendations

• Social network

• Identity and access management

• Network ant IT operations

Page 18: Criando sistemas de recomendação com  neo4j

Hora do Demo

Page 19: Criando sistemas de recomendação com  neo4j

Hora do Demo

• Match

• Limit

• Insert

• Shortestpath

• Execution Plan

• WebAdmin

• Features “Escondidas”

Page 20: Criando sistemas de recomendação com  neo4j

Features “Escondidas”

• :play query template

• :play sysinfo

• :config

• EXPLAIN + query

• PROFILE + query

Page 21: Criando sistemas de recomendação com  neo4j

Dúvidas?

(graphs)[:ARE]›(everywhere)

Page 22: Criando sistemas de recomendação com  neo4j

FIM!

http://codigosimples.net