SlideShare una empresa de Scribd logo
1 de 35
Descargar para leer sin conexión
Primeros pasos con
                      Neo4j	

Ubaldo Taladriz.	

(Basada en la presentación de Andreas Kollegger)
Agenda	


๏ Bases de datos de grafos101	

๏ Características de Neo4j	

๏ Casos de usos de Neo4j	

๏ Acción en vivo	



                                   2
Bases de datos de grafos101
(¿Qué es un grafo?)	



                                 3
¿Bases de datos de grafos?	

๏ 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. 	

                                                                    4
G=(V,E)	

๏ 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	


                                                        5
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	



                                                              6
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	





                                                                7
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	

                                                             8
Casos de usos para los grafos	





                                   9
P: ¿Para qué son buenos los grafos?	

R: datos complejos y conectados	

๏ Recomendaciones	

              ๏ Cálculos sobre Series de
                                    tiempo	

๏ Inteligencia de negocios	

๏ Computación Social	

           ๏ Indexación de datos	

๏ Geoespacial	

                  ๏ Logística	

๏ MDM	

                          ๏ Y más!	

๏ Administración de sistemas	

๏ Genealogía	


                                                               10
Master Data Management	

๏ Recorridos ad-hoc	

๏ Responsabilidad	

๏ Detección de conflictos	

๏ Cálculo de compensaciones	

๏ Cálculo de comisiones	





                                 11
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	





                                             12
Geoespacial	

๏ Objetos conectados espacialmente	

๏ Operaciones GIS	

๏ TransportDublin	

   • Powered by Neo4j	

   • Datos de OpenStreetMap	

   • http://www.transportdublin.ie/	



                                         13
y... Acción!	



                  14
Neo4j Community Edition	

๏ 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	


                                                                  15
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 J	

                               16
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/]	




                                                                  17
Webadmin – una cara amistosa	

๏ 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)	



                                                               18
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ón	

                                                              19
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?	


                                                                20
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	





                                                                 21
Yo  Mis amigos- por ejemplo	





                                  22
Los amigos de mis amigos	





                              23
Webadmin Console	


   ๏ Gremlin – lenguaje script de grafos	

   ๏ Cypher – Consultas “a la” SQL	

   ๏ http – acceso directo REST	




                                              24
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	

                                                               25
Gremlin – Consultando por los amigos de mis
amigos	

// Gremlin – Contando los amigos de los amigos de Andreas
m=[:]
andreas = g.v(0)
andreas.out('KNOWS').out('KNOWS').name.groupCount(m)
recommend = m.sort{a,b - b.value = a.value }




                                                            26
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	

                                                                   27
Cypher – Consulta de los amigos de mis
amigos	

// Cypher – calce desde andreas a los amigos de sus amigos
start andreas=(1) match (andreas)-[:KNOWS]-(friends)
          -[:KNOWS]-(foafs) return foafs




                                                         28
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	

                                                                  29
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	


                                                                  30
Un tour por el código	



                     31
¿Java? Se puede utilizar Spring Data Neo4j 	

	

๏ 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	





                                                                 32
¿Neo4j empotrado (Embedded) ? La API nativa
es la respuesta	

 ๏ Ejemplos en: ./examples/java/embedded	





                                         33
¿Ruby on Rails? neo4j.rb es la respuesta	

๏ Soporta ActiveModel	

๏ https://github.com/andreasronge/neo4j	





                                              34
¿Preguntas?	


๏ ¿Dónde aprender más? http://neo4j.org	

๏ Unirse a la lista de correos	

๏ Unete a un encuentro (meetup) o inicia
 uno.	




                                     35

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Sql o NoSql en Informática Médica
Sql o NoSql en Informática MédicaSql o NoSql en Informática Médica
Sql o NoSql en Informática Médica
 
1 tutorial de mongo db
1 tutorial de mongo db1 tutorial de mongo db
1 tutorial de mongo db
 
Presentacion BD NoSQL
Presentacion  BD NoSQLPresentacion  BD NoSQL
Presentacion BD NoSQL
 
MongoDB
MongoDBMongoDB
MongoDB
 
Introducción a NoSQL con MongoDB
Introducción a NoSQL con MongoDBIntroducción a NoSQL con MongoDB
Introducción a NoSQL con MongoDB
 
Introducción mongodb y desarrollo
Introducción mongodb y desarrolloIntroducción mongodb y desarrollo
Introducción mongodb y desarrollo
 
NoSQL: Introducción a las Bases de Datos no estructuradas
NoSQL: Introducción a las Bases de Datos no estructuradasNoSQL: Introducción a las Bases de Datos no estructuradas
NoSQL: Introducción a las Bases de Datos no estructuradas
 
Introducción a NoSQL
Introducción a NoSQLIntroducción a NoSQL
Introducción a NoSQL
 
MongoDB: la BBDD NoSQL más popular del mercado
MongoDB: la BBDD NoSQL más popular del mercadoMongoDB: la BBDD NoSQL más popular del mercado
MongoDB: la BBDD NoSQL más popular del mercado
 
Bases de Datos NoSQL
Bases de Datos NoSQLBases de Datos NoSQL
Bases de Datos NoSQL
 
Bases de datos NoSQL orientadas a documentos
Bases de datos NoSQL orientadas a documentosBases de datos NoSQL orientadas a documentos
Bases de datos NoSQL orientadas a documentos
 
mongoDB - Arquitectura y Componentes
mongoDB - Arquitectura y ComponentesmongoDB - Arquitectura y Componentes
mongoDB - Arquitectura y Componentes
 
S3 - ADO.NET
S3 - ADO.NETS3 - ADO.NET
S3 - ADO.NET
 
MongoDB
MongoDBMongoDB
MongoDB
 
Greach 2011 - Engrandeciendo Grails con Mongo DB
Greach 2011 - Engrandeciendo Grails con Mongo DBGreach 2011 - Engrandeciendo Grails con Mongo DB
Greach 2011 - Engrandeciendo Grails con Mongo DB
 
No-SQL, Azure Table Storage y MongoDB
No-SQL, Azure Table Storage y MongoDBNo-SQL, Azure Table Storage y MongoDB
No-SQL, Azure Table Storage y MongoDB
 
Introduccion a Cassandra
Introduccion a CassandraIntroduccion a Cassandra
Introduccion a Cassandra
 
Curso completo de Elasticsearch
Curso completo de ElasticsearchCurso completo de Elasticsearch
Curso completo de Elasticsearch
 
S3-PD1-2.1 Ado net
S3-PD1-2.1 Ado netS3-PD1-2.1 Ado net
S3-PD1-2.1 Ado net
 
MongoDB (Conceptos Básicos) - Junio 2010
MongoDB (Conceptos Básicos) - Junio 2010MongoDB (Conceptos Básicos) - Junio 2010
MongoDB (Conceptos Básicos) - Junio 2010
 

Destacado

Clausura transitiva de un grafo dirigido
Clausura transitiva de un grafo dirigidoClausura transitiva de un grafo dirigido
Clausura transitiva de un grafo dirigido
guest4b1d8bc
 
Primeros pasos con la base de datos de grafos Neo4j
Primeros pasos con la base de datos de grafos Neo4jPrimeros pasos con la base de datos de grafos Neo4j
Primeros pasos con la base de datos de grafos Neo4j
Alberto Perdomo
 
Taller Redis
Taller RedisTaller Redis
Taller Redis
betabeers
 
Turning big data into big value césar hernandez
Turning big data into big value   césar hernandezTurning big data into big value   césar hernandez
Turning big data into big value césar hernandez
AMDIA-Integra
 

Destacado (20)

Clausura transitiva de un grafo dirigido
Clausura transitiva de un grafo dirigidoClausura transitiva de un grafo dirigido
Clausura transitiva de un grafo dirigido
 
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4jBases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
Bases de Datos No Relacionales (NoSQL): Cassandra, CouchDB, MongoDB y Neo4j
 
Desarrollando aplicaciones reactivas con Akka y Scala
Desarrollando aplicaciones reactivas con Akka y ScalaDesarrollando aplicaciones reactivas con Akka y Scala
Desarrollando aplicaciones reactivas con Akka y Scala
 
Akka Stream 1.0
Akka Stream 1.0 Akka Stream 1.0
Akka Stream 1.0
 
Primeros pasos con la base de datos de grafos Neo4j
Primeros pasos con la base de datos de grafos Neo4jPrimeros pasos con la base de datos de grafos Neo4j
Primeros pasos con la base de datos de grafos Neo4j
 
Alasql JavaScript SQL Database Library: User Manual
Alasql JavaScript SQL Database Library: User ManualAlasql JavaScript SQL Database Library: User Manual
Alasql JavaScript SQL Database Library: User Manual
 
Manual de como instalar mongo db en windows
Manual de  como instalar mongo db en windowsManual de  como instalar mongo db en windows
Manual de como instalar mongo db en windows
 
Taller Redis
Taller RedisTaller Redis
Taller Redis
 
