• Sofía Maiolo

Extendiendo Neo4j: user functions & procedures

Actualizado: abr 17

Siguiendo con la serie sobre Neo4j, en este post haré un breve tutorial de cómo comenzar a extender Neo4j trabajando con funciones y procedimientos de usuario. Neo4j provee diversas posibilidades de extensión que se encuentran explicadas aquí. De todas ellas, me estaré centrando en las funciones y procedimientos de usuario. Veámoslo paso a paso:


Configuración del ambiente

Tendremos que instalar lo siguiente:

  • Java --> Para usar Neo4j v4 o superiores, se requiere el JDK 11. Todos los requerimientos están aquí.

  • Maven --> La instalación de Maven es muy sencilla: se baja el zip desde aquí, y se definen las variables de entorno y el path como se explica acá.

  • Algún IDE Java --> Eclipse, Netbeans, IntelliJ IDEA o cualquiera de su preferencia :)

  • Neo4j Desktop --> Todas las instrucciones están aquí.

  • GitHub Desktop --> Se baja desde aquí.

Ejecutando Neo4j

Luego de instalarlo, simplemente debemos ejecutar Neo4j Desktop, y veremos que Neo4j crea automáticamente un proyecto y una BD de pruebas. Podemos hacer algunas consultas en la BD de prueba para chequear que esté todo funcionando correctamente. Algunas consultas básicas que podemos hacer son:


Ver el esquema del grafo:

call db.schema.visualization

Contar la cantidad de nodos:

MATCH (n)
RETURN count(n)

Listar las etiquetas:

CALL db.labels()

Una vez que nos aseguramos que la instancia está funcionando correctamente, pasemos al punto siguiente.


Creando la función Neo4j

Toda la info para comenzar un proyecto desde cero está disponible aquí, pero lo más simple es aprovechar el ejemplo que provee Neo4j, compilarlo, y luego personalizarlo a gusto.


El ejemplo está disponible en GitHub, lo deben clonar usando GitHub Desktop, y luego ejecutando un command prompt sobre la carpeta del proyecto, construir el jar ejecutando:

....\Documents\GitHub\neo4j-procedure-template> mvn clean package

Ej jar resultante se generará en \neo4j-procedure-template\target.


Agregando el jar a la BD de Neo4j

Ahora debemos agregar el jar generado a la carpeta plugins de la BD.


Para ello, desde Neo4j Desktop, seleccionamos la BD, vamos a los tres puntitos, y seleccionamos "Open folder". Se abrirá un File Explorer con la carpeta de instalación de la BD. Y allí buscamos la sub-carpeta plugins. Por ejemplo:

AppData\Local\Neo4j\Relate\Data\dbmss\dbms-78ee2f69-484f-4d5d-bd01-582f79f6cbb1\plugins

Simplemente debemos pegar el .jar en dicha carpeta, y reiniciar la BD.


Probando la función de usuario

Vamos a probar que efectivamente funcione el plugin. En el GitHub de Neo4j hay varios ejemplos de consultas que podemos probar. Yo probé con la siguiente:

MATCH (n:Person)
WITH n ORDER BY n.born
RETURN n.born, example.last(n) as last

Personalizando nuestra función

Ahora que ya vimos la idea general, tendremos que modificar el código del proyecto de ejemplo, y personalizarlo para implementar nuestras funciones y procedimientos. Para esto, abrimos el proyecto en nuestro IDE Java, y hacemos los cambios necesarios en las clases.


Aquí pueden ver un ejemplo de cómo implementar un algoritmo BFS, y en la documentación de Neo4j hay varios casos interesantes como referencia.


De esta forma podemos rápidamente agregar funcionalidades a Neo4j.


Hasta la próxima!

31 vistas0 comentarios

Entradas Recientes

Ver todo