图形数据库之Neo4j安装与学习

什么是图形数据库?

图形数据库(Graph Database)是利用计算机将点、线、画霹图形基本元素按一定数据结同造型存储的数据集合。

最早应该使用在社交场景,比如QQ的几度空间关系图,除了社交应用之外,图数据库同很多应用可以工作。很多应用可以自然扩展使用图形类型的关系。比如,好多内嵌在社交应用中的推荐系统常常都是基于图形的系统。图数据库由一系列结点和边界组成;每一个结点代表了一个实体,每一个边界代表了两个结点之间的一种连接或者关系。

目前基于Java使用最广泛的有两个开源框架

(1) neo4j

社区版 免费
企业版 收费

(2) Titan
全开源

我们此次选择了neo4j的社区版,neo4j比较稳定,Titan可能比较新,虽然Titan肯定是未来的主流,Neo4j没法存储巨大的一张关系图 ,因为他不支持分片,而Titan是天生分布式的,可以构建在Hbase,Cassandra之上外加+ES或者Solr存储索引,非常强大。

Neo4j的安装

1.下载

下载地址: https://neo4j.com/download/community-edition/
或者点击下载,修改版本号后可以根据版本号下载指定版本
https://neo4j.com/artifact.php?name=neo4j-community_windows-x64_3_3_1.exe

2.安装。

下载后安装,安装成功后,start eno4j 选择存放数据库的位置,如:D:\Program Files\Neo4j


20180801143030.png
3.访问

访问地址:http://localhost:7474/browser/
默认用户名:neo4j 密码:neo4j

4.创建图

示例代码

CREATE 
 (p1:Person {name:'胡兴炯', born:1991, interest:'mac,ios,旅游', goodat:'java,swift,objectiveC'}),
 (p2:Person {name:'张勇', born:1990,  interest:'android', goodat:'java,android'}),
 (p3:Person {name:'成文龙', born:1990, interest:'linux,hadoop', goodat:'linux,java,android'}),
 (p4:Person {name:'王昕', born:1978, interest:'wpf,noSQL,旅游', goodat:'java,c#'}),
 (p5:Person {name:'周开琪', born:1977 , interest:'管理', goodat:'管理,'}),
 (p6:Person {name:'徐锦亮', born:1985,  interest:'前端', goodat:'前端,html5,hadoop'}),
 (p7:Person {name:'张三', born:1993,  interest:'大数据', goodat:'hadoop,html5,java,lucene,elasticsearch,solr'}),
 (p8:Person {name:'徐辉霞', born:1990,  interest:'管理,旅游', goodat:'管理,采购'}),
 (p9:Person {name:'黄廷鹏', born:1992,  interest:'OA', goodat:'java'}),
 (p10:Person {name:'史乐乐', born:1991,  interest:'OA,旅游', goodat:'管理'}),
 (p1)-[:认识]->(p2),
 (p1)-[:认识]->(p3),
 (p1)-[:认识]->(p4),
 (p1)-[:认识]->(p5),
 (p1)-[:认识]->(p9),
 (p2)-[:认识]->(p1),
 (p2)-[:认识]->(p3),
 (p2)-[:认识]->(p4),
 (p2)-[:认识]->(p5),
 (p2)-[:认识]->(p9),
 (p3)-[:认识]->(p1),
 (p3)-[:认识]->(p2),
 (p3)-[:认识]->(p4),
 (p3)-[:认识]->(p5),
 (p3)-[:认识]->(p7),
 (p4)-[:认识]->(p1),
 (p4)-[:认识]->(p2),
 (p4)-[:认识]->(p3),
 (p4)-[:认识]->(p5),
 (p4)-[:认识]->(p9),
 (p5)-[:认识]->(p1),
 (p5)-[:认识]->(p2),
 (p5)-[:认识]->(p3),
 (p5)-[:认识]->(p4),
 (p5)-[:认识]->(p6),
 (p5)-[:认识]->(p8),
 (p5)-[:管理]->(p1),
 (p5)-[:管理]->(p2),
 (p5)-[:管理]->(p3),
 (p5)-[:管理]->(p4),
 (p5)-[:管理]->(p6),
 (p6)-[:认识]->(p5),
 (p6)-[:认识]->(p4),
 (p6)-[:夫妻]->(p8),
 (p9)-[:认识]->(p1),
 (p9)-[:认识]->(p2),
 (p9)-[:认识]->(p3),
 (p9)-[:认识]->(p10),
 (p9)-[:喜欢]->(p10),
 (p10)-[:认识]->(p9),
 (p10)-[:同事]->(p7)

运行结果:


20180801151438.png

Neo4j实现小demo

    (1)    创建自己的"me"节点

        CREATE (me:Myself {name:"我"}) RETURN me

(2)创建与自己关系的节点

  MATCH (me:Myself {name:"我"}) CREATE (me)-[like:LIKE]->(neo:NeoDatabase {name:"Neo4j" }) RETURN me,like,neo

3)批量创建与自己有关的朋友

      MATCH (me:Myself {name:"我"}) FOREACH (name in ["张三","李四","王五","赵六","孙七"] | CREATE (me)-[:FRIEND]->(:Myself {name:name}))

     (4) 查看me节点与friend

    match (me {name:'我'})-[:FRIEND]->(mf) return me,mf

5)新建朋友圈之外的二度关系

    match (neo:NeoDatabase {name : 'Neo4j'})
    match (me {name:'我'})-[:FRIEND]->(mf)
    match (anna {name:'张三'})
    create (ama:Myself {name:'周八'})
    create (ama)-[:WORKED_WITH]->(neo)
    create (anna)-[:FRIEND]->(ama)

    return me,mf,neo,anna,ama

(6) 查询:我通过朋友圈中的谁来学习neo4j

    match (me:Myself {name:"我"}) 
    match (expert)-[:WORKED_WITH]->(neo:NeoDatabase {name:'Neo4j'})

    match path = shortestPath((me)-[:FRIEND*..5]-(expert))

    return path,me,expert,neo

** 注意,此过程单个步骤不可重复执行,否则最后输出的node及其多。**

四、列举几个neo4j删除命令:
删除节点之前需先将关系删除
# 删除节点之前先要删除关系
match (me {name:'我'})-[r:FRIEND]-(mf)
detach delete r

    match (Amanda {name:'周八'})-[r:WORKED_WITH]->(neo {name:'NeoDatabase'}) 
    detach delete r

你可能感兴趣的:(图形数据库之Neo4j安装与学习)