Descripción
Neo4j es una base de datos orientada a grafos implementada en Java. Este tipo de bases de datos representan los datos y sus relaciones mediante grafos, es decir, utilizando nodos y aristas. Los nodos o vértices se representan gráficamente como círculos, mientras que las aristas lo hacen mediante líneas. Entre los grafos que soporta nos encontramos con dirigidos, no dirigidos, con pesos, con etiquetas y de propiedad. Entre sus características principales, destacamos que permite definir propiedades (atributos) en los nodos y las relaciones, además de establecer los tipos de los nodos junto con la definición de índices. Es importante destacar que utiliza un sistema de transacciones ACID (atomicidad, consistencia, aislamiento y definitividad).
Neo4j utiliza un lenguaje propio para las consultas que se denomina Cypher, el cual es bastante intuitivo, ya que para representar las relaciones se utilizan flechas y para representar nodos se utilizan paréntesis. De esta forma, se consigue que las queries en Cypher sean muy gráficas.
Enlace al recurso
Ejemplos de uso
El lenguaje utilizado en Neo4j es Cypher, por lo que nuestro siguiente ejemplo estará relacionado con su utilización. Para ello emplearemos un modelo sencillo de películas, actores y directores como ejemplo. Suponemos que hay un enlace entre una película y una persona (el director), así como entre la película y los actores.
En el siguiente ejemplo queremos obtener la películas y el nombre de director de las películas en las que ha actuado el actor Kevin Bacon:
1 match (kevin) -[:ACTED_IN] -> (movie) <- [:DIRECTED] - (director) 2 where kevin.name = 'Kevin Bacon' 3 return kevin, director, movie
- En la línea 1 se establece la relación de actor de kevin (la variable que servirá para identificar a los actores) con la película, así como la relación de dirección de la película por parte del director.
- En la línea 2 establecemos la condición acerca de que el actor debe ser Kevin Bacon.
- La línea 3 indica los nodos que devolver, concretamente: kevin, director y película. En este caso, podemos ver en la salida que las películas se representan de color verde, mientras que en morado se representan las personas, tanto Kevin como los directores, dado que películas y personas son dos clases o conceptos diferentes.