una tutorial datos crear como modeling node-neo4j neo4j

modeling - tutorial - neo4j-etiquetas vs propiedades vs relación+nodo



como crear una base de datos en neo4j (2)

Si debe usar una propiedad, una etiqueta o un nodo para la categoría, dependerá de cómo vaya a consultar los datos.

(Asumiré aquí que tiene un conjunto bastante pequeño y bastante fijo de categorías).

Utilice una propiedad si no va a consultar por categoría, pero solo tiene que devolver la categoría de un nodo que se haya encontrado por otros medios. (Por ejemplo: ¿cuál es la categoría del artículo con sku 001 ?)

Use una etiqueta si necesita consultar por categoría. (Por ejemplo: ¿cuáles son todos los alimentos que cuestan menos de $ 10?)

Use un nodo si necesita atravesar la categoría sin saber qué es. (Por ejemplo: ¿cuáles son los diez artículos más populares en la misma categoría que uno que el usuario ha elegido?)

Cualquier regla de oro sobre dónde usar la propiedad etiqueta vs nodo vs relación + nodo.

Pongamos un ejemplo, digamos que tengo una tienda y quiero poner mis productos en neo4j. Su identificador es el producto sku, y también quiero tener una clasificación en ellos, ya que esta es para ropa, alimentos, productos electrónicos y entiendes la idea. Tendré una búsqueda gratuita en mi gráfico, como el usuario puede buscar cualquier cosa, y devolvería todas las cosas relacionadas con esa cadena de búsqueda.

¿Sería mejor usar:

  1. Tengo un nodo con sku 001 , y lo etiquetaré con una etiqueta de Food .
  2. Tengo un nodo con sku 001 , y tengo una propiedad en este nodo llamada category:"Food"
  3. Tengo un nodo con sku 001 , y crearé otro nodo para la Food , y crearé una relación de " category " para relacionarlos.

He leído que si está buscando una propiedad, es mejor como relación + nodo, ya que recorrer es mucho más rápido que buscar propiedades de nodo.

TIA


Esta publicación del blog también puede ser útil debido a la referencia que contiene.

Modelé la ''relación'' de 4 maneras diferentes ...

  • Usando un tipo de relación específico (node)-[:HAS_ADDRESS]->(address)
  • Usar un tipo de relación genérico y luego filtrar por etiqueta de nodo final (node)-[:HAS]->(address:Address)
  • Usar un tipo de relación genérico y luego filtrar por propiedad de relación (node)-[:HAS {type:“address”}]->(address)
  • Usando un tipo de relación genérico y luego filtrando por propiedad de nodo final (node)-[:HAS]->(address {type: “address”})

<...>

Así que en resumen ... relaciones específicas #ftw!