华为云图引擎服务GES属性管理进阶
前言
华为云图引擎服务GES(以下简称GES)基于属性图模型导入图数据。随着用户数量增长和业务场景的拓展,对属性图模型提出了各种新的要求,以满足业务变化的需要。下面我们来回顾一下这一年以来GES在属性图模型上做出的改进。
首先我们来回顾一下属性图模型,我们可以通过图1示例来进一步理解。
图1 图数据格式的示例
此图数据由3个点和3条边组成,Vivian、Eric和Lethal Weapon表示点,(Vivian,Eric)、(Vivian,Lethal Weapon)和(Eric、Lethal Weapon)表示边,user和movie表示点的类型(标签),rate和friends表示关系类型(标签)。
基于该模型,以及用户使用反馈,GES在2023年做了如下三点功能。
一、点支持多标签
一般情况下,点和边只能设置一个标签,但随着使用场景的拓展,点支持多标签逐渐成为一种典型的需求(边的多标签可以通过多边来实现),例如在企业组织架构场景下,不同的员工拥有不同的标签,一个员工可以拥有多个标签,如图2所示:
图2 员工关系图数据示例
此图中点李四同时拥有员工和股东2个标签,其中员工标签包含了性别、年龄、职位3个属性,股东标签包含了持股比例1个属性,点张三拥有员工这1个标签。在此示例中员工和股东是两种明显不同的标签,不是所有员工都拥有股东标签的。
在支持多标签之前,这种业务设计可以通过宽表(即员工标签包含了所有可能的属性)来实现,但这种实现方式往往增加了数据处理、数据存储、业务设计的难度,尤其是标签下有成百上千个属性时。支持多标签后,每个点具体有哪些标签,就可以赋予哪些标签,降低了业务设计的复杂度。
当然这种多标签的能力也会有一些使用上的代价:其一是两个不同标签存在相同名称的属性时,拥有这两个标签的点对该属性过滤的结果可能是不确定的(在存储上会以优先取到的属性来做过滤),业务上需避免这样存在歧义的设计;其二是多标签的点在数据创建、返回上与单标签有所差别,GES在创建图时提供了选项用于创建点支持多标签的图。以数据返回为例,可以从图3和图4中看到两种类型的图返回点数据上的差异,从图5中看到包含多个标签的点返回的数据样例。
图3单标签图点详情返回 图4 多标签图点详情返回
图5 多标签图返回包含多个标签的点
二、不同标签下同名属性支持不同类型
GES在2.3.18版本以前对于不同Label下的同名属性并不支持不同类型,如图6所示,硬件资产和软件资产两个标签同时包含资产编码这个属性,但一个类型为String,另一个类型为Long,在2.3.18之前的版本相关标签数据是无法同时导入的,2.3.18版本取消这种限制,方便用户更自由得定义业务属性类型。
图6 不同标签包含属性名相同但类型不同的属性
三、标签下的属性支持重写
标签修改在业务设计初期或业务变化频繁场景下是一个非常典型的需求,GES在2.3.18版本以前已经支持在标签中添加属性,一定程度上满足这种业务设计变化的需求。2.3.18版本对标签修改功能做了全面的加强,支持重写标签中的所有属性。如图7所示,可通过标签更新接口重写整个标签,示例中资产编码属性类型被修改为String类型,软件类别保留了原来类型,删除了资产价值属性,增加了价格属性。
图7 标签重写
标签修改后对应点或边的数据不会立即被修改,会在数据返回时根据最新版本的标签去返回数据,对于类型有修改的属性或新增的属性默认为null值,对于类型没有修改的属性保留原来的值,对于删除的属性则不再显示。如图8和图9所示,标签修改前后同一个点返回的结果,同理属性过滤相关操作也会以所展示的属性来进行。
图8 标签修改前 图9 标签修改后
以上就是GES在2023年对属性管理功能所做的改进,希望这些改进能够优化用户的使用体验,在业务设计上更加游刃有余。
- 点赞
- 收藏
- 关注作者
评论(0)