Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)
Transcript of Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)
![Page 1: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/1.jpg)
![Page 2: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/2.jpg)
Primeros pasos
con Neo4j
Ubaldo Taladriz.
(Basada en la presentación de Andreas Kollegger)
![Page 3: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/3.jpg)
3
Agenda
๏Bases de datos de grafos101
๏Características de Neo4j
๏Casos de usos de Neo4j
๏Acción en vivo
3
![Page 4: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/4.jpg)
4
Bases de datos de grafos101
(¿Qué es un grafo?)
4
![Page 5: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/5.jpg)
5
¿Bases de datos de grafos?
5
๏ no: No tienen por objetivo almacenar imágenes o gráficos vectoriales
๏ si: almacenan data estructurada en forma de grafos
•¿Recuerdan las listas enlazadas, los árboles?
•Los grafos son estructuras de propósito general para almacenar y modelar datos
๏ “Una base de datos tradicional, puede responderte rápidamente el promedio de ingresos de todos los que asisten a esta charla,
๏ Pero una base de datos de grafos, puede decirte quien de ellos es más probable que te invite una cerveza.”
![Page 6: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/6.jpg)
6
G=(V,E)
6
๏ Un (Grafo) –almacena datos en- (Nodos)
๏ Un (Grafo) –almacena datos en- (Relaciones)
๏ (Nodos) se –organizan- (Relaciones)
๏ (Nodos y Relaciones) -tienen- (Propiedades)
๏ Neo4j almacena datos en una Grafo de Propiedades
๏ Nodos == Vértices. Relaciones == Arcos o enlaces
![Page 7: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/7.jpg)
7
Consultas de grafo como recorridos (Traversal Queries)๏ Un (Recorrido) -navega- un (Grafo)
๏ Un (Recorrido) -identifica- (Rutas)
๏ (Rutas) -ordenan- (Nodos)
๏ Un Recorrido (Traversal) es un query para datos conectados
7
![Page 8: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/8.jpg)
8
Los Índices encuentran Nodos y Relaciones๏ Un (Índice) -indexa-
๏ (Nodos o Relaciones)
๏ Un (Índice) es un Recorrido –especial-
๏ Un Índice es una búsqueda rápida para Nodos y Relaciones
8
![Page 9: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/9.jpg)
9
Neo4j es una Base de datos de Grafos
๏ Una base de datos de Grafos:
•Es un grafo de propiedades con Nodos y Relaciones
•y ambos pueden tener Propiedades
•Perfectos para datos complejos y conectados
๏ Una Base de datos de grafos:
•Alto desempeño y alta disponibilidad (Escalamiento de lectura)
•Soporte sólido y real para transacciones ACID
•Escalable: 32 miles de millones de Nodos, 32 miles de millones de Relaciones, 64 miles de millones de Propiedades
•Servidor con una API REST o empotrable como una biblioteca Java 9
![Page 10: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/10.jpg)
10
Casos de usos para los grafos
10
![Page 11: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/11.jpg)
11
P: ¿Para qué son buenos los grafos?
11
๏ Recomendaciones
๏ Inteligencia de negocios
๏ Computación Social
๏ Geoespacial
๏MDM
๏ Administración de sistemas
๏ Genealogía
๏ Cálculos sobre Series de tiempo
๏ Indexación de datos
๏ Logística
๏ Y más!
R: datos complejos y conectados
![Page 12: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/12.jpg)
12
Master Data Management๏Recorridos ad-hoc
๏Responsabilidad
๏Detección de conflictos
๏Cálculo de compensaciones
๏Cálculo de comisiones
12
![Page 13: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/13.jpg)
13
Administración de redes๏Análisis de tipo qué pasa si
๏Análisis de causa raíz
๏Costos operacionales
๏Administración de tolerancia a fallas
13
![Page 14: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/14.jpg)
14
Geoespacial๏ Objetos conectados espacialmente
๏ Operaciones GIS
๏ TransportDublin
•Powered by Neo4j
•Datos de OpenStreetMap
•http://www.transportdublin.ie/
14
![Page 15: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/15.jpg)
15
y... Acción!
15
![Page 16: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/16.jpg)
16
Neo4j Community Edition
16
๏ Instalación de Neo4j Community...
•Ir a http://neo4j.org
•Selecciona el espectacular botón “Download Neo4j Now”
•Descompacta el archivo
๏ O...
•Puedes probarlo en vivo en http://start.neo4j.org:7474
![Page 17: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/17.jpg)
17
NEO4J_HOME – el directorio๏ bin – contiene todo para iniciar el servidor y herramientas
complementarias
๏ conf – Configuración del servidor
๏ data – Directorio donde se almacenan los datos
๏ doc – Material de apoyo, incluyendo el manual de Neo4j
๏ examples – Ejemplos en código Java
๏ lib – todos los archivos jar necesarios para empotrar Neo4j
๏ plugins – todo lo necesario para agregar nuevas funciones a la base de datos (son como procedimientos almacenados)
๏ system – cosas que dan miedo 17
![Page 18: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/18.jpg)
18
Tiempo de iniciar el servidor๏ UNIX/LINUX/OSX: ./bin/neo4j console
๏Windows: doble click en el archivo Neo4j.bat
๏ Para ver los logs: data/log/neo4j.0.0.log
๏ Entre los mensajes de inicio , debería aparecer algo como:
•INFO: Server started on [http://xxx.xxx.xxx.xxx:7474/]
18
![Page 19: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/19.jpg)
19
Webadmin – una cara amistosa
19
๏ Dashboard – provee un vistazo general a las estadísticas de la base de datos
๏ Data browser – manipulación directa de los grafos
๏ Console – consulta y scripting para los grafos
๏ Server Info – todos los detalles de información administrativa del servidor
๏ Index Manager – Creación y eliminación de los índices creados por omisión (default)
![Page 20: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/20.jpg)
20
Data browser๏ click en el botón “+ Node” y agregar algunos nodos
•El número que se incrementa es el “Node ID” o Id del nodo
•La URL REST URL para cada no es desplegada un poco más abajo
๏ click en el botón “+ Relationship”
•Las relaciones tienen una dirección desde “From”, hasta “To”
•Cambiar el tipo de relación “Type” a “KNOWS”
•Utilizar el nodo 0 como “To” ingresando el valor “0”
•Agregar para todos los nodos ingresados la relación20
![Page 21: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/21.jpg)
21
Data Browser, continuación...๏ Agregando propiedades
•Buscar cada nodo ingresando su ID en el campo buscar
•click en el botón “+ Add Property”
•Agregar la propiedad“name” properties, con un valor de tipo Stirng
•Repetir estos pasos para cada uno de los nodos
๏ Con esto hemos creado un grafo simple de redes sociales.
๏ ¿Cómo se ve?21
![Page 22: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/22.jpg)
22
Data browser, visualización๏ Click en el botón de mini-grafos, para obtener una
visualización
๏ La barra de búsqueda puede ser utilizda para establecer el foco inicial del subgrafo.
๏ Al hacer Click sobre los nodos grises, se expanden los subgrafos
22
![Page 23: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/23.jpg)
23
Yo & Mis amigos- por ejemplo
23
![Page 24: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/24.jpg)
24
Los amigos de mis amigos
24
![Page 25: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/25.jpg)
25
Webadmin Console
๏Gremlin – lenguaje script de grafos
๏Cypher – Consultas “a la” SQL
๏http – acceso directo REST
25
![Page 26: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/26.jpg)
26
Gremlin๏ Es un DSL (Domain Specific Language) para grafos
๏ Ejemplos:
•g – el grafo propiamente tal
•g.v(0) – nodo 0
•g.v(0).in – nodos conectados al nodo 0
•g.v(0).in.name – el nombre de esos nodos (name es una propiedad)
•g.v(1).out(“KNOWS”) – todos los nodos con una relación “KNOWS” saliente del nodo 1.
๏ Detalles sobre Gremlin: https://github.com/tinkerpop/gremlin
26
![Page 27: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/27.jpg)
27
Gremlin – Consultando por los amigos de mis amigos// Gremlin – Contando los amigos de los amigos de Andreasm=[:]andreas = g.v(0)andreas.out('KNOWS').out('KNOWS').name.groupCount(m)recommend = m.sort{a,b -> b.value <=> a.value }
27
![Page 28: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/28.jpg)
28
Cypher๏ Un lenguaje declarativo, “a la SQL”
๏ Ejemplos:
•start a=(0) return a
‣ obtiene el nodo 0
•start a=(1) match (a)-->(b) return b
‣Recorrido desde el nodo 1 a todos los nodos salientes
•start a=(1) match (a)--(b) where b.name=”Emil”
•return b
‣Búsqueda de un amigo que se llame “Emil”
๏ detalles sobre Cypher en:
•http://docs.neo4j.org/chunked/stable/cypher-query-lang.html
28
![Page 29: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/29.jpg)
29
Cypher – Consulta de los amigos de mis amigos// Cypher – calce desde andreas a los amigos de sus amigosstart andreas=(1) match (andreas)-[:KNOWS]->(friends)
-[:KNOWS]->(foafs) return foafs
29
![Page 30: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/30.jpg)
30
HTTP console๏ Un lugar para experimentar con la API REST
๏ Ejemplos:
•get / - La URL raíz del servidor
•get /db/data – La raíz del acceso a datos
•get /db/data/node/0 – Nodo 0
•get /db/data/node/0/relationships/in – relacioenes entrantes
๏ details of the REST API:
•http://docs.neo4j.org/chunked/stable/rest-api.html
30
![Page 31: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/31.jpg)
31
neo4j-shell – acceso por línea de comando๏ ./bin/neo4j-shell
•Se cnecta a la instancia de neo4j server, que se este ejecutando
•Funciona de manera similara la un “directory browser”
๏ Ejemplos:
•ls – Muestra detalles del nodo inicial, 0
•cd 2 – cambiar al directorio del nodo“directory”
•start ... – para ejecutar un query Cypher
๏ details: http://docs.neo4j.org/chunked/stable/shell.html
31
![Page 32: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/32.jpg)
3232
Un tour por el código
![Page 33: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/33.jpg)
33
¿Java? Se puede utilizar Spring Data Neo4j
33
๏ Desarrollo basado en anotaciones POJO
๏ optional “Persistencia políglota”
๏ Proyecto: http://www.springsource.org/spring-data/neo4j
๏ Código: https://github.com/SpringSource/spring-data-neo4j
![Page 34: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/34.jpg)
34
¿Neo4j empotrado (Embedded) ? La API nativa es la respuesta
34
๏Ejemplos en: ./examples/java/embedded
![Page 35: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/35.jpg)
35
¿Ruby on Rails? neo4j.rb es la respuesta๏ Soporta ActiveModel
๏ https://github.com/andreasronge/neo4j
35
![Page 36: Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)](https://reader035.fdocuments.net/reader035/viewer/2022062410/5665b4291a28abb57c8fa6fd/html5/thumbnails/36.jpg)
36
¿Preguntas?
๏¿Dónde aprender más? http://neo4j.org
๏Unirse a la lista de correos
๏Unete a un encuentro (meetup) o inicia uno.
36