📊 [NEO4J] 🚀 ¿QUÉ es NEO4J? ✅ ¿CÓMO instalar NEO4J en UBUNTU? 📢

Enviado por admin el Sáb, 27/03/2021 - 12:02

📊 [NEO4J] 🚀 ¿QUÉ es NEO4J? ✅ ¿CÓMO instalar NEO4J en UBUNTU? 📢

Hola a todos y bienvenidos de nuevo a este blog. Hoy os enseñaré que es Neo4J y como instalarlo en una máquina Ubuntu 18.04  También veremos algún ejemplo práctico con esta herramienta.


Antes de explicar que es Neo4j vamos a ver lo que es una base de datos orientada a grafos. 

Base de datos orientadas a Grafos

También conocidas como bases de datos gráficas, son un motor de almacenamiento especializado en almacenar y recuperar redes de información. Almacena datos de manera eficiente como nodos y relaciones y permite la recuperación y consulta de esas estructuras a alta velocidad. Estos nodos y relaciones pueden tener atributos y las relaciones siempre tendrán que estar dirigidas pudiendo ser también bidireccionales. Veamos un ejemplo

Aquí podemos ver 3 nodos, cada uno con su etiqueta, y dos relaciones, cada una también con su etiqueta. Pero si nos fijamos vemos que una relación es bidireccional, mientras que las otras solo apuntan en un sentido

Neo4J

El grafo proporciona una mayor flexibilidad para detectar conexiones o analizar datos. permitiendo explorar y descubrir conexiones y patrones en redes sociales, IoT, Big Data y bases de datos. En la actualidad, los grafos se utilizan cada vez más como parte de la ciencia de datos para hacer más claras las conexiones en las relaciones.

¿Qué es Neo4J?

Una vez  terminada esta primera parte, veamos que es la herramienta de la que trata esta entrada.

Neo4j es una base de datos orientada a grafos, NOSQL y de código abierto. Es una base de datos totalmente transaccional (ACID) que almacena datos estructurados como gráficos que consisten en nodos, conectados por relaciones. Inspirado en la estructura del mundo real, permite un alto rendimiento de consulta en datos complejos, sin dejar de ser intuitivo y simple para el desarrollador.

En el año 2000 se fundó Neo Technologies, lugar donde se comenzó a desarrollar esta base de datos, Neo4j, creando también el lenguaje de consulta declarativo para este modelo, Cypher. Toma prestados algunos conceptos, como la coincidencia de patrones de gráficos de SPARQL.

Neo4j está muy bien establecido. Ha estado en desarrollo comercial durante 15 años y en producción durante más de 12 años. Lo más importante es que tiene una comunidad activa y contribuyente que lo rodea, pero también:

  • Tiene un modelo intuitivo y rico en gráficos para la representación de datos. 
  • Como hemos comentado en lugar de tablas, filas y columnas, trabaja con un gráfico que consta de nodos, relaciones y propiedades.
  • Tiene un administrador de almacenamiento nativo basado en disco optimizado para almacenar estructuras de gráficos con el máximo rendimiento y escalabilidad. 
  • Es escalable. 

Neo4j puede manejar gráficos con millones de nodos / relaciones / propiedades en una sola máquina, pero también se puede escalar en varias máquinas para una alta disponibilidad.

  • Tiene un lenguaje de consulta de gráficos llamado Cypher, que permite a los usuarios leer / escribir datos de manera eficiente mediante la expresión de patrones de gráficos.
  • Se puede implementar como un servidor independiente, que es la forma recomendada de usar Neo4j
  • Se puede implementar como una base de datos integrada (en proceso), lo que brinda a los desarrolladores acceso a su API principal de Java
  • Además, Neo4j proporciona transacciones ACID, persistencia duradera, control de concurrencia, recuperación de transacciones, alta disponibilidad y más. 

Consultas con Cypher

