Introducción a la base de datos de grafos Neo4j

Una vez allí, en 2005, me cansé de la idea de crear una base de conocimientos que no tuviera una estructura de tablas clara y que funcionara según el principio de nodos con nombre y enlaces entre ellos. La idea era que el nodo en sí mismo no llevara ninguna información y toda la información establecería su entorno y relaciones. Luego escribí un pequeño repositorio de código de nodos y enlaces, así como operaciones simples en ellos, pero no almacenar información en los nodos era demasiado difícil y estoy atado a cada nodo con una propiedad de texto (en Neo4j en un nudo, tú puede quemar muchas propiedades de diferentes tipos y luego referirse a ellas por su nombre).

Este motor se escribió originalmente en C#, luego se reescribió varias veces, pero poco a poco perdí el interés por él. Recordó que su desarrollo recientemente tropezó con Neo4j, y quería ver algunas ideas más detalladas.

Instalé Neo4j en Dev, resultó que el front-end integrado tiene una interfaz web y está disponible en http://localhost:7474

Después de la transición a la dirección, se me pidió que ingresara un nombre de usuario y una contraseña, y también insinué que hay un nombre de usuario predeterminado de crédito «node4j» y que la contraseña es la misma. Luego esperé la página de bienvenida, que tenía tres botones principales: Comenzar a aprender, Escribir código y Supervisar:

Lo primero que fui a la página y la unidad de monitoreo inmediatamente arriba de los botones agregó otra unidad en la que vi la base de datos de estadísticas (en la captura de pantalla logré agregar un nodo):

Resultó que la nueva información se agrega a la pantalla, tales bloques que se pueden quitar para arreglar, voltear, y el más antiguo falla.

En la parte superior estaba la línea de comando para ejecutar el lenguaje de consulta local similar a SQL solo que ahora se llama «Lenguaje de consulta cifrado». Inmediatamente quise agregar algo más a la base de datos, pero no tan difícil como se propuso en el ejemplo integrado «reproducir gráfico de película»: había una página completa de comandos, que aparentemente creaba un montón de entidades con propiedades y relaciones entre ellos. En su lugar, fui al enlace a la descripción del comando CREATE y al ejemplo como CREATE (n), creando un solo nodo simple.

Luego, finalmente decidí encontrar dónde están los puertos prescritos en los que el servidor está esperando la conexión para conectarse a virtualke desde su navegador en lugar del navegador local virtualke. Se consideró necesario descomentar la línea.

#org.neo4j.server.webserver.address=0.0.0.0

en el archivo conf/neo4j-server.properties

Luego traté de crear múltiples nodos:

CREATE (a:Country {name:'Украина'}),(b:Country {name:'Россия'}),(c:Country {name:'Беларусь'}),(d:Country {name:'Казахстан'})

Tengo:

Added 3 labels, created 4 nodes, set 4 properties, statement executed in 664 ms.

Cuando quería vincular la proporción del país de ‘Frontera’, es decir, especificar qué frontera con lo que resultó que la actitud de Neo4j solo puede ser unidireccional, pero desde la base de datos se puede hacer ignorando la dirección de la muestra. Tuve que aguantarlo, y hasta establecer vínculos casuales de dirección:

MATCH (a:Country {name:'Украина'}),(b:Country {name:'Россия'}),(c:Country {name:'Казахстан'}),(d:Country {name:'Беларусь'}) CREATE (a)-[r:Border]->(b),(a)-[t:Border]->(d),(b)-[y:Border]->(c),(d)-[u:Border]->(b)

Aquí, primero en las variables a, b, c, d para seleccionar todo el país deseado y luego establecer la conexión entre ellos etiquetados (Etiqueta) «Border». Admire para obtener una imagen, puede seleccionar todos los enlaces «Border»

MATCH ()-[r:Border]-() RETURN r

O todos los condados:

MATCH (a:Country) RETURN a

Después de practicar, agregué algunos países más y los enlaces entre ellos, fue posible obtener tal imagen:

Se dice que en el gráfico debido aunque atraen nodos relacionados, pero aún así a menudo no se alojan de la manera más óptima, y si mueven la mano, puede obtener una buena ubicación que antes.

Me pareció que el renderizador incorporado no debería ser el único, y buscando un poco, encontré algunos ejemplos de visualizaciones:

http://neo4j.com/developer/guide-data-visualization/#_presentation_svg_based_graph_interaction

Curiosamente, la conexión también puede tener propiedades como un nodo, pero no me pareció un límite muy claro en la cantidad de tipos de enlaces (una fuente 32768 y la otra 65536). En mi base de datos, los nodos establecieron tipos de vínculos, lo que permitió, si era necesario, construir una jerarquía de tipos de relaciones y tener más variedades.

The shell of my database looks like this:

Existía un árbol común de esencias, así como formularios separados para su uso con ciertos tipos de entidades, como el personal (de hecho, la guía telefónica), el catálogo de CD. Cualquier cosa se puede ver una lista o un árbol. Se supuso que me desarrollo como resultado de alguna forma conveniente de almacenamiento de conocimientos que pueden entrelazarse fácilmente entre sí y que no tienen una estructura uniforme clara. Ahora, por supuesto, no creo que necesariamente haya que desarrollar una base de datos desde cero, y era muy posible que una base, Firebird, MySQL e implementara un mecanismo para almacenar / mostrar nodos y enlaces entre ellos en forma de tablas. Ahora uno de sus experimentos, y de hecho lo hago.

Deja un comentario

Tu dirección de correo electrónico no será publicada.