更新时间:2024-02-22 18:07
图数据库发展有着非常长的历史。早在1960年代,IBM的IMS导航型数据库已经支持了层次模型以及树状结构,这些都是特殊形式的图。在1960年代后期的网络模型数据库(Network model Databases)已经可以支持图结构,CODASYL (Conference/Committee on Data SystemsLanguages)于 1959 年定义了 COBOL,1969 年定义了网络数据库语言。由于当时的硬件的性能无法支持复杂的查询需求,没有大范围的推广使用。期间图数据库一直不断的进化发展,到了2000年代,随着互联网时代大量关联数据的产生、RDF资源描述框架在网络交换资源中的普遍应用、以及具备ACID事务保证的图数据库的出现,让图数据再次回到了历史舞台中央。
以属性图为核心数据模型的现代图数据库从诞生到大规模应用分为三个阶段
Graph 1.0:单机原生图数据库
2002-2010年,图数据库的使用开始兴起。这个阶段的图数据库采用小规模原生图存储,与传统数据库相比,原生图数据库遍历查询时无需索引,能够极大减少系统开销、提升查询效率。但基于单机的小规模原生图数据库扩展性较差,受制于单机性能的瓶颈,无法支持大规模数据的分布式存储查询以及并行计算。典型代表如:Neo4j。
Graph 2.0:分布式非原生图数据库
2010-2016年,随着大数据时代的到来和物联网行业的蓬勃发展,数据本身的丰富程度增加,数据之间的关联性增多,扩展性成为数据库行业共同的痛点。由于底层基于分布式的非关系型存储,Graph 2.0时代的图数据库产品的扩展性有长足提升,但也因为同样的原因,查询性较Graph1.0低,并且无法有效支持多跳的深链查询,无法满足数据实时更新、查询的需求。典型代表如:JanusGraph。
Graph 3.0:原生分布式图数据库
2017年开始,为了满足大数据量级下的查询返回效率,在快速变化的商业环境下提供实时的商业智能,同前几代产品相比,第三代图数据库为图数据实时更新、查询而设计,不但在存储上提升了扩展性,同时增加了并行计算的能力,能够实现实时的图分析。大规模原生图存储、分布式并行计算能力正逐渐成为图数据库行业的主流。
从2020年开始,图数据库开始出现和知识图谱平台、人工智能平台融合的趋势,出现了与人工智能、机器学习、深度学习融合的图平台。这是下一代图数据库的发展趋势。典型代表如:Galaxybase,TuGraph。
图数据库是基于图论为数据基础的数据管理系统。它的组成包含点、边。数据通过点和边的形式进行表示,把数据转化成点,数据间的关系转化成边。图的存储方式可以整合多源异构数据。
点:代表实体或实例,例如人员、企业、帐户或要跟踪的任何其他项目。它们大致相当于关系数据库中的记录、关系或行,或者文档存储数据库中的文档。
边:也称作关系,将节点连接到其他节点的线;代表节点之间的关系。在探索节点、属性和边的连接和互连时,往往会得到意想不到的价值洞见。边可以是有向的,也可以是无向的。在无向图中,连接两个节点的边具有单一含义。在有向图中,连接两个不同节点的边,根据它们的方向具有不同的含义。边是图数据库中的关键概念,图数据库独有的数据抽象概念,而关系型数据库和文件型数据库并没有“边”这一概念,它们的关系查询必须在运行时进行具体化。
图模型主要包含属性图、RDF图两种。
属性图
属性图模型由顶点、边及其属性构成。顶点和边都可以带有属性,节点可以通过“标签(Label)”进行分组。表示关系的边总是从一个开始点指向一个结束点,而且边是一定是有方向的,这使得图成为了有向图。关系上的属性可以为节点的关系提供额外的元数据和语义 。
Resource Description Framework(RDF)
RDF模型在顶点和边上没有属性,只有一个资源描述符,这是RDF与属性图模型间最根本的区别。在RDF中每增加一条信息都要用一个单独的节点表示。比如,在图中给表示人的节点添加姓名。在属性图中只需要在节点添加属性即可,而在RDF中必须添加一个名字的单独加节点,并用hasName与原始节点相连。
更直观的模型
图数据模型直接还原业务场景,相比传统数据模型更直观,提升产品与工程师的沟通效率。
更简洁的查询语言
图数据库支持查询语言在关联查询中更简洁,以最通用的Cypher图查询语言为例,复杂关联查询时代码量比SQL大幅降低,能够帮助程序员提升开发效率。
更高效的关联查询性能
图数据库在处理关联性强的数据以及天然的图问题场景时具有强大的关联查询性能优势。因为传统关系型数据库在进行关联查询时需要做昂贵的表连接(JOIN),涉及到大量的IO操作及内存消耗。而图数据库对关联查询有针对性的优化,能防止局部数据的查询引发全部数据的读取,可以高效查询关联数据。
不同图数据库的底层存储机制可能存在很大不同。根据存储和处理模型的不同,图数据库之间也会做一些区分。比如,一些图数据库使用原生图存储,这类存储是经过优化的,专门为了存储和管理图数据而设计的。这类数据库一般称为原生图数据库,例如如Galaxybase,Neo4j,tigergraph。 有些图数据库依赖关系引擎将图数据存储在关系型数据库的表中,通过在数据实际所在的底层存储系统之上增加一个具备图语义的抽象层来进行数据交互。也有使用键值型存储方式或文档型存储方式作为底层存储的图数据库。这些类型图数据库统称为非原生图数据库,比如ArrangoDB, OrientDB, JanusGraph等。原生图存储相比非原生更具有性能优势。 原生图数据库底层存储不依赖第三方存储系统,计算和存储一体化,极大的简化了系统架构。开发人员和运维人员可以更关注业务水平的提升,避免花费大量时间在底层存储的管理和运维。同时,原生图数据库不需要和第三方技术黑盒进行沟通,少了这部分的通讯开销,系统的性能也更高
免索引邻接是一种原生图数据库的存储方式。数据查找性能取决于从一个特定节点到另一个节点的访问速度。由于免邻索引的存储方式,节点具有直接的物理 RAM 地址并在物理上指向其他相邻节点,因此可以实现快速检索。具有免索引邻接的原生图存储系统不必通过任何其他类型的数据结构来查找节点之间的链接。一旦检索到其中一个节点,图中与其直接相关的节点就会存储在缓存中,这使得数据查找甚至比用户第一次获取节点时更快。然而,这种优势是有代价的。免邻索引牺牲了不使用图遍历的查询的效率。原生图数据库使用免邻索引来处理对存储数据的 CRUD 操作。
在关系型数据库设计的时候需要进行严格的数据规范化,将数据分成不同的表并删除其中的重复数据,这种规范化保证了数据的强一致性并支持ACID事务。然而,这也对关系查询带来的限制。
快速的实现逐行访问是关系型数据库的设计原理之一,当数据的数据之间形成复杂的关联时,跨表的关联查询增加,就会出现问题。虽然可以通过将存在不同表中的不同属性进行关联从而实行复杂查询,但是开销是非常大的。
与关系型数据库相比,图数据库把关系也映射到数据结构中,对于关联度高的数据集查询更快,尤其适合那些面向对象的应用程序。同时图数据库可以更自然的扩展到大数据应用场景,因为图数据库Schema更加灵活,所以更加适合管理临时或不断变化的数据。
关系型数据库对大量的数据元素进行相同的操作时通常更快,因为这是在其自然的数据结构中操作数据。图数据库在很多方面比关系型数据库更具有优势,而且变得越来越流行,但是图数据库和关系型数据库并非是简单的替代关系,在具体应用场景中图数据库可以带来性能的提升和降低延迟才是适合的应用场景。
在许多情报和执法程序中,重要的是要寻找一个模式的事件。这些事件中的任何一个都可能看起来是无害的,但他们观点以及他们是怎样直接或间接相关的,概念是不一样的。再例如社会网络分析(SNA)对许多供应商的消费品非常感兴趣,他是构建人与人之间的关系图。Facebook是一个社交网络,它可以与家人和朋友之间保持联系。图形数据库能很好地显示出这个人在他/她的朋友圈中是否有影响力,这群朋友是否有着共同的兴趣爱好。
截至2013年6月底,我国网民规模达5.91亿人,随着越来越多用户的加入,数据量呈指数增长,对社交网络的分析将面临很大的困难。Aggarwal等在文献中介绍了一些社交网络分析应用场景,以及在中心地位分析、角色分析、网络建模等方面研究中存在的问题。针对在社交网络分析面临数据增量较大和图形数据库更适于存储和处理社交网络关系的特点,R.Soussi等提出了一种从关系数据库数据转换成图形数据库数据的机制,并从图形数据库中抽取社交网络关系的方法。S.Kadge等提出了基于图预测社交网站,预测是基于有向加权的社交图,方法是构建用户行为的社交网络图,用图挖掘技术预测未来的社交行为,并与Apriori和F-Tree两种算法的预测效率进行了对比。J.Cao等分析和模拟企业社交网络中的用户交互行为,形成企业用户的组织图和社交图,用两类图构建用户交互模型,用于预测企业用户之间的交互行为。李孝伟等提出了一种融合节点与链接属性的社交网络社区划分算法,该算法融合节点属性的相似度、节点间链接权值等链接属性信息,结合聚类算法实现了对社交网络的社区划分。
Galaxybase是国内较成熟、通用的商业化分布式并行图平台。Galaxybase是原生分布式存储架构,支持百万亿点边规模的大图数据的高性能在线查询。它的内置分布式并行计算引擎,支持了数百种图算法及定制化函数,具备优秀的实时图分析能力。此外,Galaxybase具备动态数据压缩算法能够以高压缩比对图数据进行压缩,数据落盘文件格式紧凑。
AllegroGrap是一个基于W3c标准的为资源描述框架构建的图形数据库。它为处理链接数据和Web语义而设计,支持SPARQL、RDFS++和Prolog。
GraphDB是德国sones公司在.NET基础上构建的。Sones公司于2007年成立,近年来陆续进行了几轮融资。GraphDB社区版遵循AGPL v3许可协议,企业版是商业化的。GraphDB托管在Windows Azure平台上。
InfiniteGraph基于Java实现,它的目标是构建“分布式的图形数据库”,已被美国国防部和美国中央情报局所采用。除此之外,还有其他一些图形数据库,如OrientDB、InfoGrid和HypergraphDB。Ravel构建在开源的Pregel实现之上,微软研究院的Trinity项目也是一个图形数据库项目。
百度开源的分布式图数据库。支持标准的Apache Tinkerpop Gremlin图查询语言,支持属性图,可支持千亿级规模关系数据;支持多种后端存储(Cassandra,HBase,RocksDB,MySQL,PostgreSQL,ScyllaDB);支持各类索引(二级索引、范围索引、全文索引、联合索引,均无需依赖第三方索引库);提供可视化的Web界面,可用于图建模、数据导入、图分析;提供导入工具支持从多种数据源中导入数据到图中,支持的数据源包括:CSV、HDFS、关系型数据库(MySQL、Oracle、SQL Server、PostgreSQL);支持REST接口,并提供10+种通用的图算法;支持与Hadoop、Spark GraphX等大数据系统集成。
Neo4j是一个流行的图形数据库,它是开源的。最近,Neo4j的社区版已经由遵循AGPL许可协议转向了遵循GPL许可协议。尽管如此,Neo4j的企业版依然使用AGPL许可。Neo4j基于Java实现,兼容ACID特性,也支持其他编程语言,如Ruby和Python。
StellarDB是一种分布式图数据库,以分布式的计算引擎为动力,可帮助用户实现任意数据规模的图计算,且计算能力随节点数线性扩展,可以支撑万亿级别图规模存储。除了支持大规模的数据集外,StellarDB还具备深度的图分析能力,支持10层以上的深度复杂图遍历。
图形数据库是非关系型数据库NoSQL按照数据模型分类中的一个分支体系,通过应用图形存储实体及实体间的关系信息,为某一图模型问题提供了良好的数据库存储与数据处理解决方案。最常见的社交网络中人与人的关系信息为例,使用传统关系型数据库RDBMS存储社交网络数据的效果并不理想,难以查巧及深度遍历大量复杂且互连接的数据,响应时间缓慢超出预期,而图形数据库的恃点恰到好处的填补了这一短板。作为NoSQL的一种,图形数据库很长一段时间都局限于学术与实验室,它利用圈的顶点和边来表示要素和要素之间的关系。随着社交网络Facebook、电子商务以及资源检索等领域的发展,急需一种可以处理复杂关联的存储技术,而采用图形数据库组织存储、计算分析挖掘低结构化且互连接的数据则更为有效,因此图形数据库得以逐渐从实验室走出,同时反过来也极大地推动了图形数据库的飞速发展。图数据库依托图论为理论基础,描述并存储了图中节点与其之间的关系。国内外基于图论数据挖掘展开的工作分为图的匹配、关键字查询、图的分类、图的聚类和频繁子图挖掘问题等五个方面。
图的匹配即通过研究图与图之间的拓扑结构,从而分析图之间的相似度大小,Conte等在图匹配方面有着突出的贡献;在团形数据库关键字检索方面,一方面是通过研巧网络关系图的巧化关系从而分析检索子图,包括双向查询算法算法,另一方面则基于索引指导图挖掘,著名的有BLINKS算法;图分类包括有监督分类和无监督分类两种,Boser等基于core进行分类,Horvath等提出一种基于支持向量机分类的方法;图的聚类算法包括节点和对象两种不同的范围,Aggarwal等则使用文挡结构进行聚类;频繁子图挖掘是指在图集合中挖掘公共子结构,常见的频繁子图挖掘算法包括FSG(Frequent Subgraph Discovery)、FFSM(Fast Frequent Subgraph Minning)和Splat等。同时,为改善围形数据库的性能,相关学者进行了广泛的研究,巧得了一些研究成果:N.Mar提出了一种性能化良的存储结构DEX,其利用位图的设计思想,对检索进行优化处理后,能够准确岛效的检索高达10亿级别的数据;Prima针对图数据库访问节点延迟较大这一问题,设计了一类线上数据隔离模型;Ylping等则基于皮尔森相关系数(Pearson correlation coefficient)方法设计了CGS(Correelated Graph Search)算法,其优点是提高了图的遍历速度及稳定性,同时大大减少了检索过程中的服务器压力,减少系统开销。