暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

利用Oracle数据库属性图分析加速实体关系洞察

甲骨文云技术 2021-05-22
3136

本文涉及到的产品是Oracle Spatial and Graph,这里的Graph,不同于我们平时说的图片图形,在本文中指的是Property Graph,中文译作属性图,它由一组顶点(Vertex,代表相关实体,例如人,物,地点等)和一组边(Edge,实体之间关系,有方向或者无方向都可)组成。顶点和边有标签(Label),可以有多个属性(名称可以自己定义,例如Name,Age),这些属性用键值对表示。

现实中很多数据关系可以抽象成属性图,这些属性图有的可以简单一些,只是表示类似实体之间的关系,例如人们之间是父子,夫妻还是朋友等;有的可以复杂一些,表示了不同类型实体之间的关系,例如人们对帐户的拥有,人们对商品的购买,账户之间的转账等。

下图显示了一个红楼梦人物之间抽象出来的属性图,非常简单,具有两个顶点和一个边。两个顶点具有标识符(数字类型,例如1,2)。两个顶点都有属性:名称(Name)。图中用箭头说明边具有方向性,从顶点 1 (开始顶点)到顶点 2(结束顶点)。从中可以看出,顶点分别代表金鸳鸯和贾母,而边表示出金鸳鸯(顶点 1) 和贾母(顶点2)之间的关系是主仆,而边的方向表示金鸳鸯为贾母工作(可以为点或边设置属性来进一步明确关系,例如设置金鸳鸯的属性job=“丫鬟”,设置边的属性Year=10)。

而下图显示了一个交易系统抽取出来的复杂的属性图关系,里面顶点不仅仅代表人,还代表银行账号,购买的商品,可以看出来,Mary拥有一个账号A,这个账号A和多个账号之间有钱款交易,其中和John拥有的账号B之间有相互交易,而John购买了两个商品。当然也可以更复杂一些,例如边表示交易时,也可以加入属性date,取值表示交易的日期等。

属性图很适合进行实体之间关系的相关分析,例如找到和Mary有关系的所有点,包括她拥有的账号,账号购买的商品,和她有关的人等等,也可以找到循环交易的账号,或者识别MaryJohn之间的联系等。

Oracle属性图的支持主要包括三层:

1、可扩展和持久的存储层

通过Oracle数据库中的属性图对象,支持对顶点和边存储,对图数据索引,从而提供了底层的可扩展和持久化存储(也支持纯文本文件,Hadoop平台的HBaseOracle NoSQL数据库);

2、数据访问层

提供了一组Java API,可用于创建和删除属性图,添加和删除顶点和边,使用键值对搜索顶点和边,创建文本索引以及执行其他操作。

3、图分析层

提供了基于内存的并行图分析框架PGX,支持从Oracle数据库自动同步属性图数据到内存中,提供了几十种属性图高级分析算法,包括路径计算,排名,群体检测和遍历等。

Oracle还支持使用类SQLPGQL来对图进行查询,可以查询属性图关系,还有一个图形化的工具GraphViz支持属性图的可视化查询和展示。(未来ADW中会提供属性图Web界面,Oracle分析云也可以通过数据流集成属性图分析,结合其他数据进行更广泛的探索)。

Oracle把这些不同层面的技术有机集成在一起,大大增强和简化了属性图的存储,扩展,安全,更新,查询,分析和机器学习能力,特别适用于需要对实体之间关系进行快速复杂分析,对数据修改不会太频繁的应用场景。下面笔者就结合以上红楼梦人物和销售数据介绍一下基于PGQLOracle属性图的快速查询。

红楼梦人物关系

以前面红楼梦人物关系数据为例,我们做一些感兴趣的查询和探索。

注:本文中使用的红楼梦人物关系数据只是简单创建,与实际可能有些出入。

1.查询人物关系最多的几个人。

可以看出来,这批数据中与贾宝玉有关系的人物最多,其次是贾琏。

2.查询人物关系:查询和贾宝玉有关的人物的关系

简单查询即可以看到和贾宝玉有关系的人物,包括血缘关系,主仆关系,还有朋友等,也可以看到这些人的外部关系。

3.路径查询:Oracle属性图支持查询从顶点1到顶点2的边,并可以结合边的属性深度查询,例如确定最短路径(边最少),或者最佳路径(都是血缘关系)。贾宝玉是如何认识香菱的?查询“贾宝玉”到“香菱”路径:

但是上面并没有考虑路径的特殊性,如果我们更倾向于寻找血缘和亲属关系,定义了血缘关系的亲密度为1,其他关系亲密度都大于1,那么可以通过查询获得更延循血缘和亲属的一条路径:

针对这批红楼梦的数据,还可以通过属性图的高级分析能力,利用并行内存引擎提供的算法,通过PageRank识别最重要的人物是“贾演”,通过调用BFS从“贾演”开始遍历,能够将属性图按照层次规整列出,将结果加载到Oracle分析云中,就能展示规整的人物层次图(具体算法调用文本不再赘述,请参照Oracle 属性图引擎相关帮助https://docs.oracle.com/cd/E56133_01/latest/reference/analytics/builtins.html)。

销售数据关系

以前面复杂示例中的销售数据为例,我们可以进行快速的查询和探索:

1.找出一天内,做过转入和转出交易超过500元的账号及其所有者。

2.循环转账账号及其所有者:A转账给BB又转账给A

3.查询同时购买了某个商品的两个账号(考虑把一个账号购买的其他产品推荐给另外一个账号)

通过上图,我们可以看到账号201202203都购买了301302商品,而202单独购买了304203单独购买了303,那么可以考虑把304产品向201203推荐,把303产品向201202推荐。(前提是这些客户有类似的喜好)

其他更深入的分析,请参照之前的微信文章《使用Oracle数据库分析和可视化属性图》一文。该文章列举了一些高级算法场景,例如自动发现转账次数最多的账户子集,通过Personalized Page Rank (PPR)进行相似推荐等等。同时还介绍了有关属性图的安装配置和使用,读者可以根据该文章构建ADW实例,虚拟机实例,安装OracleGraph Server和熟悉一些基础使用。具体可参见:https://mp.weixin.qq.com/s/J6D89K4robEkb88bAzo8Ew

由以上分析场景介绍我们可以看到,在目前越来越重视关系和影响性的情况下,结合各个行业特有情况,属性图可以发挥巨大作用。下面我们引申介绍一下各个行业的主要应用场景:

金融行业反洗钱和识别可疑交易

可以创建属性图,表示实体之间交易信息,以及实体相关信息,包括电子邮件地址、密码、地址等等。创建属性图后,运行简单的查询,即可找到那些具有类似信息,相互之间经常转款的的帐户和客户。

也可以通过某个犯法或可疑账户,通过分析查找与之有关联的账户,以及类似的账户,从而确定非法交易路径和同伙。

制造业物料清单变更影响

制造业的产品包含多个零件,例如汽车有10000-20000个零件,如果需要更换某个零件,需要分析与之有关系的部分,以及他们之间的依赖关系,现在的分析手段,需要多次循环多表查询,费时费力。

可以把所有部件之间的关系抽象成属性图,通过属性图查询影响和依赖关系,响应时间可以缩短到秒甚至更快,这样就可以实时交互式分析,还可以更进一步引入生产商,供应商,材料,年限等信息,辅助进行部件可信度,生产商可靠性,供应商选型等相关分析。

政府行业税务欺诈

通过属性图,构建法人,公司,法人之间关系,公司之间交易和发票信息,能够快速从众多企业交易中,查询出可疑交易,例如循环交易和虚开发票,从而帮助税务部门识别税务欺诈。

公共安全--犯罪侦察

通过把罪犯,可疑人物,相关人员之间关系抽象成属性图,能够通过属性图的高级分析,例如PageRankCentrality,识别出犯罪团体中的联络人和重要人物,从而辅助决策消除犯罪的关键。也可以通过路径分析,相似行为或关系,识别犯罪同伙。

零售业多商品推荐

现在有多种技术可以实现购买预测以支持推荐引擎,例如机器学习。但属性图可以基于关系提供一种更加快速的方法支持对于多商品的购买推荐,在属性图结构中,客户和他们喜欢购买的产品之间的关系已经建好,所以更容易和快速运行算法通过数据来获得推荐。此外,实时推荐正变得越来越重要,需要能够关联产品信息,客户库存、过去的客户行为、当前供应商信息、物流,甚至社会数据,如广告点击和产品探索通过社交媒体等,在属性图中也可以很好的构建和利用这些关系。

属性图提供更好的技术,支持收集所有产品相关数据,构建关系连接,通过查询快速了解客户需求和产品趋势,然后提供实时推荐。属性图中的PageRankPersonalized PageRankMatrix Factorization等算法能够很好地支持多客户和多商品的购买可能性预测。

当然还有更多的应用场景,例如可以结合属性图和地理位置实现设备关系洞察,物流路径规划等,限于篇幅,不在这里一一介绍了。

Oracle属性图分析层提供了基于内存的并行的多种高级分析算法,包括:

  • 中心性 - Degree Centrality, EigenvectorCentrality, PageRank, Betweenness Centrality, Closedness Centrality, HITS, ...

  • 组件和社区(分群) - Strongly ConnectedComponents (Tarjan's and Kosaraju's). Weakly Connected Components,

  • Twitter's Who-To-Follow, Label Propagation, ...

  • 路径发现 - Single source all destination(Bellman-Ford), Dijsktra's shortest path, Hop Distance (Breadth-first search),...

  • 社区(分群)评估 - Coefficient (TriangleCounting), Conductance, Modularity, Adamic-Adar counter ..

最后总结一下,Oracle属性图提供了以下能力:

  • 可扩展的属性图数据库

  • 为开发者提供PGQLJava图形API

  • 通过与Oracle Text集成来进行文本搜索和查询

  • 并行的内存中属性图分析引擎(PGX

  • 快速,可扩展的社交网络分析套件,包括排名,中心性,推荐者,社区检测,路径查找

  • Oracle定义的文本文件格式并行批量加载和导出属性图数据

  • 强大的属性图可视化工具Graph Visualization

  • 支持与Apache Zeppelin集成提供NoteBook

编辑:范宏伟

文章转载自甲骨文云技术,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论