《权游》人物关系你还捋不清?Neo4j帮你5分钟搞定!

栏目: 数据库 · 发布时间: 4年前

内容简介:<span><span>LOAD CSV WITH HEADERS FROM &quot;file</span>:<span>///asoiaf-all-edges.csv&quot; AS row MERGE (src:Character {name: row.Source}) MERGE (tgt:Character {name: row.Target}) MERGE (src)-[r:INTERACTS]-&gt;(tgt)SET r.weight = toInt(row.weight)</span>

点击上方 蓝字 每天学习数据库

万众瞩目的《权力的游戏》第八季,伴随着“史诗级大烂尾”的哀怨声,终于完结了!

《权游》人物关系你还捋不清?Neo4j帮你5分钟搞定!

面对剧中错综复杂的人物关系,新粉们是不是已经捋不清楚了?不过,看到人物、节点、关系、属性,这些熟悉的名词,各位想到了什么?

是的, 图数据库! 一向以处理“关系的连接”称霸江湖的图数据库

接下来我们试一试好玩的,用图数据库Neo4j,来梳理一下权游的人物关系图。

Ps:贴心的小编在后面奉上了 Neo4j最全的安装配置教程 !快快收藏起来~

首先总览一下剧中人物关系图,几行代码就可清楚地展示所有人物间的连接,这就是图数据库的魅力所在。

<span><span>LOAD CSV WITH HEADERS FROM &quot;file</span>:<span>///asoiaf-all-edges.csv&quot; AS row MERGE (src:Character {name: row.Source}) MERGE (tgt:Character {name: row.Target}) MERGE (src)-[r:INTERACTS]-&gt;(tgt)SET r.weight = toInt(row.weight)</span></span>

<span><span>MATCH</span> <span>p=(:Character)-[:INTERACTS]-(:Character)</span></span>

<span><span>RETURN</span> <span>p</span></span>

<span><span>LIMIT</span> <span>50</span></span>

《权游》人物关系你还捋不清?Neo4j帮你5分钟搞定!

图1.《权利 的游戏》人物关系图

关键人物 怎么看呢?

关键节点:如果一个节点,位于其它两个节点所有的最短路径上,即称为关键节点。下图是我们找出的网络中所有的关键节点:

MATCH (a:Character), (b:Character) WHERE id(a) > id(b)MATCH p=allShortestPaths((a)-[:INTERACTS*]-(b)) WITH collect(p) AS paths, a, bUNWIND nodes(head(paths)) as c // first pathWITH * WHERE NOT c IN [a,b] AND all(path IN tail(paths) WHERE c IN nodes(path))RETURN a.name, b.name, c.name AS PivotalNode, length(head(paths)) as pathLength, length(paths) as pathCount SKIP 490 LIMIT 10

《权游》人物关系你还捋不清?Neo4j帮你5分钟搞定!

图2. 关键节点

接下来我们用拿"Anguy"和"Aeron-Greyjoy"来校验一下,查看两个节点的最短路径。

MATCH (a:Character {name: "Eustace-Brune"}), (b:Character {name: "Cressen"})MATCH p=allShortestPaths((a)-[:INTERACTS*]-(b))RETURN p

可看到结果刚好就是"Arya-Stark"和"Theon-Greyjoy"

《权游》人物关系你还捋不清?Neo4j帮你5分钟搞定!

图3. 关键节点校验

Amazing,如此“凌乱”的关系网,Neo4j秒秒钟可以理清,点个赞!

这么好用的图数据库,我们怎么上手呢?莫着急, 接下来就是关于Neo4j的简介,以及 史上最全的Neo4j安装配置教程 ,满满都是干货,快一起实践起来 吧~

Neo4j数据库的优势 

Neo4j是基于 Java 语言编写图形数据库,是一种基于图论实现的新型 NoSQL 数据库。这种数据库在处理社交推荐,物流运输,欺诈检测,关系分析等领域有巨大优势。

  • 在创建节点的时候就已经把关系给建立起来,避免了在复杂查询场景下的处理

  • 基于JVM实现

  • 提供一套易于理解的查询语言Cypher以及内置的可视化UI

  • 很好的支持ACID,有事务机制

  • 它很容易表示连接的数据

  • 检索/遍历/导航更多的连接数据是非常容易和快速的

  • 它非常容易地表示半结构化数据

  • Neo4j CQL查询语言命令是人性化的可读格式,非常容易学习

  • 它使用简单,功能强大的数据模型。

  • 它不需要复杂的连接来检索连接的/相关的数据,因为它很容易检索它的相邻节点或关系细节没有连接或索引

  • Neo4j是原生的图数据库引擎,由于底层直接以图的形式存储节点和关系,可以使用图结构的自然伸展特性来设计免索引邻近节点遍历的查询算法。Neo4j具有非常高效的查询性能,相比于RDBMS可以提高数倍乃至数十倍的查询速度。

Neo4j安装及实践  

首先,奉上使用教程,Neo4j教程地址:http://neo4j.com.cn/public/cypher/default.html,接下来正式开始安装~

系统:Win10 64位

第一步: 安装Java JDK

Neo4j是用Java语言编写的图形数据库,因此运行时需要启动JVM进程,故需安装JAVA SE的JDK, 注意,此处有坑!

《权游》人物关系你还捋不清?Neo4j帮你5分钟搞定!

Neo4j企业或社区版目前不兼容Java 11及以上 !例如安装Java 12,在验证Neo4j的安装和配置是否成功时,是会报错的,如下图:

《权游》人物关系你还捋不清?Neo4j帮你5分钟搞定!

避坑结束~此处我们下载 Java 8 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 

《权游》人物关系你还捋不清?Neo4j帮你5分钟搞定!

下载可能需注册登录Oracle账户,按流程创建/登录即可~

Ps: 不知如何安装&配置Java SE JDK的同学,参考https://blog.csdn.net/qq_35246620/article/details/61208961

已成功配置的老司机,可直接跳第二步!安装完成后,cmd输入java -version检查是否安装好

《权游》人物关系你还捋不清?Neo4j帮你5分钟搞定!

第二步:下载安装Neo4j

从官网下载最新版 Neo4j 社区版(Community)

《权游》人物关系你还捋不清?Neo4j帮你5分钟搞定!

下载好后解压到自己想放的盘里,例如:F:\neo4j-community-3.5.6

《权游》人物关系你还捋不清?Neo4j帮你5分钟搞定!

《权游》人物关系你还捋不清?Neo4j帮你5分钟搞定!

Neo4j应用程序有如下主要的目录结构:

  • bin目录:用于存储Neo4j的可执行程序;

  • conf目录:用于控制Neo4j启动的配置文件;

  • data目录:用于存储核心数据库文件;

  • plugins目录:用于存储Neo4j的插件;

Neo4j的环境配置:

点击此电脑,右键“属性”,进入高级系统设置,点击环境变量

《权游》人物关系你还捋不清?Neo4j帮你5分钟搞定!

新建系统变量NEO4J_HOME,变量值你自己的Neo4j主目录

《权游》人物关系你还捋不清?Neo4j帮你5分钟搞定!

设置完成,点击确定。同样再找到系统变量Path,最后加入 %NEO4J_HOME%\bin

《权游》人物关系你还捋不清?Neo4j帮你5分钟搞定! 接下来 检查Neo4j环境变量配置成功与否

打开命令提示符,输入echo %NEO4J_HOME% 和 echo %Path% ,如果显示你刚刚设置的值,那么你的配置已成功完成。

《权游》人物关系你还捋不清?Neo4j帮你5分钟搞定!

启动服务并验证,以cmd管理员身份运行neo4j.bat console,并回车(一定要以管理员身份进入cmd,否则会出现警告)

《权游》人物关系你还捋不清?Neo4j帮你5分钟搞定!

此时可 访问服务器了, 通过浏览器输入 http://localhost:7474/ , 初始的用户名和密码 均是neo4j,输入密码,点击connect

《权游》人物关系你还捋不清?Neo4j帮你5分钟搞定!

初次使用系统会要求你改密码,输入新密码即可~

《权游》人物关系你还捋不清?Neo4j帮你5分钟搞定!

至此,Neo4j的安装已全部完成。

现在可以来测试一下~

登录 http://localhost:7474/ 后,点击左侧数据库图标,可看到操作数据的面板

在命令框内输入命令,例如:

create (n:Person{name:'grace',title:'Product Operation Manager'}) return n;

点击右侧run图标, 可看到4种视图模式:Graph、Table、Text和Code,不同模式效果如下图所示:

《权游》人物关系你还捋不清?Neo4j帮你5分钟搞定! 给看到这步的自己点个赞吧!快快试起来,小伙伴们可在留言区一起交流~


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Spring 3.x企业应用开发实战

Spring 3.x企业应用开发实战

陈雄华 / 电子工业出版社 / 2012-2-1 / 90.00元

内容简介 Spring 3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。 Spring 3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架、REST风格的Web编程模型等。这些新功能实用性强、易用性高,可大幅降低Java应用,特别是Java Web应用开发的难度,同时有效......一起来看看 《Spring 3.x企业应用开发实战》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具