Neo4j es un software libre de Base base de datos orientada a grafos, creada por Neo Technology Inc e implementado en Java. Neo4j almacena datos estructurados en grafos en lugar de en tablas, es decir,la información se almacena de forma relacionada formando un grafo dirigido entre los nodos y las relaciones entre ellos.
Neo4j está disponible en sistemas operativos de las familias Windows, Linux y OS X, y tambientambién . Neo4j está disponible a través de una versión gratuita y una versión de pago. (Esta última permite replicación, monitorización y alta disponibilidad.).
Asímismo, Neo4j permite acceder a sus datos de diversas formas y usando distintos lenguajes de consulta. Destacan aquí Cypher, un lenguaje que permite consultar y manipular grafos, y Gremlin, un lenguaje que permite gestionar grafos. Sus datos pueden ser accedidos desde una consola de texto, un entorno web (con salida gráfica) y mediante APIs (a través de drives).
Actualmente se sitúa como la base de datos en grafo más popular,utilizando un modelo de grafos de propiedades etiquetados
Además, explicamos como realizar la integración con Pentaho y con PowerBI, dos de las soluciones analíticas más utilizadas
En este ejemplo se usa
Neo4j
como Base de Datos basada en
grafo
para modelar las relaciones entre las entidades que forman parte de los
Papeles de Panamá (PP)
. A partir de ficheros de texto con los datos y relaciones entre clientes, oficinas y empresas que forman parte de los PP, hemos creado este grafo que facilia la comprensión de las interacciones entre sujetos distintos en esta red.
La demostración comienza seleccionando una entidad de cualquier tipo (Address, Company, Client, Officer), según el tipo que seleccione se muestran los atributos de ese nodo, luego seleccione el atributos que desea e introduzca el filtro, agregando varios paneles para filtrar por más de uno si es necesario. El parámetro "Deep" significa el número de conexiones al elemento seleccionado que se quiere mostrar.
En el servidor se hace una búsqueda
BFS
a partir del nodo seleccionado realizando consultas a
Neo4j
para cada tipo de relación donde una de sus partes sea el nodo actual, hasta llegar al nivel de profundidad solicitado. Se van guardando los nodos y los arcos para devolverlos como resultado.
Para la visualización del grafo se ha usado
Linkurious
, uno de los componentes más efectivos para este propósito en el mercado. Se puede interactuar con el grafo haciendo zoom, seleccionando elementos, moviendo elementos o usando el lasso tool para seleccionar varios nodos. Haciendo doble click sobre un nodo se cargan las conexiones a él que no estén visualizadas.
Neo4j
y las Bases de Datos basadas en grafos en general tienen aplicaciones muy particulares, como Detección de Fraudes (descubriendo patrones de relaciones entre nodos), Recomendaciones en Tiempo Real (es relativamente sencillo, usando el peso de las relaciones de cada nodo, su tendencia, etc), Analítica de Redes Sociales (por la facilidad de implementar algoritmos de grafos en este tipo de Base de Datos)