Neo4j图数据库

共计 4440 个字符,预计需要花费 12 分钟才能阅读完成。

1、安装部署环境

curl -fsSL get.docker.com -o get-docker.sh

sh get-docker.sh

systemctl start docker 

2、拉取 neo4j 镜像

docker pull neo4j:5.7.0

3、运行 neo4j 容器

docker run -it --publish=7474:7474 --publish=7687:7687 --volume=/root/neo4j-data:/data neo4j:5.7.0 

4、安全组放开 7474,7687 端口

  • 第一个是 7474:7474 端口映射,浏览器的访问的端口映射到 docker 容器里面的 7474 端口

  • 第二个是 7687:7687 端口映射,bolt 数据访问接口

5、Neo4j 数据操作

访问 localhost:7474 就能访问 neo4j 的主页,默认登录密码是neo4j/neo4j,首次登录后会要求修改默认密码。

创建业务 - 节点

CREATE (n:ym {name:'A 业务',firstDeploy:'2023-4-25'});
CREATE (n:ym {name:'B 业务',firstDeploy:'2023-4-25'});
CREATE (n:ym {name:'小程序业务',firstDeploy:'2023-4-25'});
CREATE (n:ym {name:'移动端业务',firstDeploy:'2023-4-25'});
CREATE (n:ym {name:'大数据业务',firstDeploy:'2023-4-25'});

这是一个 Cypher 查询语句,用于在图形数据库中创建一个名为“ym”的节点,并将其标记为“A 业务”。在节点的属性中,该节点具有一个名为“name”的属性,值为“A 业务”。还有一个名为“firstDeploy”的属性,值为“2023-4-25”。

可以在后面加 return n 就会在 neo4j 中显示创建好该节点的图,不加只创建点,不展示图。

创建数据库 - 节点

create (n:mysql {name:'mysql-02',IP:'192.168.10.1'});
create (n:mysql{name:'mysql-05',IP:'192.168.45.23'});
create (n:mysql {name:'mysql-01',IP:'192.168.34.78'});          
create (n:mysql {name:'mysql-03',IP:'192.168.67.3'});
create (n:mysql{name:'mysql-04',IP:'192.168.93.56'});
create (n:mysql {name:'mysql-06',IP:'192.168.134.8'});
create (n:mysql {name:'mysql-07',IP:'192.168.63.1'});
create (n:mysql{name:'mysql-08',IP:'192.168.92.23'});
create (n:mysql {name:'mysql-09',IP:'192.168.15.178'});                 
create (n:redis {name:'redis-01',IP:'192.168.20.2'});
create (n:redis {name:'redis-16',IP:'192.168.60.8'});
create (n:redis {name:'redis-02',IP:'192.168.134.8'});                

创建 ES- 节点

create (n:es {name:'es-01',nodeip:'192.168.7.8'}) ;

创建业务之间的关系 - 边

match (a:ym {name:'A 业务'}), (b:ym {name:'B 业务'}) MERGE (a)-[: 调用]->(b);
match (a:ym {name:'B 业务'}), (b:ym {name:'A 业务'}) MERGE (a)-[: 调用]->(b) ;                                                                               
match (a:ym {name:'小程序业务'}), (b:ym {name:'B 业务'}) MERGE (a)-[: 调用]->(b);
match (a:ym {name:'大数据业务'}), (b:ym {name:'B 业务'}) MERGE (a)-[: 调用]->(b);
match (a:ym {name:'小程序业务'}), (b:ym {name:'移动端业务'}) MERGE (a)-[: 调用]->(b);
match (a:ym {name:'B 业务'}), (b:ym {name:'大数据业务'}) MERGE (a)-[: 调用]->(b);
match (a:ym {name:'移动端业务'}), (b:ym {name:'A 业务'}) MERGE (a)-[: 调用]->(b);
match (a:ym {name:'移动端业务'}), (b:ym {name:'大数据业务'}) MERGE (a)-[: 调用]->(b);
match (a:ym {name:'大数据业务'}), (b:ym {name:'A 业务'}) MERGE (a)-[: 调用]->(b);                                                                                   

创建业务和 MYSQL 数据库之间的关系 - 边

