Graph databases, a little connected tour
-
Upload
fcofdezc -
Category
Technology
-
view
384 -
download
1
description
Transcript of Graph databases, a little connected tour
![Page 1: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/1.jpg)
Graph DatabasesA little connected tour
!
@fcofdezc
![Page 2: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/2.jpg)
El origen
![Page 3: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/3.jpg)
![Page 4: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/4.jpg)
Dado el mapa de Königsberg, con el río Pregolya dividiendo el plano en cuatro regiones distintas, que están unidas a
través de los siete puentes,
¿es posible dar un paseo comenzando desde cualquiera de estas regiones, pasando por todos los puentes, recorriendo
sólo una vez cada uno, y regresando al mismo punto de partida?
![Page 5: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/5.jpg)
El origenG = (V, E)
![Page 6: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/6.jpg)
¿Qué es?
![Page 7: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/7.jpg)
![Page 8: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/8.jpg)
Grafo
Nodos Relaciones
Propiedades
Guar
daGuarda
Organiza
Tiene
Tiene
![Page 9: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/9.jpg)
Escrita en java
ACID
Interfaz REST
Cypher
![Page 10: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/10.jpg)
¿Por qué NOSQL?
![Page 11: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/11.jpg)
Ventajas BD Relacionales
![Page 12: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/12.jpg)
Ventajas de BD Relacionales
ConcurrenciaPersistenciaIntegraciónEstándar
Persistencia
![Page 13: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/13.jpg)
Ventajas de BD Relacionales
ConcurrenciaPersistenciaIntegraciónEstándar
Concurrencia
![Page 14: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/14.jpg)
Ventajas de BD Relacionales
ConcurrenciaPersistenciaIntegraciónEstándar
Integración
![Page 15: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/15.jpg)
Ventajas de BD Relacionales
ConcurrenciaPersistenciaIntegraciónEstándar
Estándar
![Page 16: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/16.jpg)
DESVentajas BD Relacionales
![Page 17: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/17.jpg)
El OrigenFricción
![Page 18: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/18.jpg)
class Client < ActiveRecord::Base has_one :address has_many :orders has_and_belongs_to_many :rolesend
![Page 19: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/19.jpg)
DesVentajas de BD Relacionales
Fricción!InteroperabilidadAdaptación al cambioEscalabilidadNo está destinada para ciertos escenarios
Interoperabilidad
![Page 20: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/20.jpg)
Adaptación al cambio
![Page 21: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/21.jpg)
!Escalabilidad
![Page 22: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/22.jpg)
Profundidad Tiempo MySQL(s) Tiempo Neo4j (s) Nº Resultados
2 0.016 0.01 ~2500
3 30.267 0.168 ~110,000
4 1543.505 1.359 ~600,000
5 No Acaba 2.132 ~800,000
MySQL vs Neo4j
* Neo4J in Action
![Page 23: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/23.jpg)
El enfoque tradicional en el contexto de datos conectados es artificial
![Page 24: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/24.jpg)
Podemos trasladar el modelo del dominio que estamos tratando de forma natural
![Page 25: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/25.jpg)
![Page 26: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/26.jpg)
Casos de uso
![Page 27: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/27.jpg)
Redes Sociales
Sigue
Sigue
Juan Jose
María
![Page 28: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/28.jpg)
Problemas Geoespaciales
Detección de fraude
Gestión de permisos
Gestión de redes
![Page 29: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/29.jpg)
CypherLenguaje declarativo
ASCII oriented
Pattern matching
![Page 30: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/30.jpg)
CypherCypher
Traverser API
Core API
Kernel
![Page 31: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/31.jpg)
Cypher
a b
(a)-->(b)
![Page 32: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/32.jpg)
Cypher
clapton cream
(clapton)-[:toca_en]->(cream)
toca_en
![Page 33: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/33.jpg)
Sigue
SigueJuan Jose
María
Cypher
(juan:Persona)-[:sigue]->(jose:Persona)!
(maria:Persona)-[:sigue]->(juan:Persona)
![Page 34: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/34.jpg)
Cypher
clapton {nombre: Eric Clapton}
cream
(clapton)-[:toca_en]->(cream)<-[:etiquetado]-(blues)
toca_en {fecha: 1968}
Blues
etiquetado
![Page 35: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/35.jpg)
Cypher
MATCH (a)-—>(b)RETURN a,b;
![Page 36: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/36.jpg)
Cypher
MATCH (a)-[:TOCA_EN]—>(b)RETURN a,b;
![Page 37: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/37.jpg)
Cypher
MATCH (a)-[t:TOCA_EN]—>(g), (g)<-[:ETIQUETADO]-(e)RETURN a.nombre, t.fecha, e.nombre;
![Page 38: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/38.jpg)
Cypher
START c=node:node_auto_index(nombre=‘clapton’)MATCH (c)-[t:TOCA_EN]—>(g), (g)<-[:ETIQUETADO]-(e)RETURN c.nombre, t.fecha, e.nombre;
![Page 39: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/39.jpg)
Cypher
START c=node:node_auto_index(nombre=‘clapton’) e=node:node_auto_index(nombre=‘blues’)MATCH (c)-[t:TOCA_EN]—>(g), (g)<-[:ETIQUETADO]-(e)RETURN c.nombre, e.nombreORDER BY t.fecha
![Page 40: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/40.jpg)
Cypher
START c=node:node_auto_index(nombre=‘clapton’) e=node:node_auto_index(nombre=‘blues’)MATCH (c)-[t:TOCA_EN | PRODUCE]—>(g), (g)<-[:ETIQUETADO]-(e)WHERE t.fecha > 1968RETURN c.nombre, e.nombre
![Page 41: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/41.jpg)
Cypher
MATCH (juan)-[:CONOCE*5]—>(pepe)
![Page 42: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/42.jpg)
START startNode=node:node_auto_index(name = ‘Sol'),
endNode=node:node_auto_index(name = ‘Cuzco')
MATCH p = (startNode)-[rels:CONNECTED_TO]->(endNode)
RETURN p AS shortestPath,
reduce(weight=0, r in rels: weight + r.weight) as tWeight
ORDER BY tWeight ASC
LIMIT 1
![Page 43: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/43.jpg)
Sistema de recomendación
![Page 44: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/44.jpg)
Red social de cine
![Page 45: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/45.jpg)
Red social de cine
Usuarios puntúan películas
Personas actúan en películas
Personas dirigen películas
Usuarios siguen a otros usuarios
![Page 46: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/46.jpg)
Red social de cine
¿Cómo lo modelamos?
![Page 47: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/47.jpg)
Red social de cine
Sigue
Puntúa {nota}
User
Film
User
Actor
Director
Actua en
Dirige
![Page 48: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/48.jpg)
Red social de cine
START fran=node:Persona(name='Fran'), film=node:Peliculas(title=‘Pulp Fiction') MATCH fran-[or:PUNTUA]->film<-[:PUNTUA]-otro_user-[r:PUNTUA]->otras_pelis RETURN distinct otras_pelis.title;
![Page 49: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/49.jpg)
Red social de cine
Puntúa {nota}
Puntúa {nota}
User 1
Film PF
Fran User 2
Puntúa {nota}
Film
Film
Puntúa {nota}
Puntúa {nota}
![Page 50: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/50.jpg)
Red social de cine
START fran=node:Persona(name='Fran'), film=node:Peliculas(title=‘Pulp Fiction') MATCH fran-[or:PUNTUA]->film<-[:PUNTUA]-otro_user-[r:PUNTUA]->otras_pelis WHERE or.stars = r.stars RETURN distinct otras_pelis.title;
![Page 51: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/51.jpg)
Red social de cine
START fran=node:Persona(name='Fran'), film=node:Peliculas(title=‘Pulp Fiction') MATCH fran-[or:PUNTUA]->film<-[:PUNTUA]-otro_user-[r:PUNTUA]->otras_pelis, otro_user-[:SIGUE]-fran WHERE or.stars = r.stars RETURN distinct otras_pelis.title;
![Page 52: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/52.jpg)
Red social de cine
Puntúa {nota}
User 1
Film PF
FranPuntúa {nota}
Film
Sigue
Puntúa {nota}
![Page 53: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/53.jpg)
Red social de cine
START tarantino=node:Persona(name='Quentin Tarantino') MATCH tarantino-[:DIRIGE]->peli<-[:ACTUA_EN]-tarantino RETURN movie.title; !
![Page 54: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/54.jpg)
Red social de cine
Film Actor
Director
Actua en
Dirige
![Page 55: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/55.jpg)
Red social de cine
Ahora se deben poder categorizar las películas
![Page 56: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/56.jpg)
Red social de cine
Film
SubGenero
Pertenece_a
SubGenero
Pertenece_a
GeneroGenero
Pertenece_aPertenece_a
![Page 57: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/57.jpg)
Red social de cine
START fran=node:Persona(name='Fran'), film=node:Peliculas(title=‘Pulp Fiction') MATCH fran-[or:PUNTUA]->film<-[:PUNTUA]-otro_user-[r:PUNTUA]->otras_pelis, film-[:PERTENECE:*3]->genero<-[:PERTENECE]-otras_pelis WHERE or.stars = r.stars RETURN distinct otras_pelis.title;
![Page 58: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/58.jpg)
Instead of just picking a relational database because everyone does, we need to
understand the nature of the data we’re storing and how we want to manipulate it.
Martin Fowler
![Page 59: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/59.jpg)
Referencias
![Page 60: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/60.jpg)
Neo4J as a service
http://www.graphenedb.com
![Page 61: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/61.jpg)
Neo4J Spain
http://www.meetup.com/graphdb-spain/
20 Febrero
![Page 62: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/62.jpg)
![Page 63: Graph databases, a little connected tour](https://reader035.fdocuments.in/reader035/viewer/2022070303/54b701fa4a7959943a8b45f2/html5/thumbnails/63.jpg)
Gracias