NEO4J 8.pdf
Document Details
Uploaded by Itan
Universidad Internacional de La Rioja
Tags
Full Transcript
Tema 8 Métodos de Captura y Almacenamiento de los Datos Neo4j © Universidad Internacional de La Rioja (UNIR) Índice Esquema 3 Ideas clave 4 8.1. Introducción y objetivos 4 8.2. Descarga e instalación 5 8.3. Conceptos generales 10 8.4. Graph Data Modelling 15 8.5. Interfaz Neo4j 17 8.6. CQL 19 8.7. V...
Tema 8 Métodos de Captura y Almacenamiento de los Datos Neo4j © Universidad Internacional de La Rioja (UNIR) Índice Esquema 3 Ideas clave 4 8.1. Introducción y objetivos 4 8.2. Descarga e instalación 5 8.3. Conceptos generales 10 8.4. Graph Data Modelling 15 8.5. Interfaz Neo4j 17 8.6. CQL 19 8.7. Visualización de grafos 28 8.8. Caso práctico 32 8.9. Referencias bibliográficas 39 A fondo 40 Test 43 Nodos. Relaciones. Propiedades. - - - Los principales elementos del modelo de datos Graph DB son: Cómo aplica el teorema CAP Propiedades: - Nodo y relaciones permiten organizar los datos de tal manera que sea posible encontrar patrones de información existente entre dichos nodos. - Las propiedades son pares de nombre-valor utilizados para agregar cualidades a los nodos y las relaciones. Relaciones: - Las relaciones, por su parte, se conocen como vértices y también tienen propiedades, siendo la dirección o sentido el más importante de ellos. Una relación conecta dos nodos y los organizan en estructuras. Propiedades. Modelado. Cláusulas CREATE, MATCH, INSERT, DELETE, REMOVE, WHERE, SKIP, LIMIT. Caso de uso: fraude en tarjetas de crédito Relaciones. Nodos. Tipos de datos y operadores. Manipulación del grafo Esquemas, grafos y Cypher Query Language Nodo: - Las entidades reciben el nombre de nodos y cada uno de ellos es muy similar a una instancia de un objeto (es decir, tienen propiedades). Neo4j es una base de datos de grafos cuyo lenguaje de consultas es CQL (Cypher Query Language). Neo4j está escrito en Java. Base de datos NoSQL de tipo grafo CQL (Cypher Query Language) Principales componentes Neo4j Definición © Universidad Internacional de La Rioja (UNIR) Esquema Métodos de Captura y Almacenamiento de los Datos Tema 8. Esquema 3 Ideas clave 8.1. Introducción y objetivos Este tema pretende ser una guía para empezar a desarrollar aplicaciones utilizando Neo4j. Para estudiar este tema debes leer las Ideas clave y, si deseas información adicional sobre un concepto específico, puedes consultar las lecturas citadas en «Referencias bibliográficas». Se recomienda también intentar replicar los ejemplos para entender cada uno de los conceptos que se explican. Para poder darle un enfoque práctico a este tema, es recomendable que el estudiante instale su base de datos de prueba siguiendo las instrucciones del apartado 8.2. Una vez instalado el entorno, continúa con los epígrafes siguientes poniendo en práctica todos los comandos citados de Neo4j. Una de las bases de datos de grafos más conocidas es Neo4j. Es de código abierto y ha sido desarrolla utilizando Java. Sus principales características consisten en que es escalable en gran medida y no presenta esquema (es NoSQL). Este tipo de base de datos se basa en la representación gráfica de un conjunto de objetos donde algunos pares de ellos están conectados por enlaces. Hay dos elementos claves en Neo4j: los nodos (vértices) y las relaciones (bordes). © Universidad Internacional de La Rioja (UNIR) Con base en estos dos elementos, Neo4j se utiliza para modelar los datos en forma de grafo con relaciones. En el grafo los nodos representan las entidades, mientras que las relaciones indican la asociación que hay entre los nodos. Neo4j no es la única base de datos de este tipo, existen otras que siguen esta misma topología, entre ellas OrientDB, GraphBase, Oracle NoSQL Database, HypherGraphDB, InfiniteGraph y AllegroGraph. Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 4 Los objetivos que se pretenden conseguir con este tema son los siguientes: Comprender las ideas claves que describen el concepto de grafo. Conocer la utilidad que tienen los grafos como forma de representar los datos y sus relaciones. Aplicar los conceptos de grafo sobre la base de datos Neo4j. Aprender a instalar y configurar un entorno de pruebas local con Neo4j. 8.2. Descarga e instalación Antes de hablar de la instalación de Neo4j, es interesante que conozcas las versiones que existen y se pueden descargar para trabajar con esta base de datos. Al igual que MongoDB, Neo4j cuenta con una versión Enterprise y con una versión Community. La versión Enterprise ofrece más funcionalidades propias de un sistema en producción, mientras que la Community está más orientada a entornos de desarrollo. De cara a este tema, es recomendable trabajar sobre la versión Community. Otro aspecto importante es que Neo4j necesita que tengas Java en el ordenador, y esto puede ser algo nuevo si no conoces cómo trabaja Java. Aunque puedes encontrar imágenes de Docker con Neo4j listas para usar, con el fin de que conozcas cómo es una instalación propia de esta herramienta, se propone que hagas dicha instalación sobre tu ordenador siguiendo los pasos que se describen a continuación. © Universidad Internacional de La Rioja (UNIR) Además de instalar Neo4j, también conocerás el concepto de variables de entorno en Windows, las cuales son útiles para configurar herramientas que utilizan este tipo de variables (es el caso de Java y, por ende, de Neo4j). Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 5 Paso 1: descarga la versión Community de Neo4j. Figura 1. Web de descarga de MongoDB. Paso 2: si no tienes instalado Java en tu ordenador, descarga la versión OpenJDK 8 u Oracle Java 8. Esta versión es la recomendada para Neo4j 3.0.x. Si por alguna razón debes usar una versión de Neo4j inferior a 2.3.0, es recomendable usar la versión 7 de Java. Consulta el apartado «Instalar Java 8 y crear variable de entorno» de este documento. Paso 3: el archivo que has descargado en el Paso 1 es un zip que contiene los ficheros de Neo4j. Localiza dicho fichero y extrae su contenido dentro de un © Universidad Internacional de La Rioja (UNIR) directorio conocido, por ejemplo: D:\Neo4j\. Paso 4: el ordenador donde se instala Neo4j hará las veces de servidor. Es recomendable crear la variable de entorno NEO4J_HOME para señalar el directorio del Paso 3. En dicho servidor, es posible ejecutar una instancia de la consola de Neo4j para trabajar (Paso 5.1), pero también es posible crear un servicio en Windows que permita levantar la base de datos de forma permanente, Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 6 igual que Mongo (Paso 5.2). Si piensas utilizar Neo4j de forma permanente, se recomienda instalar el servicio. Paso 5.1: para ejecutar una instancia de Neo4j, desde la consola de Windows PowerShell, ubícate en la ruta y ejecuta neo4j console (\bin\neo4j console). Ten en cuenta que al descomprimir el fichero ZIP, este crea otro directorio llamando /neo4j-community-4.x.x. Se asume que su contenido es lo que has copiado en el directorio recomendado en el Paso 3. Si lo que copias es el directorio completo, entonces ten en cuenta este nuevo directorio en la ruta propuesta. Paso 5.2: para instalar Neo4j como servicio, utiliza la instrucción \bin\neo4j install-service. Paso 6: si todo ha ido bien, accede a la URL http://localhost:7474 desde el navegador web que usas frecuentemente. Utiliza el usuario neo4j con la contraseña predeterminada neo4j. De inmediato te pedirá que cambies la contraseña para mayor seguridad. Observa cómo cada base de datos utiliza un puerto por defecto en las instalaciones por defecto: MySQL utiliza el puerto 3306, MongoDB el puerto 27017, Neo4j el puerto 7474… Lo más probable y seguro es que los administradores de bases de datos asignen puertos menos comunes. © Universidad Internacional de La Rioja (UNIR) Instalar Java 8 y crear variable de entorno Paso 1: descarga Java 8 del sitio oficial de Oracle (intenta en la siguiente URL: https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html). Si falla la URL anterior (es Oracle y cada vez que innovan mueven cosas de su sitio web), busca en Google «Instalar Java 8». Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 7 Paso 2: ejecuta el ejecutable que has descargado e instala Java en la ruta D:\Java\jdk1.8.0 (D es una unidad de ejemplo, puedes usar otra que consideres más oportuna). Paso 3: desde Windows crea la variable JAVA_HOME, para ello da clic derecho en Equipo o Este Equipo en el Explorador de archivos de Windows. Paso 4: selecciona la opción Propiedades y luego accede a Configuración avanzada del sistema > Variables de entorno. Paso 5: en el recuadro Variables del sistema crea una «Nueva…» variable del sistema cuyo nombre debe ser JAVA_HOME. A dicha variable ponle como valor de la variable la ruta de instalación de Java, es decir, D:\Java\jdk1.8.0. Acepta todas y cada de las ventanas abiertas (son unas cuantas). Paso 6: comprueba que todo está correcto. Para ello, abre una consola de Windows y escribe las instrucciones SET JAVA_HOME para comprobar la ruta y luego java – versión para mostrar la versión que acabas de instalar de Java. © Universidad Internacional de La Rioja (UNIR) Figura 2. Visualizar la versión de Java desde la consola de Windows. Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 8 Figura 3. Modelo de referencia arquitectura Apache Cassandra. © Universidad Internacional de La Rioja (UNIR) Si todo ha ido bien, podrás ver la siguiente pantalla en la URL http://localhost:7474. Figura 4. Pantalla de configuración de Neo4j. Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 9 Instalar Neo4j como servicio en Windows Para instalar Neo4j como servicio, basta con seguir dos pasos: Paso 1: desde la ruta de instalación ejecuta lo siguiente: \bin\neo4j install-service. Figura 5. Instalar servicio de Neo4j desde la consola de Windows. Paso 2: comprueba que el servicio está funcionando. Figura 6. Lista de servicios en Windows. © Universidad Internacional de La Rioja (UNIR) 8.3. Conceptos generales Los grafos son representaciones gráficas de entidades y sus relaciones. Los nodos representan esas entidades y poseen propiedades que los describen (por ejemplo, el nombre) (Lal, 2015). En el grafo de la imagen siguiente, cada nodo tiene un nombre y está relacionado con otro a través de una flecha que muestra dicha relación (Hölsch et al., 2017). Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 10 Las relaciones también tienen múltiples propiedades, las cuales permiten organizar la información asociada a los nodos (Guia et al., 2017; Webber y Robinson, 2018). Las relaciones tienen una dirección (ver Figura 7), pero si se quisiera indicar bidireccionalidad, es necesario crear dos relaciones en sentidos opuestos. Figura 7. Representación gráfica de los elementos de Neo4j. Nodos Los grafos representan entidades y las relaciones entre ellas. Las entidades reciben el nombre de nodos y cada nodo es muy similar a una instancia de un objeto (es decir, tiene propiedades). © Universidad Internacional de La Rioja (UNIR) Relaciones Las relaciones por su parte, se conocen como vértices y también tienen propiedades, siendo la dirección o sentido el más importante de ellos. Una relación conecta dos nodos y los organiza en estructuras. Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 11 De esta forma, un grafo puede mostrarse como una lista, un árbol, un mapa o una entidad compuesta, con la posibilidad de combinarse en estructuras aún más complejas y ricamente interconectadas (grandes y complejas redes de nodos). Nodo y relaciones permiten organizar los datos de tal manera que sea posible encontrar patrones de información existente entre dichos nodos (Webber y Robinson, 2018). Una vez almacenados los datos, los grafos permitirán interpretar y generar información de valor de diferentes formas, según las relaciones que los nodos tengan (ver Figura 8). Figura 8. Representación gráfica de nodo y vértice. Tipos de relaciones Las relaciones tienen asociado un tipo de relación. En la base de datos de ejemplo de Neo4j, las relaciones que se identifican son ACTED_IN y DIRECTED y se usan como tipos de © Universidad Internacional de La Rioja (UNIR) relación. Figura 9. Representación de las relaciones de los nodos. En la Figura 9 se muestra una relación saliente ACTED_IN (actuó en) con el nodo de «Tom Hanks» como nodo de origen y «That Thing You Do» como nodo de destino. De igual Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 12 forma, se puede observar cómo el nodo «Tom Hanks» tiene una relación saliente con el mismo nodo «That Thing You Do» pero con otra connotación diferente: DIRECTED. Toda relación siempre tendrá una dirección. La dirección que se tome en cuenta será la que sea útil para el análisis que se quiere hacer. Esto significa que no es necesario agregar relaciones duplicadas en la dirección opuesta a menos que sea necesario para describir correctamente un caso de uso. Es importante tener presente que un nodo puede tener relaciones consigo mismo. Propiedades Se ha dicho previamente que tanto nodos como relaciones poseen propiedades. Las propiedades son pares de nombre-valor utilizados para agregar cualidades a los nodos y las relaciones. En los grafos de ejemplo (ver imágenes) se han utilizado como propiedad el nombre de las relaciones, el nombre del personaje en los nodos, el título de las películas y el año, entre muchos otros. El valor de la propiedad puede contener diferentes tipos de datos tales como números, © Universidad Internacional de La Rioja (UNIR) cadenas y booleanos (ver Figura 10). Figura 10. Relaciones entre nodos y su visualización. Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 13 Recorridos, rutas o caminos Recorrer los nodos en función de sus relaciones es lo que se conoce como recorrido. Un recorrido es similar a una consulta del grafo que busca encontrar alguna repuesta a preguntas como: «¿Qué películas ha dirigido Tom Hanks?», «¿En qué películas Tom Hanks, además de actuar, también ha dirigido? », «¿Qué otros actores han trabajado con Tom Hanks en la película The Green Mile?». Cuando se visitan los nodos siguiendo las relaciones y aplicando determinadas reglas, realmente se atraviesa el grafo. Por lo general, no se atraviesa todo el grafo, sino un subconjunto de él. Si se quisiera saber en qué películas actuó Tom Hanks, si se observa la imagen anterior, el recorrido comenzaría desde el nodo «Tom Hanks», seguiría cualquier relación ACTED_IN conectada al nodo y terminaría con Forrest Gump o en todas aquellas películas donde el actor haya actuado. Esquema En Neo4j el esquema hace referencia a los índices y restricciones que componen la base de datos. En Neo4j el esquema es opcional, no es necesario crear índices y restricciones sobre la base de datos creada. Incluso es posible crear nodos, relaciones y propiedades sin definir previamente un esquema. Los índices y las restricciones se pueden añadir posteriormente para optimizar el rendimiento de la base de datos y, por ende, del © Universidad Internacional de La Rioja (UNIR) modelo de dato definido. Índices Al igual que en los sistemas relacionales, los índices permiten aumentar el rendimiento de las consultas a las bases de datos. Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 14 Restricciones Las restricciones, por su parte, permiten asegurar que los datos cumplan con las reglas del dominio establecido para garantizar coherencia en el modelo. Recomendaciones de nombres En lo que respecta a las etiquetas de nodo, los tipos de relación y las propiedades, al igual que Java, son sensibles al uso de mayúsculas y minúsculas. Revisa la tabla siguiente para conocer las principales recomendaciones. Entidades Etiqueta del nodo Tipo de relaciones Estilos Ejemplos Comenzar con un carácter :PropietarioVehiculo es mejor que en mayúscula. :propietario_vehiculo Todo en mayúsculas usando guion bajo. :ACTUO_EN es mejor que :actuo_en Iniciar en minúscula y añadir Propiedades mayúscula al principio de las firstName es mejor que first_name o siguientes que firstname palabas (sin separador). Tabla 1. Recomendaciones para crear elementos en Neo4j. 8.4. Graph Data Modelling Como se comentó en otros apartados, Neo4j utiliza la representación de grafos para © Universidad Internacional de La Rioja (UNIR) almacenar y administrar sus datos (ver Figura 11). Los aspectos relevantes de cara al modelo de datos son los siguientes: El modelo de datos se representa con nodos (círculos), relaciones (flechas) y propiedades. Tanto los nodos como las relaciones contienen propiedades. Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 15 Las propiedades también se representan como pares clave-valor. Las relaciones tienen direcciones unidireccionales y bidireccionales. En una relación siempre hay un «nodo de inicio» o «nodo desde» y un «nodo hasta» o «nodo final». Una relación conecta dos nodos. Cuando se crean relaciones en Neo4j, siempre es necesario indicar una dirección, de lo contrario el motor de base de datos arrojará un mensaje de error diciendo «las relaciones deben ser direccionales». Ejemplo de imagen: si lo que se dice en el texto se puede ilustrar con una imagen, la incluiremos con su correspondiente pie de imagen. Figura 11. Representación de relaciones mediante grafos. Al almacenar los datos, no es necesario utilizar otra base de datos SQL o NoSQL para almacenar los datos de la base de datos de Neo4j. Toda la información se guarda en los distintos elementos en su formato nativo. Neo4j utiliza Native GPE (motor de procesamiento de grafos) para trabajar con su formato de almacenamiento de grafos © Universidad Internacional de La Rioja (UNIR) nativo (Fernandes y Bernardino, 2018). Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 16 8.5. Interfaz Neo4j A continuación, se describe la interfaz de la herramienta en su versión 4.2.x. Si observas que no es similar a la que tienes instalada, es porque seguramente estás haciendo pruebas con una versión diferente a la aquí estudiada. La interfaz de Neo4j es web, y la pantalla de bienvenida se puede observar en la imagen siguiente. Figura 12. Consola web principal de Neo4j. A continuación, se describen los principales elementos de la interfaz web. © Universidad Internacional de La Rioja (UNIR) 1. Información de la base de datos: aquí podrás ver toda la información de las bases de datos en Neo4j. Por defecto existen las bases de datos system y neo4j. Visualiza las etiquetas de los nodos, las relaciones y sus tipos y las propiedades. 2. Favoritos: mostrará las consultas favoritas que hayas marcado como tal, una opción para cargar consultas de ficheros o ejemplos de consultas que podrías utilizar. 3. Ayuda: permite acceder al manual de usuario de Neo4j y Cypher. Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 17 4. Opciones de sincronización del buscador. 5. Configuración: permite modificar la apariencia de la web, preferencias de conexión, las características de los datos visualizados y los grafos. 6. Información sobre Neo4j. 7. Línea de comandos principal para ejecutar las consultas con sus respectivas opciones. Todas las consultas de Neo4j comienzan con dos puntos (:). 8. Línea de comando donde se muestra la consulta ejecutada cuyo resultado se muestra en el área 10. 9. Controles de visualización del resultado de una consulta. 10. Área de visualización del resultado de la consulta. Cualquier acción que realizamos en Neo4j se traduce en comando o instrucción, es por ello que cuando ejecutes cualquier opción, podrás observar en la línea de comando principal el comando equivalente. En el área de visualización podrás observar el histórico de todas las operaciones o consultas realizadas, así podrás recuperar la consulta lanzada y reutilizarla siempre que © Universidad Internacional de La Rioja (UNIR) así lo desees. Figura 13. Partes de la consola web de Neo4j. Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 18 8.6. CQL El lenguaje de consulta utilizado en Neo4j es CQL o Cypher Query Language. Es un lenguaje declarativo, que permite buscar coincidencia de patrones. Este sigue una sintaxis similar a SQL, es legible y se puede organizar con determinadas como ocurre con SQL. CQL emplea comandos o instrucciones para manipular sus bases de datos. Admite muchas cláusulas como WHERE y ORDER BY, entre otras, para escribir consultas complejas de una forma fácil y, digamos, rápida. También permite usar funciones como string, aggregation, así como algunas funciones de relación. Tipos de datos © Universidad Internacional de La Rioja (UNIR) Tipo de dato Descripción Boolean True/False byte Enteros de 8 bit short Enteros de 16 bit int Enteros de 32 bit long Enteros de 64 bit float Números de 32 bit con punto flotante doublé Números de 64 bit con punto flotante char Caracteres de 16 bit string String Tabla 2. Tipos de datos en Neo4j. Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 19 Operadores Operador Descripción Lógicos AND Operación lógica OR Operación lógica NOT Operación lógica XOR Operación lógica Comparación = Igualdad Diferente < Menor que > Mayor que = Menor igual que, mayor igual que Otros +, -, *, /, %, ^ Matemáticas + Uso de string +, IN, [X], [X…..Y] Uso de listas =_ Expresión regular STARTS WITH, ENDS WITH, CONSTRAINTS Comparación de string © Universidad Internacional de La Rioja (UNIR) Tabla 3. Operadores en Neo4j. Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 20 Cláusulas de CQL Cláusula Descripción Lectura de datos MATCH Especificar un patrón. OPTIONAL MATCH Especificar un patrón donde además es posible usar nulos en caso de que el patrón carezca de partes. WHERE Añadir contenido a las consultas CQL. START Se utiliza para encontrar los puntos de partida a través de los índices heredados. LOAD CSV Se usa para cargar datos desde un fichero CSV. Escritura de datos CREATE MERGE SET Permite crear nodos, relaciones y propiedades. Comprueba si un patrón especificado existe en el grafo, en caso de que no, crea el patrón. Permite actualizar etiquetas de nodos, relaciones y propiedades. DELETE Permite borrar nodos, relaciones o rutas en el grafo. CREATE UNIQUE Mediante las cláusulas CREATE y MATCH, es posible obtener un patrón único al hacer coincidir el patrón existente y crear el que falta. REMOVE Permite borrar propiedades de los nodos y relaciones. FOREACH Permite actualizar los datos dentro de una lista (recorre la lista). Otras cláusulas LIMIT Limita el resultado a un número de valores concreto. SKIP Se utiliza para establecer desde qué fila comenzar a incluir las filas en la salida. WITH Se utiliza para encadenar las partes de la consulta. © Universidad Internacional de La Rioja (UNIR) RETURN ORDER BY Se utiliza para definir qué incluir en el conjunto de resultados de la consulta. Se utiliza junto con las cláusulas RETURN o WITH y permite organizar la salida de una consulta en orden. UNWIND Permite expandir una lista en una secuencia de filas. UNION Permite unir el resultado de múltiples consultas. CALL Permite llamar a un procedimiento almacenado en la base de datos. Tabla 4. Cláusulas de CQL en Neo4j. Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 21 Funciones String: se utiliza para manipular string. Aggregation: se utiliza en determinadas operaciones de agregación. Relationship: se utiliza para obtener información sobre relaciones (nodo inicio, nodo fin, entre otros). Construir un grafo con CQL A continuación, utilizarás CQL para crear tu propio grafo y luego ejecutar sobre él determinadas consultas que se irán proponiendo. Instrucciones para la creación de nodos CREATE (MiNodo): un nodo simple. CREATE (MiNodo1), (MiNodo2): múltiples CREATE (Andres:Persona): crea el nodos. nodo Andres con la etiqueta Persona. CREATE (Andres:Persona:Padre:Hijo:Prestamista): crea el nodo Andres con las etiquetas Persona, Padre, Hijo y Prestamista. CREATE (Andres:Persona { name: “Andres Fabricio”, age: 21, nacionality: “Spain” }): crea el nodo Andres con la etiqueta Persona y las propiedades name, © Universidad Internacional de La Rioja (UNIR) age y nacionality. CREATE (Andres:Persona { name: “Andres Fabricio”, age: 21, nacionality: “Spain” }) RETURN Andres: después de crear el nodo lo retorna para su visualización. MATCH (n) RETURN n: visualiza todos los nodos 𝑛𝑛 creados (cuidado: todos los nodos creados). Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 22 Ejercicio 1 Paso 1: ejecuta todas las instrucciones anteriores. Paso 2: ejecuta esta otra instrucción: CREATE (Eduardo:Persona{name:"Eduardo Puertas", age:45, nacionality:"Español"}), (Camila:Persona{name:"Camila Corre", age:25, nacionality:"Frances"}) Paso 3: visualiza todos los nodos. El resultado debería ser parecido al siguiente: Figura 14. Representación de nodos en Neo4j. © Universidad Internacional de La Rioja (UNIR) Crear relaciones CREATE (Ana:Persona{name:"Ana Lana", age:25, nacionality:"Española"}), (Pepe:Persona{name:"Pepe Rueda", age:25, nacionality:"Francés"}) CREATE (Ana)-[r:AMIGO_DE]->(Pepe) Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 23 Para que la relación se cree utilizando los nombres de los nodos, la creación de estos debe estar en la misma instrucción, es decir, hay que ejecutar los dos CREATE a la vez en la línea principal. Figura 15. Representación de relación entre nodos en Neo4j. MATCH (a:Persona), (b:Persona) WHERE a.name = "Eduardo Puertas" AND b.name = "Camila Corre" CREATE (a)-[r: AMIGO_DE]->(b) RETURN a,b Observa que, en este caso, a y b representan los nombres (que no se conocen) de los nodos. Lo que sí se conoce de ellos son las etiquetas (:Persona). En el WHERE lo que se hará es buscar los nodos por la propiedad name. Posteriormente se crea la relación © Universidad Internacional de La Rioja (UNIR) entre los nodos a y b una vez sean encontrados. Figura 16. Representación de relación entre nodos y su consulta con CQL. Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 24 CREATE (Po:Persona{name:"Po", age:43, nacionality:"Española"}), (Alan:Persona{name:"Alambrito", age:31, nacionality:"Indio"}) MATCH (a:Persona), (b:Persona) WHERE a.name = "Alambrito" AND b.name = "Po" CREATE (a)-[r:AMIGO_DE {mejorAmigo: "Sí", debeSaldo: 190.50}]->(b) RETURN a,b Figura 17. Representación de relación entre nodos, su consulta con CQL y la visualización de las propiedades. Cláusula Match MATCH (n) RETURN n: consulta todos los nodos. MATCH (n:Persona) RETURN n: consulta todos los nodos con la etiqueta Persona. MATCH (Pepe:Persona{name: "Pepe Rueda"}) 18 AND Persona.age < 30 RETURN Persona Importante: MATCH (n) WHERE (n)-[: AMIGO_DE]->( {name: "Po"}) RETURN n: consultar los amigos de Po (Persona). Llegados a este punto, cuentas con suficientes nociones para revisar otra documentación de Neo4j y, con ello, además de aprender más sobre las cláusulas antes vistas, encontrarás muchas otras que quedan por descubrir y que te darán una base sólida para trabajar con este tipo de bases de datos. Al final de este tema tienes varios enlaces que te serán útiles para emprender este camino y mejorar tus conocimientos sobre esta forma de almacenar los datos. Iniciar las bases de datos de ejemplo Antes de comenzar a escribir tus propias consultas, es recomendable cargar y visualizar algunas de las bases de datos que provee Neo4j como ejemplo. La más conocida es la base de datos de películas, usada en las imágenes anteriores. Para ello, © Universidad Internacional de La Rioja (UNIR) visualice la guía de instalación escribiendo la siguiente instrucción: $ :play movie graph De inmediato se desplegarán las instrucciones para cargar la base de datos. Avanza en los distintos pasos con el botón que se muestra a la derecha del panel visualizado. A lo largo de cada paso, tendrás que ir ejecutando las distintas consultas que se te Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 26 proponen en pantalla. No te dejes ninguna sin ejecutar y procura seguir el orden propuesto por la interfaz. Figura 18. Carga de datos de ejemplo en Neo4j (Movie). Otro ejemplo de base de datos es el siguiente: $ :play northwind graph © Universidad Internacional de La Rioja (UNIR) Figura 19. Carga de datos de ejemplo en Neo4j (Northwind). Recuerda avanzar a través de los distintos pasos e ir ejecutando las instrucciones propuestas en el mismo orden. Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 27 Figura 20. Instrucciones de carga de datos de ejemplo en Neo4j. 8.7. Visualización de grafos La principal característica de Neo4j es su modo de visualizar los datos y las relaciones que existen entre ellos. El uso de nodos y relaciones permite modelar fácilmente los datos y presentarlos de una forma que tanto los desarrolladores, los analistas y los de negocio puedan entender por igual. La visualización de grafos potencia esta capacidad de Neo4j permitiendo dibujar el gráfico en varios formatos para que los usuarios puedan interactuar con los datos de © Universidad Internacional de La Rioja (UNIR) una manera más fácil. Con las herramientas de visualización, un grafo completo o parcial puede cobrar vida y permitir al usuario explorarlo, estableciendo varias reglas o vistas para analizarlo desde diferentes perspectivas. Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 28 Existe una variedad de herramientas de código abierto que permiten esta manipulación de los grafos. Cada herramienta proporciona determinadas capacidades, por ello debes elegir la que más se adapte a las necesidades del caso de uso. Formatos del grafo Hay una variedad de formatos a la hora de visualizar los datos en Neo4j. Los resultados de una consulta se pueden guardar como JSON, XML, formatos tabulares y formato visual. Este último proporciona un valor adicional para los analistas de datos y los usuarios de negocio, así como para el resto de usuarios. En el ejemplo siguiente, de forma visual y casi inmediata, es posible describir los datos que se muestran, porque se observan directamente las relaciones y los nodos que componen el resultado de la consulta. © Universidad Internacional de La Rioja (UNIR) Figura 21. Visualización de grafos en Neo4j. Neo4j tiene dos herramientas de visualización principales que están construidas y diseñadas para trabajar específicamente con datos en la base de datos de grafos de Neo4j: Neo4j Browser y Neo4j Bloom. Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 29 Neo4j Browser Está pensada para que los desarrolladores puedan ejecutar sus consultas Cypher y visualizar los resultados de forma inmediata y con la posibilidad de hacerlo desde cualquier ordenador o navegador. Las versiones Enterprise y Community integran esta interfaz de visualización. También proporciona algunas funciones para diseñar con colores y tamaños según las etiquetas de los nodos y los tipos de relaciones, permitiendo al usuario personalizar sus propios estilos importando un archivo GRASS (hoja de estilo de © Universidad Internacional de La Rioja (UNIR) grafos). Asimismo, facilita la exportación del grafo a formatos PNG, SVG o CSV. Figura 22. Información de la base de datos en Neo4j desde la web. Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 30 Neo4j Bloom Otro producto externo a Neo4j que permite la visualización de grafos es Bloom. Opera con licencia comercial o de forma gratuita con Neo4j Desktop siempre que sea un único usuario el que lo use. Bloom fue diseñada para que los analistas de negocios y otros no desarrolladores interactúen con los datos almacenados en la base de datos de gráficos sin escribir ningún código. Los usuarios pueden utilizar el lenguaje natural para consultar la base de datos y explorar patrones, clústeres y recorridos en sus datos gráficos. Permite, a su vez, crear diferentes disecciones del gráfico (perspectivas) que permiten a los usuarios ver diferentes aspectos y porciones de datos del gráfico para su posterior análisis. Consulta la documentación oficial de Neo4j para encontrar referencias sobre esta © Universidad Internacional de La Rioja (UNIR) herramienta, su enlace aquí. Figura 23. Visualización de la base de datos creada de la web de Neo4j. Consulta aquí más herramientas útiles para la visualización de los grafos. Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 31 8.8. Caso práctico El siguiente caso práctico está relacionado con el análisis de datos para la detección de fraude. Para ello, el estudiante irá ejecutando una serie de instrucciones con el fin de mostrarle cómo es posible construir un escenario donde, a través de CQL, se pueden ejecutar consultas que buscan relaciones o patrones en los datos con características puntuales, en este caso: indicios de fraude con tarjetas de crédito. Importante: la idea principal de este ejemplo fue tomado de la base de casos públicos de Neo4j. El autor de este caso en concreto es Jean Villedieu. ¡Manos a la obra! Paso 1: con las siguientes instrucciones crea los nodos Persona necesarios para el análisis. CREATE (Pablo:Persona {id:'1', nombre:'Pablo', sexo:'hombre', edad:'50'}) CREATE (Jairo:Persona {id:'2', nombre:'Jairo', sexo:'hombre', edad:'48'}) CREATE (Daniel:Persona {id:'3', nombre:'Daniel', sexo:'hombre', edad:'23'}) CREATE (Marcos:Persona {id:'4', nombre:'Marcos', sexo:'hombre', edad:'30'}) CREATE (John:Persona {id:'5', nombre:'John', sexo:'hombre', edad:'31'}) CREATE (Zoila:Persona {id:'6', nombre:'Zoila', sexo:'mujer', edad:'52'}) CREATE (Maria:Persona {id:'7', nombre:'Maria', sexo:'mujer', edad:'23'}) CREATE (Isabel:Persona {id:'8', nombre:'Isabel', sexo:'mujer', edad:'58'}) CREATE (Patricia:Persona {id:'9', nombre:'Patricia', sexo:'mujer', © Universidad Internacional de La Rioja (UNIR) edad:'51'}) CREATE (Marina:Persona {id:'10', nombre:'Marina', sexo:'mujer', edad:'37'}) Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 32 Paso 2: con las siguientes instrucciones crea los nodos Comercio. CREATE (Amazon:Comercio {id:'11', nombre:'Amazon', calle:'2626 Wilkinson Court', direccion:'San Bernardino, CA 92410'}) CREATE (Abercrombie:Comercio {id:'12', nombre:'Abercrombie', calle:'4355 Walnut Street', edad:'San Bernardino, CA 92410'}) CREATE (Wallmart:Comercio {id:'13', nombre:'Wallmart', calle:'2092 Larry Street', edad:'San Bernardino, CA 92410'}) CREATE (MacDonalds:Comercio {id:'14', nombre:'MacDonalds', calle:'1870 Caynor Circle', edad:'San Bernardino, CA 92410'}) CREATE (American_Apparel:Comercio {id:'15', nombre:'American Apparel', calle:'1381 Spruce Drive', edad:'San Bernardino, CA 92410'}) CREATE (Just_Brew_It:Comercio {id:'16', nombre:'Just Brew It', calle:'826 Anmoore Road', edad:'San Bernardino, CA 92410'}) CREATE (Justice:Comercio {id:'17', nombre:'Justice', calle:'1925 Spring Street', edad:'San Bernardino, CA 92410'}) CREATE (Sears:Comercio {id:'18', nombre:'Sears', calle:'4209 Elsie Drive', edad:'San Bernardino, CA 92410'}) CREATE (Soccer_for_the_City:Comercio {id:'19', nombre:'Soccer for the City', calle:'86 D Street', edad:'San Bernardino, CA 92410'}) CREATE (Sprint:Comercio {id:'20', nombre:'Sprint', calle:'945 Kinney Street', edad:'San Bernardino, CA 92410'}) CREATE (Starbucks:Comercio {id:'21', nombre:'Starbucks', calle:'3810 Apple Lane', edad:'San Bernardino, CA 92410'}) CREATE (Subway:Comercio {id:'22', nombre:'Subway', calle:'3778 Tenmile Road', edad:'San Bernardino, CA 92410'}) CREATE (Apple_Store:Comercio {id:'23', nombre:'Apple Store', calle:'349 Bel Meadow Drive', edad:'Kansas City, MO 64105'}) CREATE (Urban_Outfitters:Comercio {id:'24', nombre:'Urban Outfitters', calle:'99 Strother Street', edad:'Kansas City, MO 64105'}) CREATE (RadioShack:Comercio {id:'25', nombre:'RadioShack', calle:'3306 © Universidad Internacional de La Rioja (UNIR) Douglas Dairy Road', edad:'Kansas City, MO 64105'}) CREATE (Macys:Comercio {id:'26', nombre:'Macys', calle:'2912 Nutter Street', edad:'Kansas City, MO 64105'}) Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 33 Paso 3: crea las siguientes relaciones entre personas y comercios. CREATE (Pablo)-[:COMPRO_EN {pago:'986', fecha:'4/17/2014', estado: {pago:'239', fecha:'5/15/2014', estado: {pago:'475', fecha:'3/28/2014', estado: {pago:'654', fecha:'3/20/2014', estado: {pago:'196', fecha:'7/24/2014', estado: {pago:'502', fecha:'4/9/2014', estado: {pago:'848', fecha:'5/29/2014', estado: {pago:'802', fecha:'3/11/2014', estado: {pago:'203', fecha:'3/27/2014', estado: {pago:'35', fecha:'1/23/2014', estado: {pago:'605', fecha:'1/27/2014', estado: {pago:'62', fecha:'9/17/2014', estado: {pago:'141', fecha:'11/14/2014', estado: {pago:'134', fecha:'4/14/2014', estado: {pago:'336', fecha:'4/3/2014', estado: {pago:'964', fecha:'3/22/2014', estado: {pago:'430', fecha:'8/10/2014', estado: {pago:'11', fecha:'9/4/2014', estado: 'Indiscutible'}]->(Just_Brew_It) CREATE (Pablo)-[:COMPRO_EN 'Indiscutible'}]->(Starbucks) CREATE (Pablo)-[:COMPRO_EN 'Indiscutible'}]->(Sears) CREATE (Pablo)-[:COMPRO_EN 'Indiscutible'}]->(Wallmart) CREATE (Jairo)-[:COMPRO_EN 'Indiscutible'}]->(Soccer_for_the_City) CREATE (Jairo)-[:COMPRO_EN 'Indiscutible'}]->(Abercrombie) CREATE (Jairo)-[:COMPRO_EN 'Indiscutible'}]->(Wallmart) CREATE (Jairo)-[:COMPRO_EN 'Indiscutible'}]->(Amazon) CREATE (Jairo)-[:COMPRO_EN 'Indiscutible'}]->(Subway) CREATE (Daniel)-[:COMPRO_EN 'Indiscutible'}]->(MacDonalds) CREATE (Daniel)-[:COMPRO_EN 'Indiscutible'}]->(MacDonalds) CREATE (Daniel)-[:COMPRO_EN 'Indiscutible'}]->(Soccer_for_the_City) CREATE (Daniel)-[:COMPRO_EN 'Indiscutible'}]->(Amazon) CREATE (Marcos)-[:COMPRO_EN 'Indiscutible'}]->(Amazon) CREATE (Marcos)-[:COMPRO_EN © Universidad Internacional de La Rioja (UNIR) 'Indiscutible'}]->(American_Apparel) CREATE (Marcos)-[:COMPRO_EN 'Indiscutible'}]->(Wallmart) CREATE (Marcos)-[:COMPRO_EN 'Indiscutible'}]->(Sears) CREATE (Marcos)-[:COMPRO_EN 'Indiscutible'}]->(Soccer_for_the_City) Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 34 CREATE (John)-[:COMPRO_EN {pago:'545', fecha:'10/6/2014', estado: {pago:'457', fecha:'10/15/2014', estado: {pago:'468', fecha:'7/29/2014', estado: {pago:'768', fecha:'11/28/2014', estado: fecha:'3/12/2014', estado: 'Indiscutible'}]->(Soccer_for_the_City) CREATE (John)-[:COMPRO_EN 'Indiscutible'}]->(Sprint) CREATE (John)-[:COMPRO_EN 'Indiscutible'}]->(Justice) CREATE (John)-[:COMPRO_EN 'Indiscutible'}]->(American_Apparel) CREATE (John)-[:COMPRO_EN {pago:'921', 'Indiscutible'}]->(Just_Brew_It) CREATE (Zoila)-[:COMPRO_EN {pago:'740', fecha:'12/15/2014', {pago:'510', fecha:'11/27/2014', estado:'Indiscutible'}]->(MacDonalds) CREATE (Zoila)-[:COMPRO_EN estado:'Indiscutible'}]->(Abercrombie) CREATE (Zoila)-[:COMPRO_EN {pago:'414', fecha:'1/20/2014', estado:'Indiscutible'}]->(Just_Brew_It) CREATE (Zoila)-[:COMPRO_EN {pago:'721', fecha:'7/17/2014', estado:'Indiscutible'}]->(Amazon) CREATE (Zoila)-[:COMPRO_EN {pago:'353', fecha:'10/25/2014', {pago:'681', fecha:'12/28/2014', {pago:'87', fecha:'2/19/2014', {pago:'533', fecha:'8/6/2014', estado:'Indiscutible'}]->(Subway) CREATE (Maria)-[:COMPRO_EN estado:'Indiscutible'}]->(Sears) CREATE (Maria)-[:COMPRO_EN estado:'Indiscutible'}]->(Wallmart) CREATE (Maria)-[:COMPRO_EN estado:'Indiscutible'}]->(American_Apparel) CREATE (Maria)-[:COMPRO_EN {pago:'723', fecha:'1/8/2014', estado:'Indiscutible'}]->(American_Apparel) CREATE (Maria)-[:COMPRO_EN {pago:'627', fecha:'5/20/2014', estado:'Indiscutible'}]->(Just_Brew_It) CREATE (Isabel)-[:COMPRO_EN {pago:'74', fecha:'9/4/2014', estado:'Indiscutible'}]->(Soccer_for_the_City) © Universidad Internacional de La Rioja (UNIR) CREATE (Isabel)-[:COMPRO_EN {pago:'231', fecha:'7/12/2014', {pago:'924', fecha:'10/4/2014', estado:'Indiscutible'}]->(Wallmart) CREATE (Isabel)-[:COMPRO_EN estado:'Indiscutible'}]->(Soccer_for_the_City) CREATE (Isabel)-[:COMPRO_EN {pago:'742', fecha:'8/12/2014', estado:'Indiscutible'}]->(Just_Brew_It) CREATE (Patricia)-[:COMPRO_EN {pago:'276', fecha:'12/24/2014', estado:'Indiscutible'}]->(Soccer_for_the_City) Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 35 CREATE (Patricia)-[:COMPRO_EN {pago:'66', fecha:'4/16/2014', {pago:'467', fecha:'12/23/2014', estado:'Indiscutible'}]->(Starbucks) CREATE (Patricia)-[:COMPRO_EN estado:'Indiscutible'}]->(MacDonalds) CREATE (Patricia)-[:COMPRO_EN {pago:'830', fecha:'3/13/2014', estado:'Indiscutible'}]->(Sears) CREATE (Patricia)-[:COMPRO_EN {pago:'240', fecha:'7/9/2014', estado:'Indiscutible'}]->(Amazon) CREATE (Patricia)-[:COMPRO_EN {pago:'164', fecha:'12/26/2014', estado:'Indiscutible'}]->(Soccer_for_the_City) CREATE (Marina)-[:COMPRO_EN {pago:'630', fecha:'10/6/2014', {pago:'19', fecha:'7/29/2014', {pago:'352', fecha:'12/16/2014', estado:'Indiscutible'}]->(MacDonalds) CREATE (Marina)-[:COMPRO_EN estado:'Indiscutible'}]->(Abercrombie) CREATE (Marina)-[:COMPRO_EN estado:'Indiscutible'}]->(Subway) CREATE (Marina)-[:COMPRO_EN {pago:'147', fecha:'8/3/2014', {pago:'91', fecha:'6/29/2014', {pago:'1021', fecha:'7/18/2014', estado:'Indiscutible'}]->(Amazon) CREATE (Marina)-[:COMPRO_EN estado:'Indiscutible'}]->(Wallmart) CREATE (Pablo)-[:COMPRO_EN estado:'Cuestionable'}]->(Apple_Store) CREATE (Pablo)-[:COMPRO_EN {pago:'1732', fecha:'5/10/2014', estado:'Cuestionable'}]->(Urban_Outfitters) CREATE (Pablo)-[:COMPRO_EN {pago:'1415', fecha:'4/1/2014', estado:'Cuestionable'}]->(RadioShack) CREATE (Pablo)-[:COMPRO_EN {pago:'1849', fecha:'12/20/2014', estado:'Cuestionable'}]->(Macys) CREATE (Marcos)-[:COMPRO_EN {pago:'1914', fecha:'7/18/2014', estado:'Cuestionable'}]->(Apple_Store) CREATE (Marcos)-[:COMPRO_EN {pago:'1424', fecha:'5/10/2014', estado:'Cuestionable'}]->(Urban_Outfitters) © Universidad Internacional de La Rioja (UNIR) CREATE (Marcos)-[:COMPRO_EN {pago:'1721', fecha:'4/1/2014', estado:'Cuestionable'}]->(RadioShack) CREATE (Marcos)-[:COMPRO_EN {pago:'1003', fecha:'12/20/2014', estado:'Cuestionable'}]->(Macys) CREATE (Isabel)-[:COMPRO_EN {pago:'1149', fecha:'7/18/2014', estado:'Cuestionable'}]->(Apple_Store) CREATE (Isabel)-[:COMPRO_EN {pago:'1152', fecha:'8/10/2014', estado:'Cuestionable'}]->(Urban_Outfitters) Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 36 CREATE (Isabel)-[:COMPRO_EN {pago:'1884', fecha:'8/1/2014', estado:'Cuestionable'}]->(RadioShack) CREATE (Isabel)-[:COMPRO_EN {pago:'1790', fecha:'12/20/2014', estado:'Cuestionable'}]->(Macys) CREATE (Marina)-[:COMPRO_EN {pago:'1925', fecha:'7/18/2014', estado:'Cuestionable'}]->(Apple_Store) CREATE (Marina)-[:COMPRO_EN {pago:'1374', fecha:'7/10/2014', estado:'Cuestionable'}]->(Urban_Outfitters) CREATE (Marina)-[:COMPRO_EN {pago:'1368', fecha:'7/1/2014', estado:'Cuestionable'}]->(RadioShack) CREATE (Marina)-[:COMPRO_EN {pago:'1816', fecha:'12/20/2014', estado:'Cuestionable'}]->(Macys) Paso 4: ejecuta la siguiente instrucción. ¿Funciona? ¿Qué arroja la consulta? MATCH (victima:Persona)-[r:COMPRO_EN]->(comercio) WHERE r.estado = "Cuestionable" RETURN victima.nombre AS `Cliente `, comercio.nombre AS `Tienda`, r.pago AS Pago, r.fecha AS `Fecha Transaccion` ORDER BY ` Fecha Transaccion` DESC Paso 5: ejecuta la siguiente instrucción. ¿Funciona? ¿Qué arroja esta otra consulta? MATCH (victima:Persona)-[r:COMPRO_EN]->(comercio) WHERE r.estado = "Cuestionable" MATCH (victima)-[t:COMPRO_EN]->(otrocomercio) WHERE t.estado = "Indiscutible" AND t.fecha < r.fecha WITH victima, otrocomercio, t ORDER BY t.fecha DESC RETURN victima.nombre AS `Cliente`, otrocomercio.nombre AS `Tienda `, t.pago AS Pago, t.fecha AS `Fecha Transaccion ` © Universidad Internacional de La Rioja (UNIR) ORDER BY ` Fecha Transaccion` DESC Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 37 Paso 6: ejecuta la siguiente instrucción. ¿Funciona? ¿Qué arroja esta otra consulta? MATCH (victima:Persona)-[r:COMPRO_EN]->(comercio) WHERE r.estatus = "Cuestionable" MATCH (victima)-[t:COMPRO_EN]->(otrocomercio) WHERE t.estado = "Indiscutible" AND t.fecha < r.fecha WITH victima, otrocomercio, t ORDER BY t.fecha DESC RETURN DISTINCT otrocomercio.nombre AS `Tienda Sospechosa`, count(DISTINCT t) AS Count, collect(DISTINCT victima.nombre) AS Victimas ORDER BY Count DESC Comparte tu avance con el resto de la clase, para ello publica en el Foro de la asignatura (en un único mensaje) tu interpretación de cada una de las consultas. Después de leer todo el tema, accede a la lección titulada «Uso de Neo4j». En ella se hace un repaso sobre los aspectos más relevantes de la base de datos de grafos y sobre Neo4j. Mediante un caso práctico se describen los nodos, las relaciones y las propiedades. Vídeo 1. Uso de Neo4j. © Universidad Internacional de La Rioja (UNIR) Accede al vídeo a través del aula virtual Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 38 8.9. Referencias bibliográficas Fernandes, D., y Bernardino, J. (2018). Graph Databases Comparison: AllegroGraph, ArangoDB, InfiniteGraph, Neo4j, and OrientDB. En J. Bernardino y C. Quix (eds.), Proceedings of the 7th International Conference on Data Science, Technology and Applications (DATA 2018) (pp. 373-380). SCITEPRESS. Guia, J., Gonçalves, V., y Bernardino, J. (2017). Graph databases: Neo4j analysis. En S. Hammoudi, M. Smialek, O. Camp y J. Filipe (eds.), Proceedings of the 19th International Conference on Enterprise Information Systems (Volume 3) (pp. 351-356). ICEIS. Hölsch, J., Schmidt, T., y Grossniklaus, M. (2017). On the performance of analytical and pattern matching graph queries in Neo4j and a relational database. En EDBT/ICDT 2017 Joint Conference: 6th International Workshop on Querying Graph Structured Data (GraphQ). http://ceur-ws.org/Vol-1810/GraphQ_paper_01.pdf Lal, M. (2015). Neo4j graph data modeling. Packt Publishing. Webber, J., y Robinson, I. (2018). A programmatic introduction to Neo4j. Addison- © Universidad Internacional de La Rioja (UNIR) Wesley Professional. Métodos de Captura y Almacenamiento de los Datos Tema 8. Ideas clave 39 A fondo Documentación oficial de Neo4j: características generales de la base de datos Neo4j. (2021). The Neo4j Getting Started Guide v4.2. Neo4j docs [Página web]. https://neo4j.com/docs/getting-started/current/ Neo4j es una base de datos que cuenta con una documentación bastante completa y detallada. En su página web la documentación de la herramienta se enfoca en tres aspectos claves: introducción a Neo4j, conceptos de grafos y el lenguaje de consultas CQL. Tutorial de Neo4j. Introducción: grahp database Tutorialspoint. (2021). Learn Neo4j: graph database [Página web]. https://www.tutorialspoint.com/neo4j/index.htm El equipo de Tutorialspoint tiene en su sitio web un tutorial bastante completo de Neo4j, el cual cuenta con muchos ejemplos prácticos que permiten conocer la © Universidad Internacional de La Rioja (UNIR) herramienta de forma amena y sencilla. Métodos de Captura y Almacenamiento de los Datos Tema 8. A fondo 40 Introduction to Neo4j: a hands-on crash course Neo4j. (26 de noviembre de 2020). Intro to Neo4j for Developers with Lju [Archivo de vídeo]. https://www.youtube.com/watch?v=n2wgFTTZGps En el siguiente vídeo es posible ver una introducción a Neo4j y al uso de grafos para representar la información. El vídeo lo ha elaborado parte del equipo de desarrolladores de Neo4j. Casos de uso basados en Neo4j: puesta en práctica de la teoría de grafos en escenarios de negocio Neo4j. (2021). Graph Database Use Cases [Página web]. https://neo4j.com/use-cases/ La mejor manera de comprender el uso que se le puede dar a las bases de datos de grafos es mediante ejemplos de casos que muestren el potencial de este tipo de herramientas. La web oficial de Neo4j dispone de varios casos de uso que pueden ser © Universidad Internacional de La Rioja (UNIR) analizados para aprender el dominio de los grafos. Consulta dichos casos y explora los datos y consultas que utilizan para sacar partido a la información representada con nodos, relaciones y propiedades. Métodos de Captura y Almacenamiento de los Datos Tema 8. A fondo 41 Graph Databases: libro oficial recomendado por Neo4j para el estudio de grafos Neo4j. (2021). Neo4j Download Center [Página web]. https://neo4j.com/downloadcenter/#community Uno de los mejores libros para aprender el concepto de grafos y la utilidad que tienen este tipo de representación de los datos dentro de distintos casos de uso en las organizaciones. Es posible obtener el libro © Universidad Internacional de La Rioja (UNIR) al descargar Neo4j Community. Métodos de Captura y Almacenamiento de los Datos Tema 8. A fondo 42 Test 1. ¿Cuáles son los principales componentes de un grafo? A. El esquema, los nodos, las relaciones y las propiedades. B. Nodos, relaciones y propiedades. C. Nodos y relaciones, las propiedades están implícitas en cada uno. D. Ninguna de las anteriores es correcta. 2. ¿Qué afirmación define las características claves del modelo de grafos? A. El modelo representa datos en nodos, relaciones y propiedades. B. Las propiedades son pares clave-valor. C. Las relaciones conectan los nodos. D. Todas las anteriores son correctas. 3. ¿Qué es CQL? A. El lenguaje de consulta para Neo4j Graph Database. B. Un comando para insertar y borrar nodos y relaciones. C. Un comando enfocado a encontrar solo nodos dentro de un grafo. D. Todas las afirmaciones anteriores son correctas. 4. ¿Qué hace la siguiente instrucción: MATCH (n) DETACH DELETE n? A. Limpia la base de datos. B. Borra todos los nodos y relaciones de la base de datos. C. Borra solo los nodos existentes. © Universidad Internacional de La Rioja (UNIR) D. Borra los nodos y sus propiedades. 5. La cláusula que borra etiquetas y propiedades es: A. DELETE. B. UNWIND. C. REMOVE. D. DROP. Métodos de Captura y Almacenamiento de los Datos Tema 8. Test 43 6. ¿Qué significa n en la siguiente instrucción: MATCH (n) RETURN n.name, n.runs ORDER BY n.runs? A. Cualquier nodo. B. Cualquier relación. C. Cualquier relación con las propiedades name y runs. D. Los nodos cuya propiedad name tiene un valor. 7. ¿La instruction MATCH (n) RETURN n.name order by n.name qué retorna? A. Un grafo con los nodos n. B. Un listado. C. Un listado y un grafo. D. Una lista ordenada de las propiedades nombre de todos los nodos. 8. ¿La instrucción CREATE (Pepe)-[r:CANTA_EN{name=”Padro”}]-(Concierto) genera algún tipo de error al ser ejecutada? A. No, crea los nodos Pepe y Concierto y su relación CANTA_EN. B. Sí, la propiedad de la relación es incorrecta. C. Sí, no se indica una dirección o sentido de la relación. D. Todas las respuestas anteriores son correctas. 9. La instrucción CREATE (Juan)-[r:HIJO_DE]->(Alma) crea: A. Los nodos Juan y Alma y una relación entre ellos llamada HIJO_DE. B. Una relación entre los nodos Juan y Alma llamada HIJO_DE. C. Una relación saliente de Juan hacia Ana llamada HIJO_DE. © Universidad Internacional de La Rioja (UNIR) D. Ninguna de las anteriores es correcta Métodos de Captura y Almacenamiento de los Datos Tema 8. Test 44 10. Indica qué hace la siguiente instrucción: MATCH (a:Jugador), (b:Juego) WHERE a.name = "Rabino" AND b.name {partida:1, victorias:5}]->(b) = "Casino" CREATE (a)-[r:TRABAJA_EN RETURN a,b A. Crea los nodos a y b y asigna la relación TRABAJA_EN. B. Crea la relación TRABAJA_EN sobre los nodos a y b. C. Busca los nodos a y b que cumplan la condición del WHERE y luego asigna la relación TRABAJA_EN entre ellos. © Universidad Internacional de La Rioja (UNIR) D. Todas las respuestas anteriores son correctas. Métodos de Captura y Almacenamiento de los Datos Tema 8. Test 45