图形数据库---neo4j_在知识的海洋中遨游-CSDN博客

官网:https://neo4j.com/

一、简介

Neo4j是一个高性能的NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。

它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。

Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。

程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。

优点:

  1. 数据的插入,查询操作很直观,不用再像之前要考虑各个表之间的关系。
  2. 提供的图搜索和图遍历方法很方便,速度也是比较快的。

缺点:

  1. 插入速度慢。
  2. 超大节点。当有一个节点的边非常多时(常见于大V),有关这个节点的操作的速度将大大下降。
  3. 提高数据库速度的常用方法就是多分配内存。

Neo4j适合存储”修改较少,查询较多,没有超大节点“的图数据。

二、安装教程

docker 命令

docker pull neo4j docker run -d --name my_neo4j -p 7474:7474 -p 7687:7687 -v /home/rennanliu/data/neo4j/data:/data -v /home/rennanliu/data/neo4j/logs:/logs -v /home/rennanliu/data/neo4j/conf:/var/lib/neo4j/conf  -v /home/rennanliu/data/neo4j/import:/var/lib/neo4j/import --env NEO4J_AUTH=neo4j/password  --restart=always neo4j

三、常用语句

新增: CREATE (emp:Employee)         CREATE(节点名:标签名) CREATE (dept:Dept { deptno:10,dname:"Accounting",location:"Hyderabad" })             创建一个带有属性的标签名 CREATE (fb1:FaceBookProfile1)-[like:LIKES]→(fb2:FaceBookProfile2)                     新增关系 查询: MATCH (n:`hx/sor_config`) RETURN n LIMIT 25   查询sor_config中id前25 MATCH (dept:Dept) RETURN dept.deptno   查询Dept MATCH (n:`hx/sor_config`) WHERE n.name="ruleset3" RETURN n  条件查询 MATCH (p1:`hx/sor_config`{name:"手术程序"}),(p2:`hx/sor_config`{name:"structured_situation"}), p=shortestpath((p1)-[*..10]->(p2)) RETURN p                   查询p1到p2的最短路径 MATCH (n:`hx/sor_config`{name:"手术名称"})-[r*..1]-(m) return n,r,m      查询某个节点的直接关系的其他节点 删除: MATCH (e: Employee) DELETE e   删除标签 match (n:FaceBookProfile1)-[r]-(m:FaceBookProfile2)    delete r   删除关系 MATCH (n)    OPTIONAL MATCH (n)-[r]-()    DELETE n,r   清空数据库 MATCH (n:`hx/sor_config`{name:"有无袖式成型切除"}) DETACH DELETE n            删除某一节点及其所有关系 修改: MATCH (n:Empty)   SET n.atm_pin = 358   RETURN n

四、python代码

#coding:utf-8from py2neo import Graph,Node,Relationship ##连接neo4j数据库,输入地址、用户名、密码graph = Graph('http://localhost:7474',username='neo4j',password='password') ##创建结点test_node_1 = Node('ru_yi_zhuan',name='皇帝')test_node_2 = Node('ru_yi_zhuan',name='皇后')test_node_3 = Node('ru_yi_zhuan',name='公主')graph.create(test_node_1)graph.create(test_node_2)graph.create(test_node_3) ##创建关系#分别建立了test_node_1指向test_node_2和test_node_2指向test_node_1两条关系,关系的类型为"丈夫、妻子",两条关系都有属性count,且值为1。node_1_zhangfu_node_1 = Relationship(test_node_1,'丈夫',test_node_2)node_1_zhangfu_node_1['count'] = 1node_2_qizi_node_1 = Relationship(test_node_2,'妻子',test_node_1)node_2_munv_node_1 = Relationship(test_node_2,'母女',test_node_3) node_2_qizi_node_1['count'] = 1 graph.create(node_1_zhangfu_node_1)graph.create(node_2_qizi_node_1)graph.create(node_2_munv_node_1)

原网址: 访问
创建于: 2022-01-05 12:50:04
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论