Desde la versión 3.1.0-KickOff, en el Control Panel se ha pasado a denominar a las Ontologías como «Entidades». Esto no altera ninguna funcionalidad; simplemente se ha cambiado la nomenclatura para un mejor entendimiento del concepto.
Disponible desde la versión 4.2.0-Predator.
Introducción
En este post vamos a explicar cómo trabajar con entidades almacenadas sobre Nebula Graph, para los casos en los que se quiera trabajar con tecnologías de almacenamiento basadas en grafos.
Creación de la entidad
Para crear la entidad, tendremos que seleccionar la opción de ‘Crear entidad en base de datos de grafos’
En la primera pestaña rellenaremos los datos básicos sobre la entidad, que representará un espacio o space en Nebula Graph, es decir, ésta contendrá la definición de los vértices y aristas. Tendremos que elegir el número de particiones y réplicas para la entidad (space) que vamos a crear, por defecto a 15 y 1 respectivamente.
En la siguiente pestaña definiremos los vértices y aristas, a medida que agreguemos propiedades de ambas aparecerán en la tabla asociada.
A continuación pulsaremos en el botón crear.
Si accedemos al icono de ‘ver entidad’ (ojo) podremos ver reflejada la definición de vértices y aristas.
Introducir datos
Una vez creada la entidad, podemos ejecutar todo tipo de queries nGQL desde query tool.
Para este ejemplo crearemos los siguientes datos:
#VERTICES INSERT VERTEX player(name, age) VALUES "player100":("Tim Duncan", 42); INSERT VERTEX player(name, age) VALUES "player101":("Tony Parker", 36); INSERT VERTEX player(name, age) VALUES "player102":("LaMarcus Aldridge", 33); INSERT VERTEX player(name, age) VALUES "player103":("Michael Jordan", 52); INSERT VERTEX team(name) VALUES "team203":("Trail Blazers"), "team204":("Spurs"); #ARISTAS INSERT EDGE follow(degree) VALUES "player101" -> "player100":(95); INSERT EDGE follow(degree) VALUES "player101" -> "player102":(90); INSERT EDGE follow(degree) VALUES "player101" -> "player103":(70); INSERT EDGE follow(degree) VALUES "player102" -> "player100":(75); INSERT EDGE follow(degree) VALUES "player102" -> "player100":(75); INSERT EDGE follow(degree) VALUES "player103" -> "player101":(55); INSERT EDGE serve(start_year, end_year) VALUES "player101" -> "team204":(1999, 2018),"player102" -> "team203":(2006, 2015),"player103" -> "team203":(1990, 2022);
Con esto ya tendremos datos para realizar consultas.
Consultas
Como hemos dicho anteriormente, podemos realizar cualquier tipo de consulta en formato nGQL, veamos unos ejemplos:
FETCH PROP ON player "player100" YIELD properties(vertex) as player_properties;
GO FROM "player101" OVER follow YIELD id($$) as vid;
GO FROM "player101" OVER follow YIELD dst(edge) AS id | GO FROM $-.id OVER serve YIELD properties($$).name AS Team, properties($^).name AS Player;
Apificación
También podremos apificar la entidad para realizar consultas vía HTTP.
Cuando seleccionemos una entidad de tipo grafo para apificar, nos aparecerá únicamente una operación disponible.
Nebula Graph UI
Desde el listado de entidades, cuando una entidad esté almacenada en Nebula Graph, tendrá una opción de acceder a la UI de Nebula.
Al acceder, se nos abrirá una pestaña nueva, donde tendremos que introducir los siguientes datos de acceso:
Host: graphd:9669 Default credentials are: root / nebula
Y seleccionar la entidad/space en el combo:
Luego accederemos al Explorer para poder visualizar el grafo de nuestros datos dentro de la entidad.
Para visualizar un grafo inicial completo, podemos seleccionar el botón ‘Start with vertices', y después 'Import Sample’