火山引擎DataLeap数据调度实例的 DAG 优化方案(三):技术实现

技术大讲堂数据治理数据库

在原始数据中,是以一个数组的形式返回节点信息及依赖关系。所以,需要对数据进行处理形成图所需要的数据,同时,利用多个 map 对数据进行存储,方便后续对数据进行检索,减少时间复杂度。

picture.image

实例节点的样式需要通过基础图形 Text(文本)、Rect(矩形)、Icon(图标)进行组合,以达到我们的设计要求。

在前面提到,在复杂的图场景中,需要将超过一定数量的同层节点聚合起来,以达到清晰直观地传达图所要表达的信息的目的,所以需要对图的层级及节点进行处理,从而生成聚合节点和去掉多余的节点。

picture.image

通常来说,DAG 的布局可以按照以下步骤实现。

  1. 去环:包括自环和非自环,为节点分层做准备。

  2. 节点分层:给所有节点安排合适的层级。

  3. 节点排序:同层级内节点排序,减少相邻层级中节点连续的交叉点数量。

  4. 节点坐标分配:根据分层和同层节点的排序计算节点位置。

而在火山引擎Dataleap场景中,节点的层级是有明确含义的,比如在节点 A 处于节点 B 的上方一层,且 A, B 之间有连线连接,则可认为 A 是 B 的上游一层节点。因此与传统 DAG 布局产生了以下不同点,火山引擎Dataleap研发人员需要根据场景做定制。

  1. 节点所在层级固定:DAG 布局既能支持自动计算层级,也能接受直接指定节点分层。

  2. 可能产生同层级连线:将同一层级里有连线的节点进行分组,进行内部排序后,视为整体再参与当前层级的排序,以减少交叉点的数量。

picture.image

未来从功能设计上,火山引擎Dataleap会从用户的使用场景出发,区分不同的功能满足用户的诉求。同时,在前端领域中,针对大数据量的场景,需要判断这些大数据量的展示对用户是否存在价值,从大数据量中挖掘出用户的关注点并突出重点,方便用户快速地进行查看分析。

从技术实现上,火山引擎Dataleap会结合业务,根据业务的特征去修改已有的 DAG 布局实现,以满足在不同的业务场景下,更好地将信息呈现给用户。

180
0
0
1
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论