neo4j——图数据库初探 - JDream314的专栏 - 博客频道 - CSDN.NET
neo4j——图数据库初探 - JDream314的专栏 - 博客频道 - CSDN.NET
图数据库neo4j初探(下载地址:http://neo4j.org/ )
本篇将初步介绍一下图数据库neo4j,将分一下几点介绍:什么是neo4j、neo4j作用、neo4j用法简单介绍
1、什么是neo4j
neo4j是一种图数据库,同时它也是一种嵌入式数据库。它对图数据是以节点和边(关系)模式进行存储。每个节点可以包含一系列信息,通过Node类里面的setProperty()方法对节点信息进行存储,Node也可以使用createRelationshipTo()方法实现个节点和其他节点的联系,并且该方法返回的是一个Relationship对象,我们也可以对Relationship设置属性,也就是节点和节点之间的关系属性。什么叫关系属性?例如:person1àperson2,person1和person2的关系可以是朋友也可以是同学还可以是亲人,这里的朋友、同学、亲人就是这里的Relationship的属性。那么关系属性就是描叙两个节点之间的关系类型。这就方便在对节点进行查找的时候对节点进行过滤。如下图:
2、neo4j作用
上面对neo4j进行了简单的介绍,可知neo4j是一种对图数据进行存储,是一种嵌入式数据库。它可以将复杂的图数据以节点和边形式存储。例如:在我们现实社会中人与人之间的关系,这就是一个复杂的图,朋友也可以是多种多样的,怎样描叙这样复杂的图呢?Neo4j提供了比较简单的描叙方式。如图:
就上面的图可以根据neo4j提供的方法获取第一层朋友和第二层朋友: TraversalDescriptiontd = Traversal.description().breadthFirst().relationships(RelTypes.KNOWS, Direction.OUTGOING).filter(Traversal.returnAllButStartNode() ); 上面的代码所执行的是:同个一个事务获取一个事务描叙,然后根据这个事务描叙在一存储的图中过滤出我们想要的节点,这个事务描叙第一个是进行广度优先搜索(breadthFirst),接下类对节点关系进行过滤。Direction是指定关系的方向,RelTypes就是关系的类型。这样就可以获得相应的结果。
3、neo4j用法简单介绍
此处就neo4j的一个例子进行讲解(如图):
上面图是一个部门结构图,这个在我们现实生活中也是比较常见的。如:我们学校,它就是一个由各个部门构成的。如何对这种图进行查找,以获得我们想要的信息呢?
1)、获得各个部门的名:
TraversalDescription td =Traversal.description().breadthFirst().relationships(RoleRels.ROOT, Direction.INCOMING).relationships(RoleRels.PART_OF, Direction.INCOMING).filter(Traversal.returnAllButStartNode());
2)、获得所有的admin
TraversalDescription td =Traversal.description().breadthFirst().relationships(RoleRels.PART_OF, Direction.INCOMING).relationships(RoleRels.MEMBER_OF, Direction.INCOMING).filter(Traversal.returnAllButStartNode() );
3)、更具个人信息获得他所在的所有部门
Node jale = getUserByName( "Jale" );
TraversalDescription td = Traversal.description().depthFirst().relationships(RoleRels.MEMBER_OF, Direction.OUTGOING).relationships(RoleRels.PART_OF, Direction.OUTGOING).filter(Traversal.returnAllButStartNode() );
附录:
neo4j还提供了两种遍历的方式:一种是深度搜索,第二种是广度搜索。也提供了两种搜索算法,一种是A*算法,第二种是dijkstra算法。提高了编程人员的工作效率。同时neo4j也有简历索引的功能,方便了多节点的查找。
谢谢浏览!本篇到此 结束!
neo4j——图数据库初探 - JDream314的专栏 - 博客频道 - CSDN.NET相关推荐
- 基于视觉信息的网页分块算法(VIPS) - yysdsyl的专栏 - 博客频道 - CSDN.NET
基于视觉信息的网页分块算法(VIPS) - yysdsyl的专栏 - 博客频道 - CSDN.NET 基于视觉信息的网页分块算法(VIPS) - yysdsyl的专栏 - 博客频道 - CSDN.NE ...
- HBase vs Cassandra: why we moved - wdwbw的专栏 - 博客频道 - CSDN.NET
HBase vs Cassandra: why we moved - wdwbw的专栏 - 博客频道 - CSDN.NET HBase vs Cassandra: why we moved - wdw ...
- Redis Primer(1)基于JedisPool的Redis hset并发性能测试 - @钟超 · 技术博客专栏 - 博客频道 - CSDN.NET...
Redis Primer(1)基于JedisPool的Redis hset并发性能测试 - @钟超 · 技术博客专栏 - 博客频道 - CSDN.NET Redis Primer(1)基于JedisP ...
- QT发布中遇到的问题 - wufan的专栏 - 博客频道 - CSDN.NET
QT发布中遇到的问题 - wufan的专栏 - 博客频道 - CSDN.NET QT发布中遇到的问题 分类: qt 2012-04-05 11:15 8人阅读 评论(0) 收藏 举报 最近开始研究qt ...
- iOS 热更新方案 - lance的专栏 - 博客频道 - CSDN.NET
iOS 热更新方案 - lance的专栏 - 博客频道 - CSDN.NET Weex
- libevent安装总结 - jinfg2008的专栏 - 博客频道 - CSDN.NET
libevent安装总结 - jinfg2008的专栏 - 博客频道 - CSDN.NET libevent安装总结 分类: linux 系统配置 2013-02-13 22:37 99人阅读 评论( ...
- javadoc时候乱码-编码 GBK 的不可映射字符 - wqjsir的专栏 - 博客频道 - CSDN.NET
javadoc时候乱码-编码 GBK 的不可映射字符 - wqjsir的专栏 - 博客频道 - CSDN.NET 在eclipse中导出工程的doc时,有时会出现GBK的不可映射字符异常.这是应为我们 ...
- libcurl 多线程使用注意事项 - Balder~专栏 - 博客频道 - CSDN.NET
libcurl 多线程使用注意事项 - Balder~专栏 - 博客频道 - CSDN.NET libcurl 多线程使用注意事项 分类: C/C++学习 2012-05-24 18:48 2843人 ...
- Redis集群方案及实现 - yfk的专栏 - 博客频道 - CSDN.NET
Redis集群方案及实现 - yfk的专栏 - 博客频道 - CSDN.NET yfk的专栏 学习&记录&分享 目录视图 摘要视图 订阅 [公告]博客系统优化升级 U ...
最新文章
- 使用bottle进行web开发:get的参数传递,form数据传递等
- Ubuntu14.04下安装wechat(微信)
- Java时间操作工具类
- C#的变迁史02 - C# 2.0篇
- 别求面经了!小夕手把手教你如何斩下和选择NLP算法岗offer!(19.11.21更新)
- java arraylist add时默认调用tostring_Java基础知识之ArrayList知识点总结
- 新的一年,谈谈我对技术架构的理解
- 联想重装系统去掉保护_带有联想保护系统的电脑安装系统具体步骤如下
- 离散数学求交并差java代码_离散数学交并补运算、差运算、异或运算的实现--biaobiao88...
- 如何借助OpManager解决存储监控问题?
- (SQL)使用Excel连接数据库
- java阿里云短信验证码发送
- Mac 下制作win7启动U盘启动PE
- 微软产品居然出现中文兼容问题
- 神经网络的反向传播算法中矩阵的求导方法(矩阵求导总结)
- 送给大一新生的一些话
- 用wireshark抓包IOS优酷app
- 年底了,一起来撸个视频播放器吧!
- python数据集处理
- 谈谈一些有趣的CSS题目(九)-- 巧妙的实现 CSS 斜线
热门文章
- .net core 调用c dll_工具:搭建Camp;C,一睹模样
- pyqt5教程13:客户定制组件
- docker-engine安装好了,下一步该做什么?
- 阻止浏览器自动填充input密码框
- top与bottom、left与right的优先级
- java 将json转换成sql_search-sqlparams
- java读取 png_如何让java的ImageBuffer正确读取PNG文件?
- 伽卡他卡电子教室 百度百科_怎么创建人物百度百科?人物百度百科创作技巧...
- mysql x64界面配置版下载_MySQL下载安装、配置与使用(win7x64)
- openCV中的findHomography函数分析以及RANSAC算法的详解(源代码分析)