如何使用Neo4j构建人物关系图?

一、数据库的分类

1. 关系型数据库

关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。用户通过查询来检索数据库中的数据,而查询是一个用于限定数据库中某些区域的执行代码。关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。主流的关系型数据库有Oracle、DB2、MySQL、SQL Server等。
 

2. 非关系型数据库

非关系型数据库,也称为NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。常见的非关系型数据库按照分类有:

键值(Key-Value): Redis、Memcached、Oracle BDB

列存储数据库:Cassandra、HBase、 Riak

文档型数据库:MongoDB、SequoiaDB

图形数据库:Neo4J、JanusGraph、TigerGraph
 

二、 Neo4j
 

2.1 什么是Neo4j

Neo4j是一个高性能的NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。简单来说Neo4j是一个开源的基于Java开发,运行于JVM之上。
 

2.2 Neo4j的数据结构

在一个图中包含两种基本的数据类型:Nodes**(节点)** 和 Relationships**(关系)。Nodes** 和 Relationships 包含key/value形式的属性。Nodes通过Relationships所定义的关系相连起来,形成关系型网络结构。


2.3 社区版和企业版区别
 

1)社区版限制

节点:320 亿

关系:320 亿

属性:640 亿
 

2)企业版与社区版都有的功能
 

·Property Graph Model(属性图模型)

·Native Graph Processing & Storage(本地图形处理和存储)

·ACID(事务管理)

·Cypher – Graph Query Language(支持Cypher图查询语句)

·REST API(Restful风格的api)

·High-Performance Native API(本机高性能api)

·HTTPS
 

3)企业版独有的功能
 

·集群(水平伸缩/高可用)

社区版不支持集群等高可用配置,只有单机。

·基于用户和角色的访问控制

社区版在安全管理方面相比企业版而言,功能较弱,仅提供用户和密码管理,没有涉及角色、权限控制等企业必需的安全管理功能。

·热备份

社区版不支持热备份(neo4j-backup),只有企业版才有这个工具。

·日志功能

社区版本没有安全日志功能,Neo4j提供安全日志和查询日志两种,用于记录数据库的查询和发生的安全事件,但仅在企业版才支持。

·查询管理

可以设置事务超时时间,以及列出运行的查询,可以选择性终止一个或多个查询。

·诊断及调优工具

JMX日志和监控,包含Graphite JMX客户端

·垂直伸缩(超过4核)

支持超过4个以上的CPU核心,对于超过4核的CPU提供高度优化的并行图算法执行过程。

·锁管理

对于超过4核的CPU系统提供更加高效的写入锁机制以增加并发处理能力

·Cypher查询追踪

对正在运行的查询进行状态跟踪和管理(例如强制结束查询的运行)

·企业级监控

更全面的监控插件以及日志输出,社区版本仅有http日志,企业版包含了GC、Security日志。

·世界级支持

有钱啥都好说......
 

4)企业版报价

套餐(服务器 x 内核) 价格(万美元/年)

3 x 8 = 19.9(万美元/年)

3 x 4 = 9.9(万美元/年)

2 x 4 = 6.8(万美元/年)

1 x 4 = 3.6(万美元/年)

这里需要注意neo4j的企业报价不仅和机器数量有关还与CPU核数挂钩。
 

2.4 Neo4j 使用
 

1)环境

Java:jdk1.8

Neo4j: neo4j3.5.7
 

2)安装

资料包:https://pan.baidu.com/s/1cA49NnqzQp0Z9QQdCX9GGw

·jdk安装

·neo4j安装

下载地址:https://neo4j.com/download-center/#releases
 

·简单使用

通过浏览器访问图库,默认账密: neo4j/neo4j,会提示你修改密码
 


正确的打开姿势

查询图库并限制返回个数

MATCH (n) RETURN n LIMIT 25

 


如果这时候张宝宝想要找亮平办点儿事情应该怎么托关系呢?我们通过关系图谱可以看到有n个方法可以实现,那么为了追求效率肯定是“求最少的人办最多的事儿”,这个时候就要用到我们的最短路径算法了,放心图库中已经自带了。
 

match p=shortestpath((u1:User{name:'张宝宝'})-[*]-(u2:User{name:'侯亮平'})) return p


2.5 Neo4j应用场景
 

·金融行业应用

反欺诈已经是金融行业一个核心应用,通过图数据库可以对不同的个体、团体做关联分析,从人物在指定时间内的行为,例如去过地方的IP地址、曾经使用过的MAC地址(包括手机端、PC端、WIFI等)、社交网络的关联度分析,同一时间点是否曾经在同一地理位置附近出现过,银行账号之间是否有历史交易信息等。

 

·社交网络图谱

在社交网络中,公司、员工、技能的信息,这些都是节点,它们之间的关系和朋友之间的关系都是边,在这里面图数据库可以做一些非常复杂的公司之间关系的查询。比如说公司到员工、员工到其他公司,从中找类似的公司、相似的公司,都可以在这个系统内完成。

·企业关系图谱

图数据库可以对各种企业进行信息图谱的建立,包括最基本的工商信息,包括何时注册、谁注册、注册资本、在何处办公、经营范围、高管架构。围绕企业的经营范围,继续细化去查询企业究竟有哪些产品或服务,例如通过企业名称查询到企业的自媒体,从而给予其更多关注和了解。另外也包括对企业的产品和服务的数据关联,查看该企业有没有令人信服的自主知识产权和相关资质来支撑业务的开展。

企业在日常经营中,与客户、合作伙伴、渠道方、投资者都会打交道,这也决定了企业对社会各个领域都广有涉猎,呈现面错综复杂,因此可以通过企业数据图谱来查询,层层挖掘信息。基于图数据的企业信息查询可以真正了解企业的方方面面,而不再是传统单一的工商信息查询。
 

2.6 思考

以上只是neo4j图数据库的基本安装、简单使用以及应用场景,那么我们该如果用好图数据库,如何去定义自己的图模型、编写图库语句以及图库如何用我们的java代码来操作了?请关注下期出品。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Neo4j是一种数据库,可以用于构建和查询关系谱。关于西游记的关系谱代码实现,可以按照以下步骤进行: 1. 安装Neo4j数据库:首先需要下载并安装Neo4j数据库,可以从官方网站获取安装包,并按照指引进行安装。 2. 创建节点和关系:在Neo4j中,节点表示实体,关系表示实体之间的连接。可以使用Cypher查询语言来创建节点和关系。例如,可以创建"人物"节点和"关系"节点,并使用关系人物连接起来。 示例代码: ``` // 创建人物节点 CREATE (:Person {name: '孙悟空'}) CREATE (:Person {name: '猪八戒'}) CREATE (:Person {name: '沙僧'}) CREATE (:Person {name: '唐僧'}) // 创建关系节点 CREATE (:Relation {type: '师徒', description: '孙悟空是唐僧的徒弟'}) CREATE (:Relation {type: '师徒', description: '猪八戒是唐僧的徒弟'}) CREATE (:Relation {type: '师徒', description: '沙僧是唐僧的徒弟'}) ``` 3. 查询关系使用Cypher查询语言可以查询和遍历关系谱中的节点和关系。例如,可以查询孙悟空的师傅是谁。 示例代码: ``` // 查询孙悟空的师傅 MATCH (p:Person {name: '孙悟空'})-[:师徒]->(master:Person) RETURN master.name ``` 查询结果: ``` +--+ | master.name | +--+ | "唐僧" | +--+ ``` 4. 扩展关系谱:可以根据需要继续添加节点和关系构建更复杂的关系谱。例如,可以添加更多的人物节点和关系节点,如妖怪、兵器等。 以上是关于Neo4j实现西游记关系谱的简要介绍。如果你有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值