博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
图分区技术
阅读量:4198 次
发布时间:2019-05-26

本文共 1064 字,大约阅读时间需要 3 分钟。

这个概念跟关系型数据库的表分区是类似的,也就是在图结构数据量非常大的时候,怎么通过分布式的形式对图进行切分。

在关系型数据库的表分区的应用中,我们对表进行分区可能需要考虑的目的主要是:一个表存为多个分区之后的join和查询的问题。同理:我们在设计图分区策略的时候同样需要考虑的是,图进行分区之后,在做图迭代算法(并行计算)时,最小化在数据量的传输,最小化IO操作,只有减少这部分的开销,才能提高图分区的性能。

另外,业界比较成熟的OLTP产品Neo4j是不支持图分区的,所有的数据都存储于一个实例上,因为他是index-free的实现方式,为了保证图查询的实时性能,因此没有引入分区的方式,所有的图分析和查询都在一个存储上完成,避免网络传输和IO的开销。

一般而言,业界主要有这么几种分区的技术:

edge-cut:边分割

边分割的方式一般适合在图数据中low-degree的数据分布中,也就是中图的连接入度或者出度(有向图)比较少的情况,这样vertex的分割就会比较均匀,减少跨多个集群的数据交换;

vertex-cut:点分割

点分割的方式跟边分割的情况相反,在high-degree的图数据分布的情况下,也就是节点的度特别大,通过点分割,就能够同样减少跨多个集群的数据交换,同时减少节点的副本;如PowerGraph的实现方式;

PowerGraph在一篇论文里PowerGraph: Distributed Graph-Parallel Computation on Natural Graphs以数学的形式证明了在符合幂律分布的自然图中使用点分割的好处。

hybrid-cut:动态混合分割

混合分割的技巧通常需要依赖于图计算架构采集的动态的统计信息,首先需要对图的数据分布情况做估计,然后再决定图分割的策略,使用点分割还是边分割的方式,这种分割方式比较复杂,如Flink Gelly图计算架构就采用这种混合的分割方式;

hash/random partitioning:哈希,随机分区

这种分区方式比较简单粗暴,一般是使用边的hash或者节点的hash来分区,这种方式分区比较简单,但是性能不能保证;

比如OrientDB采用的就是基于hash的分区方式;

 

总的来说,使用分区技术的图分析架构,一般都是定位为OLAP的解决方案,目前还没有OLTP性能不错,也支持分区的图数据库引擎,商业产品TigerGraph和微软的GraphEngine是少数宣称既支持OLAP也支持OLTP的产品,后续的文章可以重点分析分析。

 

转载地址:http://dgwli.baihongyu.com/

你可能感兴趣的文章
Project 2013项目管理教程(1):项目管理概述及预备
查看>>
ssh客户端后台运行
查看>>
哥去求职,才说了一句话考官就让我出去
查看>>
一位超算中心管理人员的空间
查看>>
Weapons of Mass Destruction, Detection
查看>>
环境资源与相关词汇中英文对照
查看>>
fluorenscence aerodynamic particcle sizer
查看>>
HOME - Research Highlights & Publications
查看>>
Leibniz Institute for Tropospheric Research
查看>>
Laser Spectroscopy Group
查看>>
顺风比EMS强多了!
查看>>
搭建CPU+GPU 集群
查看>>
手把手教你配置Windows2003集群(图)
查看>>
WIN7下开启无线网卡软AP
查看>>
CShell 简单语法
查看>>
Linux(CentOS)下把python脚本转化成可执行程序
查看>>
【Unity3D游戏开发】性能优化之Texture图片空间和内存占用分析(三七)
查看>>
【Unity3D游戏开发】material与sharedMaterial的区别 (三八)
查看>>
【Unity2D游戏实战 之 2D滚屏射击】1.背景滚动 (一)
查看>>
【Git+Source Tree使用教程之一】commit & push
查看>>