【图数据库实战】图数据库基本概念
1、图数据库的概念
维基百科图书库的概念:
在计算机科学中,图数据库(英语:graph database,GDB)是一个使用图结构进行语义查询的数据库,它使用节点、边和属性来表示和存储数据。该系统的关键概念是图,它直接将存储中的数据项,与数据节点和节点间表示关系的边的集合相关联。这些关系允许直接将存储区中的数据链接在一起,并且在许多情况下,可以通过一个操作进行检索。图数据库将数据之间的关系作为优先级。查询图数据库中的关系很快,因为它们永久存储在数据库本身中。可以使用图数据库直观地显示关系,使其对于高度互连的数据非常有用。
图数据库是一种非关系型数据库,以解决现有关系数据库的局限性。图模型明确地列出了数据节点之间的依赖关系,而关系模型和其他NoSQL数据库模型则通过隐式连接来链接数据。图数据库从设计上,就是可以简单快速地检索难以在关系系统中建模的复杂层次结构的。图数据库与20世纪70年代的网络模型数据库相似,它们都表示一般的图,但是网络模型数据库在较低的抽象层次运行,并且不能轻松遍历一系列边。
图数据库的底层存储机制可能各有不同。有些依赖于关系引擎并将图数据“存储”到表中(虽然表是一个逻辑元素,但是这种方法在图数据库、图数据库管理系统和实际存储数据的物理设备之间施加了另一层抽象)。另一些则使用键值存储或文件导向的数据库进行存储,使它们具有固有的NoSQL结构。大多数基于非关系存储引擎的图数据库还添加了标记或属性的概念,这些标记或属性本质上是具有指向另一个文档的指针的关系。这样就可以对数据元素进行分类,以便于集中检索。
从图数据库中检索数据需要SQL之外的查询语言,SQL是为了处理关系系统中的数据而设计的,因此无法“优雅地”处理遍历图。截至2017年,没有一个像SQL那样通用的图查询语言,通常都是仅限与一个产品的。不过,已经有一些标准化的工作,使得Gremlin、SPARQL和Cypher成为了多供应商查询语言。除了具有查询语言接口外,还可以通过应用程序接口(API)访问一些图数据库。
图数据库与图计算引擎不同。图数据库是转换关系OLTP数据库的技术。而图计算引擎在OLAP中用于批量分析。由于主要技术公司在使用专有图数据库方面的成功以及开源图数据库的引入,图数据库在2000年代引起了相当大的关注。
2、图模型
图是一组对象的集合,由顶点和边构成,顶点表示实体或实例,如人、账号、组织、业务等。它们可以类比于关系型数据库里的记录(record)或行(row),或文档数据库(document database)里的文档(document)。边是将连接顶点的线,表示顶点之间的关联关系。边是图数据库中的关键概念,在关系型数据库或文档存储数据库中,没有对边的抽象概念进行直接实现。
常见的图数据表示模型有两种,分别是RDF(Resource Description Framework)模型和属性图(Property Graph)模型。 RDF和Property Graph都是最基础、最有名的图表示模式,都能够表示各种图的实体关系建模。 RDF是W3C标准,而Property Graph是工业标准,受到广大图数据库厂商的广泛支持。
2.1 属性图
目前neo4j、hugegraph等主流图数据库,都是采用Property Graph。一个属性图是由顶点(Vertex)、边(Edge)、标签(Label)、关系类型和属性(Property)组成的有向图。
顶点(Vertex):顶点是事物(Object)的抽象,一般指实体。比如:人、账户等。
边(Edge):边是两个顶点间的关联关系,有向或无向,比如:朋友关系、转账动作等。
属性(Property):顶点的属性是对事物的具体描述,根据顶点代表的类型不同,每个顶点可以有不同的属性,比如:人的姓名、人的年龄、转账的时间等
标签(Label): 指顶点、边或者索引的类型
在图形中,节点和关系是最重要的实体,所有的节点是独立存在的,为顶点设置标签,那么拥有相同标签的顶点属于一个集合;关系通过关系类型来分组,类型相同的关系属于同一个集合。关系是有向的,关系的两端是起始顶点和结束顶点,通过有向的箭头来标识方向,顶点之间的双向关系通过两个方向相反的关系来标识。顶点可有零个、一个或多个标签,但是关系必须设置关系类型,并且只能设置一个关系类型。
假设构造一个包括一个科研项目中不同合作者的属性图,如下图。顶点属性可能包含用户名和职业。边属性描述合作者之间关系
(图片来自网络)
2.2 RDF图
RDF是语义网体系的基础技术。目前知识图谱普遍采用了语义网框架中RDF(Resource Description Framework,资源模式框架)模型来表示数据
RDF是W3C的语义网框架中的数据描述的标准,通常称之为RDF三元组<主体 (subject),谓词 (predicate),宾语(object)>。其中主体一定是一个被描述的资源,由URI来表示。谓词可以表示主体的属性,或者表示主体和宾语之间某种关系;当表示属性时,宾语就是属性值,通常是一个字面值(literal);否则宾语是另外一个由URI表示的资源。
RDF图主要由以下两种元素组成:
-
节点(Nodes): 可以是具备唯一性的资源或字面值(如数值、字符串)。
-
边(Edges): 节点之间的有向连接,也被称为谓语(predicate),一般由主语指向宾语。
RDF也有标准的查询语言SPARQL,SPARQL既是一种功能齐全的查询语言,也是一种HTTP协议,可以接收通过HTTP发送的查询请求。RDF图的标准化有一个关键点就是序列化。通过序列化可以在不同RDF图数据库之间无缝切换,常用的序列化格式包括Turtle(最常用)、JSON-LD、XML。
RDF示例如下:
(图片来自网络)
3、图数据库排名
在 https://db-engines.com/en/ranking/graph+dbms上,根据图数据库的受欢迎情况,排名如下: