1.2 图数据库基础
1.2.1 图数据库介绍
图数据库(Graph Database)是基于图论实现的一种新型NoSQL数据库。它的数据存储结构和数据的查询方式都是以图论为基础的。图论中图的基本元素为节点和边,在图数据库中对应的就是节点和关系。
在图数据库中,数据与数据之间的关系通过节点和关系构成一个图结构并在此结构上实现数据库的所有特性,如对图数据对象进行创建、读取、更新、删除(Create、Read、Update、Delete,简称:CRUD)等操作的能力,还有处理事务的能力和高可用性等。
目前市面上较为流行的图数据库产品如图1-2所示。
图1-2 较为流行的图数据库
1.2.2 图数据模型
图数据要具体存储到图数据库中,最终落实为具体的数据文件,自然就涉及特定的图数据模型,即如何存、采用什么实现方式来存图数据。常用的有三种:属性图(Property Graphs)、超图(Hypergraphs)和三元组(Triples)。下面分别讨论每种模型。
1.2.2.1 属性图
属性图模型直观更易于理解,能描述绝大部分图使用场景,也是当下最流行的图数据模型。Neo4j采用的就是这种属性图模型。符合下列特征的图数据模型就称为属性图:
● 它包含节点和关系。
● 节点可以有属性(键值对)。
● 节点可以有一个或多个标签。
● 关系有名字和方向,并总是有一个开始节点和一个结束节点。
● 关系也可以有属性。
1.2.2.2 超图
超图是一种更为广义的图模型,在超图中,一个关系(称作超边)可以关联任意数量的节点,无论是开始节点端还是结束节点端,而属性图中一个关系只允许一个开始节点和一个结束节点,因此,超图更适用表示多对多关系。比如常见的房产拥有关系,如图1-3所示,在房产证上张三与李四共同拥有三套房,在超图中就只需一条超边(拥有)就能表示出来。
图1-3 简单的房产拥有关系超图表示
但现实中,仅仅一条超边来表示拥有关系,可能会隐藏很多细节,例如房产证中每套房张三、李四各自占有的比率,因此,如果用属性图来表示将更为丰富,只是将一条超边转化为6条属性图中的关系,如图1-4所示。
图1-4 简单的房产拥有关系属性图表示
1.2.2.3 三元组
三元组思想来源于语义网(Semantic Web),虽然迄今为止,只有很少的网络资源是用语义网来表示的,但研究人员发现可以使用带语义的标签网来表示图数据。三元组是一个包含主谓宾的数据结构,例如张三和李四拥有三套房子等。显然,单个三元组的语义还是比较有限,需要借助资源描述框架(Resource Description Framework, RDF)来增强其知识推理及数据关联性。由于按三元组模型来实现的图数据库产品很少,在此不作进一步介绍,有兴趣的读者可以深入查阅语义网的相关资料。
1.2.3 图计算引擎
与关系数据库相同,图数据库的核心也是构建在一个引擎之上的,那就是图计算引擎。图计算引擎是能够组织存储大型图数据集并且实现了全局图计算算法的一种数据库核心构件。
图1-5展示了一个图计算引擎的工作流程。它包括一个具有联机事务处理过程(On-Line Transaction Processing, OLTP)的数据库记录系统,图计算引擎用于响应用户终端或应用程序运行时发来的查询请求,周期性从记录系统中进行数据抽取、转换和加载,然后将数据从记录数据系统读入到图计算引擎并进行离线查询和分析,最后将查询、分析的结果返回给用户终端或应用程序。
图1-5 典型图计算引擎工作流程图
目前较为流行的图计算引擎有两种:单机图计算引擎和分布式图计算引擎。
单机图计算引擎的典型代表是Cassovary, Cassovary是一个用Scala编写的基于Java虚拟机的图计算引擎。在Twitter上Cassovary用来为其提供许多基于图的功能,如谁关注了谁、谁被谁关注。
分布式图计算引擎的典型代表是Pegasus和Giraph。Pegasus是一个运行在Hadoop云计算平台之上的分布式图计算引擎,最初它是为了Google的网页数据处理而设计出来的;Giraph是Apache一个高可扩展性图计算项目,它最初起源于Google开发的Pregel图形处理项目。
1.2.4 图数据库的历史
在20世纪60年代中期,Navicational数据库出现,它被认为是图数据库的雏形,这种数据库可以以树状结构的形式存储和组织数据。IBM的IMS也是此类数据库的典型代表。
在20世纪60年代后期,数据库以网络模型的存储与组织形式逐渐衍生出图数据库的概念。1969年,CODASYL为COBOL(一种数据处理领域最为广泛的程序设计语言)定义了网络数据库语言。
20世纪90年代初,为了在网站应用中加速索引网页的性能,图数据库有了较大的改进。
在2005年前后,商业化的具有ACID特性——Atomicity(原子性)、Consistency(一致性)、Isolation(隔离性)、Durability(持久性)的图数据库出现了,如:Neo4j、Oracle Spatial、GraphDB等。
在2010年,具有并行扩展功能的ACID图数据库出现,SAP HANA(High-Performance Analytic Appliance,一种高性能分析设备)将列式存储技术引入内存数据库。同期,可同时支持图形、关系、面向文档等多种存储形式的数据库也出现了,例如OrientDB、ArangoDB和MarkLogic。
随着社交应用的普及,社交应用处理复杂网状关系的需求与图数据库的特性自然而然地相互结合了,各种图数据库成为较受欢迎的社交网络数据分析解决方案。