Neo4j II (Cosas)

Siguiendo con Neo4j, ahora vamos a ver las distintas “cosas” que corren aquí.

Lo primero que hay que entender es que en las BD de grafos, lo que se guarda son cosas. Por ejemplo, en las BDs relacionales lo que guardas son tuplas de datos, que a su vez están almacenadas en tablas, que a su vez interactúan con otras tablas. En estricto rigor, una tupla de datos en una tabla nunca se relaciona directamente con otra tupla en otra tabla. Es el motor de BD el que se encarga de hacer dicha relación por medio de JOINS. Aquí no, una cosa está directamente relacionada con otra cosa, que a su vez se puede relacionar con otra cosa y así.

Con eso en mente, definamos las cosas.

Nodos

Los nodos son las cosas básicas. Un nodo (o arista) representa una entidad o un tipo de dato complejo.

Un nodo representa una instancia de algo. Por ejemplo, en una BD relacional existe la tabla persona que contiene todas las personas. Aquí no. No existe el nodo persona, pero si existe el nodo Mario, el nodo Juanito, el nodo Pepito, etc.

Los nodos tienen propiedades, pueden agruparse por etiquetas y se relacionan entre ellos:

Propiedades

Las cuales representan atributos o metadatos de algún nodo. Ya que cada nodo es una instancia de alguna entidad, es el nodo el que tiene las propiedades NO la entidad. Las propiedades pueden ser distintas entre nodos. Por ejemplo, un nodo puede tener las propiedades: edad, color_pelo ; mientras que otro puede tener: nacimiento, color_ojos, altura.

Las propiedades son de estilo llave: valor. La llave es key sensitive y los tipos de datos que tiene son: string, number, bool. Además, puedes tener un array de dichos tipos. Ya que un nodo puede o no tener alguna propiedad que otro nodo tenga, el tipo de dato null no existe.

Etiquetas

El nodo Marito, Juanito y Pepito son Personas. Entonces, podríamos etiquetarlos como tales. No es obligación, ya que un nodo puede tener 0..n . Las etiquetas también son key-sensitive

Relaciones

Existen para conectar nodos. Tienen un nombre y una dirección (origen-final), de modo que le dan la estructura al gráfico. Además, le dan un contexto semántico a un nodo.

Al conectar nodos, no todas las Personas van a tener las mismas relaciones. Cada nodo puede tener 1..n

Las relaciones pueden tener propiedades, las cuales se usan para darle una magnitud o peso a la relación.


Ahora que tenemos los elementos básicos, podemos comenzar a modelar.

Acerca de MaritoCares

Ingeniero Informático. Con tendencias a la programación en [C#, VB].NET, Java(Web principalmente...), PHP, JavaScript, algo mínimo de [ruby, python], y el clásico C.
Esta entrada fue publicada en Bases de Datos, Neo4j y etiquetada . Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s