CN111723246A - 一种数据处理的方法、装置和存储介质 - Google Patents

一种数据处理的方法、装置和存储介质 Download PDF

Info

Publication number
CN111723246A
CN111723246A CN201910211546.4A CN201910211546A CN111723246A CN 111723246 A CN111723246 A CN 111723246A CN 201910211546 A CN201910211546 A CN 201910211546A CN 111723246 A CN111723246 A CN 111723246A
Authority
CN
China
Prior art keywords
incremental
newly added
information
directed path
incremental data
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
Application number
CN201910211546.4A
Other languages
English (en)
Other versions
CN111723246B (zh
Inventor
张国庆
周亮
钱勇
卢周
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
JD Digital Technology Holdings Co Ltd
Original Assignee
JD Digital Technology Holdings Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by JD Digital Technology Holdings Co Ltd filed Critical JD Digital Technology Holdings Co Ltd
Priority to CN201910211546.4A priority Critical patent/CN111723246B/zh
Publication of CN111723246A publication Critical patent/CN111723246A/zh
Application granted granted Critical
Publication of CN111723246B publication Critical patent/CN111723246B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种数据处理的方法、装置和存储介质,具体为接收增量数据,其中,增量数据中包含预先存储的原始数据新增的各个对象之间的关联信息;根据各个对象之间的关联数据,建立图计算模型,其中,图计算模型包含各个对象按照关联信息形成的新增有向路径;根据新增有向路径,生成增量数据索引信息,并存储增量数据索引信息;加载增量数据索引信息和预先存储的原始数据索引信息,分别对增量数据和原始数据中的对应的关联信息进行索引。本申请实施例通过为增量数据建立图计算模型,生成并存储增量数据索引信息,大量的节约了增量数据索引信息所占用的内存空间,同时实现与原始数据索引信息同时进行索引,提升了索引效率。

Description

一种数据处理的方法、装置和存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据处理的方法、装置和存储介质。
背景技术
图是一种重要的数据结构,可以充分表达自然界中事物的联系和依赖属性,因此被广泛应用在计算机领域中。图由节点(即个体)与边(即个体之间的联系)构成,而图数据是不同领域中基于由图结构表达的各类数据的相关部分。很多问题都可以借助图相关的算法得到高效解决,例如图形着色,网络路由,网络流以及Web网页和页面间的超链接构成的图或者社会网络中的不同用户和用户之间的关系链等都可以使用图数据进行表示和计算。
但是,近年来随着Web2.0、大数据、社交网络、机器学习和数据挖掘等技术的高速发展,很多领域抽象出来的图规模呈指数级增长。其中可能涉及到大规模的图数据分析问题。图中边的数量可能会达到亿万级别,为图计算带来了巨大挑战。
现有的大规模图计算系统都集中解决静态图的挖掘问题。但在图的结构随着时间频繁地变化(新增/删除顶点或边)时,若要获得动态时刻,如T+1时刻的挖掘结果,就必须将T+1时刻的全部图数据经过加载、分割、构造等一系列重复的预处理流程后再运行图挖掘算法获得结果,没有充分利用T时刻的预处理过程和计算结果,所以它们在处理增量数据时效率很低。同时,由于图自身的结构特征和图挖掘算法多为迭代过程,所以图算法运行时数据的本地性很差。现有的增量数据处理技术所采用的key/value存储方式无法缓解甚至会加剧这种现象,导致增量数据的计算性能很差,需要消耗大量的内/外部存储空间和资源。
另外,为了处理增量数据而牺牲了大规模静态图计算的能力。在运行增量数据挖掘任务之前,一般需要用户单独进行增量数据挖掘算法,不能完全复用静态图计算的程序,使得算法难以维护和使用。
发明内容
本申请实施例提供了一种数据处理的方法,该方法通过为增量数据建立增量数据索引信息,大量的节约了增量数据索引信息所占用的内存空间,提升了索引效率。
该方法包括:
接收增量数据,其中,所述增量数据中包含预先存储的原始数据新增的各个对象之间的关联信息;
根据各个对象之间的关联信息,建立图计算模型,其中,所述图计算模型包含所述各个对象按照所述关联信息形成的新增有向路径;
根据所述新增有向路径,生成所述增量数据索引信息,并存储所述增量数据索引信息;
加载所述增量数据索引信息和预先存储的所述原始数据的原始数据索引信息,分别对所述增量数据和所述原始数据中的对应的所述关联信息进行索引。
可选地,获取每条新增有向路径的源对象的ID、目的对象的ID和操作标记,其中,所述操作标记用于表示所述每条新增有向路径处于增加或删除的状态;
基于所述操作标记,生成对应的新增位图信息BitmapAdd,并存储所述新增位图信息;
根据所述每条新增有向路径的所述源对象的ID和所述目的对象的ID,生成增量出度信息,其中,所述增量出度信息用于表示所述每条新增有向路径的源对象的增量出度值;
根据所述增量出度信息和所述BitmapAdd,生成增量数据索引信息。
可选地,按照所述源对象的接收顺序遍历所述每条新增有向路径,并统计所述每条新增有向路径的操作标记;
为所述操作标记为增加的状态的所述新增有向路径标记预设值,并将所述预设值按照所述新增有向路径对应的源对象的接收顺序写进所述BitmapAdd中,以生成所述BitmapAdd。
可选地,遍历所述每条新增有向路径,根据所述每条新增有向路径的所述源对象的ID和所述目的对象的ID,将所述操作标记对应的每条所述新增有向路径的源对象对应的所述增量出度值按照所述源对象的接收顺序存储为所述增量出度信息,以生成所述增量出度信息。
可选地,根据所述BitmapAdd中记录的数值,获取包含有所述新增有向路径的源对象的数量;
对所述源对象数量加1,以确定所述增量数据索引信息的维度,并建立初始增量数据索引信息;
遍历各个所述源对象,分别将被标记为所述预设值对应的所述新增有向路径中所述源对象对应的所述增量出度值写入所述初始增量数据索引信息对应的索引位置上;
基于各个所述索引位置上的所述增量出度值,建立所述增量数据索引信息。
可选地,按照所述源对象的接收顺序遍历各个所述源对象,并在所述BitmapAdd中对标记有所述操作标记的所述源对象对应的所述预设值依次求和,以确定所述索引位置。
可选地,在所述初始增量数据索引信息中,将所述当前索引位置上的数值更新为所述当前索引位置的所述增量出度值和前一个索引位置上的所述增量出度值的和,以建立所述增量数据索引信息。
可选地,根据所述增量数据索引信息和所述原始数据索引信息,分别获取对应的所述源对象的ID和所述目的对象的ID,以确定对应的所述新增有向路径和原始有向路径;
根据所述新增有向路径和所述原始有向路径,分别确定所述增量数据和所述原始数据中的对应的所述关联信息。
在本发明的另一个实施例中,提供了一种数据处理的装置,该装置包括:
获取模块,用于接收增量数据,其中,所述增量数据中包含预先存储的原始数据新增的各个对象之间的关联信息;
构建模块,用于根据各个对象之间的关联信息,建立图计算模型,其中,所述图计算模型包含所述各个对象按照所述关联信息形成的新增有向路径;
生成模块,用于根据所述新增有向路径,生成所述增量数据索引信息,并存储所述增量数据索引信息;
索引模块,用于加载所述增量数据索引信息和预先存储的所述原始数据的原始数据索引信息,分别对所述增量数据和所述原始数据中的对应的所述关联信息进行索引。
可选地,生成模块包括:
第一获取单元,用于获取每条新增有向路径的源对象的ID、目的对象的ID和操作标记,其中,所述操作标记用于表示所述每条新增有向路径处于增加或删除的状态;
第一生成单元,用于基于所述操作标记,生成对应的新增位图信息BitmapAdd,并存储所述新增位图信息;
第二生成单元,用于根据所述每条新增有向路径的所述源对象的ID和所述目的对象的ID,生成增量出度信息,其中,所述增量出度信息用于表示所述每条新增有向路径的源对象的增量出度值;
第三生成单元,用于根据所述增量出度信息和所述BitmapAdd,生成增量数据索引信息。
可选地,第一生成单元包括:
统计子单元,用于按照所述源对象的接收顺序遍历所述每条新增有向路径,并统计所述每条新增有向路径的操作标记;
生成子单元,用于为所述操作标记为增加的状态的所述新增有向路径标记预设值,并将所述预设值按照所述新增有向路径对应的源对象的接收顺序写进所述BitmapAdd中,以生成所述BitmapAdd。
可选地,第二生成单元用于:
遍历所述每条新增有向路径,根据所述每条新增有向路径的所述源对象的ID和所述目的对象的ID,将所述操作标记对应的每条所述新增有向路径的源对象对应的所述增量出度值按照所述源对象的接收顺序存储为所述增量出度信息,以生成所述增量出度信息。
可选地,第三生成单元包括:
获取子单元,用于根据所述BitmapAdd中记录的数值,获取包含有所述新增有向路径的源对象的数量;
第一构建子单元,用于对所述源对象数量加1,以确定所述增量数据索引信息的维度,并建立初始增量数据索引信息;
写入子单元,用于遍历各个所述源对象,分别将被标记为所述预设值对应的所述新增有向路径中所述源对象对应的所述增量出度值写入所述初始增量数据索引信息对应的索引位置上;
第二构建子单元,用于基于各个所述索引位置上的所述增量出度值,建立所述增量数据索引信息。
可选地,写入子单元还用于:
按照所述源对象的接收顺序遍历各个所述源对象,并在所述BitmapAdd中对标记有所述操作标记的所述源对象对应的所述预设值依次求和,以确定所述索引位置。
可选地,第二构建子单元还用于:
在所述初始增量数据索引信息中,将所述当前索引位置上的数值更新为所述当前索引位置的所述增量出度值和前一个索引位置上的所述增量出度值的和,以建立所述增量数据索引信息。
可选地,索引模块包括:
第二获取单元,用于根据所述增量数据索引信息和所述原始数据索引信息,分别获取对应的所述源对象的ID和所述目的对象的ID,以确定对应的所述新增有向路径和原始有向路径;
确定单元,用于根据所述新增有向路径和所述原始有向路径,分别确定所述增量数据和所述原始数据中的对应的所述关联信息。
在本发明的另一个实施例中,提供了一种非瞬时计算机可读存储介质,所述非瞬时计算机可读存储介质存储指令,所述指令在由处理器执行时使得所述处理器执行上述一种数据处理的方法中的各个步骤。
在本发明的另一个实施例中,提供了一种终端设备,包括处理器,所述处理器用于执行上述一种数据处理的方法中的各个步骤。
如上可见,基于上述实施例,首先接收增量数据,其中,增量数据中包含预先存储的原始数据新增的各个对象之间的关联信息,其次,根据各个对象之间的关联数据,建立图计算模型,其中,图计算模型包含各个对象按照关联信息形成的新增有向路径,然后,根据新增有向路径,生成所述增量数据索引信息,并存储增量数据索引信息,最后,加载增量数据索引信息和预先存储的原始数据的原始数据索引信息,分别对增量数据和原始数据中的对应的关联信息进行索引。本申请实施例通过为增量数据建立图计算模型,生成并存储增量数据索引信息,能大量的节约索引信息所占用的内存空间。同时,可以同时实现对增量数据和原始数据的高效索引,提升图算法运行时的计算性能。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例所提供的一种数据处理的方法中的实施例10的示意图;
图2示出了本申请实施例本申请实施例20提供的为增量数据建立的图计算模型的示意图;
图3示出了本申请提供的实施例30中构造增量数据索引信息的方法的具体流程的示意图;
图4示出了本申请实施例40提供的构造增量数据索引信息的示意图;
图5示出了本申请实施例50提供的同时对原始数据和增量数据进行索引的方法的示意图;
图6示出了本申请实施例60还提供一种数据处理的装置的示意图;
图7示出了本申请实施例70所提供的一种终端设备的示意图。
具体实施方式
为使本申请的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
基于现有技术中的问题,本申请实施例提供了一种数据处理的方法,通过为增量数据中的各个对象以及各个对象之间的关联数据建立图计算模型,通过图计算模型为增量数据建立增量数据索引信息,并使用建立的增量数据索引信息对增量数据中对应的关联信息进行索引。通常情况下原始数据的对象/对象之间的关联信息远远多于增量数据的对象/对象之间的关联关系。对原始数据和增量数据均建立图计算模型,并采用压缩稀疏行(Compressed Sparse Row,CSR)和压缩稀疏列(Compressed Sparse Column,CSC)方法进行构造和计算。其中,对增量数据中的新增有向路径建立增量数据索引信息,可以基于对新增有向路径(可能会导致新增对象)的操作或删除新增有向路径(可能会导致删除现有对象)的操作构造增量数据索引信息,以大量节约索引信息所占用的内存空间,并提升对增量数据的索引效率。同时,对增量数据的增量数据索引信息和原始数据的原始数据索引信息分别存储,并在需要进行索引时,直接加载增量数据索引信息和原始数据索引信息,以实现对增量数据和原始数据的同时索引,提升了图计算的效率。
本申请的应用领域主要是在计算机技术领域中,适用于图计算应用技术中。如图1所示,为本申请实施例所提供的一种数据处理的方法中的实施例10的示意图。其中,详细步骤如下:
S11,接收增量数据,其中,所述增量数据中包含预先存储的原始数据新增的各个对象之间的关联信息。
本步骤中,原始数据为T时刻接收到的数据,而增量数据为T+1时刻接收到的数据。原始数据在接收后已经被存储。其中,原始数据和增量数据中都包含多个对象和各个对象之间的关联关系。具体的,每个对象为信息中的实体,各个对象之间的关联关系为每个实体之间的关系。如以社交网络为例,每个用户注册的账号为对象,每个账号和其它账号之间的关注、取消、添加和删除等关系构成各个对象之间的关联关系。
S12,根据各个对象之间的关联信息,建立图计算模型,其中,所述图计算模型包含所述各个对象按照所述关联信息形成的新增有向路径。
本步骤中,将增量数据中的各个对象以及各个对象之间的关联信息抽象为图计算模型。其中,图(Graph)是由各个对象的有穷非空集合和对象之间的关联关系形成的边的集合组成的。根据对象之间的关联信息是否有方向,构建增量数据中各个对象按照关联关系形成的有向路径。本申请实施例中增量数据所构建的图计算模型主要是指由有向路径构成的有向图。在图计算中,新增有向路径包含源对象的标识信息(Identification,ID)和目的对象的ID。新增有向路径通过源对象的ID和目的对象的ID来表示关联信息的方向。
另外,新增有向路径上还标识有操作标记。操作标记用于表示每条新增有向路径处于增加或者删除的状态。具体的,若增量数据中的某条新增有向路径是增加后的边,则在该新增有向路径上标识增加的操作标记,反之,若增量数据中的某条新增有向路径是删除后的边,则在该新增有向路径上标识删除的操作标记。如图2所示,为本申请实施例20提供的为增量数据建立的图计算模型的示意图。其中,该图计算模型中有0至4的5个源对象,(0,3)、(3,0)和(3,4)为三条增加的新增有向路径,(0,1)和(2,1)为两条删除的新增有向路径。
S13,根据所述新增有向路径,生成所述增量数据索引信息,并存储所述增量数据索引信息。
本步骤中,首先,基于每条新增有向路径的操作标记,分别生成对应的新增位图信息BitmapAdd。具体的,在通过上述步骤S12获取了每条新增有向路径的操作标记后,根据操作标记的状态,分别生成对应的新增位图信息。具体的,新增位图信息用来存储表示每条新增有向路径状态的标识数值。当遍历增量数据中的每条新增有向路径时,若当前新增有向路径上标识的操作状态是表示增加的预设值,则将预设值存储在新增位图信息BitmapAdd中;若当前新增有向路径上标识的操作状态为表示删除,则设置标识删除的设定值,并将该设定值存储在删除位图信息BitmapDel中。其中,标识增加的预设值和表示删除的设定值均可以预先设置。另外,BitmapAdd中仅存储表示增加状态的新增有向路径的源对象对应的数值,BitmapDel中仅存储标识删除状态的新增有向路径的源对象对应的数值。
其次,根据每条新增有向路径的源对象的ID和目的对象的ID,生成增量出度信息。具体的,在增量数据构建的图计算模型中,源对象的出边条数称为该源对象的出度,即以源对象为首的新增有向路径的数目称为该源对象的出度。增量出度信息存储各个源对象的增量出度值。其中,新增有向路径的源对象的出度由该源对象的ID和新增有向路径的目的对象的ID共同决定。
最后,根据增量出度信息和BitmapAdd,建立增量数据索引信息。具体的,在经过上述步骤获取增量出度信息和BitmapAdd后,遍历增量数据中的各个源对象,若该源对象在BitmapAdd被标记,则将该源对象在增量出度信息中对应的数值写进创建的增量数据索引信息中对应的索引位置上,以生成增量数据对应的增量数据索引信息。
S14,加载所述增量数据索引信息和预先存储的所述原始数据的原始数据索引信息,分别对所述增量数据和所述原始数据中的对应的所述关联信息进行索引。
本步骤中,已经对在T时刻接收到的原始数据建立了原始数据索引信息,并将该原始数据索引信息存储在外部/内部存储器中。在生成并存储了上述针对T+1时刻接收到的增量数据的增量数据索引信息后,同时加载上述原始数据索引信息和增量数据索引信息,分别对原始数据和增量数据中对应的关联信息进行索引。
基于本申请的上述实施例,首先接收增量数据,其中,增量数据中包含预先存储的原始数据新增的各个对象之间的关联信息,其次,根据各个对象之间的关联数据,建立图计算模型,其中,图计算模型包含各个对象按照关联信息形成的新增有向路径,然后,根据新增有向路径,生成所述增量数据索引信息,并存储增量数据索引信息,最后,加载增量数据索引信息和预先存储的原始数据索引信息,分别对增量数据和原始数据中的对应的关联信息进行索引。本申请实施例通过以源对象为中心,以最低的代价遍历源对象所关联的全部新增有向路径建立的图计算模型,生成并存储增量数据索引信息,能大量的节约索引信息所占用的内存空间。同时,可以同时实现对增量数据和原始数据的高效索引,提升图算法运行时的计算性能。
如图3所示,为本申请提供的实施例30中构造增量数据索引信息的方法的具体流程的示意图。其中,该具体流程的详细过程如下:
S301,接收增量数据。
S302,根据增量数据中各个对象的关联信息,建立图计算模型。
这里,主要根据增量数据中各个对象之间的关联信息,抽象为每条新增有向路径,建立图计算模型。
S303,遍历增量数据的新增有向路径,统计每条新增有向路径的操作标记。
这里,获取每条新增有向路径的源对象的ID、目的对象的ID和操作标记,其中,操作标记用于表示每条新增有向路径处于增加或删除的状态。
S304,根据每条新增有向路径的操作标记,生成每条新增有向路径的源对象对应的BitmapAdd。
这里,基于操作标记,生成对应的新增位图信息BitmapAdd,并存储新增位图信息。具体的。首先按照源对象的接收顺序遍历每条新增有向路径,并统计每条新增有向路径的操作标记。如可以按照自然数组的逻辑顺序,按照从源对象V0、V1、V2……Vn的顺序,统计每条新增有向路径的操作标记,包括增加的状态和/或删除的状态。在获取了每条新增有向路径的操作标记后,将操作标记为增加的状态的新增有向路径标记为预设值,并将预设值按照新增有向路径对应的源对象数组的顺序写进BitmapAdd中,以生成BitmapAdd。当存在删除的状态的新增有向路径时,将操作标记为删除的状态的所述新增有向路径标记为设定值,并将设定值按照新增有向路径对应的源对象数组的顺序写进BitmapDel中,以生成BitmapDel。
另外,BitmapAdd和BitmapDel不是必须共同存在的,当仅有增加的状态的新增有向路径或者仅有删除的状态的新增有向路径时,仅存在BitmapAdd或BitmapDel其中之一。
S305,遍历新增有向路径,生成增量出度信息。
本步骤中,根据每条新增有向路径的源对象的ID和目的对象的ID,生成增量出度信息,其中,增量出度信息用于表示每条新增有向路径的源对象的增量出度值。具体的,遍历每条新增有向路径,根据每条新增有向路径的源对象的ID和目的对象的ID,将操作标记对应的每条新增有向路径的源对象对应的增量出度值按照源对象的接收顺序存储为增量出度信息,以生成增量出度信息。具体的,遍历增量数据中的每条边,根据前述创建的BitmapAdd,当源对象的操作标记为增加的状态时,为创建的增量出度信息中对应的源对象的位置上的元素值加1,即统计源对象的增量出度值。若操作标记为删除的状态时,则根据BitmapDel中的数值,对相应的源对象的出度进行标记。
S306,根据BitmapAdd,创建初始增量数据索引信息。
本步骤中,根据BitmapAdd中记录的数值,获取包含有新增有向路径的源对象数量。如在BitmapAdd中,有两个源对象被记录有表示增加的状态的第一预设值,可知包含有新增有向路径的源对象数量为2。此时,创建初始增量数据索引信息的大小为源对象数量加1,在源对象数量为2的情况下,初始增量数据索引信息的大小为3。
这里,按照源对象的接收顺序遍历各个源对象,在BitmapAdd中,对标记有操作标记的源对象对应的预设值依次求和,以确定索引位置。同时,遍历各个源对象,分别将被标记为预设值对应的新增有向路径的源对象对应的增量出度值写入初始增量数据索引信息的对应的索引位置上。具体的,遍历增量数据中所有的源对象,如果源对象Vi在BitmapAdd中被标记为预设值,如预设值为1,则使初始增量数据索引信息incremental_outgoing_index[Xvi+1]=增量出度信息incremental_outgoing_degree[Vi]的值。其中Xvi由BitmapAdd->Sum(vi)计算所得,表示BitmapAdd中在Vi之前被标记为1的总数。
综上,生成初始增量数据索引信息。
S307,更新初始增量数据索引信息中各个索引位置上的数字,以生成增量数据索引信息。
本步骤中,在初始增量数据索引信息中,将当前索引位置上的数值更新为当前索引位置的当前的增量出度值和前一个索引位置上的增量出度值的和,以建立增量数据索引信息。具体的,计算初始增量数据索引信息中的和,计算公式为incremental_outgoing_index[i+1]=incremental_outgoing_index[i]+incremental_outgoing_index[i+1],即把初始增量数据出边索引数字中第i+1个元素的值更新为当前值与第i个元素值的和。
综上,生成增量数据索引信息。
S308,加载增量数据索引信息和预先存储的原始数据索引信息,分别对增量数据和原始数据中的对应的关联信息进行索引。
这里,根据增量数据索引信息和原始数据索引信息,分别获取对应的源对象的ID和目的对象的ID,以确定对应的新增有向路径和原始有向路径。然后根据新增有向路径和原始有向路径,分别确定增量数据和原始数据中的对应的关联信息。
在上述步骤结束后,本申请实施例中的图计算模型还根据增量数据索引信息,建立增量数据出边信息。其中,增量数据出边信息表示各条新增有向路径。具体的,根据新增有向路径的数量,确定初始增量出边信息的大小,并生成初始增量出边信息。然后,根据增量数据索引信息,将新增有向路径写入初始增量出边信息。遍历每条新增有向路径的操作标记,并根据增量数据索引信息,将被标记为增加状态的新增有向路径的源对象的ID和目的对象的ID写入增量出边信息对应的位置上。创建一个大小为新增有向路径总数的初始增量出边信息incremental_outgoing_list用来存放所有的新增有向路径。再次遍历增量图中的每条新增有向路径,根据incremental_outgoing_index将被标记为增加状态的新增有向路径放入到incremental_outgoing_list中对应的位置pos=incremental_outgoing_index[Xvi],其中Xvi由BitmapAdd->Sum(vi)计算所得,BitmapAdd->Sum(vi)对应的公式为
Figure BDA0002000688840000091
同时,使incremental_outgoing_index[Xvi]的值加1。如果新增有向路径的操作标记为删除状态,则通过原始数据出边索引信息original_outgoing_index确定它在原始数据出边数组original_outgoing_list中的位置是从original_outgoing_index[Vi]到original_outgoing_index[Vi+1],并在此区间中找到该新增有向路径并更新其目的对象为vi。
另外,在构建完上述增量数据出边信息后,将最后一个元素开始右移增量数据索引信息中的每个元素i的值,即incremental_outgoing_index[i]=incremental_outgoing_index[i-1],并将incremental_outgoing_index[0]置为0,此步还原了增量数据索引信息。最后释放增量数据incremental_edge_array和增量出度信息incremental_outgoing_degree的内存空间。
本申请实施例基于上述步骤实现一种数据处理的方法。
如图4所示为本申请实施例40提供的构造增量数据索引信息的示意图。其中,图4左侧为由5个源对象组成的图计算模型,其中,虚线表示的(0,3)、(3,0)和(3,4)为增加的新增有向路径,实心点表示的(0,1)和(2,1)为删除的新增有向路径。图4右侧的上方是对原始数据采用CSR方法构造的原始数据索引信息index和对应的原始数据出边信息。如需要找到对象V1的所有新增有向路径,则通过原始数据出边索引信息可知它们在出边数组的起始位置是index[V1]=2,则出边的总数是index[V1+1]-index[V1]=2,即V1所有的新增有向路径共2条,分别是(1,3)和(1,0)。由此可见,获取任意源对象的新增有向路径的过程是简单的计算和对各个数据信息形成的数组的连续遍历,因此CSR和CSC法具有极好的数据本地性,仿存效率远高于现有的key-value存储结构。如图4右侧下方所示为构造增量数据索引信息的具体流程的示意图。其中,标识增量数据中操作标记为增加状态的新增有向路径的BitmapAdd数组(1,0,0,1,0)和表示删除状态的BitmapDel(1,0,1,0,0)。根据各个源对象增加的新增有向路径的数量,生成增量数据出度信息(1,0,0,2,0)。基于增量出度信息和Bitmap->Sum(vi),即incremental_outgoing_index[Xvi+1]=增量出度信息incremental_outgoing_degree[Vi]的值,其中Xvi由BitmapAdd->Sum(vi)计算所得。由此确定增量数据索引信息incremental_outgoing_index为(0,1,3)。同时,确定相应的增量出边信息{(0,3),(3,0),(3,4)}。
在获取了上述增量数据的增量数据索引信息后,例如要获得对象v3的所有增量出边,首先利用公式
Figure BDA0002000688840000101
计算Xv3的值为2,即BitmapAdd(10010)中第5个bit之前被标记为‘1’的总和1+0+0+1+0=2。再通过增量数据索引信息可知源对象V3的所有新增有向路径在增量数据索引信息的起始位置是incremental_outgoing_index[2]=3,新增有向路径的总数是incremental_outgoing_index[Xv3+1]-incremental_outgoing_index[Xv3]=2,即V3所有的新增有向路径共2条,它是(3,0)和(3,4)。
另外,本申请实施例中的构造增量数据索引信息的方法,还适用于图计算过程中。如图5所示为本申请实施例50提供的同时对原始数据和增量数据进行索引的方法的示意图。通过统一的原始数据和增量数据的计算方法,对单独的大规模静态图进行计算或是在对增量数据数据进行计算的情况下,都能使用同一个图挖掘算法程序。其中,通过GetOutEdges和GetInEdges方法可以获得源对象Vi的出边集,可以依次获得每条有效的新增有向路径(不包含被删除的新增有向路径)。其中,分别通过某源对象的原始数据索引信息和增量数据索引信息,如图5,根据源对象Vi在增量数据索引信息中根据Xvj进行索引,在原始数据索引信息中根据Vi进行索引。根据快速检索到源对象在原始数据出边信息和增量数据出边信息中对应的边区间,然后再依次返回每条新增有向路径。另外,结合BitmapDel,当遇到被标记在原始数据中的操作状态为删除的新增有向路径时则跳过。
图计算阶段是在活跃顶点集上并行地执行顶点更新函数,直到图挖掘算法收敛的过程。现代计算的多核/线程架构能轻松实现并行计算,双压缩索引可以提高计算的仿存效率和数据的本地性。图挖掘算法的执行过程中,可以根据每轮迭代中活跃边的疏密程度自适应地采用Push或Pull模式,可有效减缓线程间的锁竞争和维护Cache一致性。
本申请实施例通过输入增量数据的新增有向路径,其中每个元素是一条新增有向路径edge(包括源对象的ID,目的对象的ID,操作标记)。并且已知原始数据对象的数量|Voriginal|和增量数据中最大的源对象的IDmax,那么构造增量数据时的对象的数量|V|=max(|Voriginal|,IDmax+1)。增量数据的双压缩索引信息incremental_index的构造过程是核心,同时会创建增量数据的新增有向路径的集合incremental_list,并重新放置增量数据incremental_edge_array中的每条新增有向路径。与CSR/CSC相比,基于双压缩索引DCSR/DCSC法构造的增量数据,根据任意源对象索引增量边的过程多了Bitmap->Sum(vi)步骤。图算法运行过程中可能需要反复检索某些活跃对象的增量边,本申请中使用基于引用计数的Cache机制将对象Vi和其索引值Xvi缓存在Cache表中,可有效避免频繁重复的Bitmap->Sum(Vi)计算。本申请实施例通过采用“以源对象为中心”的图计算模型,构造更新函数,完成图计算任务,具有极好的数据本地性,同时消除了频繁改变图存储结构的缺陷。而更新函数的关键是给定任意源对象Vi,以最低的代价遍历它所关联的全部出边。同时,能大量的节约增量数据索引信息所占用的内存空间,提升索引效率。
基于同一发明构思,本申请实施例60还提供一种数据处理的装置,其中,如图6所示,该装置包括:
获取模块61,用于接收增量数据,其中,所述增量数据中包含预先存储的原始数据新增的各个对象之间的关联信息;
构建模块62,用于根据各个对象之间的关联信息,建立图计算模型,其中,所述图计算模型包含所述各个对象按照所述关联信息形成的新增有向路径;
生成模块63,用于根据所述新增有向路径,生成所述增量数据索引信息,并存储所述增量数据索引信息;
索引模块64,用于加载所述增量数据索引信息和预先存储的所述原始数据的原始数据索引信息,分别对所述增量数据和所述原始数据中的对应的所述关联信息进行索引。
可选地,生成模块63包括:
第一获取单元,用于获取每条新增有向路径的源对象的ID、目的对象的ID和操作标记,其中,所述操作标记用于表示所述每条新增有向路径处于增加或删除的状态;
第一生成单元,用于基于所述操作标记,生成对应的新增位图信息BitmapAdd,并存储所述新增位图信息;
第二生成单元,用于根据所述每条新增有向路径的所述源对象的ID和所述目的对象的ID,生成增量出度信息,其中,所述增量出度信息用于表示所述每条新增有向路径的源对象的增量出度值;
第三生成单元,用于根据所述增量出度信息和所述BitmapAdd,生成增量数据索引信息。
可选地,第一生成单元包括:
统计子单元,用于按照所述源对象的接收顺序遍历所述每条新增有向路径,并统计所述每条新增有向路径的操作标记;
生成子单元,用于为所述操作标记为增加的状态的所述新增有向路径标记预设值,并将所述预设值按照所述新增有向路径对应的源对象的接收顺序写进所述BitmapAdd中,以生成所述BitmapAdd。
可选地,第二生成单元用于:
遍历所述每条新增有向路径,根据所述每条新增有向路径的所述源对象的ID和所述目的对象的ID,将所述操作标记对应的每条所述新增有向路径的源对象对应的所述增量出度值按照所述源对象的接收顺序存储为所述增量出度信息,以生成所述增量出度信息。
可选地,第三生成单元包括:
获取子单元,用于根据所述BitmapAdd中记录的数值,获取包含有所述新增有向路径的源对象的数量;
第一构建子单元,用于对所述源对象数量加1,以确定所述增量数据索引信息的维度,并建立初始增量数据索引信息;
写入子单元,用于遍历各个所述源对象,分别将被标记为所述预设值对应的所述新增有向路径中所述源对象对应的所述增量出度值写入所述初始增量数据索引信息对应的索引位置上;
第二构建子单元,用于基于各个所述索引位置上的所述增量出度值,建立所述增量数据索引信息。
可选地,写入子单元还用于:
按照所述源对象的接收顺序遍历各个所述源对象,并在所述BitmapAdd中对标记有所述操作标记的所述源对象对应的所述预设值依次求和,以确定所述索引位置。
可选地,第二构建子单元还用于:
在所述初始增量数据索引信息中,将所述当前索引位置上的数值更新为所述当前索引位置的所述增量出度值和前一个索引位置上的所述增量出度值的和,以建立所述增量数据索引信息。
可选地,索引模块64包括:
第二获取单元,用于根据所述增量数据索引信息和所述原始数据索引信息,分别获取对应的所述源对象的ID和所述目的对象的ID,以确定对应的所述新增有向路径和原始有向路径;
确定单元,用于根据所述新增有向路径和所述原始有向路径,分别确定所述增量数据和所述原始数据中的对应的所述关联信息。
如图7所示,本申请的又一实施例70还提供一种终端设备,包括处理器70,其中,处理器70用于执行上述一种数据处理的方法的步骤。
从图7中还可以看出,上述实施例提供的终端设备还包括非瞬时计算机可读存储介质71,该非瞬时计算机可读存储介质71上存储有计算机程序,该计算机程序被处理器70运行时执行上述一种数据处理的方法的步骤。
具体地,该存储介质能够为通用的存储介质,如移动磁盘、硬盘和FLASH等,该存储介质上的计算机程序被运行时,能够执行上述的一种数据处理的方法。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

Claims (18)

1.一种数据处理的方法,其特征在于,包括:
接收增量数据,其中,所述增量数据中包含预先存储的原始数据新增的各个对象之间的关联信息;
根据各个对象之间的关联信息,建立图计算模型,其中,所述图计算模型包含所述各个对象按照所述关联信息形成的新增有向路径;
根据所述新增有向路径,生成所述增量数据索引信息,并存储所述增量数据索引信息;
加载所述增量数据索引信息和预先存储的所述原始数据的原始数据索引信息,分别对所述增量数据和所述原始数据中的对应的所述关联信息进行索引。
2.根据权利要求1所述的方法,其特征在于,所述生成增量数据索引信息的步骤,包括:
获取每条新增有向路径的源对象的ID、目的对象的ID和操作标记,其中,所述操作标记用于表示所述每条新增有向路径处于增加或删除的状态;
基于所述操作标记,生成对应的新增位图信息BitmapAdd,并存储所述新增位图信息;
根据所述每条新增有向路径的所述源对象的ID和所述目的对象的ID,生成增量出度信息,其中,所述增量出度信息用于表示所述每条新增有向路径的源对象的增量出度值;
根据所述增量出度信息和所述BitmapAdd,生成增量数据索引信息。
3.根据权利要求2所述的方法,其特征在于,所述生成对应的新增位图信息BitmapAdd的步骤,包括:
按照所述源对象的接收顺序遍历所述每条新增有向路径,并统计所述每条新增有向路径的操作标记;
为所述操作标记为增加的状态的所述新增有向路径标记预设值,并将所述预设值按照所述新增有向路径对应的源对象的接收顺序写进所述BitmapAdd中,以生成所述BitmapAdd。
4.根据权利要求3所述的方法,其特征在于,所述生成增量出度信息的步骤,包括:
遍历所述每条新增有向路径,根据所述每条新增有向路径的所述源对象的ID和所述目的对象的ID,将所述操作标记对应的每条所述新增有向路径的源对象对应的所述增量出度值按照所述源对象的接收顺序存储为所述增量出度信息,以生成所述增量出度信息。
5.根据权利要求4所述的方法,其特征在于,所述根据增量出度信息和所述BitmapAdd,建立增量数据索引信息的步骤,包括:
根据所述BitmapAdd中记录的数值,获取包含有所述新增有向路径的源对象的数量;
对所述源对象数量加1,以确定所述增量数据索引信息的维度,并建立初始增量数据索引信息;
遍历各个所述源对象,分别将被标记为所述预设值对应的所述新增有向路径中所述源对象对应的所述增量出度值写入所述初始增量数据索引信息对应的索引位置上;
基于各个所述索引位置上的所述增量出度值,建立所述增量数据索引信息。
6.根据权利要求5所述的方法,其特征在于,所述索引位置通过以下步骤确定:
按照所述源对象的接收顺序遍历各个所述源对象,并在所述BitmapAdd中对标记有所述操作标记的所述源对象对应的所述预设值依次求和,以确定所述索引位置。
7.根据权利要求6所述的方法,其特征在于,所述基于各个所述索引位置上的所述增量出度值,建立所述增量数据索引信息的步骤,包括:
在所述初始增量数据索引信息中,将所述当前索引位置上的数值更新为所述当前索引位置的所述增量出度值和前一个索引位置上的所述增量出度值的和,以建立所述增量数据索引信息。
8.根据权利要求7所述的方法,其特征在于,所述分别对所述增量数据和所述原始数据中的对应的所述关联信息进行索引的步骤,包括:
根据所述增量数据索引信息和所述原始数据索引信息,分别获取对应的所述源对象的ID和所述目的对象的ID,以确定对应的所述新增有向路径和原始有向路径;
根据所述新增有向路径和所述原始有向路径,分别确定所述增量数据和所述原始数据中的对应的所述关联信息。
9.一种数据处理的装置,其特征在于,包括:
获取模块,用于接收增量数据,其中,所述增量数据中包含预先存储的原始数据新增的各个对象之间的关联信息;
构建模块,用于根据各个对象之间的关联信息,建立图计算模型,其中,所述图计算模型包含所述各个对象按照所述关联信息形成的新增有向路径;
生成模块,用于根据所述新增有向路径,生成所述增量数据索引信息,并存储所述增量数据索引信息;
索引模块,用于加载所述增量数据索引信息和预先存储的所述原始数据的原始数据索引信息,分别对所述增量数据和所述原始数据中的对应的所述关联信息进行索引。
10.根据权利要求9所述的装置,其特征在于,所述生成模块包括:
第一获取单元,用于获取每条新增有向路径的源对象的ID、目的对象的ID和操作标记,其中,所述操作标记用于表示所述每条新增有向路径处于增加或删除的状态;
第一生成单元,用于基于所述操作标记,生成对应的新增位图信息BitmapAdd,并存储所述新增位图信息;
第二生成单元,用于根据所述每条新增有向路径的所述源对象的ID和所述目的对象的ID,生成增量出度信息,其中,所述增量出度信息用于表示所述每条新增有向路径的源对象的增量出度值;
第三生成单元,用于根据所述增量出度信息和所述BitmapAdd,生成增量数据索引信息。
11.根据权利要求10所述的装置,其特征在于,所述第一生成单元包括:
统计子单元,用于按照所述源对象的接收顺序遍历所述每条新增有向路径,并统计所述每条新增有向路径的操作标记;
生成子单元,用于为所述操作标记为增加的状态的所述新增有向路径标记预设值,并将所述预设值按照所述新增有向路径对应的源对象的接收顺序写进所述BitmapAdd中,以生成所述BitmapAdd。
12.根据权利要求11所述的装置,其特征在于,所述第二生成单元用于:
遍历所述每条新增有向路径,根据所述每条新增有向路径的所述源对象的ID和所述目的对象的ID,将所述操作标记对应的每条所述新增有向路径的源对象对应的所述增量出度值按照所述源对象的接收顺序存储为所述增量出度信息,以生成所述增量出度信息。
13.根据权利要求12所述的装置,其特征在于,所述第三生成单元包括:
获取子单元,用于根据所述BitmapAdd中记录的数值,获取包含有所述新增有向路径的源对象的数量;
第一构建子单元,用于对所述源对象数量加1,以确定所述增量数据索引信息的维度,并建立初始增量数据索引信息;
写入子单元,用于遍历各个所述源对象,分别将被标记为所述预设值对应的所述新增有向路径中所述源对象对应的所述增量出度值写入所述初始增量数据索引信息对应的索引位置上;
第二构建子单元,用于基于各个所述索引位置上的所述增量出度值,建立所述增量数据索引信息。
14.根据权利要求13所述的装置,其特征在于,所述写入子单元还用于:
按照所述源对象的接收顺序遍历各个所述源对象,并在所述BitmapAdd中对标记有所述操作标记的所述源对象对应的所述预设值依次求和,以确定所述索引位置。
15.根据权利要求14所述的装置,其特征在于,所述第二构建子单元还用于:
在所述初始增量数据索引信息中,将所述当前索引位置上的数值更新为所述当前索引位置的所述增量出度值和前一个索引位置上的所述增量出度值的和,以建立所述增量数据索引信息。
16.根据权利要求11所述的装置,其特征在于,所述索引模块包括:
第二获取单元,用于根据所述增量数据索引信息和所述原始数据索引信息,分别获取对应的所述源对象的ID和所述目的对象的ID,以确定对应的所述新增有向路径和原始有向路径;
确定单元,用于根据所述新增有向路径和所述原始有向路径,分别确定所述增量数据和所述原始数据中的对应的所述关联信息。
17.一种非瞬时计算机可读存储介质,其特征在于,所述非瞬时计算机可读存储介质存储指令,所述指令在由处理器执行时使得所述处理器执行如权利要求1至8所述的数据处理的方法中的各个步骤。
18.一种终端设备,其特征在于,包括处理器,所述处理器用于执行如权利要求1至8中任一项所述的数据处理的方法中的各步骤。
CN201910211546.4A 2019-03-20 2019-03-20 一种数据处理的方法、装置和存储介质 Active CN111723246B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910211546.4A CN111723246B (zh) 2019-03-20 2019-03-20 一种数据处理的方法、装置和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910211546.4A CN111723246B (zh) 2019-03-20 2019-03-20 一种数据处理的方法、装置和存储介质

Publications (2)

Publication Number Publication Date
CN111723246A true CN111723246A (zh) 2020-09-29
CN111723246B CN111723246B (zh) 2024-04-05

Family

ID=72562409

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910211546.4A Active CN111723246B (zh) 2019-03-20 2019-03-20 一种数据处理的方法、装置和存储介质

Country Status (1)

Country Link
CN (1) CN111723246B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114493856A (zh) * 2022-04-11 2022-05-13 支付宝(杭州)信息技术有限公司 用于处理数据的方法、系统、装置和介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1570565A (zh) * 2004-05-08 2005-01-26 上海科臻投资咨询有限公司 电子地图数据存储与更新的方法
US20130246362A1 (en) * 2012-03-14 2013-09-19 Symantec Corporation Method and system for implementing fast incremental backups
CN103399902A (zh) * 2013-07-23 2013-11-20 东北大学 一种并行环境下的有向图可达性链表生成及查询方法
CN105608204A (zh) * 2015-12-25 2016-05-25 北京奇虎科技有限公司 增量式索引列表的生成方法及装置
CN106033476A (zh) * 2016-05-19 2016-10-19 西安交通大学 一种云计算环境中分布式计算模式下的增量式图计算方法
CN109033234A (zh) * 2018-07-04 2018-12-18 中国科学院软件研究所 一种基于状态更新传播的流式图计算方法及系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1570565A (zh) * 2004-05-08 2005-01-26 上海科臻投资咨询有限公司 电子地图数据存储与更新的方法
US20130246362A1 (en) * 2012-03-14 2013-09-19 Symantec Corporation Method and system for implementing fast incremental backups
CN103399902A (zh) * 2013-07-23 2013-11-20 东北大学 一种并行环境下的有向图可达性链表生成及查询方法
CN105608204A (zh) * 2015-12-25 2016-05-25 北京奇虎科技有限公司 增量式索引列表的生成方法及装置
CN106033476A (zh) * 2016-05-19 2016-10-19 西安交通大学 一种云计算环境中分布式计算模式下的增量式图计算方法
CN109033234A (zh) * 2018-07-04 2018-12-18 中国科学院软件研究所 一种基于状态更新传播的流式图计算方法及系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
张珩;张立波;武延军;: "基于Multi-GPU平台的大规模图数据处理", 计算机研究与发展, no. 02 *
王超珲 黄一夫: "基于增量信息索引的子图查询算法", 计算机应用与软件, vol. 33, no. 10, pages 37 - 39 *
许嘉;张千桢;赵翔;吕品;李陶深;: "基于结构分解的动态图增量匹配算法", 计算机科学与探索, no. 08, pages 1214 - 1219 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114493856A (zh) * 2022-04-11 2022-05-13 支付宝(杭州)信息技术有限公司 用于处理数据的方法、系统、装置和介质

Also Published As

Publication number Publication date
CN111723246B (zh) 2024-04-05

Similar Documents

Publication Publication Date Title
US10810257B2 (en) Fast processing of path-finding queries in large graph databases
CN112287182A (zh) 图数据存储、处理方法、装置及计算机存储介质
US11630864B2 (en) Vectorized queues for shortest-path graph searches
US8315967B2 (en) Sequential mode in a Rete rule engine
US10191998B1 (en) Methods of data reduction for parallel breadth-first search over graphs of connected data elements
US11222070B2 (en) Vectorized hash tables
Alon et al. Cycle lengths in sparse random graphs
Terekhov et al. Context-free path querying with single-path semantics by matrix multiplication
CN111723246A (zh) 一种数据处理的方法、装置和存储介质
Bai et al. Efficient temporal core maintenance of massive graphs
Djenouri et al. GPU-based swarm intelligence for Association Rule Mining in big databases
CN113407752A (zh) 图数据库内存管理方法、系统、电子设备及存储介质
CN113886652B (zh) 一种内存优先的多模图数据存储与计算方法及系统
Zhang et al. Continuous matching of evolving patterns over dynamic graph data
Gayathri et al. Mapreduce model for finding closely knit communities in large scale networks
CN116167447B (zh) 量子电路处理方法、装置及电子设备
CN116187458B (zh) 量子电路处理方法、装置及电子设备
Bhattacharya et al. Sampling in space restricted settings
US10402452B1 (en) Distributed hash table based logging service
Dubrovin et al. Graph representation methods for the discrete mathematics instructions set computer
CN115658329B (zh) 一种图数据结构的内存优化方法、系统和介质
CN109947775B (zh) 数据处理方法、装置、电子设备及计算机可读介质
CN114265701B (zh) 资源处理方法、装置、计算机设备和存储介质
Miura et al. An FPGA-based Accelerator for Regular Path Queries over Edge-labeled Graphs
CN112561695B (zh) 在区块链中并发执行交易的方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
CB02 Change of applicant information
CB02 Change of applicant information

Address after: Room 221, 2 / F, block C, 18 Kechuang 11th Street, Daxing District, Beijing, 100176

Applicant after: Jingdong Technology Holding Co.,Ltd.

Address before: Room 221, 2nd floor, Block C, 18 Kechuang 11th Street, Daxing Economic and Technological Development Zone, Beijing, 100176

Applicant before: JINGDONG DIGITAL TECHNOLOGY HOLDINGS Co.,Ltd.

SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant