图 数据库
图数据库(Graph database)并非指存储图片的数据库,而是以图这种数据结构存储和查询数据。
Neo4J就是属于原生图数据库,它使用的后端存储是专门为Neo4J这种图数据库定制和优化的,理论上说能更有利于发挥图数据库的性能。
而JanusGraph不是原生图数据库,而将数据存储在其他系统上,比如Hbase。
图数据库 节点和关系组成的图 利用图结构相关算法(最短路径、节点度关系查找等) 可能需要对整个图做计算,不利于图数据分布存储
数据模型的主要组成部分
- 节点(节点包含了一组属性)
- 关系(单向/双向关系)
- 属性(键值对表示数据)
=350x250)
Neo4j - 官网
http://neo4j.com.cn/public/cypher/neo4j_exe_environment_setup.html
Neo4J是由Java实现的开源图数据库。
它通过使用Apache Lucence支持索引
它支持UNIQUE约束
它支持完整的ACID(原子性,一致性,隔离性和持久性)规则
Neo4J支持ACID,集群、备份和故障转移。目前Neo4J最新版本为3.5,分为社区版和企业版,社区版只支持单机部署,功能受限。企业版支持主从复制和读写分离,包含可视化管理工具。
1. 安装
https://blog.csdn.net/Appleyk/article/details/79091898
安装后访问地址 http://localhost:7474/
访问密码 neo4j
2. Neo4j - CQL代表的Cypher查询语言。
CREATE创建节点
CREATE (emp:Employee)emp是EMP节点名称Employe是EMP节点的标签名称定制列表(节点名称: 不能用它来访问节点的详细信息标签名称) 应该利用这个标签名称访问节点的详细信息
创建节点并添加属性
CREATE (dept:Dept {
deptno:10,dname:"Accounting",
location:"Hyderabad"
})
创建多个标签
CREATE (m:Movie:Cinema:Film:Picture)
电影,影院,影片,图片是对M节点多标签名称
创建一个新的关系
CREATE (p1:Profile1)-[r1:LIKES]->(p2:Profile2)
p1和Profile1的都是“从节点”的节点名称和节点标签名称
P2和Profile2的都是的“节点”节点名称和节点标签名称
R1是有关系的名字
LIKES是有关系的标签名称
创建两个已经存在节点的关系
MATCH (cust:Customer),(cc:CreditCard)
WHERE cust.id = "1001" AND cc.id= "5001"
CREATE (cust)-[r:DO_SHOPPING_WITH{shopdate:"12/12/2014",price:55000}]->(cc)
RETURN r
创建id=1001和5001的两个节点的关系,并且为关系添加属性
MATCHRETURN获取有关数据库节点和属性数据,关联关系
MATCH (dept: Dept)
RETURN dept.deptno,dept.dname
dept是一个节点名
Dept是部节点标签名称
deptno是部门节点的属性名称
dname是部门节点的属性名称
条件查询WHERE语句
MATCH (emp:Employee)
WHERE emp.name = 'Abc' OR emp.name = 'Xyz'
RETURN emp
查询关系
MATCH (cc:CreditCard)-[r]-(c:Customer)RETURN r
DELETE删除节点或关系
MATCH (e: Employee) DELETE e
用“DELETE ”命令来删除e节点
删除节点以及关系
MATCH (cc: CreditCard)-[rel]-(c:Customer)
DELETE cc,c,rel
3. springboot
源码
https://github.com/wsm1217395196/my-project-demo/blob/master/springboot-data-neo4j/pom.xml
