neo4j: представляет свойство объекта вместо связи в ссылках между объектами - PullRequest
0 голосов
/ 30 июня 2018

Я хочу использовать neo4j для представления сетей, чтобы сделать красивую графику, подобную этой: enter image description here

Вот код, используемый до сих пор:

CREATE (router1:Router {name:'router1', defaultgw:'192.168.123.1'})
CREATE (network1:Network {name:'network1', cidr:'192.168.123.0/24'})
CREATE (server1:Server {hostname:'server1', ip:'192.168.123.7'})
CREATE (server2:Server {hostname:'server2', ip:'192.168.123.9'})
CREATE
(router1)-[:CONNECTED_TO {}]->(network1),
(network1)-[:CONNECTED_TO {}]->(server1),
(network1)-[:CONNECTED_TO {}]->(server2) 
WITH router1 AS r
  MATCH (r)-[:CONNECTED_TO]->(n)-[:CONNECTED_TO]->(s) RETURN r,n,s
;

Существует ли способ представления подсети, используемой между маршрутизатором и сетью, и IP-адреса сервера в соединении между серверами и связанной сетью вместо соответствующей, но бессмысленной CONNECTED_TO?

Я пытался определить отношения как:

CREATE (router1)-[:CONNECTED_TO {'192.168.123.0/24'}]->(network1)
or
CREATE (router1)-[:CONNECTED_TO {network1.cidr}]->(network1)

безуспешно. Это вообще возможно?

Большое спасибо за вашу помощь

1 Ответ

0 голосов
/ 30 июня 2018

[Изменено]

Каждому свойству нужно имя. Например, cidr:

CREATE (router1)-[:CONNECTED_TO {cidr: '192.168.123.0/24'}]->(network1)

Вот полный запрос:

CREATE (router1:Router {name:'router1', defaultgw:'192.168.123.1'})
CREATE (network1:Network {name:'network1', cidr:'192.168.123.0/24'})
CREATE (server1:Server {hostname:'server1', ip:'192.168.123.7'})
CREATE (server2:Server {hostname:'server2', ip:'192.168.123.9'})
CREATE
  (router1)-[:CONNECTED_TO {cidr: '192.168.123.0/24'}]->(network1),
  (network1)-[:CONNECTED_TO {ip:'192.168.123.7'}]->(server1),
  (network1)-[:CONNECTED_TO {ip:'192.168.123.9'}]->(server2) 
WITH router1 AS r
  MATCH (r)-[:CONNECTED_TO]->(n)-[:CONNECTED_TO]->(s) RETURN r,n,s
;

Но добавление этого свойства в отношение может привести к хранению свойства в двух местах - что может быть расточительным, и если потребуется изменить значение свойства, это потребует дополнительных усилий для выполнения обновления в нескольких местах. Я бы посоветовал разместить недвижимость только в одном месте, причем решение будет зависеть от потребностей всех ваших вариантов использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...