Neo4j 实现一个简单的CMDB管理平台

news/2024/11/17 13:36:18/文章来源:https://www.cnblogs.com/jruing/p/18350748

简介

Neo4j是一个高性能的图形数据库管理系统,它使用图形模型来存储和查询数据。图形数据库与传统的关系型数据库不同,它们使用节点和边来表示数据实体和它们之间的关系,而不是使用表格和行,可以使用neo4j实现权限系统,知识图谱,cmdb等

部署

docker run -d --name=neo4j \--publish=7474:7474 --publish=7687:7687 \--volume=$HOME/neo4j/data:/data \--volume=$HOME/neo4j/logs:/logs \--volume=$HOME/neo4j/import:/var/lib/neo4j/import \--volume=$HOME/neo4j/plugins:/plugins \neo4j:latest

neo4j密码

docker logs neo4j 2>&1 | grep 'Initial password'

访问地址:http://ip:7474

创建节点

# ()表示一个node节点,n是一个别名,tag是标签,{}是该节点的属性及该属性对应的值,可以有多个不同属性,属性和标签可以忽略
create (n:tag {"property":"属性值"})

创建节点与节点关联关系

# 先匹配要建立关联关系的两个节点,其次才创建关联关系
# 栗子
match (p1:instance {property:"192.168.1.1"}),(p2:env {property:"测试环境"}) create (p1)-[r:envrel {relation:''}]->(p2);
# 先匹配出标签为`instance`,属性`property`的值为`192.168.1.1`以及标签为`env`,属性`property`的值为`测试环境`的两个节点,分别为p1和p2,创建p1指向p2的关联关系
`[r:envre {relation:''}]`:[]代表关联关系,r是一个别名,envre代表这个关联关系类型的标签。{}代表关联关系的属性,支持多个不同的属性

新增逻辑环境节点

Create (n:env {property:"生产环境"});
Create (n:env {property:"测试环境"});

新增主机实例节点

Create (n:instance {system:"Centos Linux",property:"192.168.1.1"});
Create (n:instance {system:"Centos Linux",property:"192.168.1.2"});
Create (n:instance {system:"Centos Linux",property:"192.168.1.3"});
Create (n:instance {system:"Centos Linux",property:"192.168.1.4"});
Create (n:instance {system:"Centos Linux",property:"192.168.1.5"});Create (n:instance {system:"Centos Linux",property:"192.168.2.1"});
Create (n:instance {system:"Ubuntu Linux",property:"192.168.2.2"});
Create (n:instance {system:"Centos Linux",property:"192.168.2.3"});
Create (n:instance {system:"SUSE Linux",property:"192.168.2.4"});
Create (n:instance {system:"Centos Linux",property:"192.168.2.5"});

创建主机与逻辑环境关联关系

#192.168.1.x段的ip归属于测试环境
#192.168.2.x段的ip归属于生产环境
match (p1:instance {property:"192.168.1.1"}),(p2:env {property:"测试环境"}) create (p1)-[r:envrel {relation:''}]->(p2);
match (p1:instance {property:"192.168.1.2"}),(p2:env {property:"测试环境"}) create (p1)-[r:envrel {relation:''}]->(p2);
match (p1:instance {property:"192.168.1.3"}),(p2:env {property:"测试环境"}) create (p1)-[r:envrel {relation:''}]->(p2);
match (p1:instance {property:"192.168.1.4"}),(p2:env {property:"测试环境"}) create (p1)-[r:envrel {relation:''}]->(p2);
match (p1:instance {property:"192.168.1.5"}),(p2:env {property:"测试环境"}) create (p1)-[r:envrel {relation:''}]->(p2);
match (p1:instance {property:"192.168.2.1"}),(p2:env {property:"生产环境"}) create (p1)-[r:envrel {relation:''}]->(p2);
match (p1:instance {property:"192.168.2.2"}),(p2:env {property:"生产环境"}) create (p1)-[r:envrel {relation:''}]->(p2);
match (p1:instance {property:"192.168.2.3"}),(p2:env {property:"生产环境"}) create (p1)-[r:envrel {relation:''}]->(p2);
match (p1:instance {property:"192.168.2.4"}),(p2:env {property:"生产环境"}) create (p1)-[r:envrel {relation:''}]->(p2);
match (p1:instance {property:"192.168.2.5"}),(p2:env {property:"生产环境"}) create (p1)-[r:envrel {relation:''}]->(p2);

新增应用服务节点

Create (n:service {servicetype:"application",property:"权限系统"});
Create (n:service {servicetype:"email",property:"邮件服务"});
Create (n:service {servicetype:"database",property:"Mysql"});
Create (n:service {servicetype:"application",property:"测试系统"});
Create (n:service {servicetype:"application",property:"oa系统"});

创建服务与主机关联关系

match (p1:service {property:"oa系统"}),(p2:instance {property:"192.168.2.1"}) create (p1)-[r:servicerel {relation:'隶属于'}]->(p2);
match (p1:service {property:"权限系统"}),(p2:instance {property:"192.168.2.2"}) create (p1)-[r:servicerel {relation:'隶属于'}]->(p2);
match (p1:service {property:"邮件服务"}),(p2:instance {property:"192.168.2.3"}) create (p1)-[r:servicerel {relation:'隶属于'}]->(p2);
match (p1:service {property:"Mysql"}),(p2:instance {property:"192.168.2.4"}) create (p1)-[r:servicerel {relation:'隶属于'}]->(p2);
match (p1:service {property:"测试系统"}),(p2:instance {property:"192.168.1.1"}) create (p1)-[r:servicerel {relation:'隶属于'}]->(p2);
match (p1:service {property:"oa系统"}),(p2:service {property:"Mysql"}) create (p1)-[r:depend {relation:'依赖于'}]->(p2);

匹配所有节点信息

列出所有节点及关联信息,这样可以很清晰的看出主机与服务及逻辑环境的关联关系

match (n)
return (n)

image-20240808171246708

匹配某个节点

match(n)
WHERE id(n) = <节点ID>
return n

匹配某个节点及与他关联的节点

match(n1)-[r]-(n2)
where id(n1)=15
return (n1),r,n2

image-20240808172909552

设置节点属性

# 为节点id为123的节点设置一个属性为name,值为John Doe
MATCH (n)
WHERE id(n) = 123
SET n.name = 'John Doe'

删除节点属性

# 移除节点id为123的name属性
MATCH (n)
WHERE id(n) = 123
REMOVE n.name

删除单个节点

注意:若该节点与其他节点有关联关系则会删除失败

MATCH (n)
WHERE id(n) = <节点ID>
DELETE n

删除节点及关联关系

MATCH (n)
WHERE id(n) = <节点ID>
DETACH DELETE n

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/780299.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10V45-ASEMI超低Low VF值肖特基二极管10V45

10V45-ASEMI超低Low VF值肖特基二极管10V45编辑:ll 10V45-ASEMI超低Low VF值肖特基二极管10V45 型号:10V45 品牌:ASEMI 封装:TO-277 批号:最新 恢复时间:35ns 最大平均正向电流(IF):10A 最大循环峰值反向电压(VRRM):45V 最大正向电压(VF):0.28V~0.42V 工作温度:…

方法的作用及定义

5.1 方法的作用及定义目录5.1 方法的作用及定义5.1.1 方法的作用5.1.2 方法的定义5.1.3 方法调用5.1.4 静态方法5.1.1 方法的作用 一、什么是方法呢? Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被…

零基础学习人工智能—Python—Pytorch学习(三)

前言 这篇文章主要两个内容。 一,把上一篇关于requires_grad的内容补充一下。 二,介绍一下线性回归。 关闭张量计算 关闭张量计算。这个相对简单,阅读下面代码即可。 print("============关闭require_grad==============") x = torch.randn(3, requires_grad=True…

Java - IO流

(IO随用随创建,不用了就关流) 1.字节流 OutputStream(字节输出流,写出) FileOutputStreanmoff表示起始索引,len表示截取长度 Windows换行符:"\r\n" Linux:"\n" Mac:"\r" 续写:创建对象第二个参数写true字节打印流(特有方法会原样输出…

Win10无法登录到你的帐户的问题

症状登录之后,系统有个弹窗,提示无法登录到你的帐户2,桌面上原本放的东西不见了,桌面上新放的东西,重启电脑之后会丢失,不能保存 3,cmd 命令行 > echo %userprofile% 之后显示的是TEMP.000, TEMP.001这样子的临时目录问题分析尝试用过参考资料中修改注册表的方法,不…

python配置pip镜像

Python配置pip的镜像国内的网络通过pip下载软件包只有不到10k的下载速度。不仅下载的慢,还容易引发超时错误,导致下载失败。而将给pip配置国内的镜像源可以完美的解决这个问题。本文讲解了pip在windows和macos/linux的配置过程(在windows实操成功)一、 找到配置文件 1.wind…

滴滴出行:多元化出行服务创新与市场领先地位

一、产品概述 产品名称:滴滴出行 产品定位:滴滴出行是一款集多种出行方式于一体的综合出行服务平台,致力于为用户提供安全、便捷、高效的出行体验。二、功能描述 1.多样化出行服务:滴滴出行提供包括快车、专车、出租车、顺风车、代驾、公交、地铁、单车等多种出行方式,满足…

派胜OA ExpressOA 3.0 现已支持 Ubuntu 24.04 LTS

ExpressOA 3.0 跨平台,高性能,现代化的协同办公平台系统。ExpressOA 3.0 现已支持 Ubuntu 24.04 LTS - 世界上最流行的 Linux 操作系统。访问派胜OA官网:www.paioffice.com 随着 .NET 8 的推出,Ubuntu 在支持 .NET 社区方面迈出了重大的一步。 .NET 8 将在 Ubuntu 24.04 LT…

派胜OA ExpressOA 3.0 现已支持 openEuler 24.03 LTS

ExpressOA 3.0 跨平台,高性能,现代化的协同办公平台系统。ExpressOA 3.0 现已支持 openEuler 24.03 LTS - 面向数字基础设施的开源操作系统。访问派胜OA官网:https://www.paioffice.com/

OFtutorial01_inputOutput解析

OFtutorial1.C 源码解析 #include "fvCFD.H"int main(int argc, char *argv[]) {// Initialise OF case#include "setRootCase.H"// These two create the time system (instance called runTime) and fvMesh (instance called mesh).#include "creat…

Motrix下载器使用教程

使用浏览器下载通常会有速度慢的问题,需要借助一些下载管理器软件来进行提速,但有的下载器存在广告多、或者需要付费成为会员才能享受高速下载。这里介绍的Motrix是一款无广告、免费、开源的下载软件,目前使用体验不错,使用方法也很简单。 下载安装前往官网进行下载:https…

宏基因组实战之:质控去宿主

1、测序数据 数据来源于密歇根大学的一项研究,数据项目号为PRJNA389927。这个研究项目的包括正常、癌前病变和癌症病人样本共181例。项目对应的github地址:https://github.com/SchlossLab/Hannigan_CRCVirome_mBio_2018 ,也可以直接去ebi网站下载这个项目的原始测序数据,会…