[技术分享]初探图数据库

什么是图和图数据库

参考书目:《图数据库实战》

图是对自然世界中的实体和关系的抽象,其中关系的地位更加突出,例如七桥问题中,重要的不是具体的项,而是表现这些项之间如何连接的拓扑结构。图数据库中将关系和实体作为同等重要的地位。

图数据库是一种数据存储引擎,将包含顶点和边的基本图结构与持久化技术和遍历(查询)语言相结合,以创建针对高度关联数据的存储和快速检索进行优化的数据库。

图数据库与关系型数据库有什么区别

关系数据库尽管能够表示关系(使用外键),但往往代价高昂。通过将连接(边)和数据项(顶点)放在同等重要的地位,图数据库可以将这些关联表示为数据库里的完整结构,从而轻松地观察和操作。

图数据库提供了比关系数据库更简单、更优雅的解决方案,三类场景更适合图数据库:1、 递归查询(例如,组织中员工的汇报层次结构或者组织结构图)。2、复合结果类型(例如,订单和产品报告示例)3、 路径(例如,过河问题)。需要注意的是,一个问题可以用图来表示,并不一定意味着图数据库是解决这个问题的最佳技术。

图数据库如何建模

数据建模过程是把真实世界中的某些问题、理解和疑问转换成软件,通常聚焦在包含构建数据库在内的技术实现上。这个过程包括识别和理解问题,确定问题中的实体和关系,然后构建该问题在数据库中的表示。图数据的建模过程大致相同。主要区别在于,我们的思维方式必须从“实体第一”(更准确地说,是“实体唯一”)转变为“实体加关系”。

使用Apache TinkerPop图数据库

Apache TinkerPop图数据库使用Gremlin进行操作,需要下载Gremlin Server和Gremlin Console以安装Apache TinkerPop数据库。

TinkerGraph并非一个你能下载的软件。它只是那些可下载软件(如Gremlin Server 和Gremlin Console)里的核心引擎。

可参考官网起步教程学习tinkerpop。

启动Gremlin Server:

 ./gremlin-server.bat

启动Gremlin console:

 ./gremlin.bat 

注意,如果停止Gremlin Server,将丢失数据库里的所有数据,因为Gremlin Server只将数据存储在内存中。

图的基础遍历与递归遍历

关于遍历traversal的基本概念:在关系数据库中,我们使用查询来解答这个问题,但在图数据库中,则使用遍历,在图中移动的过程称为遍历(traverse)。通俗来说,便利就是一个“密室逃脱”的过程,图是由一些通道(边、关系)和房间(端、节点)组成的密室,从一个房间出发,房间的抽屉里写着标签(属性),房间周围的门写这出、入方向和标签。你可以直接接触(访问)房间里所有可见的东西(顶点属性、边和边属性),但是要接触除了抽屉和门之外的任何东西,都需要付出额外的努力(走出去)。

遍历图的过程可以分解为几个基本操作:找到起始顶点,确定要遍历的边,遍历该边,最后到达目标顶点完成遍历。需要注意几点:遍历是一系列操作;遍历需要知道我们在哪里;带有抽屉和门的“密室逃脱”图;边的方向很重要;遍历并不包含历史记录。

递归遍历:

当遇到需要遍历未知数量的边才能找到答案的问题时,我们就要使用递归遍历,例如查找“朋友的朋友”。为了实现递归遍历,Gremlin引入了新的操作:

● repeat(traversal):重复循环遍历操作,直到接收到停止指示为止。traversal参数表示要在循环中重复的一组Gremlin操作。

● times(integer):repeat()循环的修饰符。integer参数表示要循环执行的次数。

● until(traversal):repeat()循环的修饰符。traversal参数表示要为每次循环计算一遍的一组Gremlin操作。当traversal参数里的计算结果为true时,退出repeat()操作。

寻路遍历和图变异

两个概念:

路径(path)是在遍历中从开始顶点访问到结束顶点之间的所有顶点和边的列表。

变异(mutation)可以简单地被理解为通过添加、修改或删除顶点、边和/或属性来改变图。

使用python操作图数据库

参考官网:

https://tinkerpop.apache.org/community.html

https://tinkerpop.apache.org/docs/current/reference/#gremlin-python

图数据库可视化

文章介绍了apache tinkerpop图数据库相关资料,其中包括在线图数据库可视化网站和图数据库可视化工具。

你可能感兴趣的:(笔记,数据库)