Casos de puesta en valor de de la tecnología de Big Data con NoSQL orientada ...
Casos de puesta en valor de de la tecnología de Big Data con NoSQL orientada ...Casos de puesta en valor de de la tecnología de Big Data con NoSQL orientada ...
Casos de puesta en valor de de la tecnología de Big Data con NoSQL orientada ...
 
Bases de Datos NoSQL - Riak
Bases de Datos NoSQL - Riak Bases de Datos NoSQL - Riak
Bases de Datos NoSQL - Riak
 
Redis: servidor de estructuras de datos
Redis: servidor de estructuras de datosRedis: servidor de estructuras de datos
Redis: servidor de estructuras de datos
 
Stratebi Big Data
Stratebi Big DataStratebi Big Data
Stratebi Big Data
 
Turning big data into big value césar hernandez
Turning big data into big value   césar hernandezTurning big data into big value   césar hernandez
Turning big data into big value césar hernandez
 
Comparativa herramientas Business Intelligence
Comparativa herramientas Business IntelligenceComparativa herramientas Business Intelligence
Comparativa herramientas Business Intelligence
 
Big Data, Big Customer Value, Big Results
Big Data, Big Customer Value, Big ResultsBig Data, Big Customer Value, Big Results
Big Data, Big Customer Value, Big Results
 
Big Data Open Source Analytics (español)
Big Data Open Source Analytics (español)Big Data Open Source Analytics (español)
Big Data Open Source Analytics (español)
 
Introducción a Big Data. HDInsight - Webcast Technet SolidQ
Introducción a Big Data. HDInsight - Webcast Technet SolidQIntroducción a Big Data. HDInsight - Webcast Technet SolidQ
Introducción a Big Data. HDInsight - Webcast Technet SolidQ
 
Cursos de Big Data y Machine Learning
Cursos de Big Data y Machine LearningCursos de Big Data y Machine Learning
Cursos de Big Data y Machine Learning
 
53 Claves para conocer Machine Learning
53 Claves para conocer Machine Learning53 Claves para conocer Machine Learning
53 Claves para conocer Machine Learning
 
69 claves para conocer Big Data
69 claves para conocer Big Data69 claves para conocer Big Data
69 claves para conocer Big Data
 

Similar a Primeros pasos con neo4j

Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con Redis
Alberto Gimeno
 
Jornadas gvSIG 2009
Jornadas gvSIG 2009Jornadas gvSIG 2009
Jornadas gvSIG 2009
sabueso81
 

Similar a Primeros pasos con neo4j (20)

Aplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con RedisAplicaciones web altamente escalables con Redis
Aplicaciones web altamente escalables con Redis
 
Redis, base de datos NoSQL clave-valor
Redis, base de datos NoSQL clave-valorRedis, base de datos NoSQL clave-valor
Redis, base de datos NoSQL clave-valor
 
data_collection-es.pptx
data_collection-es.pptxdata_collection-es.pptx
data_collection-es.pptx
 
Mongo Mapper
Mongo MapperMongo Mapper
Mongo Mapper
 
Cómo construir una plataforma poderosa de datos en un ambiente con recursos r...
Cómo construir una plataforma poderosa de datos en un ambiente con recursos r...Cómo construir una plataforma poderosa de datos en un ambiente con recursos r...
Cómo construir una plataforma poderosa de datos en un ambiente con recursos r...
 
Pon tus aplicaciones a 100 con redis
Pon tus aplicaciones a 100 con redisPon tus aplicaciones a 100 con redis
Pon tus aplicaciones a 100 con redis
 
Jornadas gvSIG 2009
Jornadas gvSIG 2009Jornadas gvSIG 2009
Jornadas gvSIG 2009
 
Capacitacion neo4j
Capacitacion neo4jCapacitacion neo4j
Capacitacion neo4j
 
NoSQL, Mongo DB & Google Maps
NoSQL, Mongo DB & Google MapsNoSQL, Mongo DB & Google Maps
NoSQL, Mongo DB & Google Maps
 
Geo network 4 elasticsearch (1)
Geo network 4   elasticsearch (1)Geo network 4   elasticsearch (1)
Geo network 4 elasticsearch (1)
 
EasyData: OpenData and easy access
EasyData: OpenData and easy accessEasyData: OpenData and easy access
EasyData: OpenData and easy access
 
Servidor y cliente iOS en 45min
Servidor y cliente iOS en 45minServidor y cliente iOS en 45min
Servidor y cliente iOS en 45min
 
Mallorca MUG: Introducción a MongoDB
Mallorca MUG: Introducción a MongoDBMallorca MUG: Introducción a MongoDB
Mallorca MUG: Introducción a MongoDB
 
Cloud Computing: las nuevas Capas de Persistencia
Cloud Computing: las nuevas Capas de PersistenciaCloud Computing: las nuevas Capas de Persistencia
Cloud Computing: las nuevas Capas de Persistencia
 
Desarrollo con stack MEAN
Desarrollo con stack MEANDesarrollo con stack MEAN
Desarrollo con stack MEAN
 
Azure Realtime analytics: Análisis de datos en tiempo real
Azure Realtime analytics: Análisis de datos en tiempo realAzure Realtime analytics: Análisis de datos en tiempo real
Azure Realtime analytics: Análisis de datos en tiempo real
 
Arquitectura Multitenant en Oracle 12c
Arquitectura Multitenant en Oracle 12cArquitectura Multitenant en Oracle 12c
Arquitectura Multitenant en Oracle 12c
 
Ado net
Ado netAdo net
Ado net
 
Dbdeployer
DbdeployerDbdeployer
Dbdeployer
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 

Último

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 

Último (11)

Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 

Primeros pasos con neo4j

  • 1. Primeros pasos con Neo4j Ubaldo Taladriz. (Basada en la presentación de Andreas Kollegger)
  • 2. Agenda ๏ Bases de datos de grafos101 ๏ Características de Neo4j ๏ Casos de usos de Neo4j ๏ Acción en vivo 2
  • 3. Bases de datos de grafos101 (¿Qué es un grafo?) 3
  • 4. ¿Bases de datos de grafos? ๏ 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. 4
  • 5. G=(V,E) ๏ 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 5
  • 6. 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 6
  • 7. 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 7
  • 8. 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 8
  • 9. Casos de usos para los grafos 9
  • 10. P: ¿Para qué son buenos los grafos? R: datos complejos y conectados ๏ Recomendaciones ๏ Cálculos sobre Series de tiempo ๏ Inteligencia de negocios ๏ Computación Social ๏ Indexación de datos ๏ Geoespacial ๏ Logística ๏ MDM ๏ Y más! ๏ Administración de sistemas ๏ Genealogía 10
  • 11. Master Data Management ๏ Recorridos ad-hoc ๏ Responsabilidad ๏ Detección de conflictos ๏ Cálculo de compensaciones ๏ Cálculo de comisiones 11
  • 12. 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 12
  • 13. Geoespacial ๏ Objetos conectados espacialmente ๏ Operaciones GIS ๏ TransportDublin • Powered by Neo4j • Datos de OpenStreetMap • http://www.transportdublin.ie/ 13
  • 15. Neo4j Community Edition ๏ 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 15
  • 16. 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 J 16
  • 17. 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/] 17
  • 18. Webadmin – una cara amistosa ๏ 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) 18
  • 19. 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ón 19
  • 20. 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? 20
  • 21. 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 21
  • 22. Yo Mis amigos- por ejemplo 22
  • 23. Los amigos de mis amigos 23
  • 24. Webadmin Console ๏ Gremlin – lenguaje script de grafos ๏ Cypher – Consultas “a la” SQL ๏ http – acceso directo REST 24
  • 25. 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 25
  • 26. Gremlin – Consultando por los amigos de mis amigos // Gremlin – Contando los amigos de los amigos de Andreas m=[:] andreas = g.v(0) andreas.out('KNOWS').out('KNOWS').name.groupCount(m) recommend = m.sort{a,b - b.value = a.value } 26
  • 27. 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 27
  • 28. Cypher – Consulta de los amigos de mis amigos // Cypher – calce desde andreas a los amigos de sus amigos start andreas=(1) match (andreas)-[:KNOWS]-(friends) -[:KNOWS]-(foafs) return foafs 28
  • 29. 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 29
  • 30. 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 30
  • 31. Un tour por el código 31
  • 32. ¿Java? Se puede utilizar Spring Data Neo4j ๏ 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 32
  • 33. ¿Neo4j empotrado (Embedded) ? La API nativa es la respuesta ๏ Ejemplos en: ./examples/java/embedded 33
  • 34. ¿Ruby on Rails? neo4j.rb es la respuesta ๏ Soporta ActiveModel ๏ https://github.com/andreasronge/neo4j 34
  • 35. ¿Preguntas? ๏ ¿Dónde aprender más? http://neo4j.org ๏ Unirse a la lista de correos ๏ Unete a un encuentro (meetup) o inicia uno. 35