Proporciona un lenguaje de consulta de gráficos llamado Cypher que se basa en muchas fuentes. Se asemeja a las cláusulas SQL pero se centra en la representación icónica coincidente de patrones en el gráfico.

Las consultas cifradas suelen comenzar con una cláusula MATCH, que se puede utilizar para proporcionar una forma de hacer coincidir el patrón con el gráfico. Las cláusulas de coincidencia pueden introducir nuevos identificadores para nodos y relaciones. En la cláusula WHERE se aplica un filtrado adicional del conjunto de resultados mediante la evaluación de expresiones. La cláusula RETURN define qué parte del resultado de la consulta estará disponible para la persona que llama. La agregación también ocurre en la cláusula de devolución mediante el uso de funciones de agregación en algunos de los valores devueltos. La clasificación puede ocurrir en la cláusula ORDER BY y las partes SKIP y LIMIT restringen el conjunto de resultados a una determinada ventana.

A continuación, se muestran algunos ejemplos de lo fácil que es usar Cypher (estas consultas funcionan con el conjunto de datos "Películas" que viene instalado con el navegador Neo4j)

Nombres y lugares de nacimiento de los actores que aparecieron en una película de Matrix.

MATCH (movie:Movie)<-[:ACTS_IN]-(actor)
WHERE movie.title =~ 'Matrix.*'
RETURN actor.name, actor.birthplace

Conclusión Neo4J

Neo4j es una base de datos orientada a grafos, por lo que es muy diferente a las convencionales. En mi opinión, es una
base de datos muy completa. Uno de sus mejores atributos es la facilidad que ofrece en su instalación. Podemos instalarla
en varios tipos de sistemas operativos. En nuestro caso, implantar Neo4j en ubuntu ha sido fácil, pero también su instalación en Windows es muy sencilla ya que se realiza en pocos pasos.

En cuanto a su uso, podemos definirlo como intuitivo, ya que con su sintaxis es muy básica y sus similitudes con otras bases de datos  facilita la comprensión para usuarios principiantes. Además, con su interfaz gráfica podemos visualizar nuestros proyectos y hacernos una clara idea de cómo están relacionados nuestros nodos. En definitiva, la primera experiencia con Neo4j suele dejar un buen sabor de boca y despertar mucho interés en conocer esta herramienta en profundidad.

Cómo instalar Neo4J en Ubuntu 18.04

Lo primero será conectarnos por ssh a la máquina y hacer login como root, a continuación actualizamos la lista de repositorios de paquetes

> sudo apt update
 

A continuación, actualizaremos Java, o en este caso, la instalaremos. Usaremos OpenJDK 8. Introduce y, cuando te lo pida para confirmar la instalación.

> sudo apt install openjdk-8-jdk
 
Verificamos que hemos instalado java correctamente

> java -version

Actualizamos el repositorio de paquetes para incluir Neo4J.

> sudo wget -O - https://debian.neo4j.org/neotechnology.gpg.key | sudo apt-key add -
 
> sudo echo 'deb https://debian.neo4j.org/repo stable/' | sudo tee -a /etc/apt/sources.list.d/neo4j.list
 
> sudo apt-get update
 
Ahora instalaremos Neo4J

> sudo apt install neo4j

Una vez haya terminado la instalación, verificamos que se ha instalado neo4j correctamente.

> neo4j --version

Ahora realizaremos unas modificaciones en el fichero de configuración de Neo4j, para que pueda ser accedido desde fuera y que no nos pida usuario y contraseña. Para ello solo tendremos que descomentar las siguientes líneas

> sudo nano /etc/neo4j/neo4j.conf

dbms.connectors.default_listen_address=0.0.0.0

El usuario por defecto es neo4j al igual que la contraseña. La primera vez que te conectes te mandará cambiarla.

neo4j/neo4j

la interfaz web estará accesible en el puerto 7474 y la conexión a la base de datos será en el puerto 7687

Te dejo un vídeo en el que muestro como se hace