Graph Studio是阿里云DataWorks旗下的基于Graph Compute引擎打造的一站式图研发平台,旨在以简单易用的方式帮忙用户用户完成实例建模、数据导入、数据查询、可视化分析、实例运维等一系列图相关的工作。目前Graph Studio已经阿里云开启公测,欢迎感兴趣的同学申请试用。
1. 背景
跟普通的数据可视化略有差异,图可视化非常强调交互性(可分析性)。无论是在图算法开发阶段还是在图产品落地阶段图可视化分析都占有非常大的比重。在Graph Studio V1.0的版本里我们的关注点更多是投入在图算法开发阶段,主要提供了两种分析能力:通过Gremlin Terminal进行交互式分析的能力,通过Gremlin查询结果可视化以及结果的二次分析的能力。但是在实际使用过程中我们发现通过这两种方式进行图相关分析工作还是会遇到一些问题:
- 分析过程不具有渐进性
剑桥情报出品的Visualizing cyber security threats as networks 讲过一个检测异常登录的分析过程:首先加载数据到分析引擎中,通过颜色/ICON对图中数据进行区分,概览数据找到有大量IP登录的账户,通过筛选器/放大器定位到异常账号,查看异常账号,根据异常账号关联的IP Location信息判断该登录是否具有异常性。
在Graph Studio V1.0中我们把大部分精力都投入在关注用户查询的结果可读性,虽然可视化查询部分的节点右键提供了简单的节点扩散能力,但是缺乏一些常用的渐进式分析手段如节点过滤、关联点高亮、关联边高亮、扩散预判、多场景布局等。
- 较高的上手成本
底层图引擎都会提供一套图分析DSL进行图中数据分析,比如Graph Studio依赖的Graph Compute提供了一套Gremlin实现规范。但是基于DSL的分析还是区分一定的上手友好性和分析友好性。新手分析师不得不投入一定的时间学习使用Gremin查询语言。即使掌握了Gremlin语言,在分析过程中也需要不断调整Gremin语言,以期获得想要得到的分析结果
- 分析结果缺乏交互性
下图呈现的是Graph StudioV1.0中图分析结果的截图。分析师的分析结果只能通过截图的方式分享到第三方,第三方只能通过获取分析师提供的有限的分析信息,更多有用的信息比如节点边中隐藏信息没有合理的方式呈现。
- 分析过程开发难度高
在Graph Studio中除了图分析师之外,还有一类用户就是图应用的开发者。这类用户往往需要他们的应用领域中嵌入一个图分析模块协助用户一定的数据分析。而这往往需要专业领域前端开发投入大量时间才能够达到预期效果。
2. 新尝试
最近我们在Graph Studio V2.0中提供了一个全新的图分析模块来尝试解决上述图分析过程中遇到的问题。
2.1 易用的渐进式图分析
- 支持边/点级检索能力。
可以通过简单的表单操作筛选出自己想要进行分析的点/边加入到图中进行二次分析;分析过程中也支持二次搜索增加信息量;灵活的筛选能力和专业定制的高效布局算法也能避免”Hair Ball“问题。另外更多高级检索比如路径检索、Gremlin检索、Graph Compute内置算法检索 等也在排期开发中。
- 支持关系扩散/关系收起。
可以通过内置的扩展操作完成关系扩散分析,通过收起操作完成非重点结果的隐藏
- 支持点/边预览。
提供简单有效的方式查看点/边包含的更多信息;提供下游节点分布信息帮助用户在关系扩散前提供更多有效信息;通过配置面板过滤的能力帮助分析师筛选出他们感兴趣的信息
- 支持点/边高亮,隐藏
- 支持点/边个性化定制
- 多套节点主题切换
我们的设计师精心设计了多套节点主题,以应对用户的不同需求。当然也可以通过插件机制定制开发自己的节点,详见后续文章。
- 多套高效布局方案, 满足不同的呈现需求
我们也提供了力导布局,径向布局,圆形布局,同心圆布局,横纵布局,有向分层六套深入优化后的布局算法,从布局层面保障图的可读性;同时提供用户拖拽节点的方式进行局部微调从而达到用户想要的展示效果。
- 当然我们也提供放大缩小,拖拽,全屏等基本的图操作方式。
- 另外我们还内置全局数据分布图帮助用户了解他的数据;同时还提供了Excel方式查看当前分析结果中的原始结果辅助用户跟进数据更好的决策
2.2 分析结果外嵌
对于分析结果外嵌的能力,目前我主要提供两种方式
- 保留了传统的分析结果导出为PNG的外嵌方式
- 新增通过标签分析结果外迁到第三方应用的能力。外嵌的页面具有一定的交互能力,但是不具有节点数据调整能力(如搜索,关系扩散)。这样用户可以使用一种安全可控的方式把图中更多的信息呈现出来。
2.3 分析能力外嵌
- 同时对于第三方应用开发者,Graph Studio V2.0的图分析模块保留了产品外嵌能力,使用Graph Compute和Graph Studio的三方开发者可以通过引入一个React组件的方式直接把分析能力嵌入到他们自己的产品中。
export default function GraphAnalyser() {
const { instanceId, id } = useParams();
const plugins = usePlugins();
const options = useOptions();
const [core, onReady] = useOnDataReady();
return (
<GraphAnalyserComponent
instanceId={instanceId}
id={id}
plugins={plugins}
options={options}
onReady={onReady}
/>
);
}
- 同时图分析模块保留了一定的定制能力。开发者可以根据实际需求,通过插件方式定制自己的搜索面板、预览面板,统计面板、节点样式、布局等能力;同时提供Options的进行页面结构微调。
3. 总结
上述就是我们在Graph Studio上对于图分析领域做的思考。当然目前我们在图分析领域也仅仅是个起步,真正下沉到业务中我们还有更多的事情需要做,比如千万级节点渲染,时序分析的支持,GEO分析支持等高级图分析技术,那也欢迎赶兴趣的同学一起建设。