本文为您介绍在图数据库 KonisGraph 实例中,涉及到的图相关基础概念。
有向属性图模型
图数据库 KonisGraph 中的图为属性图模型,包含了用户定义的点、边、以及点边具有的属性的有向多重图。
图的概念
属性图:Property Graphs,是指图中的顶点或边可以有属性。
有向图:Directed Graphs,是指边具有方向。例如,A → B 和 B → A 是不同的。
多重图:Multigraph Graphs,允许两个顶点之间存在多条边。例如,在一张交易业务的属性图模型中,用户作为顶点,交易记录作为边;用户 A 向用户 B 支付多笔,每一笔交易都视为一条边,则在这张图中,A → B之间存在多条有向边。
例如,在这张音乐社区的图模型中,包含两种类型的顶点(用户 User 和歌曲 Music),以及三种类型的边(用户间的好友关系 friends,以及用户和歌曲的 release、like 关系);顶点和边还可以具有额外的属性信息,如用户可以具有歌曲类型偏好等。
图的相关概念
图数据库 KonisGraph 提供了4种核心抽象来表达属性图模型,分别是图(Graph)、顶点(Vertex)、边(Edge)和属性(Property)。
图(Graph)
图(Graph),又称图库,是对关联实体的顶级抽象,类似于关系数据库的 database 概念。在图的使用中,图(Graph)可以表示具体的业务场景,并给出相应命名。
例如,好友关系图(社交网络业务)、QQ Music(音乐流媒体业务)、WechatPay(支付网络业务)等。
顶点(Vertex)
顶点(Vertex),是一组具有相同属性的顶点,如代表用户、歌曲、新闻。每个顶点都包含用户提供的唯一 ID 标识,点的类型,以便高效查询。
一个图(Graph)通常包含了多种顶点。例如 QQ 音乐中的用户和歌曲。
边(Edge)
边(Edge),是一组相同关系的集合,如用户和用户之间的好友关系 friends 、用户和商品之间的购买关系 purchase 等。边(Edge)表示两种不同顶点之间的某种关系,或者一种相同顶点间的同质关系。
例如,QQ 音乐中用户和音乐是两种不同类型的顶点,他们之间的 like 边表示用户对音乐的喜好。而 QQ 好友网络只有用户一种顶点。
边(Edge) | 起点(src vertex) | 终点(dst vertex) | 说明 |
friends | 用户 user | 用户 user | 同质/同构网络 |
like | 用户 user | 音乐 music | 异质/异构网络 |
属性(Properties)
属性是顶点或边所具有的属性数据。
说明:
图数据库 KonisGraph 是强 Schema,故首先应创建点和边具有相应的属性,然后创建顶点和边时,指明相应的属性。
属性包含了三要素:1)属性名;2)属性类型;3)属性值。
为了高效的查询图数据,KonisGraph 允许对边上的属性设置索引,并根据该索引属性快速完成检索和排序。
如,用户和用户的 friends 的亲密度得分 score 可以作为排序属性,顺序或倒序排列。