「图型计算架构」GraphTech生态系统2019-第2部分:图形分析

这篇文章是关于GraphTech生态系统系列文章的一部分「图型计算架构」GraphTech生态系统2019-第1部分:图形数据库。这是第二部分。它涵盖了图形分析领域。第一部分是关于图形数据库,第三部分将列出现有的图形可视化工具。

Actors of the graph analytics landscape in 2019

第二层是另一个后端层:图形分析或计算框架。它们由一组工具和方法组成,这些工具和方法是为了从以图形形式建模的数据中提取知识。它们对于许多应用程序都至关重要,因为处理复杂连接数据的大数据集在计算上具有挑战性。

对大规模分析的需求

图论领域已经产生了多种算法,分析人员可以依赖这些算法来发现隐藏在图表数据中的见解。从Google著名的PageRank算法到遍历和路径查找算法或社区检测算法,都有大量的计算可以从图表中获得见解。

我们在上一篇文章中提到的图形数据库存储系统擅长将数据存储为图形,或者管理诸如数据检索、编写实时查询或本地分析之类的操作。但是,他们可能在规模化的图形分析处理方面存在不足。这就是图形分析框架介入的地方。与常见的图形算法、处理引擎,有时还有查询语言一起,它们处理在线分析处理,并将结果保存回数据库。

图形处理引擎

图形处理生态系统提供了各种方法来应对图形分析的挑战,历史玩家占据了市场的很大一部分。

Main graph engine processing and framework vendors

2010年,Google率先发布了Pregel,一个“大规模图形处理”框架。几个解决方案,如Apache GIRAPH,一个开放源码的图形处理系统在2012由Apache基金会开发。它利用MapReduce实现来处理图形,是Facebook用来遍历其社交图的系统。其他开源系统迭代了Google的,比如Mizan或GPS。

其他系统,比如GraphChi或PowerGraph Create,都是在GraphLab于2009年发布之后推出的。这个系统最初是卡内基梅隆大学的一个开源项目,现在被称为Turi。

oraclelab开发了PGX(Parallel Graph AnalytiX),这是一个图形分析框架,包括一个支持Oracle大数据空间和图形的分析处理引擎。

微软于2013年推出的分布式开源图形引擎Trinity现在被称为微软图形引擎。GraphX于2014年推出,是在apachespark之上构建的用于并行计算的嵌入式图形处理框架。后来又引入了一些其他系统,例如信号/采集。

图形分析库和工具箱

在图形分析领域,也有专门用于图形分析的单用户系统。图分析库和工具箱提供图论算法的实现。

Some libraries and toolkits offering graph analytics capabilities

有独立的库,如NetworkX和NetworKit,用于大规模图形分析的python库,或iGraph,一个用C编写并以python和R包提供的图形库,以及由图形数据库供应商Neo4j及其图形算法库提供的库。

其他技术供应商为高性能图形分析提供图形分析库。这是GPU技术提供商NVIDIA及其NVGraph库的例子。地理信息软件QGIS也建立了自己的网络分析库。

其中一些库还提出了图形可视化工具来帮助用户构建图形数据探索接口,但这是本系列第三篇文章的主题。

图形查询语言

最后,还没有提到的一个重要的分析框架:图形查询语言。

对于任何存储系统,查询语言是图形数据库的基本元素。这些语言使得将数据建模为图形成为可能,并且它们的逻辑非常接近于图形数据模型。除了数据建模过程外,还使用图形查询语言对数据进行查询。根据它们的性质,它们可以用于数据库系统,也可以作为领域特定的分析语言。大多数高级计算引擎允许用户使用这些查询语言进行编写。

Some of the existing graph query languages and similar projects

Cypher是Neo4j在2011年创建的,用于他们自己的数据库。它在2015年作为一个名为OpenCypher的独立项目被开源。其他值得注意的图形查询语言还有:Gremlin(2009年创建的apachetinkerpop查询语言的图形遍历语言)或SPARQL(W3C在2008年创建的查询RDF图的类SQL语言)。最近,TigerGraph开发了自己的图形查询语言GSQL,Oracle创建了PGQL,这两种都是类似SQL的图形查询语言。G-Core是由链接数据基准委员会(LDBC)于2018年提出的,作为连接学术界和工业界的语言。其他供应商,如OrientDB,则使用关系查询语言SQL。

去年,Neo4j发起了一项计划,将Cypher、PGQL和G-Core统一到一种标准图形查询语言GQL(graph query language)下。该计划将在2019年3月的W3C研讨会上讨论。其他一些查询语言特别专用于图形分析,如SocialSocial。

Facebook的GraphQL本来不是一种图形查询语言,但值得一提。这个API语言已经被图形数据库供应商扩展为一种图形查询语言。Dgraph使用itnativelyas作为查询语言,Prisma正计划将其扩展到各种图形数据库,Neo4j已经将其推进到GRANDstack及其查询执行层Neo4j中-图形ql.js.

本文:http://jiagoushi.pro/node/1093

讨论:请加入知识星球【首席架构师圈】或者微信小号【jiagoushi_pro】

微信公众号

【首席架构师智库】适合物业仔细反复阅读。精彩图文详解架构方法论,架构实践,技术原理,技术趋势。我们在等你,赶快扫描关注吧。

微信小号

激烈深度讨论,报上你想加入的群:企业架构,云计算,大数据,数据科学,物联网,人工智能,安全,全栈开发,DevOps,数字化.社群已经有5000人,赶快加入讨论。

视频号

【首席架构师智库】1分钟快速了解架构相关的基本概念,模型,方法,经验。每天1分钟,架构心中熟。

知识星球

向大咖提问,近距离接触,或者获得私密资料分享。

知识星球【首席架构师圈】

微信圈子

志趣相投的同好交流。

微信圈子【首席架构师圈】

喜马拉雅

路上或者车上了解最新黑科技资讯,架构心得。

【智能时刻,架构君和你聊黑科技】

知识星球

认识更多朋友,职场和技术闲聊。

知识星球【职场和技术】