首页 > 其他分享 >Neo4j 实现一个简单的CMDB管理平台

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

时间:2024-08-09 14:50:17浏览次数:13  
标签:p2 p1 平台 192.168 instance match Neo4j property CMDB

简介

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

标签:p2,p1,平台,192.168,instance,match,Neo4j,property,CMDB
From: https://www.cnblogs.com/jruing/p/18350748

相关文章

  • 收银系统源码-连锁店收银+多商户平台商城
    千呼新零售2.0系统是零售行业连锁店一体化收银系统,包括线下收银+私域商城+平台商城+连锁店管理+ERP管理+商品管理+供应商管理+会员营销等功能为一体,线上线下数据全部打通。支持私有化独立部署/全开源源码,系统开发语言:核心开发语言:PHP、HTML5、Dart后台接口:PHP7.3后台管......
  • 浏览器标签页多行显示:使用Floorp浏览器 最先进的跨平台 Firefox 衍生品 开源之光
    浏览器打开了很多标签页,查看需要滚动 这查找效率就不是O(1)了,比如在编辑器中标签页直接多行显示 找了解决方案平常的主力浏览器是Firefoxchromesafarifirefoxfirefox之前有拓展TabMix可以用,现在弄得跟孙子似得,官方拓展不承认还要安装还要好的步骤,也没成功还有就是使......
  • JSP个人学习情况统计平台kuy0w--程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表系统功能:用户,课程信息,类型,下载文档,学习记录技术要求:    开发语言:JSP前端使用:HTML5,CSS,JSP动态网页技术后端使用SpringBoot,Spring技术主数据库使用......
  • 一二三物联网智慧工厂运维管理平台
    智慧工厂运维管理平台是一种基于信息技术和物联网技术的管理平台,主要用于智能制造领域中的设备管理、生产管理和质量管理。该平台能够实现对工厂生产过程中的各种设备、生产线、生产计划、生产数据、质量数据等信息的实时监测、预测、维护和管理,以提高生产效率和降低生产成本。......
  • Simhub国产仿真云平台-基础模块
    Hi,大家好,今天继续介绍Simhub国产仿真云平台~Simhub国产仿真云平台包含【基础模块】和【仿真应用模块】,每个功能模块的功能都可以免费使用。国产!!!国产!!!国产!!!免费使用!!!免费使用!!!免费使用!!!我们今天主要看一下基础模块的功能。基础模块云桌面:云桌面是用户的个人中心,在这里可以看到......
  • Avalonia 11.1 获取平台调用的窗口的方法
    本文和大家介绍如何在11.1版本的Avalonia里获取平台调用的窗口的方法,如Windows获取窗口句柄,在Linux下获取X11的xid窗口信息在拿到任意的Avalonia的Visual元素,可通过TopLevel的GetTopLevel方法获取到其窗口。由于Avalonia是一个跨平台的UI框架,因此不能假......
  • springboot在线众筹平台的设计与实现-计算机毕设定制-附项目源码(可白嫖)50388
    springboot在线在线众筹平台摘 要随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。在线众筹平台,主要的模块包括管理员和用户,实现功能包括:首页、轮播图、系统公告、资源管理(新闻列表、新闻分类)系统用户(管理员......
  • 黑马毕设《基于SSM的俱乐部课时管理平台的系统设计》(源码+lw+部署文档+讲解等)
     文章目录1.前言黑马设计——专注大学生的项目实战开发,免费讲解,毕业答疑辅导黑马设计工作室简介:黑马设计是一家专注大学生的项目实战开发,免费讲解,毕业答疑辅导的工作室✅,创始人是硕士毕业于华南理工大学,工科专业,目前团队成员全职+兼职上百余人,运营线上店铺2家,与B站(IT实......
  • 使用SixLabors.ImageSharp 进行图片的缩放C#.net core,可跨平台运行
    引用命令空间usingSixLabors.ImageSharp;using SixLabors.ImageSharp.Formats.Png;using SixLabors.ImageSharp.Processing; publicstaticvidResize(byte[]imageBytes,intwidth=400){usingvarsteam=newMemoryStream(imageBytes);using(varimage=......
  • Xcode 16 beta 5 (16A5221g) 发布 - Apple 平台 IDE
    Xcode16beta5(16A5221g)发布-Apple平台IDEIDEforiOS/iPadOS/macOS/watchOS/tvOS/visonOS请访问原文链接:https://sysin.org/blog/apple-xcode-16/,查看最新版。原创作品,转载请保留出处。Xcode16的新功能使用预测代码补全功能和更快的预览功能,将奇思妙想转化为代码......