CN112352234B - 用于处理并发属性图查询的系统 - Google Patents
用于处理并发属性图查询的系统 Download PDFInfo
- Publication number
- CN112352234B CN112352234B CN201980040077.2A CN201980040077A CN112352234B CN 112352234 B CN112352234 B CN 112352234B CN 201980040077 A CN201980040077 A CN 201980040077A CN 112352234 B CN112352234 B CN 112352234B
- Authority
- CN
- China
- Prior art keywords
- graph
- sub
- vertices
- node
- concurrent
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000012545 processing Methods 0.000 title claims abstract description 110
- 239000012634 fragment Substances 0.000 claims abstract description 36
- 238000000034 method Methods 0.000 claims description 59
- 238000003491 array Methods 0.000 claims description 7
- 238000013468 resource allocation Methods 0.000 claims description 7
- 238000005192 partition Methods 0.000 description 74
- 230000004044 response Effects 0.000 description 31
- 238000004891 communication Methods 0.000 description 22
- 235000008694 Humulus lupulus Nutrition 0.000 description 19
- RTAQQCXQSZGOHL-UHFFFAOYSA-N Titanium Chemical compound [Ti] RTAQQCXQSZGOHL-UHFFFAOYSA-N 0.000 description 19
- 230000008569 process Effects 0.000 description 17
- 238000003860 storage Methods 0.000 description 15
- 238000000638 solvent extraction Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 9
- 238000002474 experimental method Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 8
- 238000009826 distribution Methods 0.000 description 7
- 239000011159 matrix material Substances 0.000 description 5
- 238000005457 optimization Methods 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 230000002776 aggregation Effects 0.000 description 4
- 238000004220 aggregation Methods 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000011156 evaluation Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000001174 ascending effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000007405 data analysis Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000001788 irregular Effects 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 229910003460 diamond Inorganic materials 0.000 description 1
- 239000010432 diamond Substances 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000001747 exhibiting effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000009827 uniform distribution Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24549—Run-time optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了一种用于对在分布式网络中实现的属性图进行并发属性图查询的图处理系统,所述图处理系统在相应节点上计算子图分片,所述子图分片表示为包含在一定范围内的顶点的边集。每个节点存储子图分片的数据,所述子图分片包含一系列局部顶点,这些局部顶点是所述属性图的所有顶点的子集。每个子图分片还具有边界顶点,所述边界顶点具有将所述子图分片连接到另一子图分片的边界顶点的边。在接收到所述属性图的并发查询时,根据每个并发用户查询的初始顶点来调度所述子图分片的查询。通过遍历每个节点上子图分片内的边集来遍历所述属性图,并且在遍历期间使用消息传递来将边界顶点的值发送到具有共享所述边界顶点的另一子图分片的至少一个其它节点。
Description
相关申请案交叉申请
本申请与2018年6月15日提交的发明标题为“用于处理并发属性图查询的方法和系统(Methodology and System for Handling Concurrent Property Graph Queries)”的第62/685,555号美国临时申请序列号相关,该美国临时申请的全部内容通过引用并入本文。
技术领域
本发明涉及在分布式基础设施中运行的基于边集的属性图遍历框架。
背景技术
很多大数据分析应用都研究自然建模为图的一组相关实体。然而,众所周知,由于随机数据访问模式,尤其是在工业规模应用中数据量较大的情况下,图处理面临着性能挑战。解决这些挑战对于此类工业规模应用的性能至关重要。
图处理已在大数据分析中得到了广泛应用,在知识图和机器学习应用中发挥着越来越重要的作用。许多现实世界的场景,如社交网络、Web图、无线网络等,自然地表示为大比例尺图。将应用建模为图提供了直观的表示,使得能够研究和提取数据中的有价值的信息。例如,在推荐系统中,通过分析关于邻居的信息来预测用户的兴趣,提高点击率。高性能图处理也有利于丰富重要算法。例如,映射应用充分利用了最短路径图遍历算法进行导航。为了有效管理和处理图,已经开发出了图数据库,如等。在许多大数据计算平台中,图处理框架也通常被视为关键组件,如/>中的GiraphTM、SparkTM中的GraphX、/>中的GellyTM等。然而,这种图处理系统通常侧重于加速单个图处理任务,而不考虑多个图处理任务并发运行,如在现实场景中工业规模应用所需的同时向同一图发出一组查询。
发明内容
现在描述各种示例从而以简化形式引入一些概念,在下文具体实施方式中会进一步描述这些概念。发明内容并非旨在确定请求保护的主题的关键或必要特征,也并非旨在用于限制请求保护的主题的范围。
需要一种能够支持并发属性图查询的图处理系统,以提高分布式环境中k跳可达性查询的平均响应时间。通常,属性图包括定向轴和用户的属性(attribute/property)(例如,用户名)、数据关系等。本文描述的系统和方法涉及一种在分布式基础设施中运行的基于边集的图遍历框架,称为C-Graph(即,并发图),并且使得k跳可达性查询具有高并发性和效率。本文描述的系统和方法可以通过图处理软件实现,所述图处理软件由支持属性图并发查询的分布式处理系统中的一个或多个处理器执行。
在示例实施例中,本文描述的系统旨在满足工业需求,即高效处理对大型图的一组同时图查询,而非如传统系统中那样,在服务器/集群中仅加速单个图处理任务。因为许多用户使用不同的查询并发访问一个图是十分常见的,尤其是对于云服务而言,因此需要这种并发性。此外,在许多情况下,图越来越大,导致复制图实例的开销也增加。此外,生成过多的实例导致难以实现各实例之间高效的数据一致性。因此,需要支持每个实例中的并发查询以避免过多的数据复制。此外,更新应在各实例之间进行,并且每个实例内的并发性增加。为了实现这些目标,本文描述的C-Graph遍历框架维持了全局顶点状态,以便于图遍历,同时支持同步和异步通信接口。对于任何可以分解为一组局部遍历的图处理任务,如图k跳可达性查询,这种方法相对于传统系统都表现出优异的性能。
本发明的第一方面涉及一种用于对属性图进行并发属性图查询的图处理系统,其中,所述属性图在节点分布式网络中实现。所述图处理系统包括至少一个处理器和包括指令的机器可读介质,当所述至少一个处理器执行所述指令时,所述至少一个处理器执行包括以下各项的操作:在所述节点分布式网络中的多个节点中的一个节点上确定所述属性图的多个子图分片中的一个子图分片,所述节点存储所述子图分片的数据,所述子图分片包含一系列局部顶点,所述局部顶点是所述属性图的所有顶点的子集,所述子图分片具有边界顶点,所述边界顶点具有将所述子图分片连接到另一子图分片的边界顶点的边。所述操作还包括:将所述子图分片转换为边集集合,所述边集集合包含在由顶点标识符限定的一定范围内的顶点;接收至少一个用户对所述属性图的并发查询;根据每个并发用户查询的初始顶点调度所述多个子图分片中的所述一个子图分片的查询;通过遍历所述子图分片内的边集,在执行所述并发查询期间遍历所述属性图。在示例实施例中,在遍历所述属性图期间,所述节点使用消息传递将所述子图分片的边界顶点的值发送到具有另一子图分片的至少一个其它节点,所述另一子图分片共享所述边界顶点。
在第一方面提供的第一种实现方式中,每个节点上的每个子图分片包括两个位数组:第一数组,用于标记在对所述子图分片进行下一次遍历迭代中要访问的邻接顶点列表;第二数组,用于验证所述子图分片中已访问的顶点。所述第一数组和所述第二数组的大小为N×k,其中,N为子图分片中的顶点数,k为并发用户查询数。
在所述第一方面或所述第一方面的任一前述实现方式提供的第二种实现方式中,遍历所述属性图还包括:在所述边集中查找未访问的邻居节点;将所述未访问的邻居节点填充到所述第一数组中;访问所述未访问的邻居节点并检查未访问的邻居节点;对包括所述多个子图分片中的至少一个子图分片的不同节点重复所述访问和检查。
在所述第一方面或所述第一方面的任一前述实现方式提供的第三种实现方式中,所述节点向所述节点上的所述子图分片提供收件箱和发件箱,其中,所述收件箱用于接收来自邻居子图分片的消息,所述发件箱用于当所述邻居子图分片位于所述节点分布式网络中的另一节点上时向所述邻居子图分片提供消息。
在所述第一方面或所述第一方面的任一前述实现方式提供的第四种实现方式中,所述机器可读介质还包括指令,当所述至少一个处理器执行所述指令时,所述至少一个处理器在执行所述并发查询期间通过以下方式遍历所述属性图:从每个根开始,向每个邻居顶点传送唯一标签,以标记所述子图分片的边集中的已遍历边;使用收件箱和发件箱来缓存所述唯一标签,所述唯一标签发送到所述节点分布式网络中的所述另一节点上的所述邻居子图分片并从所述节点分布式网络中的所述另一节点上的所述邻居子图分片接收。
在所述第一方面或所述第一方面的任一前述实现方式提供的第五种实现方式中,所述机器可读介质还包括指令,当所述至少一个处理器执行所述指令时,所述至少一个处理器针对稀疏性和高速缓存局部性优化相应的边集。
在所述第一方面或所述第一方面的任一前述实现方式提供的第六种实现方式中,遍历所述属性图包括:遍历(1)在对边集内的所述子图分片进行下一次遍历迭代中要访问的邻接顶点的共享邻居顶点;(2)仅进行一次所述并发查询的并发查询之间的共享顶点。
在所述第一方面或所述第一方面的任一前述实现方式提供的第七种实现方式中,遍历所述属性图包括:根据邻接顶点的所述共享邻居顶点和所述边集中的并发查询中的共享顶点,免去针对一组查询对所述属性图的重复遍历,其中,所述边集被访问一次,并且缓存来自所述边集的数据,以供重复使用。
在所述第一方面或所述第一方面的任一前述实现方式提供的第八种实现方式中,所述机器可读介质还包括指令,当所述至少一个处理器执行所述指令时,所述至少一个处理器在遍历所述属性图期间利用动态资源分配,并存储所述属性图的前一级和当前一级的值。
在所述第一方面或所述第一方面的任一前述实现方式提供的第九种实现方式中,所述机器可读介质还包括指令,当所述至少一个处理器执行所述指令时,所述至少一个处理器根据顶点标识符将所述属性图的顶点分配到不同的子图分片,并将顶点的所有出边分配到相同的子图分片。
本发明的第二方面涉及一种用于对节点分布式网络中实现的属性图进行并发查询的方法。所述方法包括:在所述节点分布式网络中的多个节点中的一个节点上确定所述属性图的多个子图分片中的一个子图分片。所述节点存储所述子图分片的数据,所述子图分片包含一系列局部顶点,这些局部顶点是所述属性图的所有顶点的子集。所述子图分片具有边界顶点,所述边界顶点具有将所述子图分片连接到另一子图分片的边界顶点得边,所述子图分片包括边集集合,所述边集集合包含在由顶点标识符限定的一定范围内的顶点。所述方法还包括:接收至少一个用户对所述属性图的并发查询;根据每个并发用户查询的初始顶点调度所述多个子图分片中的所述一个子图分片的查询;通过遍历所述子图分片内的边集,在执行所述并发查询期间遍历所述属性图;在遍历所述属性图期间,所述节点使用消息传递将所述子图分片的边界顶点的值发送到具有另一子图分片的至少一个其它节点,所述另一子图分片共享所述边界顶点。
在所述第二方面提供的第一种实现方式中,遍历所述属性图还包括:在所述边集中查找未访问的邻居节点;将所述未访问的邻居节点填充到第一数组中,所述第一数组用于标记在对所述子图分片进行下一次遍历迭代中要访问的邻接顶点列表;访问所述未访问的邻居节点并检查未访问的邻居节点;对包括所述多个子图分片中的至少一个子图分片的不同节点重复所述访问和检查。
在所述第二方面或所述第二方面的任一前述实现方式提供的第二种实现方式中,遍历所述属性图还包括:在第二数组中记录在所述子图分片中已访问的顶点,所述第一数组和所述第二数组的大小为N×k,其中,N为所述子图分片中的顶点数,k为并发用户查询数。
在所述第二方面或所述第二方面的任一前述实现方式提供的第三种实现方式中,遍历所述属性图还包括:当所述邻居子图分片位于所述节点分布式网络中的另一节点上时,向发往邻居子图分片上的邻居节点的发件箱提供消息。
在所述第二方面或所述第二方面的任一前述实现方式提供的第四种实现方式中,遍历所述属性图还包括:从所述查询指定的每个根开始,向每个邻居顶点传送唯一标签,以标记所述子图分片的边集中的已遍历边;缓存所述唯一标签,所述唯一标签发送到所述节点分布式网络中的所述另一节点上的所述邻居子图分片并从所述节点分布式网络中的所述另一节点上的所述邻居子图分片接收。
在所述第二方面或所述第二方面的任一前述实现方式提供的第五种实现方式中,所述方法还包括:针对稀疏性和高速缓存局部性优化相应的边集。
在所述第二方面或所述第二方面的任一前述实现方式提供的第六种实现方式中,遍历所述属性图包括:遍历(1)在对边集内的所述子图分片进行下一次遍历迭代中要访问的邻接顶点的共享邻居顶点;(2)仅进行一次所述并发查询的并发查询之间的共享顶点。
在所述第二方面或所述第二方面的任一前述实现方式提供的第七种实现方式中,遍历所述属性图还包括:根据邻接顶点的所述共享邻居顶点和在所述边集内的并发查询之间的共享顶点,免去针对一组并发查询对所述属性图的重复遍历,从而访问所述边集一次,并缓存来自所述边集的数据,以供重复使用。
在所述第二方面或所述第二方面的任一前述实现方式提供的第八种实现方式中,所述方法还包括:在遍历所述属性图期间利用动态资源分配,存储所述属性图的前一级和当前一级的值。
本发明的第三方面涉及一种存储计算机指令的非瞬时性计算机可读介质,所述计算机指令用于对节点分布式网络中实现的属性图进行并发查询,其中,当所述一个或多个处理器执行所述计算机指令时,所述一个或多个处理器执行以下步骤:在所述节点分布式网络中的多个节点中的一个节点上确定所述属性图的多个子图分片中的一个子图分片,所述节点存储所述子图分片的数据,所述子图分片包含局部顶点的范围,所述局部顶点是所述属性图的所有顶点的子集,所述子图分片具有边界顶点,所述边界顶点具有将所述子图分片连接到另一子图分片的边界顶点的边,所述子图分片包括边集集合,所述边集集合包含在由顶点标识符限定的一定范围内的顶点;接收至少一个用户对所述属性图的并发查询;根据每个并发用户查询的初始顶点调度所述多个子图分片中的所述一个子图分片的查询;通过遍历所述子图分片内的边集,在执行所述并发查询期间遍历所述属性图;在遍历所述属性图期间,所述节点使用消息传递将所述子图分片的边界顶点的值发送到具有另一子图分片的至少一个其它节点,所述另一子图分片共享所述边界顶点。
所述装置可以执行本文描述的方法,可以处理计算机可读介质中的指令,并且所述方法和所述计算机可读介质中的指令的其它特征由所述装置的功能性实现。此外,针对每个方面及其实现方式提供的解释同样适用于其它方面和相应的实现方式。不同的实施例可以在硬件、软件或其任何组合中实现。此外,前述任一个示例可以与前述其它示例中的任一个或多个组合,在本发明范围内产生新实施例。
附图说明
在不一定按比例绘制的附图中,在不同视图中,相同的数字可以描述类似组件。附图通过示例而非限制的方式大体上示出了在本文中描述的各种实施例。
图1示出了Slashdot Zoo图的跳点图;
图2示出了基于以边为中心的分片的图处理系统设计;
图3A示出了被划分为两个子图分区的基于边集的图表示的全局邻接矩阵,其中,每个分区转换为8个边集,由此通过出边遍历图相当于以从左到右模式扫描边集;
图3B示出了针对两个并发查询的树进行亲和性感知的遍历的图,其中示出了前三级;
图4示出了示例实施例中的图查询工作流;
图5示出了一种简单的双分区图示例,其中,从所有四个顶点开始四个并发图遍历,其中在四个顶点处使用不同的符号区分不同的查询,每个分区具有用于传入任务的收件箱缓冲区和用于传出任务的发件箱缓冲区,每个任务都与目的顶点的唯一ID相关联;
图6A是两个并发查询的位操作的示例图;
图6B示出了根据图6A的示例图的两个并发图遍历查询;
图6C示出了图6A的示例图的每一跳处的前沿(frontier)位数组和访问位数组;
图7示出了工作流的概述,所述工作流在示例实施例中提供了对图的亲和性感知的遍历、并发前沿同步和有状态前沿表示;
图8A示出了示例实施例的图处理系统的流程图;
图8B示出了在示例实施例中实现的子图的遍历;
图9示出了本文描述的C-Graph系统与运行OR-100M图的Titan系统的100个并发3跳查询的单台机器性能比较;
图10A示出了本文描述的C-Graph系统与在单台机器上运行OR-100M图的Titan系统的100个并发3跳查询的响应时间分布比较;
图10B示出了本文所述的C-Graph系统与在三台机器上运行Friendster(FR-1B)图的Gemini系统的响应时间分布比较;
图11示出了100个并发3跳查询的响应时间的数据大小可扩展性结果;
图12示出了PageRank的多台机器可扩展性结果;
图13利用FR-1B图示出了1台机器(图13A)、3台机器(图13B)、6台机器(图13C)和9台机器(图13D)的100个查询的多台机器可扩展性结果;
图14示出了20个查询(图14A)、50个查询(图14B)、100个查询(图14C)和350个查询(图14D)的FRS-100B图的3跳查询计数可扩展性结果;
图15示出了使用本文描述的C-Graph系统和在三台机器上运行FR-1B图的Gemini系统的并发BFS查询的性能比较;
图16示出了用于实现一个或多个示例实施例的示例计算机处理资源的框图。
具体实施方式
首先应理解,即使下文提供了一个或多个实施例的说明性实现方式,但是结合图1-图16描述的所公开系统和/或方法可使用任何数量的技术实现,无论所述技术是当前已知的还是已经存在的。本发明决不应限于下文所说明的说明性实现方式、附图和技术,包括本文所说明并描述的示例性设计和实现方式,而是可在所附权利要求书的范围内以及其等效物的完整范围内进行修改。
概述
许多现有的图处理系统都关注并行性,以最大限度地提高单个查询或算法执行的执行效率。因此,需要并发性来支持多个用户同时访问一个图,而并行执行每个单独查询会导致资源竞争。大多数工业系统,尤其是基于云的系统,都需要支持并发查询。
并发会在随机查询和分析查询之间发生,其中,随机查询通常接触到图的一小部分,而分析查询通常接触到整个图。在实践中,无法明确区分这两种查询,因此,分析查询和随机查询都应得到充分支持。此外,图尺寸通常相当大,必须及时或定期更新图,因此需要并发支持每个图实例。因此,本文描述的图处理系统旨在为云应用提供高效的并发支持。
工业图处理系统经常遍历超大图。尽管集中处理比较容易,但是集中处理对于工业应用来说并不实用,因为超级计算机的成本极高,拥有足够大的共享内存的机器极其昂贵。因此,假定本文描述的图处理系统在其内核设计中具有分布式计算模式。
图遍历是图处理系统必须有效处理的基本操作之一。例如,“可达性查询”实质上是进行图遍历以搜索图中两个给定顶点之间的可能路径。图查询通常与一些约束相关联,如强制性访问的顶点和/或边集合,或到达目的的最大跳数。在加权图中,如用于软件定义网络(software-defined-network,SDN)建模的加权图中,路径查询必须受到一定的距离约束,以便满足服务质量时延要求。
许多现实世界应用都依赖k跳,即,典型的可达性查询问题的一个变体。在k跳中,与给定节点的距离通常表示影响程度。例如,在无线、传感器或社交网络中,节点的信号/影响随距离而降低。通常在少量跳数中找到潜在的相关候选节点。现实世界中的网络通常是紧密相连的,这使得k跳查询高度相关。
“六度分隔理论”原则声称联系任何两个人最多需要六步,根据该理论,在较少跳数内就能访问大部分网络。因此,k跳可达性通常作为低级数据库与高级算法之间的中间“运算符”。许多高级分析可以从k跳查询方面来描述和实现,如三角形计数,即相当于查找位于同一顶点的1跳和2跳邻居内的顶点。因此,图处理系统处理k跳访问模式的能力表明它在高级分析中的性能。
相比于许多大数据系统,图处理通常面临着巨大的性能挑战。图遍历面临的一个此类挑战是,在许多图问题中,由于数据访问模式不规律,导致数据局部性差。因此,图处理通常受平台的I/O时延限制,而并非受其计算吞吐量限制。在分布式系统中,超出机器边界的通信开销(如网络时延)加剧了图处理系统面临的I/O瓶颈。
大多数现有图处理框架的另一个挑战是高效处理并发查询。这些系统通常经过优化以提高性能或减少I/O开销,但无法对并发查询作出响应。在企业应用中,一个系统通常需要同时适当处理多个查询。此外,由于多用户设置相同,因此多个用户可以同时发送查询请求。设计图数据库时通常考虑到并发性,但是这些图数据库通常在图分析方面性能较差,特别是在处理大规模图或大量并发查询方面性能较差。
支持并发查询的现有系统通常仅评估小图,不支持交互式多用户分布式环境。这些系统也不提供跨图分区的通信,并且不使用收件箱和发件箱在并发遍历期间跨分区存储消息。现有系统也不为并发查询提供对属性图的亲和性感知遍历,不针对相应节点提供有状态前沿表示。
在示例实施例中,满足这些要求的图处理系统实现了在分布式基础设施中运行的基于边集的图遍历框架,称为并发图(Concurrent Graph,C-Graph)。该系统通过在遍历期间利用重复和并置的顶点来实现亲和性感知的局部图遍历,改善了空间数据局部性(同一边集中的两个顶点)和时间数据局部性(查询之间共享的顶点),从而减少了总体执行时间。使用跨图分区的通信来支持分布式基础设施。为每个子图提供收件箱和发件箱,用于跨分区存储消息。每个查询还传播唯一标签来标记子图分片的边集中的已遍历边。当邻居在远端时,它向发件箱提供消息或解码来自收件箱的消息。使用两个位数组来表示属于相应分区(前沿)的局部顶点和已经访问的局部顶点。在分区之间发送的消息有助于在下一个图遍历迭代中确定顶点是否已经被访问。
本文描述的一个或多个实施例处理并发的局部图遍历任务,如在k跳可达性查询中的那些任务。由于考虑将磁盘I/O和网络I/O作为存储带宽的元件,因此提高了每个处理单元的效率。本文描述的C-Graph框架设计为传统的基于以边为中心的分片的图处理系统。C-Graph框架的主要作用可以总结如下:
-采用简单的基于范围的分区,以减少大型图的复杂分区方案的开销。在每个分区中使用针对稀疏性和缓存局部性优化的多模式、基于边集的图数据结构,以针对不同访问模式获得最佳性能。
-C-Graph框架研究了重叠子图之间的数据局部性,并利用按位操作和共享的全局状态进行高效的图遍历。
-为了解决单个实例中并发图查询的内存限制,在图遍历期间利用动态资源分配。不为每个顶点保存一个值,而是仅存储先前级和当前级的值。
-不同类型的图应用都支持同步/异步更新模型,如图遍历和迭代计算(例如,PageRank)。
-C-Graph系统的目标是减少对分布式环境中具有多达1亿个边的大规模图进行并发查询的平均响应时间。
图遍历
图用G=(V,E)表示,其中,V是顶点的集合,E是连接顶点的边的集合;边e={s,t,w}∈E是顶点s到t的定向链路,其中,w为加权图的权重。需要说明的是,在图数据库术语中,权重w也可以称为边e的属性。
图遍历是通过从给定源顶点(也称为根)开始,然后以特定模式跟随邻接边以迭代方式访问可到达的邻域来访问图的过程。基本图遍历方法的示例包括以广度优先搜索(breadth-first-search,BFS)和/或深度优先搜索(depth-first-search,DFS)方式访问图。大多数图应用或查询在遍历图结构时实质上都是对顶点值和/或边权重进行计算。例如,单一起点最短路径(single-source-shortest-path,SSSP)算法通过累加每个顶点相对于根的最短路径权重来求出从给定源顶点到图中其它顶点的最短路径。
k跳可达性查询实质上是图的局部遍历,从给定源顶点开始,访问k跳内的顶点。它是图应用中广泛使用的构建模块。在实际应用中,顶点的影响通常随着跳数的增加而减小。因此,对于大多数应用,将在少量跳数中找到潜在的相关候选节点。此外,现实世界中的网络往往是紧密相连的。例如,图1示出了Slashdot Zoo网络中所有顶点对的路径长度的累积分布。在该网络中,直径(δ)等于12。50百分位有效直径(δ0.5)等于3.51,90百分位有效直径(δ0.9)等于4.71。因此,可以在少于5跳内访问大部分网络,这与社交网络中的六度分隔理论相一致。
k跳查询经常被用作低级数据库与高级算法之间的中间“运算符”。许多高级函数都可以用k跳遍历来描述和实现,如三角形计数,即相当于查找位于同一顶点的1跳和2跳邻居内的顶点。广度优先搜索(Breadth-first search,BFS)是k跳的特例,其中,k→∞。因此,图数据库处理k跳访问模式的能力是其性能的良好预测指标。
如前所述,处理并发查询的能力对工业大数据产品来说非常重要。然而,在图数据库或图处理系统中增加并发性具有挑战。例如,Titan、(基于Titan)和/>等图数据库在设计时考虑了多查询/用户。然而,它们在执行并发图查询时的性能通常较差。在实验中,对于1亿个边的图,Titan平均耗时10秒完成100个并发3跳查询。对于某些查询,响应时间高达100秒。/>等其它图数据库不是分布式的,因此无法支持许多现实世界的图,如在多台机器上分区的Web规模图。
高内存占用是大规模图处理的另一个挑战。并发图查询的内存使用率通常较高,这会明显降低所有查询的响应时间。因此,大多数图处理系统不能进行轻易更改以运行并发查询。这些系统通常针对某些资源利用率较高的系统进行高度优化,但是在运行并发查询时,可能会由于内存耗尽触发系统故障。
基于范围的图分区
图2示出了C-Graph基于以边为中心的分片的图处理框架200的概述图,该图处理框架在由高速网络220连接的计算节点210的集群上运行。每个节点210包括具有缓存子图分片240的处理单元230。处理单元230是框架200中的CPU,并且可以扩展为GPU或任何其它图处理加速器。每个子图分片240包含称为局部顶点的一系列顶点,所述局部顶点是所有图顶点的子集。关于子图分片240的边界顶点是来自其它分片的顶点,所述其它分片具有连接到子图的局部顶点的边。每个子图分片240存储所有相关的入/出边以及子图的属性。图属性包括顶点值和边权重(如果图是加权的)。每个处理单元230对其自身的子图分片240进行计算并迭代地更新图属性。每个处理单元230还负责向其它处理单元230发送边界顶点的值。以这种方式构建图处理框架200可以使计算与通信解耦,并可以着重根据每个处理单元230的可用架构和资源来提高其计算效率。然后,所有通信均被视为I/O层次结构的抽象化(即内存、磁盘和网络时延)。需要说明的是,子图分片240不一定需要容纳在内存250中。因此,I/O成本也可能会涉及本地磁盘I/O。
在输入图无法容纳在节点内存中的图处理系统中,图分区是优化图处理系统性能的重要步骤。在设计图分区策略时,通常会考虑很多系统变量,如工作负载平衡、I/O成本等。根据图结构和应用行为,可以有不同的最优分区策略。此外,当图发生变化时,通常需要重新分区,这对于大规模图来说成本较高。在示例实施例中,该问题的解决方案是采用轻量级低开销分区策略。C-Graph框架200部署简单的基于范围的分区,类似于GraphChi、GridGraph、Gemini等的分区。C-Graph框架200根据顶点ID将顶点分配给不同的分区,在图采集期间重新索引该顶点ID。每个分区都包含具有所有相关入/出边和子图属性的连续顶点范围。为了平衡工作负载,可以优化每个分区以包含类似数量的边。在p节点系统中,将给定图G=(V,E)分割成p个连续子图Gi=(Vi,Ei),其中,i=0、1、……、p–1。在每个Gi中,Vi是局部顶点,Ei是边集{s,t,w},其中,源s或目的t属于Vi。其它分区中的其余顶点是边界顶点。这种将顶点的所有出边分配到同一分区是一种提高局部图遍历效率的方法。当运行PageRank等图算法时,会存储入边。
基于边集的多模态图表示
C-Graph框架200中可以采用多模态图表示,以适应不同的访问模式,并针对不同图实现最佳数据局部性。压缩稀疏行(compressed sparse row,CSR)是一种存储图的常见存储格式。它提供了一种访问顶点的出边的高效方法,但是在访问顶点的入边时效率较低。为了解决这种低效率问题,以压缩稀疏列(compressed sparse column,CSC)格式存储,入边,以压缩稀疏行(compressed sparse row,CSR)格式存储出边。
为了提高缓存局部性,本文描述的图处理系统使用具有基于边集的图表示的迭代图计算。与上述基于范围的图分区类似,将每个子图分区进一步转换为边集集合。每个边集包含在由顶点ID限定的一定范围内的顶点。图3A示出了被划分为两个子图分区的基于边集的图表示的全局邻接矩阵,其中,每个分区转换为8个边集,由此通过出边遍历图相当于以从左到右模式扫描边集。如图3A所示,具有顶点0-7的输入图300以全局邻接矩阵格式表示,并被划分为两个分区,每个分区转换为八个边集(对于分区1,为p11、p12、p13、p14、p21、p22、p23、p24;对于分区2,为p31、p32、p33、p34、p41、p42、p43、p44)。为了通过外边遍历图,从左向右扫描图3A所示的全局邻接矩阵。
生成边集是简单的。在跨机器对输入图300进行分区之后获得顶点度,然后通过均匀分布度将每个子图的顶点划分为范围集合。接下来,再次扫描边列表,根据源顶点和目的顶点所在的范围将每个边分配到边集。最后,在每个边集内,使用根据全局顶点ID和分区偏移计算的局部顶点ID生成CSR/CSC格式。预处理降低了全局排序的复杂性,并且以分治方式进行。
选择边集的粒度,使得顶点值和相关边容纳在最后一级缓存(last level cache,LLC)中。然而,真实大规模图的稀疏性质可能会产生一些微小的边集,这些边集即使不是空的,也仅由几个边组成。由于I/O时延,加载或持久保存许多此类较小边集效率较低。因此,将可能一起处理的较小边集合并,从而可能增加数据局部性。合并可以在水平和垂直的邻接边集之间进行。水平合并可以改善数据局部性,特别是当访问出顶点边时。垂直合并有利于从父顶点收集信息。
并发图遍历可以以至少两种方式从边集内维护的两个维度的局部性的边集表示中受益:(1)边集内前沿的共享邻居顶点,(2)查询之间共享顶点。图3B示出了针对两个并发查询对树进行亲和性感知遍历的图,其中示出了前三级。在图3B所示的简单示例中,呈现两个并发查询q0和q1,每个并发查询由三级的图遍历树呈现。访问顶点2和3的邻居只需在边集P1i上经过一次,i=0、1、2、3,并且由于在两个查询之间共享这两个顶点,因此可以通过仅对这两个顶点进行一次遍历来提高查询性能。计算引擎并行地对每个边集内的边执行用户定义函数。边集图表示还从两个方面改善了PageRank等迭代图计算的缓存局部性:(1)对局部图内的边进行的顺序访问,(2)通过以CSC格式存储边来保留的写局部性。按升序更新顶点值数组也有助于在枚举边集中的边时获得更好的缓存局部性。
这种使用边集表示的并发图遍历能够实现亲和性感知的图遍历优化。如上所述,图局部遍历(例如,k跳)是实现许多查询和/或图分析算法的基本操作。图局部遍历接收根顶点、遍历深度和可选遍历滤波器作为输入,并使用用户定义函数(例如,标记访问顶点)提供访问顶点作为输出。通常认为,在图3A所示的图的块邻接矩阵表示中,通过出边遍历图相当于以从左到右模式扫描块(边集)。因此,给定一组并发查询,可以标识两种亲和性:(1)查询之间的共享顶点,2)边集内的共享顶点。对于这两种亲和性,图处理系统只访问一次共享边集,并缓存数据以供重复使用。因此,通过根据标识的亲和性消除对一组查询的重复遍历来提高并发查询性能。
查询处理
分布式图引擎的高效实现需要平衡计算、通信和存储。C-Graph框架支持以顶点为中心的模型和以分区为中心的模型。以分区为中心的模型经过专门优化,以处理基于图遍历的算法,如k跳和BFS。这类模型的性能很大程度上取决于图分区的质量。
图4示出了示例实施例中的图查询工作流。具体地,图4示出了以分区为中心的模型中的图遍历迭代,与以顶点为中心的模型相比,通常需要更少的超步(superstep)来收敛。在基于分区的模型中,顶点可以分为局部顶点和边界顶点。局部顶点的值存储在本地分区中,而边界顶点的值存储在远程分区中。局部顶点与边界顶点通过消息通信。顶点可以使用顶点的唯一ID向图中的任何其它顶点发送消息。
在图4中,输入软件使图处理系统能够将图400从给定数据源采集到图处理系统中。在示例实施例中,为了实现并发查询,预处理软件包括基于范围的图分区/分片软件410,所述基于范围的图分区/分片软件410如上所述将输入图400分区成一组子图。每个子图420A、420B等的执行软件将其子图分配到遍历引擎422以进行分布式遍历,包括在423处确定待遍历的下一个节点是否为本地节点。如果是,则在424处遍历引擎422处理前沿中的下一个节点,并遍历到子图中的下一个节点。然而,当在423处确定待遍历的下一个节点不是本地节点时,第一子图420A生成消息,该消息被放入远程任务缓冲区426的发件箱中,以发送到包含待处理的下一个节点的第二子图420B。在子图420A的遍历期间,遍历引擎422还从其它子图(例如,子图420B)读取消息,其中,在传入任务缓冲区428的收件箱中从另一个子图420B的远程任务缓冲区426的发件箱接收所述消息。
如图4所示,输入软件还使图处理系统能够接收将跨图400的子图420A、420B等执行的并发查询430。并发查询430由预处理软件的查询调度器440调度。查询调度器440访问属性图的边集中的顶点,并将顶点分配到子图。将调度查询输入相应子图420的起点中,用于子图遍历。视情况,每个子图从其传入任务缓冲区428读取消息,所述消息在遍历期间从远程子图的远程任务缓冲区426接收。
因此,图4中的图查询工作流包括图4中标识的步骤(1)至(5),如下所示:
1.将图400从给定数据源采集到图处理系统中;
2.将输入图400分区为一组子图420;
3.将每个子图420分配到遍历引擎422,以进行分布式遍历;
4.跨子图420通信以根据需要执行查询;
5.通过使用亲和性感知的局部子图遍历来标识公共边并跨子图通信,从而跨子图420A、420B等执行并发查询。
使用图4的图查询工作流,通过在遍历期间利用重复和并置的顶点,以实质上改善空间数据局部性(例如,同一边集中的两个顶点)和时间数据局部性(查询之间共享的顶点),从而减少总体执行时间。此外,图4的图查询工作流通过使用相应子图的分布式计算和跨并发遍历前沿的图分区的通信,对非常大规模的图提供并发遍历前沿同步。如下文结合图5所示,图处理系统阐明:当给定遍历任务时,遍历前沿提供在下一次迭代中访问的顶点的列表。在每次迭代中查找分布前沿,并且利用本文描述的通信查找跨子图的遍历前沿。给定一组遍历任务,同时查找前沿,而不是逐个处理。例如,每个子图的传入任务缓冲区428中的收件箱和每个子图的远程任务缓冲区426中的发件箱存储用于执行的跨分区消息。在示例实施例中,每个查询传播唯一标签以标记子图分片的边集中的已遍历边。当邻居顶点是远程顶点时,子图420形成发送到远程任务缓冲区426的发件箱的消息或解码来自传入任务缓冲区428的收件箱的消息。
通常,并发查找前沿,并且通过从每个根开始向每个邻居顶点传播不同的标签来同步前沿。如果顶点出现在多个遍历任务中,则该顶点可以接收多个标签。使用收件箱和发件箱缓存待发送到其它子图/从其它子图接收的标签。可以标识并使用亲和性来限制遍历。得到的并发遍历前沿同步和跨图分区的通信使得可以使用分布式计算对非常大规模的图进行查询。每个子图的收件箱和发件箱存储了交叉分区消息。例如,每个查询传播唯一标签以标记子图分片的边集中的已遍历边。当邻居是远程邻居时,形成发送到发件箱的消息。此外,在子图遍历期间解码来自收件箱的消息。
如下文将结合图6解释,可以使用紧凑表示落入前沿的局部顶点的两个位数组和已经访问的那些数组来实现跨子图420的并发遍历的紧凑的有状态表示。在示例实施例中,每个子图使用两个位数组,一个用于标记前沿中的顶点,另一个用于验证已访问的那些顶点。每个位数组的大小为N×k,其中,N为局部子图的顶点数,k为并发查询数。消息与两个位数组结合使用,使图处理系统能够在图遍历的下一次迭代中确定顶点是否被访问。通过从查询根开始标记前沿位数组和访问位数组来进行有状态前沿表示。查找未访问的邻居,并将其填充到前沿。对于前沿中的所有顶点,检查它们的邻居,以确定它们的邻居之前是否被访问过,如果没有,则访问邻居。然后,该过程再次查找未访问的邻居,将它们填充到前沿,以重复访问检查。使用位图可以减少内存存储空间的消耗,并且使得集合操作(如,集合联合)便于高效实现。存储在位数组中的状态消息有助于在下一次迭代中确定顶点是否被访问过。
为了说明以分区为中心的模型,考虑了两种操作:本地读取和远程写入,这两种操作都会导致跨分区通信。在读取边界顶点的值时执行本地读取。例如,局部顶点的PageRank值是从所有相邻顶点计算得到的,一些相邻顶点是边界顶点。在这种情况下,在每次迭代之后,跨所有分区同步局部更新的顶点值。在其它情况下,分区可能需要更新分区的边界顶点的值。例如,在涉及遍历深度的子图遍历中,当访问边界顶点时,需要远程地更新其深度。将边界顶点ID及其值连同遍历运算符发送到其所属的分区。在该分区中,异步更新顶点值,并且根据新的深度对该顶点执行遍历。从某种意义上说,所有顶点都在本地更新,以通过高效本地计算来获得最大性能,并且使用高速网络连接跨分区主动交换图属性的所有更改。图5示出了子图遍历的一个简单示例。
图5示出了一个简单的双分区图示例(对于顶点(0)-(3),分区0和分区1),其中,表500中示出的四个并发图遍历从所有四个顶点开始,其中,使用不同的符号来区分不同的查询。每个分区具有用于传入任务的收件箱缓冲区502和用于传出任务的发件箱缓冲区504,并且每个任务与目的顶点的唯一ID相关。在每次迭代后,同步已访问顶点并且不会重复访问已访问顶点。
如在510处所示的分区0,当分区0被遍历时,由顶点0的圆形符号表示的查询前进到顶点1。然而,由于顶点2和3不在分区0中而是在分区1中,因此将由图中从顶点0到相邻顶点2和3的圆形符号表示的查询放入发件箱504中,用于与分区1中的顶点2和3通信。类似地,由于顶点3不在分区0中而是在分区1中,因此也将由从顶点1到相邻顶点3的菱形符号表示的查询放入发件箱504中,用于与分区1中的顶点3通信。如图所示,将在510处的分区0的发件箱504提供到在520处的分区1的收件箱502。如图所示,由圆形符号表示的查询遍历顶点2,并且因为顶点3位于相同的分区1中也遍历顶点3。此外,当从收件箱502读取时,由顶点1的菱形符号表示的查询遍历顶点3。
此外,如在530处的分区1所示,当遍历分区1时,由顶点2的正方形符号表示的查询前进到顶点3。然而,由于顶点1不在分区1中,而是在分区0中,因此将由图中从顶点2到相邻顶点0的正方形符号表示的查询放入发件箱504中,用于与分区0中的顶点0通信。如在540处所示,将在530处的分区1的发件箱504提供到在540处的分区0的收件箱502。如图所示,由正方形符号表示的查询遍历顶点0,并且因为顶点1位于相同的分区0中也遍历顶点1。因此,顶点中的这些符号标记了通过子图的每个查询的遍历。
因此,为了同步当前查询前沿,图处理系统从每个根开始,向每个邻居顶点传播不同的标签。如果顶点出现在多个遍历任务中,则该顶点可以接收多个标签。使用收件箱和发件箱缓存待发送到其它子图和从其它子图接收的标签。在该步骤中,通过辨识常用标签来标识亲和性。
并发查询可以按请求顺序单独执行,也可以分批处理,以实现查询间的子图共享。为了减轻图并发查询时的内存压力,在图遍历期间采用动态资源分配。只需要保留先前级和当前级的顶点值,而不是在整个查询期间保存每个顶点的值。
编程抽象化
在示例实施例中,为以分区为中心的模型提供接口。该接口可能与Giraph++TM首次引入的接口类似,该接口已被迅速采用并进一步优化。列表1示出了以分区为中心模型中的基本方法调用的接口。
列表1:以分区为中心的模型[27]
在示例实施例中,提供两个函数以适应不同类别的图应用:(a)对图结构的图遍历,和(b)对图属性的迭代计算。图遍历涉及数据密集型访问和有限的数字运算。不规律的数据访问模式会导致空间局部性差,并给内存子系统带来巨大压力。另一方面,对图属性进行计算往往涉及更多的数值计算,表现出混合工作负载行为。图遍历模式在遍历函数中定义,而迭代计算在更新函数中定义。k跳遍历实现的一个示例如列表2所示。
在列表2中,对于本地任务队列中的每个顶点,访问邻居顶点,并根据局部顶点将所述邻居顶点放入两个队列中,其中,将局部顶点插入本地任务队列中,而将边界顶点发送到远程任务队列。将所有邻居标记为跨所有处理单元访问和共享。最大遍历深度由跳数k定义。
在示例实施例中,更新函数是通过提供顶点编程接口来实现聚集-应用-分散(Gather-Apply-Scatter,GAS)模型。使用GAS接口的PageRank示例如列表3所示。该函数和普通的GAS模型图处理框架基本相同。然而,由于顶点的所有边都是局部的,本实现方式在聚集阶段不产生额外的流量。
在列表3中,聚集阶段收集入站消息。应用阶段消耗最终的消息总和并更新顶点数据。分散阶段计算每个边的消息计算。
并发查询优化
通过利用几种最先进的技术,进一步优化并发查询。在实践中,使用集合或队列数据结构来存储前沿效率较低,因为联合和设置操作的开销很大,并且需要进行大量并发图遍历。此外,不同遍历级处前沿大小的巨大差异也会引入动态内存分配开销。如果前沿由多个线程处理,则还需要锁定机制。不再维护任务队列或集合,MS-BFS中引入的用于跟踪并发图遍历前沿状态和访问状态的方法已在C-Graph中实现,并已扩展到分布式环境。例如,对于每个查询,使用2个位指示当前或下一个前沿中是否存在顶点,使用1个位跟踪是否已访问该顶点。根据硬件参数(如缓存行的长度)确定固定的并发查询数量。frontier、frontierNext和visited值存储在每个顶点的数组中,以提供恒定时间访问。
图6A是两个并发查询的位操作的示例图。如图所示,在两台机器上使用基于范围的分区将具有10个顶点(0)-(9)的示例图600划分为两个分区。分区0包含顶点V:{0~4},分区1包含顶点V:{5~9}。每个分区维护每个查询的前沿位数组和访问位数组。
图6B示出了根据图6A的示例图的两个并发图遍历查询。图6B示出了从源顶点0开始的并发查询q0和从源顶点4开始的q1的遍历树。在图600中,级1标识距离1跳的顶点;级2标识距离2跳的顶点;级3标识距离3跳的顶点,等等。如图所示,跳可以跨分区边界610发生。
图6C示出了图6A的示例图的每一跳处的前沿节点和访问节点的位数组表示。当前跳中的frontier来自前一级中的frontierNext。每行表示顶点((0)-(9)),每列表示查询(q0,q1)。这些查询在每次迭代中共享相同的顶点,并且如果同时更新并发查询,则保留数据局部性。图6C中示出的对应位数组并排示出了在每一跳之后位数组的变化。带阴影的“X”表示当前跳中正在访问一个顶点,而不带阴影的“X”表示在上一跳期间已访问过一个顶点。
如图6C所示,在初始遍历状态中,对于查询q0,仅访问了顶点0;对于查询q1,仅访问了顶点4。然而,在1跳之后,查询q0访问了顶点(1)、(2)和(3),而查询q1访问了点(1)、(3)和(7)。因此,在1跳之后,查询q0访问了顶点(0)、(1)、(2)和(3),而查询q1访问了顶点(1)、(3)、(4)和(7)。在2跳之后,查询q0访问了顶点(4)、(5)、(6),查询q1访问了顶点(0)、(2)、(5)、(6)、(8)。因此,在2跳之后,查询q0访问了顶点(0)、(1)、(2)、(3)、(4)、(5)和(6),查询q1访问了顶点(0)、(1)、(2)、(3)、(4)、(5)、(6)、(7)。和(8)。最后,在3跳之后,查询q0访问了顶点(7)、(8)和(9),查询q1访问了顶点(9)。因此,在3跳之后,q0和q1访问了示例图600中的所有顶点(0)-(9)。图6C的两位数组提供了一种简单且方便的方式来跟踪每跳期间的访问。
处理工作流
图7示出了工作流的概述,所述工作流在示例实施例中提供了对图的亲和性感知的遍历、并发前沿同步和有状态前沿表示。如图7所示,图处理设备的工作流在(1)处输入图400,并且使用例如上文结合图4描述的基于范围的图分区/分片软件410对图400进行分区。如上所述,在700处,分区为每个子图420构建边集。(2)处输入的并发查询430遍历子图,并且在710((3))处,更新前沿顶点和访问顶点的位数组,如上文结合图5和图6所述。在720((4))处对位数组进行亲和性检查,并在730处读取子图的收件箱,以在740处处理消息,在704中,在(5)处从在同一分区内或如上所述跨分区的边集高速缓存存储器750获取的前沿中查找顶点邻居。在760处删除已访问的顶点。如果子图的所有顶点都已访问,则在770处确定边集数据缓存为空,流程在(6)处结束。然而,如果有更多的顶点要访问,则在780处将查询令牌写入发件箱,并在790处更新受影响子图的对应收件箱和发件箱。在710(图6)处更新前沿顶点和访问顶点的位数组,并且子图遍历继续查询((2)),直到已访问所有顶点。
图8A示出了示例实施例中用于对节点分布式网络中实现的属性图进行并发属性图查询的图处理系统的流程图。在示例实施例中,在800处,输入属性图,并在810处使用基于范围的图分区技术跨多个处理节点进行分片和分布。在820处,节点分布网络中的相应处理节点处理待查询的属性图的相应子图分片。在示例实施例中,每个处理节点包括具有子图分片的处理单元,所述子图分片包含一系列局部顶点,所述局部顶点是所述属性图的所有顶点的子集。此外,每个子图分片具有边界顶点,所述边界顶点具有将子图分片连接到另一子图分片的边界顶点的边,由此,相应的分片一起表示整个属性图。在820处,相应处理节点将每个子图分片转换为边集集合,所述边集集合包含在由顶点ID限定的一定范围内的顶点。在750处,缓存子图的边集。在830处,响应至少一个用户对属性图的并发查询,根据每个并发用户查询的缓存边集的初始顶点在840处调度子图分片的查询。通过遍历每个节点上的子图内的边集,在执行并发查询期间,在850处同时遍历相应子图。图处理系统还在遍历属性图期间使用动态资源分配,并在860处存储属性图的前一级和当前一级的值。该过程可以重复,直到查询到已访问所有相关节点。
图8B更详细地示出了步骤850中的子图遍历。首先,当在分布式环境中的给定节点上发出查询时,根据查询的根是局部顶点还是边界顶点,将该根放入前沿或发件箱中。通过在851处从每个根开始,并在852处向每个邻居顶点传播唯一标签以标记子图分片的边集中的已遍历边,从而在执行并发查询期间遍历属性图。
在每级遍历期间,与步骤851中处理查询的根类似,根据邻居顶点是局部顶点还是边界顶点,将未访问的邻居顶点放入具有唯一标签的前沿或发件箱中。因此,在遍历图的某一级之前,前沿检查收件箱中是否有任何传入请求,并更新位数组以及应用优化。在853处,使用收件箱和发件箱缓存从节点分布式网络中的邻居子图发送/接收的唯一标签。
850处遍历属性图还包括通过854处提供亲和性感知遍历优化来遍历(1)在对边集内的子图分片进行下一次遍历迭代中要访问的邻接顶点的共享邻居顶点;(2)仅进行一次并发查询的并发查询之间的共享顶点。
在855处,更新两位数组以表示落入相应分区(前沿)的局部顶点和已经访问的局部顶点,其中,每个位数组的大小为N×k,其中,N为局部子图的顶点数,k为并发查询数。
在856处访问未访问的邻居并将未访问的邻居填充到前沿表示中。
然后,对于边界表示中的所有顶点,在857处访问它们的邻居,以确定之前是否访问过相应的顶点。在858处重复该过程,直到通过查询检查了子图中的所有邻居。当对所有邻居顶点进行了访问或遍历级别达到k跳查询数时,遍历完成,k跳查询是对于给定根要遍历的最大级别,是用户定义的查询参数。
一旦子图中的所有顶点都已经检查,则查询在859处结束。
实验评估
为了评估本文描述的图处理系统的效率及其优化,使用真实世界和半合成图数据集对系统性能进行测量。用各种图算法对系统进行了测试,实验结果报告了系统在输入图大小、机器数量和查询数方面的可扩展性。比较了具有开源图数据库Titan和最先进的图处理引擎Gemini的图处理系统的性能。
实验设置
在实验评估中,使用两种图算法来表明运行不同类型图应用的图处理系统的性能。
K跳查询是图遍历的基本算法,用于评估并发查询的性能。大多数实验是基于3跳查询,该3跳查询遍历图中从给定源顶点开始3跳内可达的所有顶点。对于每个查询,维护每个顶点的前沿队列和访问状态。最初,所有的顶点都设置为未访问,并且前沿包含源顶点。访问顶点或其父顶点的级别被记录为顶点值。将前沿中顶点的未访问的邻居添加到前沿中,以用于下一次迭代。上文列表2示出了该实现方式的细节。用于评估查询系统性能的主要因素是并发查询环境中每个查询的响应时间。测试10至350个并发查询,报告每个查询的查询时间。
PageRank是计算网站在网站图中重要性的熟知算法。在PageRank中,所有顶点在计算期间都处于激活状态。在收集所有邻居的页秩值之后,更新顶点页秩值。在实验中,运行10次迭代以进行性能比较。使用聚集-应用-分散(Gather-Apply-Scatter,GAS)API的实现方式如上面的列表3所示,每个顶点的和值初始化为零。尽管图处理系统主要用于k跳查询,但使用PageRank来评估迭代图计算应用,迭代图计算应用与图遍历相比具有不同的访问模式。
大部分实验是在9台服务器集群上进行,每台服务器都安装了Intel(R)Xeon(R)CPU E5-2600v3,总共有44个核,频率为2.6GHz,主内存为125GB。该系统和所有算法均采用C++11实现,用GCC 5.4.0编译,在Ubuntu 16.4上运行。使用套接口和消息传递接口(MessagePassing Interface,MPI)进行网络通信。
在评估期间,对真实世界和半合成数据集进行了实验。使用了两个真实世界图:SNAP的Orkut和Friendster,以及两个半合成图。两者都是由使用Friendster的Graph 500生成器生成,以测试系统处理不同规格的图的能力。Orkut和Friendster是在线社交网络,用户之间可以通过这些网络建立友谊。Orkut有300万个顶点和1.17亿个直径为9的边,而Friendster有6560万个顶点和18亿个直径为32的边。这两个图都构成具有所有边的大型连接组件。用Graph 500生成器和Friendster图生成两个半合成图。给定乘法因数m,Graph500生成器产生的图的顶点是Friendster的顶点的m倍,同时保持Friendster的边/顶点比。较小的半合成图具有1.312亿个顶点和722亿个边,较大的半合成图具有9.85亿个顶点和1065亿个边。每个图的细节在下表1中示出。
表1
实验结果
使用支持并发图遍历的开源图数据库Titan作为基线。由于Titan加载大图需要几个小时,因此使用小图Orkut来比较在Titan上运行Orkut的单台机器性能与本文描述的图处理系统。Titan提供的内部API既用于图遍历,也用于PageRank。在熟知的开源图数据库上进行了实验。然而,该系统加载和遍历大图更慢。因此,/>未纳入对比。
在讨论实验结果之前,必须说明的是,如网站或数据库这类在线业务的一个重要质量指标是响应时间。由于等待时间严重影响用户体验,因此响应时间与业务指标之间紧密相关。为了量化对查询的性能影响,定义了以下三个阈值:
-用户将响应时间视为瞬时(0.1-0.2秒):用户可以立即获得查询结果,并感觉自己直接通过用户界面操作数据。
-用户感觉自己正在与信息交互(1-5秒):他们注意到了时延,但感觉到系统正在处理查询。合格阈值在2秒以下。
-用户仍然关注任务(5-10秒):他们把注意力集中于任务上。该阈值大约为10秒。
在超过该阈值的时延之后,效率会受到影响。
根据上述阈值,可以合理地期望分布式图处理系统在几秒(例如,2秒)内响应一组(例如,100–300个)并发查询。
系统性能
与在单台机器上的图数据库Titan比较了并发3跳查询和PageRank性能。两个系统运行100个并发查询,其中,每个查询包含10个源顶点。随机选择源顶点,其中,每个系统执行1000次随机子图遍历,以避免图结构和系统偏差。根据每个查询的10个子图遍历计算查询的平均响应时间,图9示出了按升序排列的100个查询的平均响应时间。
图9所示的结果表明C-Graph图处理系统的处理速度比Titan快21倍–74倍。此外,本文描述的C-Graph处理系统表现出更低的查询时间上限,其中,所有100个3跳查询在1秒内返回,而对于某些查询,Titan需要70秒。另外,本文描述的C-Graph处理系统的响应时间变化更小。
还比较了所有1000次子图遍历的分布,结果如图10A所示。Titan的平均查询响应时间为8.6秒,而C-Graph的平均查询响应时间只有0.25秒。Titan中大约10%的查询需要超过50秒,甚至长达数百秒。这可能是由于Titan中使用的数据存储层和Java虚拟机等软件堆栈的复杂性所导致的。这些低效率使得在Titan上运行的PageRank的结果更差。对于Orkut(OR-100M)图,Titan单次迭代执行时间为数小时,而C-Graph仅耗时数秒。总体而言,C-Graph处理系统与Titan相比表现出更好且更一致的性能增益。
现有的大多数图处理系统缺乏处理大规模图的并发查询的能力。Gemini是设计效率低下、缺乏并发性的一个示例。
只是使用一种替代方法,而不是通过例如使Gemini从多个源顶点开始来重新设计并发支持难以成功。在这些系统中,将并发发出的查询序列化,除了当前查询的执行时间外,查询的响应时间还由任何积压的查询决定。使用三台机器在两个系统上使用Friendster(FR-1B)图重复100个查询。响应时间分布如图10B所示。即使Gemini非常高效,单个3跳查询只需几十毫秒,但由于等待时间堆积,平均查询响应时间约为4.25秒。C-Graph的平均响应时间只有0.3秒左右。
所进行的实验还关注C-Graph处理系统的可扩展性,利用不同的输入图数据集,以增加机器数量和查询计数。
对于并发查询,一个重要的性能指标是响应时间上限随着输入图大小的增加而缩放的程度。合格的查询系统应该保证所有查询在用户可接受的时延内返回。为了理解本文描述的C-Graph处理系统如何随着输入图大小的增加而缩放,测量了不同数据集的响应时间:具有1亿个边的Orkut(OR-100M),具有10亿个边的Friendster(FR-1B),具有1000亿个边的Friendster-Synthetic(FRS-100B)。
图11示出了利用9台机器运行不同图的100个并发3跳查询的响应时间的直方图。对于这两种图,可以观察到,对于FR-1B,约85%的查询在0.4秒内返回,对于FRS-100B,对于相同百分比的查询,响应时间略有增加,达到0.6秒。对于FR-1B,查询响应时间的上限为1.2秒,对于FRS-100B,查询响应时间上限略微增加,达到1.6秒。两个图的响应时间上限都在2.0秒阈值内。需要说明的是,响应时间很大程度取决于根顶点的平均程度,对于OR-100M、FR-1B和FRS-100B,分别是38、27、108。
利用更多数量台机器,研究本文描述的C-Graph处理系统的可扩展性。对两种类型的应用进行了实验:PageRank和并发3跳查询。
使用1至9台机器对图数据集OR-100M、FR-1B和FRS-72B运行PageRank,来检查机器间的可扩展性。结果如图12所示。所有结果均相对于对应图的单台机器执行时间进行归一化。总体而言,可扩展性非常好。对于FR-1B图,它使用3、6、9台机器分别加快了1.8倍、2.4倍和2.9倍。随着机器数量的增加,机器间的同步变得更加困难。在最小的图OR-100M中,正如预期的那样,由于通信时间主导执行,因此超过6台机器的可扩展性会变差。观察到使用最大的图FRS-72B具有更好的可扩展性,使用9台机器加快4.5倍。
图13描绘了使用不同数量机器的对单个图进行100个并发k跳查询的响应时间分布。具体地,图13示出了示出了1台机器(图13A)、3台机器(图13B)、6台机器(图13C)和9台机器(图13D)对FR-1B图进行100个查询的多台机器可扩展性结果。当机器数量增加时,大多数查询能够在短时间内完成(即80%的查询在0.2秒内接收到响应,90%的查询在1秒内完成)。对于固定数量的并发遍历查询,随着使用的机器数量的增加,访问的不同顶点的数量不会变化,而边界顶点的数量会显著增加。边界顶点越多,同步的通信开销就越大。在C-Graph框架中,采用以分区为中心的模型,结合边集技术来解决这一问题。
如上所述,C-Graph框架的主要目标是高效地执行并发图查询。为了评估该属性,研究了C-Graph框架随着查询数量的增加而变化的可扩展性。图14示出了在9台机器上运行FRS-100B图的并发3跳查询计数增加的响应时间分布。具体地,图14示出了20个查询(图14A)、50个查询(图14B)、100个查询(图14C)和350个查询(图14D)的FRS-100B图的3跳查询计数可扩展性结果。对于至多100个并发3跳查询,大部分查询可以在短时间内完成。80%的查询在0.6秒内完成,90%的查询在1秒内完成。当并发查询计数达到350时,C-Graph的性能开始下降。约40%的查询在1秒内响应,60%的查询在2秒阈值内完成。剩余查询等待4到7秒。C-Graph框架的速度下降主要是由资源限制引起的,尤其归因于并发查询所需的大量内存占用。由于每个查询都以找到的路径返回,因此内存使用量随查询计数线性增加。
进一步比较了C-Graph与Gemini的性能和可扩展性,以最大化查询跳数。在3台机器上使用Friendster(FR-1B)图对1、64、128和256个并发BFS查询进行了实验。由于Gemini不支持并发查询,因此Gemini上运行的序列化查询会报告总执行时间。此外,由于C-Graph处理框架在运行更多跳数且并发BFS查询超过25个时达到系统内存限制,因此启用了位运算。查询路径未记录。图15示出了使用本文描述的C-Graph系统和在三台机器上运行FR-1B图的Gemini系统的并发BFS查询的性能比较。如图15所示,Gemini的执行时间与并发BFS查询数成线性关系。C-Graph启动时,与单个BFS性能相同,约0.5秒完成。然而,C-Graph的执行时间随着并发BFS查询数的增加而成线性增长。因此,C-Graph在64个BFS和128个并发BFS时性能优于Gemini 1.7倍,在256个并发BFS时性能优于Gemini2.4倍。
计算机体系结构
图16是示出示例实施例提供的处理系统形式的电路的框图,所述处理系统用于实现上文结合图1-图15所描述的图处理系统的系统和方法。不需要在各个实施例中使用所有组件。计算机1600形式的一个示例性计算设备可以包括处理单元1602、存储器1603、可移动存储器1610和不可移动存储器1612。尽管示例性计算设备被示出和描述为计算机1600,但计算设备在不同实施例中可以呈不同形式。例如,所述计算设备可以替代是智能手机、平板电脑、智能手表或其它计算设备,包括结合图16所示和描述的相同或类似元件。智能手机、平板电脑和智能手表等设备通常统称为移动设备或用户设备。此外,尽管各种数据存储元件作为计算机1600的一部分进行说明,但是所述存储器还可包括或者可选地包括可通过网络(如互联网或基于服务器的存储器)访问的基于云的存储器。
存储器1603可以包括易失性存储器1614和非易失性存储器1608。计算机1600可以包括或可以访问计算环境,所述计算环境包括各种计算机可读介质,如易失性内存1614、非易失性内存1608、可移动存储器1610和不可移动存储器1612。计算机存储器包括随机存取存储器(random-access memory,RAM)、只读存储器(read-only memory,ROM)、可擦除可编程只读存储器(erasable programmable read-only memory,EPROM)或电可擦除可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、闪存或其它存储器技术、只读光盘存储器(compact disc read-only memory,CD ROM)、数字通用磁盘(Digital Versatile Disk,DVD)或其它光盘存储器、磁带盒、磁带、磁盘存储器或其它磁性存储设备,或任何其它能够存储计算机可读指令的介质。
计算机1600可以包括或可以访问包括输入接口1606、输出接口1604和通信接口1616的计算环境。输出接口1604可以包括显示设备,如触摸屏,其也可以用作输入设备。输入接口1606可包括触摸屏、触摸板、鼠标、键盘、摄像头、一个或多个设备专用按钮、集成在计算机1600内或通过有线或无线数据连接耦合到计算机1600的一个或多个传感器以及其它输入设备中的一个或多个。
计算机1600可以使用通信连接在联网环境中运行,以连接到一个或多个远程计算机,如数据库服务器。所述远程计算机可以包括个人计算机(personal computer,PC)、服务器、路由器、网络PC、对端设备或其它常见的DFD网络交换机等。所述通信连接可以包括局域网(Local Area Network,LAN)、广域网(Wide Area Network,WAN)、蜂窝网、Wi-Fi、蓝牙或其它网络。根据一个实施例,计算机1600的各种组件与系统总线1620连接。
存储在计算机可读介质上的计算机可读指令(如程序1618)可由计算机1600的处理单元1602执行。在一些实施例中,所述程序1618包括软件,当所述处理单元1602执行所述程序时,所述软件执行本文包括的任一实施例提供的操作。硬盘驱动器、CD-ROM和RAM是包括非瞬时性计算机可读介质(如存储设备)的制品的一些示例。术语“计算机可读介质”和“存储设备”不包括载波,因为载波太短暂。存储器还可以包括联网存储器,例如存储区域网络(storage area network,SAN)。计算机程序1618可用于使处理单元1602执行本文描述的一个或多个方法或算法。
尽管上文详细描述了几个实施例,但也可以进行其它修改。例如,在图中描绘的逻辑流程不需要所示特定顺序或连续顺序来达到期望的结果。可以向所描述的流程提供其它步骤或从所描述的流程中删除步骤,并可以向所描述的系统添加其它组件或从所描述的系统中移除组件。其它实施例可在所附权利要求书的范围内。
还应理解,可以在符合本发明的一个或多个计算设备中安装并与符合本发明的一个或多个计算设备一起销售包括一个或多个计算机可执行指令的软件,所述一个或多个计算机可执行指令有利于如上文结合本发明的任何一个或多个步骤所描述的处理和操作。或者,可以获取软件并将其装载到一个或多个计算设备中,包括通过物理介质或分配系统获取软件,包括例如从软件创作者拥有的服务器或从软件创作者未拥有但使用的服务器获取软件。例如,可以将软件存储在服务器中以通过互联网分配。
此外,本领域技术人员应理解,本发明在其应用中不限于在说明书中阐述或附图中说明的组件的构建和布置细节。本文的实施例能够适用其它实施例,并且能够以各种方式实践或执行。此外,应理解,本文使用的措辞和术语是为了描述目的,不应视为限制性的。在本文中使用“包括”、“包含”或“具有”及其变体旨在涵盖其后列举的项目及其等效物以及额外项目。除非另有限制,否则术语“连接”、“耦合”和“安装”以及其变体在本文中被广泛使用,并且涵盖直接连接和间接连接、耦合和安装。此外,术语“连接”和“耦合”及其变体不限于物理或机械连接或耦合。
可以至少部分地在数字电子电路、模拟电子电路中,或计算机硬件、固件、软件或其组合中实现根据所说明的实施例采用的说明性设备、系统和方法的组件。例如,这些组件可以实现为有形地体现于信息载体中,或机器可读存储设备中的计算机程序产品(如计算机程序、程序代码或计算机指令),以由数据处理装置(如可编程处理器、计算机或多台计算机)执行,或用于控制数据处理装置的操作。
计算机程序可以用任何形式的编程语言(包括编译语言或解释语言)编写,并且可以部署成任何形式,包括作为独立程序或作为模块、组件、子例程或适合在计算环境中使用的其它单元。可以将计算机程序部署成在一台计算机上或多台计算机上在一个站点处执行,也可以分布在多个站点处并通过通信网络互连。此外,用于实现本文描述的技术的功能程序、代码和代码段很容易被本文描述的技术所属领域的程序员理解为在权利要求的范围内。与说明性实施例相关联的方法步骤可以由一个或多个可编程处理器执行,从而执行计算机程序、代码或指令来执行功能(例如,对输入数据进行操作和/或生成输出)。例如,方法步骤也可以由专用逻辑电路(例如,现场可编程门阵列(field programmable gate array,FPGA)或专用集成电路(application-specific integrated circuit,ASIC))执行,并且用于执行所述方法的装置可以实现为该专用逻辑电路。
结合本文所公开实施例描述的各种说明性逻辑块、模块和电路可以利用通用处理器、数字信号处理器(digital signal processor,DSP)、ASIC、FPGA或其它可编程逻辑设备、分立门或晶体管逻辑、分立硬件组件或其为执行本文描述的功能而设计的任何组合来实施或执行。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以实现为计算设备的组合,例如DSP和微处理器、多个微处理器、一个或多个微处理器结合DSP核,或任何其它类似的配置的组合。
例如,适合于执行计算机程序的处理器包括通用和专用微处理器,以及任何种类的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或两者中接收指令和数据。计算机的必需元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括一个或多个用于存储数据的大容量存储设备(例如磁盘、磁光盘或光盘),或可操作地耦合以从该一个或多个用于存储数据的大容量存储设备接收数据或向该一个或多个用于存储数据的大容量存储设备发送数据。适于体现计算机程序指令和数据的信息载体包括各种形式的非易失性存储器,包括例如半导体存储器设备,例如电可编程只读存储器或电可编程ROM(electrically programmableread-only memory,EPROM)、电可擦除可编程ROM(electrically erasable programmableROM,EEPROM)、闪存设备、数据存储盘(例如,磁盘、内置硬盘、或可移动磁盘、磁光盘、CD-ROM和DVD-ROM盘)。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路。
本领域技术人员应当理解,可以使用多种不同的技术和技术方法中的任意一种来表示信息和信号。例如以上描述提到的数据、指令、命令、信息、信号、比特、符号和芯片可由电压、电流、电磁波、磁场或粒子、光场或粒子、或者任何组合表示。
如本文所使用,“机器可读介质”是指能够暂时或永久存储指令和数据的设备,可以包括但不限于随机存取存储器(random-access memory,RAM)、只读存储器(read-onlymemory,ROM)、缓冲存储器、闪存、光学介质、磁性介质、高速缓存存储器、其它类型的存储器(例如,可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EEPROM))和/或其任何合适的组合。术语“机器可读介质”应理解为包括能够存储处理器指令的单个介质或多个介质(例如,集中式或分布式数据库,或关联的高速缓存和服务器)。术语“机器可读介质”还应理解为包括能够存储由一个或多个处理器602执行的指令的任何介质或多种介质的组合,一个或多个处理器602执行所述指令时,使一个或多个处理器602执行本文描述的任何一种或多种方法。相应地,“机器可读介质”是指单个存储装置或设备,以及包括多个存储装置或设备的“基于云”的存储系统。
另外,在不偏离本发明的范围的情况下,各种实施例中描述及图示为独立或分离的技术、系统、子系统和方法可以与其它系统、模块、技术或方法组合或集成。示出或论述为耦合或直接耦合或彼此通信的其它项可以彼此连接或者可以采用电方式、机械方式或其它方式通过某一接口、设备或中间部件间接地耦合或通信。变化、替换和变更相关的其它实例可由本领域技术人员确定,并可在不偏离本文公开的范围的情况下举例。
尽管已经参考本发明的特定特征和实施例描述了本发明,但是明显在不脱离本发明的情况下可以制定本发明的各种修改和组合。说明书和附图仅被视为所附权利要求书所定义的本发明的说明并且考虑落于本发明的范围内的任何和所有修改、变体、组合或均等物。
Claims (20)
1.一种用于对属性图进行并发属性图查询的图处理系统,所述属性图在节点分布式网络中实现,其特征在于,所述图处理系统包括:
至少一个处理器;
包含指令的机器可读介质,当所述至少一个处理器执行所述指令时,所述至少一个处理器执行包括以下各项的操作:
在所述节点分布式网络中的多个节点中的一个节点上确定所述属性图的多个子图分片中的一个子图分片,所述节点存储所述子图分片的数据,所述子图分片包含一系列局部顶点,所述局部顶点是所述属性图的所有顶点的子集,所述子图分片具有边界顶点,所述边界顶点具有将所述子图分片连接到另一子图分片的边界顶点的边;
将所述子图分片转换为边集集合,所述边集集合包含在由顶点标识符限定的一定范围内的顶点;
接收至少一个用户对所述属性图的并发查询;
根据每个并发用户查询的初始顶点调度所述多个子图分片中的所述子图分片的查询;
通过遍历所述子图分片内的边集,在执行所述并发查询期间遍历所述属性图,其中,在遍历所述属性图期间,所述节点使用消息传递将所述子图分片的边界顶点的值发送到具有另一子图分片的至少一个其它节点,所述另一子图分片共享所述边界顶点。
2.根据权利要求1所述的图处理系统,其特征在于,每个节点上的每个子图分片包括两个位数组,第一数组用于标记在对所述子图分片进行下一次遍历迭代中要访问的邻接顶点列表,第二数组用于验证所述子图分片中已访问的顶点,所述第一数组和所述第二数组的大小为N×k,其中,N为所述子图分片中的顶点数,k为并发用户查询数。
3.根据权利要求2所述的图处理系统,其特征在于,遍历所述属性图还包括:在所述边集中查找未访问的邻居节点;将所述未访问的邻居节点填充到所述第一数组中;访问所述未访问的邻居节点并检查未访问的邻居节点;对包括所述多个子图分片中的至少一个子图分片的不同节点重复所述访问和检查。
4.根据权利要求1所述的图处理系统,其特征在于,所述节点向所述节点上的所述子图分片提供收件箱和发件箱,其中,所述收件箱用于接收来自邻居子图分片的消息,所述发件箱用于当所述邻居子图分片位于所述节点分布式网络中的另一节点上时向所述邻居子图分片提供消息。
5.根据权利要求4所述的图处理系统,其特征在于,所述机器可读介质还包括指令,当所述至少一个处理器执行所述指令时,所述至少一个处理器在执行所述并发查询期间通过以下方式遍历所述属性图:从每个根开始,向每个邻居顶点传送唯一标签,以标记所述子图分片的边集中的已遍历边;使用收件箱和发件箱来缓存所述唯一标签,所述唯一标签发送到所述节点分布式网络中的所述另一节点上的所述邻居子图分片并从所述节点分布式网络中的所述另一节点上的所述邻居子图分片接收。
6.根据权利要求1所述的图处理系统,其特征在于,所述机器可读介质还包括指令,当所述至少一个处理器执行所述指令时,所述至少一个处理器针对稀疏性和高速缓存局部性优化相应的边集。
7.根据权利要求1所述的图处理系统,其特征在于,遍历所述属性图包括:遍历(1)在对边集内的所述子图分片进行下一次遍历迭代中要访问的邻接顶点的共享邻居顶点;(2)仅进行一次所述并发查询的并发查询之间的共享顶点。
8.根据权利要求7所述的图处理系统,其特征在于,遍历所述属性图包括:根据邻接顶点的所述共享邻居顶点和在所述边集内的并发查询之间的共享顶点,免去针对一组查询对所述属性图的重复遍历,其中,所述边集被访问一次,并且缓存来自所述边集的数据,以供重复使用。
9.根据权利要求1所述的图处理系统,其特征在于,所述机器可读介质还包括指令,当所述至少一个处理器执行所述指令时,所述至少一个处理器在遍历所述属性图期间利用动态资源分配,并存储所述属性图的前一级和当前一级的值。
10.根据权利要求1所述的图处理系统,其特征在于,所述机器可读介质还包括指令,当所述至少一个处理器执行所述指令时,所述至少一个处理器根据顶点标识符将所述属性图的顶点分配到不同的子图分片,并将顶点的所有出边分配到相同的子图分片。
11.一种用于对节点分布式网络中实现的属性图进行并发查询的方法,其特征在于,包括:
在所述节点分布式网络中的多个节点中的一个节点上确定所述属性图的多个子图分片中的一个子图分片,所述节点存储所述子图分片的数据,所述子图分片包含一系列局部顶点,所述局部顶点是所述属性图的所有顶点的子集,所述子图分片具有边界顶点,所述边界顶点具有将所述子图分片连接到另一子图分片的边界顶点的边,所述子图分片包括边集集合,所述边集集合包含在由顶点标识符限定的一定范围内的顶点;
接收至少一个用户对所述属性图的并发查询;
根据每个并发用户查询的初始顶点调度所述多个子图分片中的所述一个子图分片的查询;
通过遍历所述子图分片内的边集,在执行所述并发查询期间遍历所述属性图;
在遍历所述属性图期间,所述节点使用消息传递将所述子图分片的边界顶点的值发送到具有另一子图分片的至少一个其它节点,所述另一子图分片共享所述边界顶点。
12.根据权利要求11所述的方法,其特征在于,遍历所述属性图还包括:在所述边集中查找未访问的邻居节点;将所述未访问的邻居节点填充到第一数组中,所述第一数组用于标记在对所述子图分片进行下一次遍历迭代中要访问的邻接顶点列表;访问所述未访问的邻居节点并检查未访问的邻居节点;对包括所述多个子图分片中的至少一个子图分片的不同节点重复所述访问和检查。
13.根据权利要求12所述的方法,其特征在于,遍历所述属性图还包括:在第二数组中记录在所述子图分片中已访问的顶点,所述第一数组和所述第二数组的大小为N×k,其中,N为所述子图分片中的顶点数,k为并发用户查询数。
14.根据权利要求11所述的方法,其特征在于,遍历所述属性图还包括:当邻居子图分片位于所述节点分布式网络中的另一节点上时,向发往邻居子图分片上的邻居节点的发件箱提供消息。
15.根据权利要求14所述的方法,其特征在于,遍历所述属性图还包括:从所述查询指定的每个根开始,向每个邻居顶点传送唯一标签,以标记所述子图分片的边集中的已遍历边;缓存所述唯一标签,所述唯一标签发送到所述节点分布式网络中的所述另一节点上的所述邻居子图分片并从所述节点分布式网络中的所述另一节点上的所述邻居子图分片接收。
16.根据权利要求11所述的方法,其特征在于,还包括针对稀疏性和高速缓存局部性优化相应的边集。
17.根据权利要求11所述的方法,其特征在于,遍历所述属性图还包括:遍历(1)在对边集内的所述子图分片进行下一次遍历迭代中要访问的邻接顶点的共享邻居顶点;(2)仅进行一次所述并发查询的并发查询之间的共享顶点。
18.根据权利要求17所述的方法,其特征在于,遍历所述属性图还包括:根据邻接顶点的所述共享邻居顶点和在所述边集内的并发查询之间的共享顶点,免去针对一组并发查询对所述属性图的重复遍历,从而访问所述边集一次,并缓存来自所述边集的数据,以供重复使用。
19.根据权利要求11所述的方法,其特征在于,还包括在遍历所述属性图期间利用动态资源分配,以存储所述属性图的前一级和当前一级的值。
20.一种用于对节点分布式网络中实现的属性图进行并发查询的计算机可读介质,所述计算机可读介质存储计算机指令,其特征在于,当所述一个或多个处理器执行所述计算机指令时,所述一个或多个处理器执行包括以下各项的操作:
在所述节点分布式网络中的多个节点中的一个节点上确定所述属性图的多个子图分片中的一个子图分片,所述节点存储所述子图分片的数据,所述子图分片包含一系列局部顶点,所述局部顶点是所述属性图的所有顶点的子集,所述子图分片具有边界顶点,所述边界顶点具有将所述子图分片连接到另一子图分片的边界顶点的边,所述子图分片包括边集集合,所述边集集合包含在由顶点标识符限定的一定范围内的顶点;
接收至少一个用户的对所述属性图的并发查询;
根据每个并发用户查询的初始顶点调度所述多个子图分片中的所述一个子图分片的查询;
通过遍历所述子图分片内的边集,在执行所述并发查询期间遍历所述属性图;
在遍历所述属性图期间,所述节点使用消息传递将所述子图分片的边界顶点的值发送到具有另一子图分片的至少一个其它节点,所述另一子图分片共享所述边界顶点。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862685555P | 2018-06-15 | 2018-06-15 | |
US62/685,555 | 2018-06-15 | ||
PCT/US2019/035805 WO2019241021A1 (en) | 2018-06-15 | 2019-06-06 | System for handling concurrent property graph queries |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112352234A CN112352234A (zh) | 2021-02-09 |
CN112352234B true CN112352234B (zh) | 2024-03-08 |
Family
ID=67060487
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980040077.2A Active CN112352234B (zh) | 2018-06-15 | 2019-06-06 | 用于处理并发属性图查询的系统 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11120023B2 (zh) |
EP (1) | EP3794466B1 (zh) |
CN (1) | CN112352234B (zh) |
WO (1) | WO2019241021A1 (zh) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3794466B1 (en) | 2018-06-15 | 2023-07-19 | Huawei Cloud Computing Technologies Co., Ltd. | System for handling concurrent property graph queries |
CN112912865B (zh) * | 2018-07-27 | 2024-06-07 | 浙江天猫技术有限公司 | 一种图数据存储方法、系统及电子设备 |
US11068458B2 (en) * | 2018-11-27 | 2021-07-20 | Advanced Micro Devices, Inc. | Mechanism for distributed-system-aware difference encoding/decoding in graph analytics |
KR102325047B1 (ko) * | 2019-06-10 | 2021-11-11 | 포항공과대학교 산학협력단 | 그래프 데이터 처리 방법 및 그래프 데이터 처리 장치 |
CN111143545A (zh) * | 2019-12-31 | 2020-05-12 | 北京明略软件系统有限公司 | 保险数据获取方法及装置、电子设备、计算机存储介质 |
CN111259205B (zh) | 2020-01-15 | 2023-10-20 | 北京百度网讯科技有限公司 | 一种图数据库遍历方法、装置、设备及存储介质 |
US11281695B2 (en) * | 2020-01-24 | 2022-03-22 | Cisco Technology, Inc. | Partitioning a temporal graph for distributed storage |
CN111966843A (zh) * | 2020-08-14 | 2020-11-20 | 北京同心尚科技发展有限公司 | 图数据库构建方法、路径搜索方法、装置和电子设备 |
US11989178B2 (en) | 2020-10-26 | 2024-05-21 | Oracle International Corporation | Efficient compilation of graph queries including complex expressions on top of sql based relational engine |
US11567932B2 (en) | 2020-10-26 | 2023-01-31 | Oracle International Corporation | Efficient compilation of graph queries on top of SQL based relational engine |
US20220284056A1 (en) * | 2021-03-05 | 2022-09-08 | Oracle International Corporation | Fast and memory efficient in-memory columnar graph updates while preserving analytical performance |
CN112699134A (zh) * | 2021-03-25 | 2021-04-23 | 北京智源人工智能研究院 | 基于图剖分的分布式图数据库的存储与查询方法 |
CN113065035A (zh) * | 2021-03-29 | 2021-07-02 | 武汉大学 | 一种单机核外属性图计算方法 |
US11816132B2 (en) * | 2021-04-20 | 2023-11-14 | Vesoft Inc. | Method and system for optimizing data storage of query statistics of graph database |
CN113297426A (zh) * | 2021-04-27 | 2021-08-24 | 上海淇玥信息技术有限公司 | 图数据库的特征生成方法、装置及电子设备 |
CN113761293A (zh) * | 2021-05-27 | 2021-12-07 | 腾讯科技(深圳)有限公司 | 图数据强连通分量挖掘方法、装置、设备及存储介质 |
CN113449152B (zh) * | 2021-06-24 | 2023-01-10 | 西安交通大学 | 图数据预取器及预取方法 |
US11580357B1 (en) | 2021-07-28 | 2023-02-14 | Practical Posets Llc | Self-organizing generalization hierarchy with bindings of propositions |
US11494357B1 (en) * | 2021-07-28 | 2022-11-08 | Practical Posets Llc | Directed acyclic graph path addressing |
CN113609347B (zh) * | 2021-10-08 | 2021-12-28 | 支付宝(杭州)信息技术有限公司 | 数据存储及查询方法、装置及数据库系统 |
US11841904B1 (en) * | 2021-11-24 | 2023-12-12 | Government Of The United States, As Represented By The Director, National Security Agency | Detection of coactively linked topological structures in networks and databases |
US11868403B2 (en) * | 2021-12-23 | 2024-01-09 | Jpmorgan Chase Bank, N.A. | Method and system for facilitating real-time data consumption by using a graph path cache |
US20240078261A1 (en) * | 2022-09-02 | 2024-03-07 | Tsinghua University | Hybrid sampling for a general-purpose temporal graph random walk engine |
WO2024175206A1 (en) * | 2023-02-24 | 2024-08-29 | Huawei Technologies Co., Ltd. | Apparatus and method for multi-source graph reachability searching |
US20240331230A1 (en) * | 2023-03-31 | 2024-10-03 | Fujitsu Limited | Graph set analysis and visualization for machine learning |
CN117591272A (zh) * | 2023-11-01 | 2024-02-23 | 厦门渊亭信息科技有限公司 | 一种基于共享内存的图计算实现方法、终端设备及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103140829A (zh) * | 2011-09-29 | 2013-06-05 | 英特尔公司 | 对高速缓存和/或插槽敏感的多处理器内核广度优先遍历 |
CN107291807A (zh) * | 2017-05-16 | 2017-10-24 | 中国科学院计算机网络信息中心 | 一种基于图遍历的sparql查询优化方法 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7046633B2 (en) * | 2000-09-21 | 2006-05-16 | Avici Systems, Inc. | Router implemented with a gamma graph interconnection network |
US6947433B2 (en) * | 2000-09-21 | 2005-09-20 | Avici Systems, Inc. | System and method for implementing source based and egress based virtual networks in an interconnection network |
US8600728B2 (en) * | 2004-10-12 | 2013-12-03 | University Of Southern California | Training for a text-to-text application which uses string to tree conversion for training and decoding |
US9043774B2 (en) * | 2008-02-12 | 2015-05-26 | William G. Bently | Systems and methods for information flow analysis |
US8996492B2 (en) * | 2012-12-13 | 2015-03-31 | Sap Se | Graph traversal operator inside a column store |
US9400767B2 (en) * | 2013-12-17 | 2016-07-26 | International Business Machines Corporation | Subgraph-based distributed graph processing |
EP2950507A1 (en) * | 2014-05-28 | 2015-12-02 | Fujitsu Limited | Method and system for storing distributed graph data |
US10503781B2 (en) * | 2015-04-14 | 2019-12-10 | Sap Se | Extending graph traversals with application logic |
US10387496B2 (en) * | 2015-05-21 | 2019-08-20 | International Business Machines Corporation | Storing graph data in a relational database |
US10956504B2 (en) * | 2015-09-23 | 2021-03-23 | Micro Focus Llc | Graph database query classification based on previous queries stored in repository |
WO2017078710A1 (en) * | 2015-11-04 | 2017-05-11 | Hewlett-Packard Enterprise Development LP | Processing data between data stores |
US10380188B2 (en) * | 2016-08-05 | 2019-08-13 | International Business Machines Corporation | Distributed graph databases that facilitate streaming data insertion and queries by reducing number of messages required to add a new edge by employing asynchronous communication |
US10394891B2 (en) * | 2016-08-05 | 2019-08-27 | International Business Machines Corporation | Distributed graph databases that facilitate streaming data insertion and queries by efficient throughput edge addition |
US10552450B2 (en) * | 2016-08-05 | 2020-02-04 | International Business Machines Corporation | Distributed graph databases that facilitate streaming data insertion and low latency graph queries |
US10656970B2 (en) * | 2016-09-28 | 2020-05-19 | Futurewei Technologies, Inc. | Scheduling graph computing on heterogeneous processing resources based on energy efficiency |
PL3812900T3 (pl) * | 2016-12-31 | 2024-04-08 | Intel Corporation | Systemy, sposoby i aparaty do obliczania heterogenicznego |
EP3794466B1 (en) | 2018-06-15 | 2023-07-19 | Huawei Cloud Computing Technologies Co., Ltd. | System for handling concurrent property graph queries |
US11126659B2 (en) * | 2018-12-24 | 2021-09-21 | Graphen, Inc. | System and method for providing a graph protocol for forming a decentralized and distributed graph database |
-
2019
- 2019-06-06 EP EP19733617.5A patent/EP3794466B1/en active Active
- 2019-06-06 WO PCT/US2019/035805 patent/WO2019241021A1/en unknown
- 2019-06-06 CN CN201980040077.2A patent/CN112352234B/zh active Active
-
2020
- 2020-05-19 US US15/929,739 patent/US11120023B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103140829A (zh) * | 2011-09-29 | 2013-06-05 | 英特尔公司 | 对高速缓存和/或插槽敏感的多处理器内核广度优先遍历 |
CN107291807A (zh) * | 2017-05-16 | 2017-10-24 | 中国科学院计算机网络信息中心 | 一种基于图遍历的sparql查询优化方法 |
Non-Patent Citations (1)
Title |
---|
High-Level Programming Abstractions for Distributed Graph Processing;Vasiliki Kalavri et al.;《IEEE TRANSACTIONS ON KNOWLEDGE AND DATA ENGINEERING》;第305-323页 * |
Also Published As
Publication number | Publication date |
---|---|
EP3794466A1 (en) | 2021-03-24 |
EP3794466B1 (en) | 2023-07-19 |
WO2019241021A1 (en) | 2019-12-19 |
CN112352234A (zh) | 2021-02-09 |
US11120023B2 (en) | 2021-09-14 |
US20210004374A1 (en) | 2021-01-07 |
WO2019241021A9 (en) | 2020-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112352234B (zh) | 用于处理并发属性图查询的系统 | |
Checconi et al. | Traversing trillions of edges in real time: Graph exploration on large-scale parallel machines | |
Yang et al. | A spatiotemporal compression based approach for efficient big data processing on cloud | |
US10936765B2 (en) | Graph centrality calculation method and apparatus, and storage medium | |
Liu et al. | IMGPU: GPU-accelerated influence maximization in large-scale social networks | |
Ju et al. | iGraph: an incremental data processing system for dynamic graph | |
CN104077723B (zh) | 一种社交网络推荐系统及方法 | |
JP6178506B2 (ja) | 情報処理システムおよび情報処理方法 | |
Zhou et al. | On achieving efficient data transfer for graph processing in geo-distributed datacenters | |
CN114266281A (zh) | 一种图神经网络训练的方法、装置及系统 | |
Sohrabi | A gossip based information fusion protocol for distributed frequent itemset mining | |
Peng et al. | Energy‐and Resource‐Aware Computation Offloading for Complex Tasks in Edge Environment | |
Zhan et al. | Cell Traffic Prediction Based on Convolutional Neural Network for Software‐Defined Ultra‐Dense Visible Light Communication Networks | |
Maqsood et al. | Energy and communication aware task mapping for MPSoCs | |
Meng et al. | A Survey of Distributed Graph Algorithms on Massive Graphs | |
Zhou et al. | C-graph: A highly efficient concurrent graph reachability query framework | |
Srinivasan et al. | A shared-memory algorithm for updating tree-based properties of large dynamic networks | |
Yelmewad et al. | Parallel iterative hill climbing algorithm to solve TSP on GPU | |
Xu et al. | A survey on deep neural network partition over cloud, edge and end devices | |
Alam et al. | Generating massive scale-free networks: Novel parallel algorithms using the preferential attachment model | |
Silva et al. | Jsensor: a parallel simulator for huge wireless sensor networks applications | |
Song et al. | Nslpa: A node similarity based label propagation algorithm for real-time community detection | |
JP6363305B2 (ja) | 情報処理システムおよび情報処理方法 | |
Bavarsad Salehpour et al. | IAMnet: presentation of parallelization approach for repetitive mining on network topologies with an improved apriori method | |
Jia et al. | [Retracted] The Network Global Optimal Mapping Approach Utilizing a Discrete Firefly Optimization Algorithm |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220301 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Applicant after: Huawei Cloud Computing Technologies Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |