浅谈图数据库

1、什么是图数据库

       先看下图,关系数据库是以二维表方式存储数据,而图数据库作为NoSQL(非关系型数据库)的一种,是基于图模型,存储实体及实体间关系的一项技术

        图数据库的关键要素是两个:节点(实体,通常也包含实体的属性),线(关系)。以下图为例,节点就是具体的人,而线就是人之间的关系。

        图数据库基于图模型以一种直观的方式存储和展示这些关系。因为是基于事物关系的模型表达,图因此也具有天然的可解释性。所以被广泛应用于关联信息的搜索,以及社会网络的分析场景中。

浅谈图数据库_第1张图片

2、图数据库对比传统关系数据库的优势

将示例图扩展

浅谈图数据库_第2张图片

.高性能

以查询要求“张旻”与“何竹”是否有亲属关系为例,关系型数据需要对全表递归扫描关联,且扫描次数需要依赖于穷举后的次数,而如果是图数据库,输入节点名称“张旻”与“何竹”,并根据图连通性(最小联通算法)判断即可获得结果。

这是因为在关系信息的处理场景下,随着数据量的增多和关系深度的增加,关系型数据库由于查询时需要记录间甚至表之间连接操作,从而导致较大的查询和关联成本,性能较差。而图数据库是在存储结构上直接把节点及其关联节点连接在一起。这样,当需要查询一个节点的关联节点时,直接从节点循着链接出发去寻找就可以了,而不需要遍历所有节点,大大节省了查询时间。

简单来说,关系型数据库会随着查询层次的加深、数据量的加大,查询性能会逐渐恶化,使用图数据库查询时,查询工作量仅与被查询的节点关系数有关,而与全局节点数无关,这样当全局节点数变多、关系变得更复杂时,子图的查询工作量不会有太大变化。另外,即使是查询层次变深,对于图数据库来说,只是多查了一层子图,逻辑比较清晰,不会像关系型数据库那样增加遍历工作量。

.直观

图模型是基于事物关系的模型,更符合人们的直观理解,也具备天然的可解释性。

3、图数据库与知识图谱

       知识图谱是2012年,由Google提出,其本质是大规模的语义网络,包含实体、属性及其之间的各种语义关系。而图数据库是知识图谱的存储引擎,并且是海量关系数据的计算平台。

       知识图谱最早应用在搜索的优化中,先看下图,相对于百度获得的更偏热点的搜索结果,Magi更多是将特朗普作为一个实体,返回其关系网络,及个人标签卡片,并且标注出每条关系的网页来源,其背后即是通过对文本解析后获得结构化数据,并结合机器学习,深度挖掘实体之间的关系,从而返回得到实体的标签、关系网络。

       简言之,知识图谱是将知识,以及知识挖掘的过程,做到了可视化,从而具备可解释性。

       安利一下网站:https://magi.com/

浅谈图数据库_第3张图片
浅谈图数据库_第4张图片

4、有哪些图数据库工具

这一段不展开做介绍,网上有相应的测评结果:https://www.1data.info/content-643.html

主要提一下Neo4j,其在单机笔记本电脑上即可安装测试,对于新手,有以下特点:

(1)支持SQL查询语言  Cypher

(2)遵循属性图数据模型

(3)支持UNIQUE约束

(4)支持通过Neo4j数据浏览器对数据库进行操作

(5)支持完整的ACID(原子性,一致性,隔离性和持久性)规则

(6)支持查询的数据导出到JSON和XLS格式,并支持Load等方式导入数据

5、neo4j的应用尝试

以网上获取到的电影数据为例(原始文件需要的线下可以给)

浅谈图数据库_第5张图片

实体、关系

这份数据里,最直观的实体是电影,演员,在这里对数据做结构化处理后,获取到4000+电影,33000+演员

而演员在不同的电影里的角色不同,有的甚至是导演,而角色只会产生在电影和演员两个实体之间,即为关系,获取到关系在8万个关系对

这里对于实体的属性,电影选择了电影名称,猫眼url,电影类型,上映时间和地点,拍摄方,以及获取奖项;对于演员,由于原始数据信息较少,所以属性只是将做过的角色作为一项技能属性。


浅谈图数据库_第6张图片
浅谈图数据库_第7张图片

导入neo4j的语句如下:

LOAD CSV WITH HEADERS FROM "file:///film.csv" AS line

CREATE (:film { film:line.film, url:line.url, type:line.type, take:line.take, duration:line.duration, area:line.area, showtime:line.showtime, prize:line.prize})

LOAD CSV WITH HEADERS FROM "file:///actor.csv" AS line

CREATE (:actor { actor:line.actor, role:line.role})

展示

浅谈图数据库_第8张图片

由于大部分电影涉及到大量演员,展示的图过于复杂,现将图的范围缩小,根据特定演员去查询子表

由于近期郑爽比较火,所以查她,其演过5部电影,均是以演员身份

浅谈图数据库_第9张图片

其跟张恒吵得很凶,那他们两个是怎么认识的呢,用以下语句查询两节点之间最短路径,发现闫妮和张恒2018年合作了电影,而闫妮和郑爽之间合作了画壁,那么张恒和郑爽有没有可能是通过闫妮认识的呢?(此张恒可能并非彼张恒,仅做测试而已)

MATCH n=allshortestPaths((a:actor {actor:"郑爽"})-[*]-(b:actor {actor:"张恒"})) return n

浅谈图数据库_第10张图片

6、探讨

以上仅是一个粗略的介绍,大家可以想一下,对于产品创新领域,能否将现有成熟的产品或者商业模式进行拆解,如下:

1、实体:商业模式中的参与方,产品中的工具或者具体技术

2、关系:参与方(公司或者团队或者个人)与成功商业创新之间的关系,具体技术或者工具与失败or成功产品之间的关系

3、最后以时间轴,进行滑动窗口分析,是不是可以看出行业在不同阶段,市场上对于创新所需元素的变化?

你可能感兴趣的:(浅谈图数据库)