match (a:ym {name:'A 业务'}), (b:mysql {name:'mysql-02'}) MERGE (a)-[: 读写]->(b);                                                                                      
match (a:ym {name:'A 业务'}), (b:mysql {name:'mysql-01'}) MERGE (a)-[: 读]->(b);                                                                                  
match (a:ym {name:'B 业务'}), (b:mysql {name:'mysql-01'}) MERGE (a)-[: 读写]->(b);                                                                                        
match (a:ym {name:'B 业务'}), (b:mysql {name:'mysql-03'}) MERGE (a)-[: 读写]->(b);
match (a:ym {name:'大数据业务'}), (b:mysql {name:'mysql-01'}) MERGE (a)-[: 读]->(b);
match (a:ym {name:'移动端业务'}), (b:mysql {name:'mysql-04'}) MERGE (a)-[: 读写]->(b);  
match (a:ym {name:'移动端业务'}), (b:mysql {name:'mysql-05'}) MERGE (a)-[: 读写]->(b);
match (a:ym {name:'小程序业务'}), (b:mysql {name:'mysql-06'}) MERGE (a)-[: 读写]->(b);
match (a:ym {name:'小程序业务'}), (b:mysql {name:'mysql-04'}) MERGE (a)-[: 读写]->(b);
match (a:ym {name:'B 业务'}), (b:mysql {name:'mysql-05'}) MERGE (a)-[: 读]->(b);
match (a:ym {name:'大数据业务'}), (b:mysql {name:'mysql-07'}) MERGE (a)-[: 读写]->(b);
match (a:ym {name:'移动端业务'}), (b:mysql {name:'mysql-08'}) MERGE (a)-[: 读写]->(b);                                                                                        
match (a:ym {name:'A 业务'}), (b:mysql {name:'mysql-09'}) MERGE (a)-[: 读写]->(b);                                                                                                                                                                              

创建业务和 redis 数据库之间的关系 - 边

match (a:ym {name:'A 业务'}), (b:redis
 {name:'redis-01'}) MERGE (a)-[: 调用]->(b);  
match (a:ym {name:'大数据业务'}), (b:redis
 {name:'redis-02'}) MERGE (a)-[: 调用]->(b);                                             
match (a:ym {name:'B 业务'}), (b:redis
 {name:'redis-16'}) MERGE (a)-[: 调用]->(b);                                              
match (a:ym {name:'移动端业务'}), (b:redis
 {name:'redis-01'}) MERGE (a)-[: 调用]->(b); 
match (a:ym {name:'小程序业务'}), (b:redis
 {name:'redis-01'}) MERGE (a)-[: 调用]->(b);                                              

创建业务和 ES 之间的关系 - 边

match (a:ym {name:'A 业务'}), (b:es
 {name:'es-01'}) MERGE (a)-[: 调用]->(b); 
match (a:ym {name:'B 业务'}), (b:es
 {name:'es-01'}) MERGE (a)-[: 调用]->(b);                                           
常用命令

对节点增加属性

match (n) where id(n)=48 set n.sex = '男' return n;

查询所有结果

MATCH (n)  RETURN n;

查询所有对外有关系的节点,只有业务会互相调用,只有业务是调用其他的数据库等组件的才显示

MATCH (n)-->() RETURN n;

查询所有读写和读 mysql:mysql-01 的业务

MATCH (a:ym)-[: 读写]->(b:mysql {name:'mysql-01'}) RETURN a,b;
MATCH (a:ym)-[: 读写 |]->(b:mysql {name:'mysql-01'}) return a,b;

查询和 A 业务 有调用的 其他业务

MATCH (a:ym {name:'A 业务'}) <- [: 调用]-> (b:ym) RETURN a,b;

查询所有关系为调用的结果

MATCH (n)-[: 调用]-() RETURN n;

删除某个节点

MATCH (n:mysql{name:'lanqiao-es'}) DELETE n;

清理所有数据

MATCH (n) DETACH DELETE n;

正文完
 1
caoguojian
版权声明:本站原创文章,由 caoguojian 于2024-03-18发表,共计4440字。
转载说明:除特殊说明外本站文章皆由CGJ发布,转载请注明出处。
一言一句话
-「
评论(没有评论)