CN109359115B - 基于图数据库的分布式存储方法、装置及系统 - Google Patents
基于图数据库的分布式存储方法、装置及系统 Download PDFInfo
- Publication number
- CN109359115B CN109359115B CN201811251286.5A CN201811251286A CN109359115B CN 109359115 B CN109359115 B CN 109359115B CN 201811251286 A CN201811251286 A CN 201811251286A CN 109359115 B CN109359115 B CN 109359115B
- Authority
- CN
- China
- Prior art keywords
- graph
- sub
- main
- database
- server
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种基于图数据库的分布式存储方法、装置及系统,所述方法包括:从待进行分布式存储的源图中提取出主图,对提取主图后的剩余图进行分割,得到若干子图,将所述主图存储至分布式系统中主服务器的主图数据库;根据分布式系统中各子服务器的子图数据库的存储能力以及各子图信息,将各子图分别存储至各子服务器对应的子图数据库。可见,本发明通过对源图进行主图的提取和子图的分割,实现了基于图数据库的分布式存储,解决了基于图数据库的超级节点和大图存储和处理难题。此外,本发明将主图与子图进行分离,还可以降低源图数据的密集程度,对大规模网络数据解耦合,进而还可以提高查询性能。
Description
技术领域
本发明涉及互联网技术领域,具体涉及一种基于图数据库的分布式存储方法、装置及系统。
背景技术
随着大数据时代互联网的不断发展,复杂网络数据量呈指数增长,大数据的存储和处理越来越受到广泛的关注。与此同时,关系型数据库出现了建模难、性能低、查询难、扩展难等局限性和不适应性,导致传统的数据库不能处理实时的数据关系。由此,专门为处理复杂关系而创建出来的图数据库应运而生。
图数据库是以图论为基础,数据本身以图的方式存储,在处理与图相关的任务时占有先天的优势,可以高效地实现节点与关系间的各种查询。其中,Neo4j因其稳定性高、社区活跃、文档齐全、易学易用、可伸缩性及查询性能高等特点,成为应用最广泛、最主流的图数据库,位居图数据库排行榜首位且遥遥领先于其他图数据库。然而,Neo4j并不支持分片,没有实现分布式,存储与处理能力受限于单机的性能,当数据量超过单机的承载能力以后就会遇到存储和处理瓶颈,因此超级节点(度很大的节点)和分布式大图存储问题成为难点。
发明内容
针对现有技术中的问题,本发明提供一种基于图数据库的分布式存储方法、装置及系统。
为解决上述技术问题,本发明提供以下技术方案:
第一方面,本发明提供了一种基于图数据库的分布式存储方法,包括:
从待进行分布式存储的源图中提取出主图;
对提取主图后的剩余图进行分割,得到若干子图;
将所述主图存储至分布式系统中主服务器的主图数据库;
根据分布式系统中各子服务器的子图数据库的存储能力以及各子图信息,将各子图分别存储至各子服务器对应的子图数据库。
优选地,所述从待进行分布式存储的源图中提取出主图,具体包括:
利用k-core算法从待进行分布式存储的源图中获取预设指定数量的超级节点及其关系,并将获取的超级节点及其关系作为主图。
优选地,所述对提取主图后的剩余图进行分割,得到若干子图,具体包括:
利用Louvain社团发现算法对提取主图后的剩余图进行聚类分离,获取具有层次化结构的若干社团,并将获取的若干社团作为若干子图。
优选地,所述根据分布式系统中各子服务器的子图数据库的存储能力以及各子图信息,将各子图分别存储至各子服务器对应的子图数据库,具体包括:
根据分布式系统中各子服务器的子图数据库的存储能力,以及各子图的大小和各子图的层次化结构关系,将各子图进行二次划分后对应存储至各子服务器的子图数据库。
优选地,所述主图数据库和所述子图数据库均为Neo4j图数据库。
第二方面,本发明还提供了一种基于图数据库的分布式存储装置,包括:
提取模块,用于从待进行分布式存储的源图中提取出主图;
分割模块,用于对提取主图后的剩余图进行分割,得到若干子图;
第一存储模块,用于将所述主图存储至分布式系统中主服务器的主图数据库;
第二存储模块,用于根据分布式系统中各子服务器的子图数据库的存储能力以及各子图信息,将各子图分别存储至各子服务器对应的子图数据库。
优选地,所述提取模块,具体用于:
利用k-core算法从待进行分布式存储的源图中获取预设指定数量的超级节点及其关系,并将获取的超级节点及其关系作为主图。
优选地,所述分割模块,具体用于:
利用Louvain社团发现算法对提取主图后的剩余图进行聚类分离,获取具有层次化结构的若干社团,并将获取的若干社团作为若干子图。
优选地,所述第二存储模块,具体用于:
根据分布式系统中各子服务器的子图数据库的存储能力,以及各子图的大小和各子图的层次化结构关系,将各子图进行二次划分后对应存储至各子服务器的子图数据库。
第三方面,本发明还提供了一种基于图数据库的分布式存储系统,包括:主服务器和若干子服务器,所述主服务器中设置有主图数据库,各子服务器中分别设置有子图数据库;所述主服务器中还设置有如第二方面所述的基于图数据库的分布式存储装置。
由上述技术方案可知,本发明提供的基于图数据库的分布式存储方法,首先从待进行分布式存储的源图中提取出主图,接着对提取主图后的剩余图进行分割,得到若干子图,然后将所述主图存储至分布式系统中主服务器的主图数据库,并根据分布式系统中各子服务器的子图数据库的存储能力以及各子图信息,将各子图分别存储至各子服务器对应的子图数据库。可见,本发明通过对源图进行主图的提取和子图的分割,实现了基于图数据库的分布式存储,解决了基于图数据库的超级节点和大图存储和处理难题。此外,本发明将主图与子图进行分离,还可以降低源图数据的密集程度,对大规模网络数据解耦合,进而还可以提高查询性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的基于图数据库的分布式存储方法的流程图;
图2是本发明一实施例提供的基于图数据库的分布式存储框架示意图;
图3是基于图2所示的分布式存储框架实现的基于图数据库的分布式存储方法的工作流程图;
图4是本发明一实施例提供的一个数据实例中关于自治系统号码ASN、持有单位Organization、所属区域Location、关联IP域IP-Block相互之间的关联关系示意图;
图5是图4中各ASN之间的关联关系示意图;
图6是从图5提取得到的主图中各数据之间的关联关系示意图;
图7是对分割得到的子图的分组情况示意图;
图8是本发明另一实施例提供的基于图数据库的分布式存储装置的结构示意图;
图9是本发明另一实施例提供的基于图数据库的分布式存储系统的结构示意图;
图10是本发明又一实施例提供的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
针对现有技术中的问题,本发明提供了一种基于图数据库的分布式存储方法、装置及系统,本发明通过对源图进行主图的提取和子图的分割,实现了基于图数据库的分布式存储,解决了基于图数据库的超级节点和大图存储和处理难题。下面将通过具体实施例对本发明提供的内容进行详细解释说明。
图1示出了本发明一实施例提供的基于图数据库的分布式存储方法的流程图,参见图1,本发明实施例提供的基于图数据库的分布式存储方法包括如下步骤:
步骤101:从待进行分布式存储的源图中提取出主图。
在本步骤中,所述源图一般为包含多个超级节点的大规模复杂网络图,或数据量超过预设阈值的大图,这种大图的存储和处理受限于单机的性能,因此,对于这种图,最好能采取分布式方式进行存储,以便于存储和处理。在本步骤中,所述主图是指所述源图中的核心图,如可以为包括预设指定数量的超级节点及其关系的核心图。
需要说明的是,从源图中提取出主图,不但可以将大规模的源图拆分成规模相对较小的主图,而且还可以有效降低大规模源图数据的密集程度,降低源图的平均集聚系数,同时降低源图的数据关联度,可以便于后续步骤对提取主图后的剩余图进行分割时的准确性。
步骤102:对提取主图后的剩余图进行分割,得到若干子图。
在本步骤中,需要说明的是,经上述步骤从源图中提取出主图后,源图变为剩余图,本步骤对于剩余图进行进一步的分割,以便于进一步降低剩余图的规模,将剩余图变成更小单位的若干子图。此外,需要说明的是,为便于后续将主图和各子图进行分布式存储后的数据查询和数据处理,在对剩余图进行分割得到子图时,可以采用一些特定的算法,使得分割得到的子图具有某种意义上的关联关系,进而方便后续分布式存储时的分组以及分布式存储后的数据查询和数据处理。具体可采用的算法可参见下述优选实施方式的介绍。
步骤103:将所述主图存储至分布式系统中主服务器的主图数据库。
在本步骤中,将提取得到的主图存储至主服务器的主图数据库。需要说明的是,主图一般为源图的核心图,也即为比较重要且处理频次比较高的图。而同时,主服务器中的主图数据库一般为性能相对来说较好的数据库,所以,将主图存储至主服务器的主图数据库,有利于对主图的访问和处理。在本步骤中,所述主图数据库可以理解为一般的图数据库,由于其位于主服务器中,故称作为主图数据库,所述主图数据库可以为Neo4j、OrientDB、InfoGrid和HypergraphDB等图数据库,其中,Neo4j是最为稳定易用且得到广泛应用的图数据库,但其致命弱点就是不支持分片,无法实现分布式存储,而本实施例提供的方法可以很好地解决Neo4j图数据库的分布式存储问题,因此本实施例提供的方法尤其适用于Neo4j图数据库。
步骤104:根据分布式系统中各子服务器的子图数据库的存储能力以及各子图信息,将各子图分别存储至各子服务器对应的子图数据库。
在本步骤中,根据分布式系统中各子服务器的子图数据库的存储能力以及各子图信息,将各子图分别存储至各子服务器对应的子图数据库。需要说明的是,为实现基于图数据库的分布式存储,需要将各子图分别存储至各子服务器对应的子图数据库。在具体存储时,可以采用负载均衡的方式,根据各子服务器存储能力的评估结果及子图数据的相关信息(如各子图大小,各子图之间的关联关系等等)对各子图进行二次划分,将各子图分别存储至各子服务器对应的子图数据库。在本步骤中,所述子图数据库可以理解为一般的图数据库,由于其位于子服务器中,故称作为子图数据库,所述子图数据库优选为性能较好的Neo4j图数据库。
由上述技术方案可知,本实施例提供的基于图数据库的分布式存储方法,首先从待进行分布式存储的源图中提取出主图,接着对提取主图后的剩余图进行分割,得到若干子图,然后将所述主图存储至分布式系统中主服务器的主图数据库,并根据分布式系统中各子服务器的子图数据库的存储能力以及各子图信息,将各子图分别存储至各子服务器对应的子图数据库。可见,本实施例通过对源图进行主图的提取和子图的分割,实现了基于图数据库的分布式存储,解决了基于图数据库的超级节点和大图存储和处理难题。此外,本实施例将主图与子图进行分离,还可以降低源图数据的密集程度,对大规模网络数据解耦合,进而还可以提高查询性能。
基于上述内容,在一种优选实施方式中,上述步骤101具体通过如下方式实现:
利用k-core算法从待进行分布式存储的源图中获取预设指定数量的超级节点及其关系,并将获取的超级节点及其关系作为主图。
需要说明的是,k-core算法的核心思想是用节点的核数来度量节点的重要性,一般来说,核数越大代表节点越重要。本实施方式利用k-core算法计算源图中每个节点的核数,根据预设指定数量的超级节点数求取k值和对应节点及其关系。具体地,k-core算法的处理步骤如下:计算源图中所有节点的度数,反复去掉节点度小于k的节点及其连线后,剩余图就是核数为k的核心主图。其中,在根据预设指定数量的超级节点数求取k值时,可以先通过计算每个节点的核数得到一个k-core与节点数的对应关系表,然后根据预设指定数量的超级节点数反推对应的k值,例如预设指定数量的超级节点数是100,则通过查看关系表可以获取对应的k值。
在本实施方式中,通过k-core算法从源图中分割出核心图作为主图,将关联度最高的主图提取出来,使之与剩余图分离。其中,在利用k-core算法提取主图时,需要预设设定将多少数量的超级节点及其关系作为主图。
需要说明的是,通过k-core算法提取主图,可以将满足预设条件(用户设定的条件)的核心图提取出来,同时还可以降低源图的平均集聚系数,降低源图的数据关联度,从而可以提高后续在对剩余图进行聚类和分割时的准确性。
基于上述内容,在一种优选实施方式中,上述步骤102具体通过如下方式实现:
利用Louvain社团发现算法对提取主图后的剩余图进行聚类分离,获取具有层次化结构的若干社团,并将获取的若干社团作为若干子图。
需要说明的是,Louvain社团发现算法是一种基于多层次优化模块度(Modularity)的算法,其包括两个处理阶段:一是不断地遍历网络中的节点,尝试将单个节点加入能够使Modularity提升最大的社区中,直到所有节点都不再变化;二是基于处理第一阶段的结果,将一个个小的社区归并为一个超节点来重新构造网络,这时边的权重为两个节点内所有原始节点的边权重之和。迭代这两个步骤直至算法稳定后,会得到社团数量为N的多个社团作为多个子图。
在本实施方式中,将剩余图通过Louvain社团发现算法进行聚类分离出具有层次化结构的若干社团,即为多个子图。可见,本实施方式能够会通过Louvain社团发现算法高效聚类剩余图数据,将其划分为具有层次化结构的若干社团,从而实现子图分割。需要说明的是,采用Louvain社团发现算法易于实现,且最终结果完全依赖于算法聚类,并不需要人为提前预设分类,且性能较好,对图的大小几乎没有上限要求,能在迭代几轮后快速收敛,为处理拥有上亿节点的大型网络的聚类及子图分割提供了可能性。
基于上述内容,在一种优选实施方式中,上述步骤104具体通过如下方式实现:
根据分布式系统中各子服务器的子图数据库的存储能力,以及各子图的大小和各子图的层次化结构关系,将各子图进行二次划分后对应存储至各子服务器的子图数据库。
在本实施方式中,评估各服务器存储能力,并对具有层次化结构的子图数据进行二次划分平衡到各子服务器,实现分布式存储,尽可能地利用和平衡有限的存储资源,节约存储空间。
需要说明的是,进行二次划分是,可以根据各子图的大小和各子图的层次化结构关系将子图划分成与子服务器同等数量的分组,然后将各分组分散到各子服务器的图数据库中存储。
由上述描述可知,本实施例提供的基于图数据库的分布式存储方法,对分割好的主图和各子图进行分布式存储,从而方便分析和查询海量数据中复杂的数据关联问题,提高查询效率,尤其对于Neo4j图数据库,可以解决其受限于单机性能的问题,从而可以提高大规模图数据的存储性能,提升查询效率。
需要说明的是,本实施例所给出的多个优选实施方式,在逻辑或结构相互不冲突的前提下,可以自由组合,本发明对此不做限定。
下面结合图2~图7对本实施例提供的基于图数据库的分布式存储方法进行更为详细的说明。其中,图2~图7以Neo4j图数据库为例进行展示。
参见图2所示的基于图数据库的分布式存储框架,里面包括主服务器和各子服务器。其中,主服务器中设置了主图数据库,各子服务器中分别设置了子图数据库。此外,主服务器中还设置了一些功能模块,这些功能模块用于共同实现上述实施例介绍的基于图数据库的分布式存储方法,下面对图2中出现的各功能模块进行详细说明。其中,配置管理模块,负责读取和解析总控配置文件内容,通过配置文件获取主服务器及各子服务器的IP、各层Neo4j图数据库相关配置信息等。主控模块,负责执行主控程序,读取源数据;负责控制图分割模块和负载均衡模块的启停;负责接收图分割的结果,并向负载均衡模块下发指令进行子图均衡及存储。图分割模块,负责通过k-core算法筛选出指定节点数量的核心图作为主图,同时将核心图节点列表保存到本地,并配合Louvain社团发现算法划分出层次化的若干社团作为子图,将其与划分结果反馈给主控模块。负载均衡模块,负责远程监控主服务器和子服务器及其图数据库的使用情况,评估各服务器的存储能力,根据子服务器数量和层次化子图分割结果均衡各子图的资源占用情况二次划分为相应数量的分组,并将此具有层次化信息的分组结果反馈给数据存储模块,由其执行数据存储指令。数据存储模块,负责接收负载均衡模块的子图分组结果,将主图存储到主服务器的Neo4j图数据库中,并将子图按照分组存储到各子服务器的Neo4j图数据库中。
需要说明的是,模块化配置文件的使用,可以定义和实现多个功能对应的配置项,并可通过主控模块启动程序读取该配置文件,执行相应操作,从而提高了整个工作流程的执行效率;此外,通过图分割模块的k-core算法实现了主图提取功能,利用k-core算法分割出核心图作为主图,将其存储在主服务器的Neo4j图数据库中,将关联度最高的部分与剩余图分离。此外,通过图分割模块的Louvain社团发现算法实现了剩余图的分割功能,具体地,在通过k-core算法分割出主图之后,将剩余图通过Louvain社团发现算法进行聚类分离出具有层次结构的若干社团,即为多个子图,然后通过负载均衡程序根据各子服务器存储能力的评估结果及数据的层次化结构将各子图进行二次划分。通过将分割好的子图分散到不同服务器的图数据库中,实现了分布式Neo4j图数据库存储,实现了数据存储的线性扩展,实现了Neo4j图数据库容量的线性增加。
现结合图3所示的工作流程图,对图2所示的基于图数据库的分布式存储框架以及本实施例提供的基于图数据库的分布式存储方法的完整处理过程进行说明。参见图3所示,具体工作流程包括:
S1、搭建服务器集群(服务器分为1台主服务器和若干子服务器),并安装图数据库,主服务器如图2所示,包括配置管理模块、图分割模块、负载均衡模块及数据存储模块四部分;
S2、配置总控配置文件,指定主服务器及各子服务器的IP、各层图数据库相关配置信息等;
S3、主服务器中安装主控模块、图分割模块和负载均衡模块;
S4、主控模块读取总控配置文件和源图数据,并启动图分割模块进行主图提取和子图分割;
S5、主控模块接收主图和子图分割结果,启动负载均衡模块,根据子服务器数量及存储能力将子图进行二次划分为相应数量的分组;
S6、主控模块启动数据存储模块,接收主图和子图最终分组结果,并下发存储指令,将主图存储到主服务器的图数据库中,同时将各组子图分配到各子服务器的图数据库中,主图数据库和子图数据库均支持节点及关系的存储与查询。
现结合图4~图7所展示的数据关系以及主图和子图分割结果,以自治系统数据为例进一步对本实施例提供的基于数据库的分布式存储方法进行说明。
在本实例中,源图数据,即需要录入的图数据信息,包括以下几种元数据类型:自治系统号码(ASN)、持有单位(Organization)、所属区域(Location)、关联IP域(IP-Block)等信息,相互之间的关联关系如图4所示,其中各ASN之间的关系如图5所示(实例中为6万左右节点,14万左右边);首先,通过图2所示的图分割模块的主图提取程序,提取出100个超级节点及其边(k-core算法,k取值为32)作为核心图,即为主图,存储于主服务器的图数据库中,其关联关系如图6所示;其次,将剩余图通过图分割模块的Louvain社团发现程序进行子图聚类与分割,划分为160余个社团即子图,并通过负载均衡程序将各子图按规模排序分层及均衡化二次划分,形成与子服务器同等数量的分组(以前3组为例,分组情况如图7所示),分散到各子服务器的图数据库中存储。与传统技术相比,通过主图与子图分离的方法一方面可以降低图数据的密集程度,对大规模网络数据解耦合,提高查询性能,另一方面还可以提高子图分割的准确性,并利用分层二次划分的方法均衡子图规模,实现分布式存储,节省存储空间,提升存储性能。
由上面描述可知,本实施例提供了一种基于图数据库的分布式存储方法,尤其是对于Neo4j图数据库,可以解决其受限于单机性能的问题,提高大规模图数据的存储性能,提升查询效率;本实施例通过k-core算法获取指定数量的超级节点及其关系,并将其作为主图提取出来存储在主服务器Neo4j图数据库中,从而降低大规模图数据的密集程度,提升利用社团发现算法分割子图的准确性,同时降低图数据库对于超级节点的处理负担,提升存储性能;本实施例通过Louvain社团发现算法进行子图分割,将剩余图数据划分为若干层次子图,利用主服务器的负载均衡模块根据层次化信息将其均分到各子服务器的Neo4j图数据库中存储,从而实现数据存储的线性扩展,实现分布式图存储,节省存储空间。
基于相同的发明构思,本发明另一实施例提供了一种基于图数据库的分布式存储装置,参见图8,该装置包括:提取模块21、分割模块22、第一存储模块23和第二存储模块24,其中:
提取模块21,用于从待进行分布式存储的源图中提取出主图;
分割模块22,用于对提取主图后的剩余图进行分割,得到若干子图;
第一存储模块23,用于将所述主图存储至分布式系统中主服务器的主图数据库;
第二存储模块24,用于根据分布式系统中各子服务器的子图数据库的存储能力以及各子图信息,将各子图分别存储至各子服务器对应的子图数据库。
在一种优选实施方式中,所述提取模块,具体用于:
利用k-core算法从待进行分布式存储的源图中获取预设指定数量的超级节点及其关系,并将获取的超级节点及其关系作为主图。
在一种优选实施方式中,所述分割模块,具体用于:
利用Louvain社团发现算法对提取主图后的剩余图进行聚类分离,获取具有层次化结构的若干社团,并将获取的若干社团作为若干子图。
在一种优选实施方式中,所述第二存储模块,具体用于:
根据分布式系统中各子服务器的子图数据库的存储能力,以及各子图的大小和各子图的层次化结构关系,将各子图进行二次划分后对应存储至各子服务器的子图数据库。
在一种优选实施方式中,所述主图数据库和所述子图数据库均为Neo4j图数据库。
需要说明的是,本实施例所给出的多个优选实施方式,在逻辑或结构相互不冲突的前提下,可以自由组合,本发明对此不做限定。
由于本实施例提供的基于图数据库的分布式存储装置,可以用于执行上述实施例所述的基于图数据库的分布式存储方法,其工作原理和有益效果类似,故此处不再详述,具体内容可参见上述实施例的介绍。
基于相同的发明构思,本发明另一实施例提供了一种基于图数据库的分布式存储系统,参见图9,该系统包括:主服务器和若干子服务器,所述主服务器中设置有主图数据库,各子服务器中分别设置有子图数据库;所述主服务器中还设置有上面实施例所述的基于图数据库的分布式存储装置。
由于本实施例提供的基于图数据库的分布式存储系统,包含有上述实施例所述的基于图数据库的分布式存储装置,且可以用于执行上述实施例所述的基于图数据库的分布式存储方法,其工作原理和有益效果类似,故此处不再详述,具体内容可参见上述实施例的介绍。
基于相同的发明构思,本发明又一实施例提供了一种电子设备,参见图10,所述电子设备具体包括如下内容:处理器601、存储器602、通信接口603和总线604;
其中,所述处理器601、存储器602、通信接口603通过所述总线604完成相互间的通信;所述通信接口603用于实现各建模软件及智能制造装备模块库等相关设备之间的信息传输;
所述处理器601用于调用所述存储器602中的计算机程序,所述处理器执行所述计算机程序时实现上述基于图数据库的分布式存储方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
步骤101:从待进行分布式存储的源图中提取出主图。
步骤102:对提取主图后的剩余图进行分割,得到若干子图。
步骤103:将所述主图存储至分布式系统中主服务器的主图数据库。
步骤104:根据分布式系统中各子服务器的子图数据库的存储能力以及各子图信息,将各子图分别存储至各子服务器对应的子图数据库。
基于相同的发明构思,本发明又一实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述基于图数据库的分布式存储方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:
步骤101:从待进行分布式存储的源图中提取出主图。
步骤102:对提取主图后的剩余图进行分割,得到若干子图。
步骤103:将所述主图存储至分布式系统中主服务器的主图数据库。
步骤104:根据分布式系统中各子服务器的子图数据库的存储能力以及各子图信息,将各子图分别存储至各子服务器对应的子图数据库。
在本发明的描述中,需要说明的是,术语“上”、“下”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上实施例仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (5)
1.一种基于图数据库的分布式存储方法,其特征在于,包括:
从待进行分布式存储的源图中提取出主图;
其中,所述从待进行分布式存储的源图中提取出主图,具体包括:
利用k-core算法从待进行分布式存储的源图中获取预设指定数量的超级节点及其关系,并将获取的超级节点及其关系作为主图;
具体地,利用k-core算法计算源图中每个节点的核数,根据预设指定数量的超级节点数求取k值和对应节点及其关系;具体地,k-core算法的处理步骤如下:计算源图中所有节点的度数,反复去掉节点度小于k的节点及其连线后,剩余图就是核数为k的核心主图;其中,在根据预设指定数量的超级节点数求取k值时,可先通过计算每个节点的核数得到一个k-core与节点数的对应关系表,然后根据预设指定数量的超级节点数反推对应的k值;通过k-core算法从源图中分割出核心图作为主图,将关联度最高的主图提取出来,使之与剩余图分离;
对提取主图后的剩余图进行分割,得到若干子图;
其中,所述对提取主图后的剩余图进行分割,得到若干子图,具体包括:
利用Louvain社团发现算法对提取主图后的剩余图进行聚类分离,获取具有层次化结构的若干社团,并将获取的若干社团作为若干子图;
将所述主图存储至分布式系统中主服务器的主图数据库;
根据分布式系统中各子服务器的子图数据库的存储能力以及各子图信息,将各子图分别存储至各子服务器对应的子图数据库;
其中,所述根据分布式系统中各子服务器的子图数据库的存储能力以及各子图信息,将各子图分别存储至各子服务器对应的子图数据库,具体包括:
根据分布式系统中各子服务器的子图数据库的存储能力,以及各子图的大小和各子图的层次化结构关系,将各子图进行二次划分后对应存储至各子服务器的子图数据库。
2.根据权利要求1所述的方法,其特征在于,所述主图数据库和所述子图数据库均为Neo4j图数据库。
3.一种基于图数据库的分布式存储装置,其特征在于,包括:
提取模块,用于从待进行分布式存储的源图中提取出主图;
其中,所述提取模块具体还包括:
利用k-core算法从待进行分布式存储的源图中获取预设指定数量的超级节点及其关系,并将获取的超级节点及其关系作为主图;
具体地,利用k-core算法计算源图中每个节点的核数,根据预设指定数量的超级节点数求取k值和对应节点及其关系;具体地,k-core算法的处理步骤如下:计算源图中所有节点的度数,反复去掉节点度小于k的节点及其连线后,剩余图就是核数为k的核心主图;其中,在根据预设指定数量的超级节点数求取k值时,可先通过计算每个节点的核数得到一个k-core与节点数的对应关系表,然后根据预设指定数量的超级节点数反推对应的k值;通过k-core算法从源图中分割出核心图作为主图,将关联度最高的主图提取出来,使之与剩余图分离;
分割模块,用于对提取主图后的剩余图进行分割,得到若干子图;
其中,所述分割模块具体还包括:
利用Louvain社团发现算法对提取主图后的剩余图进行聚类分离,获取具有层次化结构的若干社团,并将获取的若干社团作为若干子图;
第一存储模块,用于将所述主图存储至分布式系统中主服务器的主图数据库;
第二存储模块,用于根据分布式系统中各子服务器的子图数据库的存储能力以及各子图信息,将各子图分别存储至各子服务器对应的子图数据库;
根据分布式系统中各子服务器的子图数据库的存储能力,以及各子图的大小和各子图的层次化结构关系,将各子图进行二次划分后对应存储至各子服务器的子图数据库。
4.根据权利要求3所述的装置,其特征在于,所述第二存储模块,具体用于:
根据分布式系统中各子服务器的子图数据库的存储能力,以及各子图的大小和各子图的层次化结构关系,将各子图进行二次划分后对应存储至各子服务器的子图数据库。
5.一种基于图数据库的分布式存储系统,其特征在于,包括:主服务器和若干子服务器,所述主服务器中设置有主图数据库,各子服务器中分别设置有子图数据库;所述主服务器中还设置有如权利要求3、4任一项所述的基于图数据库的分布式存储装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811251286.5A CN109359115B (zh) | 2018-10-25 | 2018-10-25 | 基于图数据库的分布式存储方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811251286.5A CN109359115B (zh) | 2018-10-25 | 2018-10-25 | 基于图数据库的分布式存储方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109359115A CN109359115A (zh) | 2019-02-19 |
CN109359115B true CN109359115B (zh) | 2020-11-13 |
Family
ID=65346682
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811251286.5A Active CN109359115B (zh) | 2018-10-25 | 2018-10-25 | 基于图数据库的分布式存储方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109359115B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110633378A (zh) * | 2019-08-19 | 2019-12-31 | 杭州欧若数网科技有限公司 | 一种支持超大规模关系网络的图数据库构建方法 |
CN113259302B (zh) * | 2020-02-12 | 2023-06-27 | 腾讯云计算(长沙)有限责任公司 | 网络攻击数据的关系分解方法、装置和计算机设备 |
CN112784119B (zh) * | 2021-01-14 | 2023-04-28 | 内蒙古蒙商消费金融股份有限公司 | 一种数据查询及同步优化方法及装置 |
CN112699134A (zh) * | 2021-03-25 | 2021-04-23 | 北京智源人工智能研究院 | 基于图剖分的分布式图数据库的存储与查询方法 |
CN113254527B (zh) * | 2021-04-22 | 2022-04-08 | 杭州欧若数网科技有限公司 | 分布式存储图数据的优化方法、电子装置和存储介质 |
CN114416913B (zh) * | 2022-03-28 | 2022-07-05 | 支付宝(杭州)信息技术有限公司 | 一种对知识图谱进行数据分片的方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107832323A (zh) * | 2017-09-14 | 2018-03-23 | 北京知道未来信息技术有限公司 | 一种基于图数据库的分布式实现系统及方法 |
CN108600321A (zh) * | 2018-03-26 | 2018-09-28 | 中国科学院计算技术研究所 | 一种基于分布式内存云的图数据存储方法和系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160055233A1 (en) * | 2014-08-25 | 2016-02-25 | Ca, Inc. | Pre-join tags for entity-relationship modeling of databases |
JP5925919B1 (ja) * | 2015-01-07 | 2016-05-25 | 株式会社ぐるなび | 情報提供サーバ |
CN105469315A (zh) * | 2015-08-04 | 2016-04-06 | 电子科技大学 | 基于增量聚类的动态社会网络社团结构演化方法 |
-
2018
- 2018-10-25 CN CN201811251286.5A patent/CN109359115B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107832323A (zh) * | 2017-09-14 | 2018-03-23 | 北京知道未来信息技术有限公司 | 一种基于图数据库的分布式实现系统及方法 |
CN108600321A (zh) * | 2018-03-26 | 2018-09-28 | 中国科学院计算技术研究所 | 一种基于分布式内存云的图数据存储方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109359115A (zh) | 2019-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109359115B (zh) | 基于图数据库的分布式存储方法、装置及系统 | |
US11789978B2 (en) | System and method for load, aggregate and batch calculation in one scan in a multidimensional database environment | |
Kim et al. | Dualsim: Parallel subgraph enumeration in a massive graph on a single machine | |
US9449115B2 (en) | Method, controller, program and data storage system for performing reconciliation processing | |
US20130151535A1 (en) | Distributed indexing of data | |
US10268749B1 (en) | Clustering sparse high dimensional data using sketches | |
CN108804576B (zh) | 一种基于链接分析的域名层级结构探测方法 | |
JP2017037648A (ja) | ハイブリッドデータを保存するためのハイブリッドデータストレージシステム、方法及びプログラム | |
US20200125550A1 (en) | System and method for dependency analysis in a multidimensional database environment | |
Arnaiz-González et al. | MR-DIS: democratic instance selection for big data by MapReduce | |
CN109033314A (zh) | 内存受限情况下的大规模知识图谱的实时查询方法和系统 | |
CN110597935A (zh) | 一种空间分析方法和装置 | |
Bala et al. | P-ETL: Parallel-ETL based on the MapReduce paradigm | |
Aji et al. | Effective spatial data partitioning for scalable query processing | |
Hu et al. | Towards big linked data: a large-scale, distributed semantic data storage | |
Denis et al. | A distributed approach for graph-oriented multidimensional analysis | |
CN108389152B (zh) | 一种图结构感知的图处理方法及装置 | |
Packiaraj et al. | Hypar-fca: a distributed framework based on hybrid partitioning for fca | |
Moutafis et al. | Algorithms for processing the group K nearest-neighbor query on distributed frameworks | |
CN108280224B (zh) | 万级维度数据生成方法、装置、设备以及存储介质 | |
CN110321435B (zh) | 一种数据源划分方法、装置、设备和存储介质 | |
CN109426458A (zh) | 一种关系图的打印方法和装置 | |
CN113641705A (zh) | 一种基于计算引擎的营销处置规则引擎方法 | |
CN109918410B (zh) | 基于Spark平台的分布式大数据函数依赖发现方法 | |
Papanikolaou | Distributed algorithms for skyline computation using apache spark |
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 |