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相关推荐

  1. 基于视觉信息的网页分块算法(VIPS) - yysdsyl的专栏 - 博客频道 - CSDN.NET

    基于视觉信息的网页分块算法(VIPS) - yysdsyl的专栏 - 博客频道 - CSDN.NET 基于视觉信息的网页分块算法(VIPS) - yysdsyl的专栏 - 博客频道 - CSDN.NE ...

  2. 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 ...

  3. Redis Primer(1)基于JedisPool的Redis hset并发性能测试 - @钟超 · 技术博客专栏 - 博客频道 - CSDN.NET...

    Redis Primer(1)基于JedisPool的Redis hset并发性能测试 - @钟超 · 技术博客专栏 - 博客频道 - CSDN.NET Redis Primer(1)基于JedisP ...

  4. QT发布中遇到的问题 - wufan的专栏 - 博客频道 - CSDN.NET

    QT发布中遇到的问题 - wufan的专栏 - 博客频道 - CSDN.NET QT发布中遇到的问题 分类: qt 2012-04-05 11:15 8人阅读 评论(0) 收藏 举报 最近开始研究qt ...

  5. iOS 热更新方案 - lance的专栏 - 博客频道 - CSDN.NET

    iOS 热更新方案 - lance的专栏 - 博客频道 - CSDN.NET Weex

  6. libevent安装总结 - jinfg2008的专栏 - 博客频道 - CSDN.NET

    libevent安装总结 - jinfg2008的专栏 - 博客频道 - CSDN.NET libevent安装总结 分类: linux 系统配置 2013-02-13 22:37 99人阅读 评论( ...

  7. javadoc时候乱码-编码 GBK 的不可映射字符 - wqjsir的专栏 - 博客频道 - CSDN.NET

    javadoc时候乱码-编码 GBK 的不可映射字符 - wqjsir的专栏 - 博客频道 - CSDN.NET 在eclipse中导出工程的doc时,有时会出现GBK的不可映射字符异常.这是应为我们 ...

  8. libcurl 多线程使用注意事项 - Balder~专栏 - 博客频道 - CSDN.NET

    libcurl 多线程使用注意事项 - Balder~专栏 - 博客频道 - CSDN.NET libcurl 多线程使用注意事项 分类: C/C++学习 2012-05-24 18:48 2843人 ...

  9. Redis集群方案及实现 - yfk的专栏 - 博客频道 - CSDN.NET

    Redis集群方案及实现 - yfk的专栏        - 博客频道 - CSDN.NET yfk的专栏 学习&记录&分享 目录视图 摘要视图 订阅 [公告]博客系统优化升级   U ...

最新文章

  1. 使用bottle进行web开发:get的参数传递,form数据传递等
  2. Ubuntu14.04下安装wechat(微信)
  3. Java时间操作工具类
  4. C#的变迁史02 - C# 2.0篇
  5. 别求面经了!小夕手把手教你如何斩下和选择NLP算法岗offer!(19.11.21更新)
  6. java arraylist add时默认调用tostring_Java基础知识之ArrayList知识点总结
  7. 新的一年,谈谈我对技术架构的理解
  8. 联想重装系统去掉保护_带有联想保护系统的电脑安装系统具体步骤如下
  9. 离散数学求交并差java代码_离散数学交并补运算、差运算、异或运算的实现--biaobiao88...
  10. 如何借助OpManager解决存储监控问题?
  11. (SQL)使用Excel连接数据库
  12. java阿里云短信验证码发送
  13. Mac 下制作win7启动U盘启动PE
  14. 微软产品居然出现中文兼容问题
  15. 神经网络的反向传播算法中矩阵的求导方法(矩阵求导总结)
  16. 送给大一新生的一些话
  17. 用wireshark抓包IOS优酷app
  18. 年底了,一起来撸个视频播放器吧!
  19. python数据集处理
  20. 谈谈一些有趣的CSS题目(九)-- 巧妙的实现 CSS 斜线

热门文章

  1. .net core 调用c dll_工具:搭建Camp;C,一睹模样
  2. pyqt5教程13:客户定制组件
  3. docker-engine安装好了,下一步该做什么?
  4. 阻止浏览器自动填充input密码框
  5. top与bottom、left与right的优先级
  6. java 将json转换成sql_search-sqlparams
  7. java读取 png_如何让java的ImageBuffer正确读取PNG文件?
  8. 伽卡他卡电子教室 百度百科_怎么创建人物百度百科?人物百度百科创作技巧...
  9. mysql x64界面配置版下载_MySQL下载安装、配置与使用(win7x64)
  10. openCV中的findHomography函数分析以及RANSAC算法的详解(源代码分析)