图形数据库之Neo4j学习(一)

最近工作需要使用图形数据库来构建知识图谱,目前基于Java使用最广泛的有两个开源框架

(1) neo4j

社区版 免费

企业版 收费

(2) Titan

全开源

我们此次选择了neo4j的社区版,主要是项目紧,neo4j比较稳定,Titan可能比较新,虽然Titan肯定是未来的主流,我个人是看好Titan的,Neo4j没法存储巨大的一张关系图 ,因为他不支持分片,而Titan是天生分布式的,可以构建在Hbase,Cassandra之上外加+ES或者Solr存储索引,非常强大,再此不在过多 对比两个图形数据库的优缺点,后面有机会再来专门写文章叙述。

什么是图形数据库?

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

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

Neo4j的安装

本次方便快速开发测试,安装平台是在Windows上。

下载地址: https://neo4j.com/download/community-edition/

选择版本下载

下载后,解压到某个盘符下面,我这里用的最新的的版本,需要JDK8支持,这一点需要注意下 ,JDK8我已经安装,下载解压后,需要先配置Neo4j的环境变量:

NEO4J_HOME = E:\2016\neo4j-community-3.0.6然后PATH里面加入:%NEO4J_HOME%\bin

如果是Liunx:
 
NEO4J_HOME=/home/search/neo4j 
export CLASSPATH=$CLASSPATH:NEO4J_HOME/lib
export PATH=$PATH:$NEO4J_HOME/bin

打开cmd窗口后,切到neo4j根目录,执行:

neo4j.bat会给出下面的几个参数提示startstopconsole
restartstatusinstall-serviceuninstall-service
Verbose

然后我们执行

neo4j.bat console

以控制台方式启动,方便调试开发

启动之后,在浏览器访问http://localhost:7474

默认的用户名和密码是neo4j neo4j 登录之后需要修改

在页面最上面的cypher的执行器里面,插入一些数据:

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'}),
 (p6: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)

然后查看关系图如下:

至此,已经入门了,后面会记录neo4j的概念,配置,cyper查询语法,以及neo4j的java集成使用 , jdbc使用等等

原文发布于微信公众号 - 我是攻城师(woshigcs)

原文发表时间:2016-09-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

Python爬虫爬取美剧网站

一直有爱看美剧的习惯,一方面锻炼一下英语听力,一方面打发一下时间。之前是能在视频网站上面在线看的,可是自从广电总局的限制令之后,进口的美剧英剧等貌似就不在像以前...

1762
来自专栏杨建荣的学习笔记

system表空间不足的问题分析(r6笔记第66天)

很多事情见多了也就有了麻木的感觉,报警短信就是如此,每天总能收到不少的报警短信,可能很多时候就扫一眼,如果没有严重的问题自己是不会情愿打开电脑处理的。 对于此,...

2744
来自专栏GopherCoder

『Go 语言学习专栏』-- 第十一期

1493
来自专栏Albert陈凯

2018-05-17 架构师技能图谱,搞懂这些找工作无敌数据结构常用算法并发操作系统设计模式运维 & 统计 & 技术支持中间件网络数据库搜索引擎性能大数据安全常用开源框架分布式设计设计思想 & 开发模

1K4
来自专栏Albert陈凯

理解zookeeper选举机制

zookeeper集群 配置多个实例共同构成一个集群对外提供服务以达到水平扩展的目的,每个服务器上的数据是相同的,每一个服务器均可以对外提供读和写的服务,这点...

6565
来自专栏Cloud Native - 产品级敏捷

微服务架构 (五): 获取微服务数据, 生成报表

2016.8.17, 深圳, Ken Fang 架构师在设计从多个微服务取数据, 而生成报表的架构设计方案时, 往往面临著需在边界上下文 (Bounded Co...

21210
来自专栏数据小魔方

R语言数据重塑及导出操作

今天跟大家简单介绍下几个常用的R数据操纵技巧——导入(xlsx)、导出及长宽转换! 数据导入(xlsx) 之前写过一篇关于R导入不同类型数据的方式,但是其中只涉...

2643
来自专栏刘君君

Rest Notes-将REST应用于URI

1523
来自专栏恰同学骚年

操作系统核心原理-3.进程原理(下):进程通信

进程作为人类的发明,自然也免不了脱离人类的习性,也有通信的需求。如果进程之间不进行任何通信,那么进程所能完成的任务就要大打折扣。人类的通信方式无外乎对白(通过...

1032
来自专栏Aloys的开发之路

Python第三方常用工具、库、框架等

       Python ImagingLibrary(PIL):它提供强大的图形处理的能力,并提供广泛的图形文件格式支持,该库能进行图形格式的转换、打印和显...

43410

扫码关注云+社区

领取腾讯云代金券