CN113254527A - 分布式存储图数据的优化方法、电子装置和存储介质 - Google Patents
分布式存储图数据的优化方法、电子装置和存储介质 Download PDFInfo
- Publication number
- CN113254527A CN113254527A CN202110438145.XA CN202110438145A CN113254527A CN 113254527 A CN113254527 A CN 113254527A CN 202110438145 A CN202110438145 A CN 202110438145A CN 113254527 A CN113254527 A CN 113254527A
- Authority
- CN
- China
- Prior art keywords
- data
- edge
- degree
- query
- fragments
- 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.)
- Granted
Links
Images
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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/22—Indexing; Data structures therefor; Storage structures
-
- 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
- G06F16/24552—Database cache management
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种分布式存储图数据的优化方法、电子装置和存储介质,其中,该分布式存储图数据的优化方法包括:定期在各数据分片所在的存储服务上扫描各数据分片中的所有边;根据各数据分片中的所有边,确定起点与终点所属的数据分片,并计算各数据分片之间的出边关联度和入边关联度;根据各数据分片之间的出边关联度和入边关联度,通过预设的关联度矩阵权重,计算各数据分片之间的相关度;将相关度高的数据分片存储在相同的存储服务上。通过本申请,解决了分布式图数据库的partition分布难以优化的问题,降低了数据调用的网络通信开销,提升了分布式图数据库的性能。
Description
技术领域
本申请涉及数据处理技术领域,特别是涉及分布式存储图数据的优化方法、电子装置和存储介质。
背景技术
随着大数据技术和人工智能技术的快速发展,超大规模关系网络逐步在社交推荐、风险控制、物联网、区块链、安防等领域被广泛应用。这类超大规模的关系网络通常以数据结构中的图论(Graph)为理论基础,而构成图(关系网络)的核心要素包括:节点(vertex或node,也称为点)以及节点上的属性、关系(edge或者Relationship,也称为边)以及关系上的属性。例如,在社交网络中,节点可以对应个人,其属性可以是邮箱、账号等;关系可以对应好友关系或者转账关系,关系的属性可以是转账金额、转账时间等,且关系具有方向性。由于图论的节点-关系-属性模型可以非常方便的描述关系网络,所以目前通常选择基于图论的图数据库存储超大规模的关系网络。
由于数据量增长的速度远远快于摩尔定理,单机版的图数据库,例如Neo4j3.X、RedisGraph等,已经越来越难满足快速增长的数据存储需求和数据处理需求。因此,分布式图数据库成为首选方案。
对于采用分布式图数据库对超大规模关系网络进行分布式存储时,需要将一个网络(图)分割为N个数据分片(partition),由不同的服务器各自存储和处理这些数据分片。对于超大规模的图不存在天然的分片方式,即使对于一个静态的图,其分片算法也是多项式复杂的。因此,目前不存在一种方式:可以事先完成数据分片,并在多台服务器上完成分布,除非图数据是静态的,且已经研究过如何进行数据分片。但是在实际应用场景中,对于图数据库而言,数据是持续变化的,很少存在静态数据的场景,因此,数据分片是分布式图数据库存储图数据的难点。
目前,采用完全对称分布的分布式图数据库架构,在数据库系统层面实现图数据分片和负载均衡,对于用户来说最友好。这一类典型的分布式图数据库以Nebula Graph为代表。Nebula Graph的查询和存储服务采用完全对称的分布式架构,一个图可以均匀分散为多个partition,通过一定算法(例如hash)将顶点和边的存储数据分配到不同partition中,不同partition分布在不同服务器之上。此外,一个partition的多拷贝间采用Raft算法,保持数据一致性,从而实现分布式的特性。但是,由于这类数据库不需要用户告知图的特征信息和请求特征,仍然较难优化图数据的partition分布,可能会存在数据局部性比较随机、网络通信开销大的问题。
目前针对完全对称分布架构的图数据库的partition分布难以优化的问题,尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种分布式存储图数据的优化方法、电子装置和存储介质,以至少解决完全对称分布架构的图数据库的partition分布难以优化的问题。
第一方面,本申请实施例提供了一种分布式存储图数据的优化方法,所述方法包括:
定期在各数据分片所在的存储服务上扫描各数据分片中的所有边;
根据所述各数据分片中的所有边,确定起点与终点所属的数据分片,并计算各数据分片之间的出边关联度和入边关联度;
根据所述各数据分片之间的出边关联度和入边关联度,通过预设的关联度矩阵权重,计算各数据分片之间的相关度;
将相关度高的数据分片存储在相同的存储服务上。
在其中一些实施例中,所述计算各数据分片之间的出边关联度和入边关联度,包括:
通过如下公式,计算各数据分片之间的出边关联度:
其中,OUTij表示数据分片i与数据分片j之间的出边关联度,out_total_edgei表示数据分片i作为起点的总出边数量,out_edge_counti j表示起点位于数据分片i且终点位于数据分片j的出边数量;
通过如下公式,计算各数据分片之间的入边关联度:
其中,INij表示数据分片i与数据分片j之间的入边关联度,in_total_edgei表示数据分片i作为终点的总入边数量,in_edge_counti j表示起点位于数据分片j且终端位于数据分片i的入边数量。
在其中一些实施例中,所述通过预设的关联度矩阵权重,计算各数据分片之间的相关度,包括:
根据预设的关联度矩阵权重,通过以下公式计算各数据分片之间的相关度:
Rij=αOUTij+(1-α)INij,其中,α为所述的预设的关联度矩阵权重,Rij表示数据分片i与数据分片j之间的相关度,OUTij表示数据分片i与数据分片j之间的出边关联度,INij表示数据分片i与数据分片j之间的入边关联度。
在其中一些实施例中,所述将相关度高的数据分片存储在相同的存储服务上,包括:对于每一个存储服务,执行以下步骤:
随机获取任意的数据分片作为目标数据分片,
获取与所述目标数据分片相关度最高的前h个数据分片进行存储;
其中,所述目标数据分片为未存储在其他数据服务中的数据分片,且每个存储服务存储的数据分片的数量相同。
在其中一些实施例中,所述将相关度高的数据分片存储在相同的存储服务上,包括:
通过METIS算法或贪心算法对各数据分片进行分布式存储,将相关度高的数据分片存储在相同的存储服务上。
在其中一些实施例中,所述将相关度高的数据分片存储在相同的存储服务上后,调用预设的查询方法,执行图遍历查询,包括:获取起点、遍历深度和预设的查询参数作为查询条件;
根据所述查询条件,执行图遍历,得到查询结果和预读结果,返回所述查询结果,并将所述预读结果存储在缓存中;
其中,所述预读结果为与所述查询结果相关联的数据。
在其中一些实施例中,所述调用预设的查询方法,执行图遍历查询,还包括:
获取起点、遍历深度和预设的查询参数作为查询条件;
根据所述查询条件查询所述缓存是否存在查询结果,若有,则直接返回所述缓存中的查询结果;
若没有,则调用RPC,根据查询条件,执行图遍历。
在其中一些实施例中,所述定期在各数据分片所在的存储服务上扫描各数据分片中的所有边,包括:
将所述在各数据分片所在的存储服务上扫描各数据分片中的所有边作为调度任务嵌入各存储服务的后台任务中。
第二方面,本申请实施例提供了一种电子装置,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的分布式存储图数据的优化方法。
第三方面,本申请实施例提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面所述的分布式存储图数据的优化方法。
相比于相关技术,本申请实施例提供的分布式存储图数据的优化方法,通过度量各数据分片之间的相关性,使相关性强的数据分片存储在相同的服务器上,实现优化完全对称分布架构的图数据库的partition分布,以增加数据分片之间的局部性,减少数据调用的网络开销,提高图数据分布式的性能。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的分布式存储图数据的优化方法的流程图;
图2是根据本申请实施例的电子设备的内部结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指大于或者等于两个。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
本申请提供的分布式存储图数据的优化方法,可以应用于采用key-value方式存储节点和边,并进行“边切割”存储的分布式图数据库,如Nebula Graph。以Nebula Graph为例,Nebula Graph有三个主要的模块:graphd(查询模块)、storaged(存储模块)和metda(元数据模块)。三个模块之间通过RPC通信,RPC通信是指远程过程调用,通常可认为是调用远程计算机进程中的某个方法,可以简单理解为一次网络通信。graphd会从storaged拉取数据(可以类比于数据库mysql查询模块和innodb存储模块)。metad为这两个模块服务,提供元信息。
Nebula Graph的storaged(存储模块)架构:从功能角度进行划分,从下到上可分为三层,分别为kv层、raft层和api层。最底层是kv层,是一个key-value库。kv层之上是raft层,同一个partition存在多个拷贝,每个partition的多拷贝之间采用Raft算法保证数据一致性。key-value以一定方式(例如hash)落在不同partition上。最上层是api层,api层中定义了一组接口,与grapd(查询模块)进行RPC交互,将图语义转换为对应partition的leader的key-value操作。因此,图中的每一个点,在存储引擎层中是一个key-value。逻辑上,<起点,边,终点>3元组对应kv层中的4个key-value对:
起点(src):Vertex_key_src;
终点(dst):Vertex_key_dst;
边:Edge_key_src_dst(出边),Edge_key_dst_src(入边)。
这样的设计可以保证:Vertex_key_src(起点)和Edge_key_src_dst(出边)一定在同一个partitionsrc(数据分片)内,Edge_key_dst_src(入边)和Vertex_key_dst(终点)在同一个partitiondst内。
那么,出边的查询(src->dst),只需要访问partitionsrc内的Vertex_key_src,Edge_key_src_dst,不需要访问partitiondst。入边的查询(dst<-src),只需要访问partitiondst内的Vertex_key_dst、Edge_key_dst_src,不需要访问partitionsrc。上述边的冗余设计<Edge_key_src_dst,Edge_key_dst_src>意味着:只需知道src(节点)或者dst(节点)中任何一者,即可以在同一个partiton内找到另一方。因此,虽然多存储了一份数据,但是减少了一个RPC。
由上述可知:对于任意一个起点,查询其所有出边和对应的所有终点,要且仅要1次graphd到storaged的RPC。对于任意一个终点,查询其所有入边和对应的所有的起点,要且仅要1次graphd到storaged的RPC。
另外,针对partition,存在再平衡(reblance)操作。partition的再平衡操作包括两个部分:1.让一个partition的follower拷贝(所对应的硬盘文件),从一台服务器完整移动到另外一台服务器;2.改变一个partition的3个拷贝的角色,让原leader退位成为follower,并且让某个follower被选举成为新leader。再平衡操作可以改善服务器集群的存储空间(文件从一个服务器移动到另外一个服务器上),改善服务器集群的请求压力分布(leader从一台服务器迁移成另外一个服务器)。当然,这两种再平衡操作,都基于一定的优化算法。
本申请提供的分布式存储图数据的优化方法的原理为:基于图模型存在数据局部性和图k-hop的指数特性,在不需要用户告知的前提下,将相关性强的partition存放在同一台服务器上,以优化分布式图数据库的partition分布,以减少RPC次数,提高数据库性能。基于上述优化原理,本实施例提供了一种分布式存储图数据的优化方法,图1是根据本申请实施例的分布式存储图数据的优化方法的流程图,如图1所示,该流程包括如下步骤:
步骤S101,定期在各数据分片所在的存储服务上扫描各数据分片中的所有边。本实施例中,通过探索partition之间的局部性特点(相关性),找出那些partition应该在同一台服务器上,以实现partition的分布优化。而度量两个partition是否相关,就是看对于一个partition而言,有多少比例的邻居节点在另一个partition上,两个邻居节点之间存在边。因此,通过定期扫描各partition中的所有边,可度量各partition之间的相关度。具体地,定期以后台任务的形式提交任务调度请求至分布式图数据库的metad(元数据管理服务)中的JobManager组件,当JobManager组件接收到任务调度请求时,生成任务描述符,根据partition信息,根据任务调度请求生成一组Task,Task在各存储服务上实际运行的任务,该任务为扫描数据分片中的所有边,将该Task任务分发到持有partiton的存储服务上,实现顺序扫描(对应硬盘文件的顺序扫描)各partition中所有的边。
需要说明的是,在步骤S101之前,已通过划分函数Shard()将图(网络)的节点vids(节点的集合)划分到不同的机器(数据库服务器)上,该划分方式等价于在metad中的一次RPC查找。
在其中一些实施例中,步骤S101,定期在各数据分片所在的存储服务上扫描各数据分片中的所有边,包括:
将在各数据分片所在的存储服务上扫描各数据分片中的所有边作为调度任务嵌入各存储服务的后台任务中。
在执行分布式图数据库的全量数据扫描时,可以在任意后台任务运行时,同时进行统计,例如:全量Rocksdb compaction、全量rebuild index、全量数据库备份等,在Task->TaskManager->JobManager的逻辑不变,代码实现时只需要将该Task任务(以函数回调的方式)嵌入到这些后台任务中。
步骤S102,根据各数据分片中的所有边,确定起点与终点所属的数据分片,并计算各数据分片之间的出边关联度和入边关联度。具体地,得到各partition中的所有边之后,可确定各条边的起点和终点所属的partition,通过预设的出边关联度矩阵和入边关联度矩阵权重可计算,各partition之间的出边关联度和入边关联度;
在本实施例,通过如下公式,计算各partition(数据分片)之间的出边关联度:
通过如下公式,计算各数据分片之间的入边关联度:
通过上述可知,本实施例中,同一个partition对于自身的关联度为1;且通常OUTij≠OUTji,INij≠INji。
需要注意的是,对于INij和OUTij的计算,只需要partition i(数据分片i)本身数据,不需要依赖于partition j(数据分片j)的任何信息,说明,当计算一个partition与其他所有N-1个partition的相关性(出边关联度和入边关联度)时,只需对于partition本身进行一次全量扫描,时间复杂度为O(dim(Partition i)),即等价于该partition i的大小。
出边关联度矩阵和入边关联度矩阵分别用于度量出边和入边两种方式的partition相关性,前者有利于基于出边的查询,后者有利于基于入边的查询。但是大多数图查询和图算法会混合使用基于出边和入边的查询方式,因此需要结合出边关联度矩阵和入边关联度矩阵的预设权重,度量两个partition之间的相关性,保证查询性能,具体如步骤S103。
步骤S103,根据各数据分片之间的出边关联度和入边关联度,通过预设的关联度矩阵权重,计算各数据分片之间的相关度。具体地:根据预设的关联度矩阵权重α,构建以下公式计算各数据分片之间的相关度:R=αOUT+(1-α)IN。对于partition i和partition j之间的相关度的计算,采用Rij=αOUTij+(1-α)INij,其中,α为所述的预设的关联度矩阵权重,Rij表示数据分片i与数据分片j之间的相关度,OUTij表示数据分片i与数据分片j之间的出边关联度,INij表示数据分片i与数据分片j之间的入边关联度。需要说明的是,对于权重值α的取值设置,是数据库运维人员DBA基于分布式数据库集群的服务场景自行设置,也可以基于历史查询的权重进行设置,在此不对其具体取值进行限定。
另外,因数据库的存在持续的写入操作,partition(数据分片)之间的关联性是动态改变的,通过周期性的计算一次关联度矩阵,即可了解当前的数据情况,以对partition的分布进行优化,该执行周期可以自行设置,如每周一次或每天一次。
步骤S104,将相关度高的数据分片存储在相同的存储服务上。具体地,通过步骤S103中的关联度矩阵R度量partition之间的相关度(性),Rij数值越大,partition i与partition j的相关度越高。基于关联度度量结果,将相关度高的一组partition存放同一台数据库服务器上,有助于减少网络开销,提升查询性能。且在本实施例中,进行partition的分布需要考虑再平衡目标,保证每台服务器上partition数量大体均匀,每台服务器上leader数量大体均匀。
需要注意的是,上述关联度矩阵R可表达为一个边带权重的完全图,R的维度为partition的数量,因此,在实现将相关度高的数据分片存储在相同的存储服务上时,即在求解partition分布时,可以将该问题降维转换为一个图分割问题:一个图有N个点,N×N条边;如何将该图划分为M个平衡子图,因此,由于N的规模通常较小,可以采用现有的成熟开源算法库(例如METIS)进行求解。
通过上述步骤S101至步骤S104,本实施例通过定期执行分布式的扫描任务,以全面扫描分布式图数据库,得到各partition中的所有边,求取partition之间的出边关联度和入边关联度,以得到partition之间的关联度,基于partition之间的关联度,优化分布式图数据库的partition分布,因图数据自身存在大量的局部性聚集特征,将关联度高的partition存储在相同的存储服务上,可以提升数据局部性,从而实现优化图数据的partition分布,减少调用时的网络开销,提升图数据的查询性能。
在其中一些实施例中,步骤S104,将相关度高的数据分片存储在相同的存储服务上,包括:
对于每一个存储服务,执行以下步骤:
随机获取任意的数据分片作为目标数据分片,
获取与目标数据分片相关度最高的前h个数据分片进行存储;
其中,目标数据分片为未存储在其他数据服务中的数据分片,且每个存储服务存储的数据分片的数量相同。
具体地,对于每个存储服务(服务器)而言,均执行上述步骤,以实现将相关度高的数据分片存储在相同的存储服务(服务器)上,上述获取与目标数据分片相关度最高的前h个数据分片时,可将目标数据分片与其他数据分片的相关度进行降序排列,再从降序排列中取前h个数据分片作为与目标数据分片相关度(性)最高的h个数据分片,且h的取值,可基于所有数据分片(partition)的数量和分布式图数据库的服务器数量确定,以保证每台服务器上均存储h个partition。上述各步骤的实现可视为一种为贪心算法,在此对贪心算法的具体实现进行介绍:
初始化:
步骤1:定义R为上述的关联度矩阵;
步骤2:定义一个M×N的矩阵S(M是分布式图数据库的机器数量,N是partition的数量,N=h×M),
其中,Sij:=1,如果机器i上允许存放partition i;Sij:=0,如果机器i上不允许存放partition i。需要说明的是,该初始化步骤,用于定义哪些机器上放置哪些partition。可使得贪心算法支持BALANCE DATA和BALACE LEADER两种数据再平衡操作,例如,Nebula Graph中存在两种再平衡操作:BALANCE DATA和BALANCE LEADER分别对应于数据迁移和leader迁移,BALACE LEADER操作只允许在有完整数据拷贝(也即leader和follower所在)的机器上放置partition,而BALANCE DATA可以在所有机器上放置partition。
步骤3:定义一个N×N的矩阵RS,其中,RSij:=0,如果Sij=0;RSij:=1,如果Sij=1。
步骤4:定义一个函数map(int,set[int]),其中,第一个入参记录机器id,第二个入参是一个集合,记录该机器上分布的partition的id。且set和map在代码实现时,选择何种索引方式(红黑树、hash表等)、是否需要并发读写,由代码实现时的上下文决定。
基于上述初始化,通过以下伪代码实现:
通过实现上述伪代码,可基于partition的相关性(数据局部性),通过迁移数据分片,完成图数据库的partition分布的优化。
在其中一些实施例中,步骤S104,将相关度高的数据分片存储在相同的存储服务上,也可通过METIS算法对各数据分片进行分布式存储,实现将相关度高的数据分片存储在相同的存储服务上。
在其中一些实施例中,将相关度高的数据分片存储在相同的存储服务上后,调用预设的查询方法,执行图遍历查询,包括:
获取起点、遍历深度和预设的查询参数作为查询条件;
根据查询条件,执行图遍历,得到查询结果和预读结果,返回查询结果,并将预读结果存储在缓存中;
其中,该预读结果为与查询结果相关联的数据,即预读结果为查询结果相关联(邻居)的边或节点。
优选地,调用预设的查询方法,执行图遍历查询,还包括:
获取起点、遍历深度和预设的查询参数作为查询条件;
根据查询条件查询缓存是否存在查询结果,若有,则直接返回缓存中的查询结果;
若没有,则调用RPC,根据查询条件,执行图遍历。
需要说明的是,无论图规模多大,每一轮图遍历的迭代都是在获取从给定起点开始的多个三个元组,且图的遍历查询,可分为广度优先遍历(BFS)和深度优先遍历(DFS),几乎所有的图算法,例如连通性、最短路径、标签传播,其底层都依赖于图的遍历查询能力,因此图遍历查询有着极其明显的局部性访问特点:<起点,起点的出边1,终点1>,<起点,起点的出边2,终点2>…
为进一步提高图的查询性能,实现数据局部性目标后,即实现将相关度高的partition存储在相同的服务器(机器)上后,通过预设的查询方法,实现图遍历的预读技术,以加速查询性能,减少RPC的调用。上述预设的查询方法在本实施例中为storaged提供的一个函数GetOutNeighors,可供graphd RPC调用,其语法为:
输入:起点vid集合<vids>,遍历深度k;
输出:边集合。语意:获取<vids>开始的,k-hop的所有出边。
类似的,还提供一个函数GetInNeighors,其语法为:
输入:起点<vids>,遍历深度k;
输出:边集合。语意:获取vid开始的,k-hop的所有入边。
具体实现时,函数(预设的查询方法)的输入参数还可以包括:起点的列表、边方向、属性名、是否去重、是否按属性排序、返回分页等,输出参数还可以包括:点和边属性等。需要说明的是,在实际应用时,查询参数不限于上述这些参数。且GetInNeighors和GetOutNeighors的唯一区别是边遍历查询的方向不同,其具体实现大致相同。
在实际应用时,上述查询步骤可通过GetOutNeighors实现,GetOutNeighors的实现包括服务端实现和客户端实现。服务端的步骤如下:
map<vid,set<vid>>GetOutNeighors(set<vid>ids,int h)
{
set<vid>J=Shard(i d s);
//map.first是起点vid的集合,map.second是终点vid的集合。
map<vid,set<vid>>res;
set<vid>L;
for i in range 1to(h-1)
{
foreach j∈J//并发执行
{
S[j].insert(dst(j));
L.insert(Shard(dst(j));
}
J:=L;
L.clear();
}
Return S;
}
其中,上述dst(j)为从起点j开始,所获取的终点vid集合;S[j].insert(·)为依次将元素加入集合,例如S[1]={2,3,4,5}。
优选地,具体实现时,可以采用分页的方式。例如上述for循环,每完成一轮(也即第i个hop),可以将该轮数据先返回给graphd。这样graphd就可以继续并发访问其他的storaged。
客户端的步骤:
其中,ip IP(set<vid>ids)用于从metad获取ids对应的机器ip;
map<vid,set<vid>>GetOutNeighorsIP(IP ip,set<vid>ids,int h)用于根据IP向服务器调用GetOutNeighors(ids,h)。
优选地,在执行GetOutNeighors()时,可以限制最多返回的数量,当计数大于阈值时,停止全步骤。
通过在上述查询步骤中实现预读,在每次RPC中带上最多的预读信息。增加了k-hop前几层时的RPC数据量,减少了k-hop后几层的RPC数据量(k-hop是指数增长的,后几层RPC数据量几乎完全决定了整个k-hop的性能)。在优化partition分布,提高数据局部性的的基础上,通过预读技术加速了k-hop查询的性能,即提高了图数据库的查询性能。
需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,定期在各数据分片所在的存储服务上扫描各数据分片中的所有边。
S2,根据各数据分片中的所有边,确定起点与终点所属的数据分片,并计算各数据分片之间的出边关联度和入边关联度。
S3,根据各数据分片之间的出边关联度和入边关联度,通过预设的关联度矩阵权重,计算各数据分片之间的相关度。
S4,将相关度高的数据分片存储在相同的存储服务上。
需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
另外,结合上述实施例中的分布式存储图数据的优化方法,本申请实施例可提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种分布式存储图数据的优化方法。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种分布式存储图数据的优化方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
在一个实施例中,图2是根据本申请实施例的电子设备的内部结构示意图,如图2所示,提供了一种电子设备,该电子设备可以是服务器,其内部结构图可以如图2所示。该电子设备包括通过内部总线连接的处理器、网络接口、内存储器和非易失性存储器,其中,该非易失性存储器存储有操作计算机程序和数据库。处理器用于提供计算和控制能力,网络接口用于与外部的终端通过网络连接通信,内存储器用于为操作系统和计算机程序的运行提供环境,计算机程序被处理器执行时以实现一种分布式存储图数据的优化方法,数据库用于存储数据。
本领域技术人员可以理解,图2中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
本领域的技术人员应该明白,以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种分布式存储图数据的优化方法,其特征在于,所述方法包括:
定期在各数据分片所在的存储服务上扫描各数据分片中的所有边;
根据所述各数据分片中的所有边,确定起点与终点所属的数据分片,并计算各数据分片之间的出边关联度和入边关联度;
根据所述各数据分片之间的出边关联度和入边关联度,通过预设的关联度矩阵权重,计算各数据分片之间的相关度;
将相关度高的数据分片存储在相同的存储服务上。
3.根据权利要求2所述的方法,其特征在于,所述通过预设的关联度矩阵权重,计算各数据分片之间的相关度,包括:
根据预设的关联度矩阵权重,通过以下公式计算各数据分片之间的相关度:
Rij=αOUTij+(1-α)INij,其中,α为所述的预设的关联度矩阵权重,Rij表示数据分片i与数据分片j之间的相关度,OUTij表示数据分片i与数据分片j之间的出边关联度,INij表示数据分片i与数据分片j之间的入边关联度。
4.根据权利要求1所述的方法,其特征在于,所述将相关度高的数据分片存储在相同的存储服务上,包括:对于每一个存储服务,执行以下步骤:
随机获取任意的数据分片作为目标数据分片,
获取与所述目标数据分片相关度最高的前h个数据分片进行存储;
其中,所述目标数据分片为未存储在其他数据服务中的数据分片,且每个存储服务存储的数据分片的数量相同。
5.根据权利要求1所述的方法,其特征在于,所述将相关度高的数据分片存储在相同的存储服务上,包括:
通过METIS算法或贪心算法对各数据分片进行分布式存储,将相关度高的数据分片存储在相同的存储服务上。
6.根据权利要求4或5任一项所述的方法,其特征在于,所述将相关度高的数据分片存储在相同的存储服务上后,调用预设的查询方法,执行图遍历查询,包括:获取起点、遍历深度和预设的查询参数作为查询条件;
根据所述查询条件,执行图遍历,得到查询结果和预读结果,返回所述查询结果,并将所述预读结果存储在缓存中;
其中,所述预读结果为与所述查询结果相关联的数据。
7.根据权利要求6所述的方法,其特征在于,所述调用预设的查询方法,执行图遍历查询,还包括:
获取起点、遍历深度和预设的查询参数作为查询条件;
根据所述查询条件查询所述缓存是否存在查询结果,若有,则直接返回所述缓存中的查询结果;
若没有,则调用RPC,根据查询条件,执行图遍历。
8.根据权利要求1所述的方法,其特征在于,所述定期在各数据分片所在的存储服务上扫描各数据分片中的所有边,包括:
将所述在各数据分片所在的存储服务上扫描各数据分片中的所有边作为调度任务嵌入各存储服务的后台任务中。
9.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1至8中任一项所述的分布式存储图数据的优化方法。
10.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1至8中任一项所述的分布式存储图数据的优化方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110438145.XA CN113254527B (zh) | 2021-04-22 | 2021-04-22 | 分布式存储图数据的优化方法、电子装置和存储介质 |
US17/448,376 US11816132B2 (en) | 2021-04-20 | 2021-09-22 | Method and system for optimizing data storage of query statistics of graph database |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110438145.XA CN113254527B (zh) | 2021-04-22 | 2021-04-22 | 分布式存储图数据的优化方法、电子装置和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113254527A true CN113254527A (zh) | 2021-08-13 |
CN113254527B CN113254527B (zh) | 2022-04-08 |
Family
ID=77221320
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110438145.XA Active CN113254527B (zh) | 2021-04-20 | 2021-04-22 | 分布式存储图数据的优化方法、电子装置和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113254527B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114037531A (zh) * | 2021-11-08 | 2022-02-11 | 中山大学 | 一种区块链分片系统的分片账户调整方法及其相关装置 |
CN114138776A (zh) * | 2021-11-01 | 2022-03-04 | 杭州欧若数网科技有限公司 | 图结构和图属性分离设计的方法、系统、装置和介质 |
CN115080807A (zh) * | 2022-07-20 | 2022-09-20 | 北京达佳互联信息技术有限公司 | 数据查询方法、装置及电子设备 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104820705A (zh) * | 2015-05-13 | 2015-08-05 | 华中科技大学 | 一种可扩展的面向关联的流式图数据划分方法 |
CN107193896A (zh) * | 2017-05-09 | 2017-09-22 | 华中科技大学 | 一种基于簇的图数据划分方法 |
US20180173763A1 (en) * | 2016-12-16 | 2018-06-21 | Futurewei Technologies, Inc. | Predictive table pre-joins in large scale data management system using graph community detection |
CN108920105A (zh) * | 2018-07-03 | 2018-11-30 | 清华大学 | 基于社区结构的图数据分布式存储方法及装置 |
CN109165268A (zh) * | 2018-10-01 | 2019-01-08 | 海南大学 | 基于体系化维度的数据及数据图谱的度量模型构建方法 |
CN109359115A (zh) * | 2018-10-25 | 2019-02-19 | 中国互联网络信息中心 | 基于图数据库的分布式存储方法、装置及系统 |
CN110168533A (zh) * | 2016-12-15 | 2019-08-23 | 微软技术许可有限责任公司 | 对子图的缓存以及将缓存的子图集成到图查询结果中 |
CN110737659A (zh) * | 2019-09-06 | 2020-01-31 | 平安科技(深圳)有限公司 | 图数据存储和查询方法、装置及计算机可读存储介质 |
US20200267053A1 (en) * | 2019-02-15 | 2020-08-20 | Samsung Electronics Co., Ltd. | Systems and methods for latency-aware edge computing |
CN111598480A (zh) * | 2020-05-26 | 2020-08-28 | 北方工业大学 | 一种高校科研团队学术合作对绩效影响的量化研究方法 |
CN111782654A (zh) * | 2020-07-01 | 2020-10-16 | 浪潮云信息技术股份公司 | 一种分布式数据库中数据分区存放的方法 |
CN112016855A (zh) * | 2020-10-22 | 2020-12-01 | 北京淇瑀信息科技有限公司 | 基于关系网匹配的用户行业识别方法、装置和电子设备 |
CN112085124A (zh) * | 2020-09-27 | 2020-12-15 | 西安交通大学 | 一种基于图注意力网络的复杂网络节点分类方法 |
CN112559631A (zh) * | 2020-12-15 | 2021-03-26 | 北京百度网讯科技有限公司 | 分布式图数据库的数据处理方法、装置以及电子设备 |
-
2021
- 2021-04-22 CN CN202110438145.XA patent/CN113254527B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104820705A (zh) * | 2015-05-13 | 2015-08-05 | 华中科技大学 | 一种可扩展的面向关联的流式图数据划分方法 |
CN110168533A (zh) * | 2016-12-15 | 2019-08-23 | 微软技术许可有限责任公司 | 对子图的缓存以及将缓存的子图集成到图查询结果中 |
US20180173763A1 (en) * | 2016-12-16 | 2018-06-21 | Futurewei Technologies, Inc. | Predictive table pre-joins in large scale data management system using graph community detection |
CN107193896A (zh) * | 2017-05-09 | 2017-09-22 | 华中科技大学 | 一种基于簇的图数据划分方法 |
CN108920105A (zh) * | 2018-07-03 | 2018-11-30 | 清华大学 | 基于社区结构的图数据分布式存储方法及装置 |
CN109165268A (zh) * | 2018-10-01 | 2019-01-08 | 海南大学 | 基于体系化维度的数据及数据图谱的度量模型构建方法 |
CN109359115A (zh) * | 2018-10-25 | 2019-02-19 | 中国互联网络信息中心 | 基于图数据库的分布式存储方法、装置及系统 |
US20200267053A1 (en) * | 2019-02-15 | 2020-08-20 | Samsung Electronics Co., Ltd. | Systems and methods for latency-aware edge computing |
CN110737659A (zh) * | 2019-09-06 | 2020-01-31 | 平安科技(深圳)有限公司 | 图数据存储和查询方法、装置及计算机可读存储介质 |
CN111598480A (zh) * | 2020-05-26 | 2020-08-28 | 北方工业大学 | 一种高校科研团队学术合作对绩效影响的量化研究方法 |
CN111782654A (zh) * | 2020-07-01 | 2020-10-16 | 浪潮云信息技术股份公司 | 一种分布式数据库中数据分区存放的方法 |
CN112085124A (zh) * | 2020-09-27 | 2020-12-15 | 西安交通大学 | 一种基于图注意力网络的复杂网络节点分类方法 |
CN112016855A (zh) * | 2020-10-22 | 2020-12-01 | 北京淇瑀信息科技有限公司 | 基于关系网匹配的用户行业识别方法、装置和电子设备 |
CN112559631A (zh) * | 2020-12-15 | 2021-03-26 | 北京百度网讯科技有限公司 | 分布式图数据库的数据处理方法、装置以及电子设备 |
Non-Patent Citations (5)
Title |
---|
EDWARD KAO 等: "Streaming Graph Challenge: Stochastic Block Partition", 《2017 IEEE HIGH PERFORMANCE EXTREME COMPUTING CONFERENCE (HPEC)》 * |
ERIK G. BOMAN 等: "Scalable Matrix Computations on Large Scale-Free Graphs Using 2D Graph Partitioning", 《PROCEEDINGS OF THE INTERNATIONAL CONFERENCE ON HIGH PROFORMANCE COMPUTING,NETWORKING,STORAGE AND ANALYSIS》 * |
程永利: "分布式图处理系统的计算代价与通信效率优化", 《中国博士学位论文全文数据库 基础科学辑》 * |
金松昌: "大规模在线社交网络中社区结构发现相关技术研究", 《中国优秀博硕士学位论文全文数据库(博士)信息科技辑》 * |
高峰: "基于BSP模型的大图处理系统数据划分模块的设计与实现", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114138776A (zh) * | 2021-11-01 | 2022-03-04 | 杭州欧若数网科技有限公司 | 图结构和图属性分离设计的方法、系统、装置和介质 |
CN114037531A (zh) * | 2021-11-08 | 2022-02-11 | 中山大学 | 一种区块链分片系统的分片账户调整方法及其相关装置 |
CN115080807A (zh) * | 2022-07-20 | 2022-09-20 | 北京达佳互联信息技术有限公司 | 数据查询方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113254527B (zh) | 2022-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113254527B (zh) | 分布式存储图数据的优化方法、电子装置和存储介质 | |
US10268697B2 (en) | Distributed deduplication using locality sensitive hashing | |
Liao et al. | Multi-dimensional index on hadoop distributed file system | |
US10275489B1 (en) | Binary encoding-based optimizations at datastore accelerators | |
US10331641B2 (en) | Hash database configuration method and apparatus | |
US20190392047A1 (en) | Multi-table partitions in a key-value database | |
JP6103037B2 (ja) | 計算機システム | |
WO2013046664A1 (ja) | 情報システム、管理装置、データ処理方法、データ構造、プログラム、および記録媒体 | |
US10503693B1 (en) | Method and system for parallel file operation in distributed data storage system with mixed types of storage media | |
CN112015820A (zh) | 分布式图数据库实现的方法、系统、电子装置和存储介质 | |
Sheoran et al. | Optimized mapfile based storage of small files in hadoop | |
CN114647689A (zh) | 一种图数据库数据导入的方法、系统、装置和介质 | |
Xu et al. | Building a large-scale object-based active storage platform for data analytics in the internet of things | |
Zhai et al. | Hadoop perfect file: A fast and memory-efficient metadata access archive file to face small files problem in hdfs | |
Siddiqa et al. | SmallClient for big data: an indexing framework towards fast data retrieval | |
CN118113663A (zh) | 用于管理存储系统的方法、设备和计算机程序产品 | |
Alikhan et al. | Dingo optimization based network bandwidth selection to reduce processing time during data upload and access from cloud by user | |
US10387384B1 (en) | Method and system for semantic metadata compression in a two-tier storage system using copy-on-write | |
Zhu et al. | An IoT-oriented real-time storage mechanism for massive small files based on Swift | |
Elmeiligy et al. | An efficient parallel indexing structure for multi-dimensional big data using spark | |
Lu et al. | Hybrid storage architecture and efficient MapReduce processing for unstructured data | |
Xia et al. | The doctrine of mean: Realizing deduplication storage at unreliable edge | |
US11816132B2 (en) | Method and system for optimizing data storage of query statistics of graph database | |
Liu et al. | An efficient iterative graph data processing framework based on bulk synchronous parallel model | |
EP2731022B1 (en) | Method and apparatus for storing encoded graph data |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220512 Address after: 311100 room 2201, building 5, era future city, Cangqian street, Yuhang District, Hangzhou City, Zhejiang Province Patentee after: Hangzhou Yueshu Technology Co.,Ltd. Address before: 311100 rooms 2008, 2009, 2010, 2011 and 2012, building 4, Euro American Financial City, Cangqian street, Yuhang District, Hangzhou City, Zhejiang Province Patentee before: Hangzhou ouruozhi Technology Co.,Ltd. |