数据存储及查询方法、装置及数据库系统转让专利

申请号 : CN202111169465.6

文献号 : CN113609347B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张松清江进付治钧朱炳鹏袁琳

申请人 : 支付宝(杭州)信息技术有限公司

摘要 :

本说明书的实施例提供数据存储方法及装置、数据查询方法及装置以及数据库系统。在进行数据存储时,确定待存储的有向图图数据中的各个起始图节点的邻居图节点数量,并且根据各个起始图节点的邻居图节点数量确定数据存储方式。针对各个起始图节点,在数据存储方式为非超大点数据存储时,将该起始图节点的节点数据、邻居信息、出边索引特征信息以及出边数据存储在同一数据分块中。在数据存储方式为超大点数据存储时,将该起始图节点的节点数据、邻居信息、出边索引特征范围信息以及出边数据分块索引存储在起始图节点数据分块中,以及将该起始图节点的出边数据以及出边数据存储地址信息存储在至少两个出边数据分块中。

权利要求 :

1.一种数据存储方法,包括:

确定待存储的有向图图数据中的各个起始图节点的邻居图节点数量;

根据各个起始图节点的邻居图节点数量确定数据存储方式;

针对各个起始图节点,在所述数据存储方式为非超大点数据存储时,将该起始图节点的节点数据、邻居信息、出边索引特征信息以及出边数据存储到第一数据存储介质的第一起始图节点数据分块,所述出边索引特征信息包括该起始图节点的所有出边的出边索引特征,每个出边索引特征与用于索引所述第一起始图节点数据分块中存储的对应出边数据的出边数据索引之间形成映射关系;以及针对各个起始图节点,在所述数据存储方式为超大点数据存储时,将该起始图节点的节点数据、邻居信息、出边索引特征范围信息以及出边数据分块索引存储到第二数据存储介质的第二起始图节点数据分块,所述出边索引特征范围信息包括与出边数据分块索引之间形成映射关系的多个出边索引特征范围,以及将该起始图节点的出边数据以及出边数据存储地址信息存储到第三数据存储介质的至少两个出边数据分块,所述出边数据存储地址信息包括二元数组<出边数据的出边索引特征,出边数据在出边数据分块中的相对存储地址>。

2.如权利要求1所述的数据存储方法,其中,所述数据存储方式相对于所述有向图图数据中的所有起始图节点确定出,或者所述数据存储方式相对于所述有向图图数据中的各个起始图节点分别确定出。

3.如权利要求1所述的数据存储方法,其中,所述节点数据包括起始图节点的节点标识以及节点属性,所述邻居信息包括起始图节点的节点标识以及邻居属性,所述邻居属性包括所有出边的基本信息,以及所述出边数据包括出边标识以及出边属性。

4.如权利要求3所述的数据存储方法,其中,每个出边的基本信息包括该出边的终止图节点的节点标识以及该出边的出边索引特征,以及所述出边标识包括终止图节点的节点标识以及出边索引特征。

5.如权利要求4所述的数据存储方法,其中,每个出边的基本信息还包括该出边的终止图节点的节点类型和/或该出边的出边类型,以及所述出边标识还包括出边类型。

6.如权利要求3所述的数据存储方法,其中,所述节点数据还包括节点元数据,所述节点元数据包括起始图节点的节点索引特征和/或节点类型。

7.如权利要求1所述的数据存储方法,其中,所述索引特征包括时间戳,所述出边索引特征信息包括经过降序排序后的所有出边的出边时间戳,以及所述出边索引特征范围信息包括经过降序排序后的多个出边时间戳范围。

8.如权利要求7所述的数据存储方法,其中,每个出边时间戳范围保存对应出边数据分块的最大出边时间戳和最小出边时间戳。

9.如权利要求1所述的数据存储方法,其中,所述第一起始图节点数据分块和所述第二起始图节点数据分块还存储逆向邻居信息,和/或所述出边数据分块还存储出边数量。

10.如权利要求1所述的数据存储方法,其中,针对邻居数量超过预定阈值的各个起始图节点,在所确定的数据存储方式为超大点数据存储时,将该起始图节点的节点数据、邻居信息、出边索引特征范围信息以及出边数据分块索引存储到第二数据存储介质的第二起始图节点数据分块包括:

将该起始图节点的节点数据、邻居索引特征范围、邻居数据分块索引、出边索引特征范围信息以及出边数据分块索引存储到第二数据存储介质的第二起始图节点数据分块,以及将邻居信息分别存储到第四数据存储介质的至少两个邻居数据分块,其中,所述邻居索引特征范围包括与邻居数据分块索引之间形成映射关系的多个邻居索引特征范围。

11.如权利要求1所述的数据存储方法,其中,所述第一数据存储介质、所述第二数据存储介质以及所述第三数据存储介质分别包括一个或多个数据存储介质,以及所述第一数据存储介质、所述第二数据存储介质以及所述第三数据存储介质中的部分数据存储介质采用同一数据存储介质实现。

12.如权利要求1所述的数据存储方法,其中,所述非超大点数据存储和所述超大点数据存储采用键值对存储方式实现。

13.一种数据查询方法,包括:

响应于接收到用户发起的数据查询请求,基于待查询图节点的节点标识确定该待查询图节点的数据分块索引,有向图图数据按照如权利要求1所述的方法存储在第一数据存储介质、第二数据存储介质和/或第三数据存储介质中;

将所述数据分块索引所索引的起始图节点数据分块从第一数据存储介质或第二数据存储介质读取到数据查询装置的内存中并进行解析;

根据解析后的起始图节点数据分块,在所述数据查询装置的本地解析数据中或者从第三数据存储介质的出边数据分块获取所述数据查询请求的查询数据;以及将所获取的查询数据提供给所述用户。

14.如权利要求13所述的数据查询方法,其中,所述节点数据包括起始图节点的节点标识以及节点属性,所述邻居信息包括起始图节点的节点标识信息以及邻居属性,所述邻居属性包括所有出边的基本信息,所述出边数据包括出边标识以及出边属性,根据解析后的起始图节点数据分块,在所述数据查询装置的本地解析数据中或者从第三数据存储介质的出边数据分块获取所述数据查询请求的查询数据包括:响应于所述数据查询请求指示查询图节点的节点属性,获取解析出的起始图节点数据分块的节点数据中的节点属性,作为所述查询数据,响应于所述数据查询请求指示查询图节点的邻居属性,获取解析出的邻居信息中的邻居属性,作为所述查询数据,或者

响应于所述数据查询请求指示查询图节点的出边属性,从解析出的起始图节点数据分块的邻居信息中确定目标出边的出边索引特征,基于所述出边索引特征和所述出边索引特征信息中确定所述目标出边的出边数据索引,以及从所述出边数据索引所索引的解析后的起始图节点数据分块的出边数据中获取所述目标出边的出边属性作为所述查询数据,或者基于所述出边索引特征和所述出边索引特征范围信息确定所述目标出边的出边数据分块索引,以及从所述出边数据分块索引所索引的第三数据存储介质的出边数据分块中获取所述目标出边的出边属性作为所述查询数据。

15.如权利要求14所述的数据查询方法,其中,所述数据查询请求包括过滤条件,响应于所述数据查询请求指示查询图节点的节点属性,获取解析出的起始图节点数据分块的节点数据中的节点属性包括:响应于所述数据查询请求指示查询图节点的节点属性,基于所述数据查询请求中的过滤条件对解析出的起始图节点数据分块的节点数据进行查询过滤,并且获取经过查询过滤后的节点数据的节点属性,

响应于所述数据查询请求指示查询图节点的邻居属性,获取解析出的邻居信息中的邻居属性包括:

响应于所述数据查询请求指示查询图节点的邻居属性,基于所述数据查询请求中的过滤条件对解析出的邻居信息进行查询过滤,并且获取经过查询过滤后的邻居信息中的邻居属性,或者

响应于所述数据查询请求指示查询图节点的出边属性,从解析出的起始图节点数据分块的邻居信息中确定目标出边的出边索引特征包括:响应于所述数据查询请求指示查询图节点的出边属性,从解析出的起始图节点数据分块的邻居信息中确定出符合所述过滤条件的目标出边的出边索引特征。

16.如权利要求14所述的数据查询方法,其中,从所述出边数据分块索引所索引的第三数据存储介质的出边数据分块中获取所述目标出边的出边属性作为所述查询数据包括:将所述出边数据分块索引所索引的出边数据分块从第三数据存储介质读取到所述数据查询装置的内存中;

解析所读取的出边数据分块中的出边数据存储地址信息;

基于所述目标出边的出边索引特征,从解析后的出边数据存储地址信息中确定所述目标出边的出边数据在所述出边数据分块中的相对存储地址;

根据所述相对存储地址从所读取的出边数据分块中获取所述目标出边的出边数据并进行解析;以及

获取解析后的所述目标出边的出边数据中的出边属性,作为所述查询数据。

17.如权利要求14所述的数据查询方法,其中,所述出边索引特征包括出边时间戳,基于所述出边索引特征和所述出边索引特征信息确定所述目标出边的出边数据索引包括:

基于所述出边时间戳,使用二分查找法在所述出边时间戳信息中查找来确定所述目标出边的出边数据索引或者在所述出边时间戳范围信息中确定出所述目标出边的出边数据分块索引,或者

基于所述出边索引特征和所述出边索引特征范围信息确定所述目标出边的出边数据分块索引包括:

基于所述出边时间戳,使用二分查找法在所述出边时间戳范围信息中查找来确定所述目标出边的出边数据分块索引。

18.如权利要求14所述的数据查询方法,其中,针对邻居数量超过预定阈值的各个起始图节点,在所述数据存储方式为超大点数据存储时,所述第二起始图节点数据分块存储起始图节点的节点数据、邻居索引特征范围、邻居数据分块索引、出边索引特征范围信息以及出边数据分块索引,以及起始图节点的邻居信息分别存储到第四数据存储介质的至少两个邻居数据分块,

在获取解析出的邻居信息中的邻居属性之前,所述数据查询方法还包括:响应于所述数据查询请求指示查询图节点的邻居属性,基于邻居索引特征和所述邻居索引特征范围信息确定邻居数据分块索引;以及将所述邻居数据分块索引所索引的邻居数据分块从第四数据存储介质读取到所述数据查询装置的内存并进行解析。

19.一种数据存储装置,包括:

节点数量确定单元,确定待存储的有向图图数据中的各个起始图节点的邻居图节点数量;

数据存储方式确定单元,根据各个起始图节点的邻居图节点数量确定数据存储方式;

以及

数据存储单元,针对各个起始图节点,在所述数据存储方式为非超大点数据存储时,将该起始图节点的节点数据、邻居信息、出边索引特征信息以及出边数据存储到第一数据存储介质的第一起始图节点数据分块,所述出边索引特征信息包括该起始图节点的所有出边的出边索引特征,每个出边索引特征与用于索引所述第一起始图节点数据分块中存储的对应出边数据的出边数据索引之间形成映射关系;以及在所述数据存储方式为超大点数据存储时,将该起始图节点的节点数据、邻居信息、出边索引特征范围信息以及出边数据分块索引存储到第二数据存储介质的第二起始图节点数据分块,所述出边索引特征范围信息包括与出边数据分块索引之间形成映射关系的多个出边索引特征范围,以及将该起始图节点的出边数据以及出边数据存储地址信息存储到第三数据存储介质的至少两个出边数据分块,所述出边数据存储地址信息包括二元数组<出边数据的出边索引特征,出边数据在出边数据分块中的相对存储地址>。

20.如权利要求19所述的数据存储装置,其中,所述数据存储方式确定单元相对于所述有向图图数据中的所有起始图节点确定所述数据存储方式,或者相对于所述有向图图数据中的各个起始图节点确定所述数据存储方式。

21.如权利要求19所述的数据存储装置,其中,针对邻居数量超过预定阈值的各个起始图节点,在所述数据存储方式为超大点数据存储时,所述数据存储单元将该起始图节点的节点数据、邻居索引特征范围、邻居数据分块索引、出边索引特征范围信息以及出边数据分块索引存储到第二数据存储介质的第二起始图节点数据分块,将邻居信息分别存储到第四数据存储介质的至少两个邻居数据分块,以及将该起始图节点的出边数据以及出边数据存储地址信息存储到第三数据存储介质的至少两个出边数据分块。

22.一种数据查询装置,包括:

数据分块索引确定单元,响应于接收到用户发起的数据查询请求,基于待查询图节点的节点标识确定该待查询图节点的数据分块索引,有向图图数据按照如权利要求1所述的方法存储到第一数据存储介质、第二数据存储介质和/或第三数据存储介质中;

数据读取单元,将所述数据分块索引所索引的起始图节点数据分块从第一数据存储介质或第二数据存储介质读取到数据查询装置的内存中;

数据解析单元,对所读取的起始图节点数据分块进行解析;

查询数据获取单元,根据解析后的起始图节点数据分块,在所述数据查询装置的本地解析数据中或者从第三数据存储介质的出边数据分块获取所述数据查询请求的查询数据;

以及

查询数据提供单元,将所获取的查询数据提供给所述用户。

23.如权利要求22所述的数据查询装置,其中,所述节点数据包括起始图节点的节点标识以及节点属性,所述邻居信息包括起始图节点的节点标识以及邻居属性,所述邻居属性包括所有出边的基本信息,所述出边数据包括出边标识以及出边属性,响应于所述数据查询请求指示查询图节点的节点属性,所述查询数据获取单元获取解析出的起始图节点数据分块的节点数据中的节点属性,作为所述查询数据,响应于所述数据查询请求指示查询图节点的邻居属性,所述查询数据获取单元获取解析出的邻居信息中的邻居属性,作为所述查询数据,或者响应于所述数据查询请求指示查询图节点的出边属性,所述查询数据获取单元从解析出的起始图节点数据分块的邻居信息中确定目标出边的出边索引特征,基于所述出边索引特征和所述出边索引特征信息确定所述目标出边的出边数据索引,以及从所述出边数据索引所索引的解析后的起始图节点数据分块的出边数据中获取所述目标出边的出边属性作为所述查询数据,或者基于所述出边索引特征和所述出边索引特征范围信息中确定所述目标出边的出边数据分块索引,以及从所述出边数据分块索引所索引的第三数据存储介质的出边数据分块中获取所述目标出边的出边属性作为所述查询数据。

24.如权利要求23所述的数据查询装置,所述数据查询请求包括过滤条件,响应于所述数据查询请求指示查询图节点的节点属性,所述查询数据获取单元进一步基于所述数据查询请求中的过滤条件对解析出的起始图节点数据分块的节点数据进行查询过滤,

响应于所述数据查询请求指示查询图节点的节点属性,所述查询数据获取单元基于所述数据查询请求中的过滤条件对解析出的邻居信息进行查询过滤,或者响应于所述数据查询请求指示查询图节点的出边属性,所述查询数据获取单元进一步从解析后的起始图节点数据分块的邻居信息中确定符合所述过滤条件的目标出边的出边索引特征。

25.如权利要求23所述的数据查询装置,其中,所述数据读取单元将所述出边数据分块索引所索引的出边数据分块从第三数据存储介质读取到所述数据查询装置的内存中,所述数据解析单元解析所述出边数据分块中的出边数据存储地址信息,以及所述数据查询单元被配置为:

基于所述目标出边的出边索引特征,从解析后的出边数据存储地址信息中确定所述目标出边在所述出边数据分块中的相对存储地址;

根据所述相对存储地址从所读取的出边数据分块中获取所述目标出边的出边数据并进行解析;以及

获取解析后的所述目标出边的出边数据中的出边属性,作为所述查询数据。

26.如权利要求23所述的数据查询装置,其中,针对邻居数量超过预定阈值的各个起始图节点,在所述数据存储方式为超大点数据存储时,所述第二起始图节点数据分块存储起始图节点的节点数据、邻居索引特征范围、邻居数据分块索引、出边索引特征范围信息以及出边数据分块索引,以及邻居信息分别存储到第四数据存储介质的至少两个邻居数据分块,

响应于所述数据查询请求指示查询图节点的邻居属性,所述查询数据获取单元基于邻居索引特征在所述邻居索引特征范围信息中确定出邻居数据分块索引,以及所述数据读取单元将所述邻居数据分块索引所索引的邻居数据分块从第四数据存储介质读取到所述数据查询装置的内存,

所述数据解析单元进一步解析所读取的邻居数据分块。

27.一种数据库系统,包括:

如权利要求19到21中任一所述的数据存储装置;

如权利要求22到26中任一所述的数据查询装置;以及至少一个数据存储介质,包括第一数据存储介质、第二数据存储介质和/或第三数据存储介质。

28.一种数据存储装置,包括:

至少一个处理器,

与所述至少一个处理器耦合的存储器,以及存储在所述存储器中的计算机程序,所述至少一个处理器执行所述计算机程序来实现如权利要求1到12中任一所述的数据存储方法。

29.一种数据查询装置,包括:

至少一个处理器,

与所述至少一个处理器耦合的存储器,以及存储在所述存储器中的计算机程序,所述至少一个处理器执行所述计算机程序来实现如权利要求13到18中任一所述的数据查询方法。

30.一种计算机可读存储介质,其存储有可执行指令,所述指令当被执行时使得处理器执行如权利要求1到12中任一所述的数据存储方法或者执行如权利要求13到18中任一所述的数据查询方法。

说明书 :

数据存储及查询方法、装置及数据库系统

技术领域

[0001] 本说明书实施例通常涉及数据处理领域,尤其涉及适用于图数据的数据存储方法及装置、数据查询方法及装置以及数据库系统。

背景技术

[0002] 图数据的应用场景越来越广泛,并且图数据的数量也越来越庞大。内存存储方式受限于内存的容量和价格,数据存储规模有限,不适用于存储海量图数据,从而需要将图数
据存储在比如磁盘的数据存储介质中。现有图数据存储方案不能以具有较高数据查询效率
的方式将图数据存储在数据存储介质中。

发明内容

[0003] 鉴于上述,本说明书实施例提供数据存储及查询方案。利用该数据存储及查询方案,可以以点边混合存储的方式将图数据存储到数据存储介质,并且实现高效的数据查询。
[0004] 根据本说明书实施例的一个方面,提供一种数据存储方法,包括:确定待存储的有向图图数据中的各个起始图节点的邻居图节点数量;根据各个起始图节点的邻居图节点数
量确定数据存储方式;针对各个起始图节点,在所述数据存储方式为非超大点数据存储时,
将该起始图节点的节点数据、邻居信息、出边索引特征信息以及出边数据存储到第一数据
存储介质的第一起始图节点数据分块,所述出边索引特征信息包括该起始图节点的所有出
边的出边索引特征,每个出边索引特征与用于索引所述第一起始图节点数据分块中存储的
对应出边数据的出边数据索引之间形成映射关系;以及针对各个起始图节点,在所述数据
存储方式为超大点数据存储时,将该起始图节点的节点数据、邻居信息、出边索引特征范围
信息以及出边数据分块索引存储到第二数据存储介质的第二起始图节点数据分块,所述出
边索引特征范围信息包括与出边数据分块索引之间形成映射关系的多个出边索引特征范
围,以及将该起始图节点的出边数据以及出边数据存储地址信息存储到第三数据存储介质
的至少两个出边数据分块,所述出边数据存储地址信息包括二元数组<出边数据的出边索
引特征,出边数据在出边数据分块中的相对存储地址>。
[0005] 可选地,在上述方面的一个示例中,所述数据存储方式相对于所述有向图图数据中的所有起始图节点确定出,或者所述数据存储方式相对于所述有向图图数据中的各个起
始图节点分别确定出。
[0006] 可选地,在上述方面的一个示例中,所述节点数据包括起始图节点的节点标识以及节点属性,所述邻居信息包括起始图节点的节点标识以及邻居属性,所述邻居属性包括
所有出边的基本信息,以及所述出边数据包括出边标识以及出边属性。
[0007] 可选地,在上述方面的一个示例中,每个出边的基本信息包括该出边的终止图节点的节点标识以及该出边的出边索引特征,以及所述出边标识包括终止图节点的节点标识
以及出边索引特征。
[0008] 可选地,在上述方面的一个示例中,每个出边的基本信息还包括该出边的终止图节点的节点类型和/或该出边的出边类型,以及所述出边标识还包括出边类型。
[0009] 可选地,在上述方面的一个示例中,所述节点数据还包括节点元数据,所述节点元数据包括起始图节点的节点索引特征和/或节点类型。
[0010] 可选地,在上述方面的一个示例中,所述索引特征包括时间戳,所述出边索引特征信息包括经过降序排序后的所有出边的出边时间戳,以及所述出边索引特征范围信息包括
经过降序排序后的多个出边时间戳范围。
[0011] 可选地,在上述方面的一个示例中,每个出边时间戳范围保存对应出边数据分块的最大出边时间戳和最小出边时间戳。
[0012] 可选地,在上述方面的一个示例中,所述第一起始图节点数据分块和所述第二起始图节点数据分块还存储逆向邻居信息,和/或所述出边数据分块还存储出边数量。
[0013] 可选地,在上述方面的一个示例中,针对邻居数量超过预定阈值的各个起始图节点,在所确定的数据存储方式为超大点数据存储时,将该起始图节点的节点数据、邻居信
息、出边索引特征范围信息以及出边数据分块索引存储到第二数据存储介质的第二起始图
节点数据分块可以包括:将该起始图节点的节点数据、邻居索引特征范围、邻居数据分块索
引、出边索引特征范围信息以及出边数据分块索引存储到第二数据存储介质的第二起始图
节点数据分块,以及将邻居信息分别存储到第四数据存储介质的至少两个邻居数据分块,
其中,所述邻居索引特征范围包括与邻居数据分块索引之间形成映射关系的多个邻居索引
特征范围。
[0014] 可选地,在上述方面的一个示例中,所述第一数据存储介质、所述第二数据存储介质以及所述第三数据存储介质分别包括一个或多个数据存储介质,以及所述第一数据存储
介质、所述第二数据存储介质以及所述第三数据存储介质中的部分数据存储介质采用同一
数据存储介质实现。
[0015] 可选地,在上述方面的一个示例中,所述非超大点数据存储和所述超大点数据存储采用键值对存储方式实现。
[0016] 根据本说明书的实施例的另一方面,提供一种数据查询方法,包括:响应于接收到用户发起的数据查询请求,基于待查询图节点的节点标识确定该待查询图节点的数据分块
索引,有向图图数据按照如上所述的方法存储在第一数据存储介质、第二数据存储介质和/
或第三数据存储介质中;将所述数据分块索引所索引的起始图节点数据分块从第一数据存
储介质或第二数据存储介质读取到数据查询装置的内存中并进行解析;根据解析后的起始
图节点数据分块,在所述数据查询装置的本地解析数据中或者从第三数据存储介质的出边
数据分块获取所述数据查询请求的查询数据;以及将所获取的查询数据提供给所述用户。
[0017] 可选地,在上述方面的一个示例中,所述节点数据包括起始图节点的节点标识以及节点属性,所述邻居信息包括起始图节点的节点标识以及邻居属性,所述邻居属性包括
所有出边的基本信息,所述出边数据包括出边标识以及出边属性。相应地,根据解析后的起
始图节点数据分块,在所述数据查询装置的本地解析数据中或者从第三数据存储介质的出
边数据分块获取所述数据查询请求的查询数据可以包括:响应于所述数据查询请求指示查
询图节点的节点属性,获取解析出的起始图节点数据分块的节点数据中的节点属性,作为
所述查询数据,响应于所述数据查询请求指示查询图节点的邻居属性,获取解析出的邻居
信息中的邻居属性,作为所述查询数据,或者响应于所述数据查询请求指示查询图节点的
出边属性,从解析出的起始图节点数据分块的邻居信息中确定目标出边的出边索引特征,
基于所述出边索引特征和所述出边索引特征信息确定所述目标出边的出边数据索引,以及
从所述出边数据索引所索引的解析后的起始图节点数据分块的出边数据中获取所述目标
出边的出边属性作为所述查询数据,或者基于所述出边索引特征和所述出边索引特征范围
信息确定所述目标出边的出边数据分块索引,从所述出边数据分块索引所索引的第三数据
存储介质的出边数据分块中获取所述目标出边的出边属性作为所述查询数据。
[0018] 可选地,在上述方面的一个示例中,所述数据查询请求包括过滤条件。相应地,响应于所述数据查询请求指示查询图节点的节点属性,获取解析出的起始图节点数据分块的
节点数据中的节点属性可以包括:响应于所述数据查询请求指示查询图节点的节点属性,
基于所述数据查询请求中的过滤条件对解析出的起始图节点数据分块的节点数据进行查
询过滤,并且获取经过查询过滤后的节点数据的节点属性。响应于所述数据查询请求指示
查询图节点的邻居属性,获取解析出的邻居信息中的邻居属性可以包括:响应于所述数据
查询请求指示查询图节点的邻居属性,基于所述数据查询请求中的过滤条件对解析出的邻
居信息进行查询过滤,并且获取经过查询过滤后的邻居信息中的邻居属性。响应于所述数
据查询请求指示查询图节点的出边属性,从解析出的起始图节点数据分块的邻居信息中确
定目标出边的出边索引特征可以包括:响应于所述数据查询请求指示查询图节点的出边属
性,从解析出的起始图节点数据分块的邻居信息中确定符合所述过滤条件的目标出边的出
边索引特征。
[0019] 可选地,在上述方面的一个示例中,从所述出边数据分块索引所索引的第三数据存储介质的出边数据分块中获取所述目标出边的出边属性作为所述查询数据可以包括:将
所述出边数据分块索引所索引的出边数据分块从第三数据存储介质读取到所述数据查询
装置的内存中;解析所读取的出边数据分块中的出边数据存储地址信息;基于所述目标出
边的出边索引特征,从解析后的出边数据存储地址信息中确定所述目标出边的出边数据在
所述出边数据分块中的相对存储地址;根据所述相对存储地址从所读取的出边数据分块中
获取所述目标出边的出边数据并进行解析;以及获取解析后的所述目标出边的出边数据中
的出边属性,作为所述查询数据。
[0020] 可选地,在上述方面的一个示例中,所述出边索引特征包括出边时间戳。相应地,基于所述出边索引特征和所述出边索引特征信息确定所述目标出边的出边数据索引可以
包括:基于所述出边时间戳,使用二分查找法在所述出边时间戳信息中查找来确定所述目
标出边的出边数据索引。或者,基于所述出边索引特征和所述出边索引特征范围信息确定
所述目标出边的出边数据分块索引可以包括:基于所述出边时间戳,使用二分查找法在所
述出边时间戳范围信息中查找来确定所述目标出边的出边数据分块索引。
[0021] 可选地,在上述方面的一个示例中,针对邻居数量超过预定阈值的各个起始图节点,在所述数据存储方式为超大点数据存储时,所述第二起始图节点数据分块存储起始图
节点的节点数据、邻居索引特征范围、邻居数据分块索引、出边索引特征范围信息以及出边
数据分块索引,以及起始图节点的邻居信息分别存储到第四数据存储介质的至少两个邻居
数据分块。相应地,在获取解析出的邻居信息中的邻居属性之前,所述数据查询方法还可以
包括:响应于所述数据查询请求指示查询图节点的邻居属性,基于邻居索引特征和所述邻
居索引特征范围信息确定邻居数据分块索引;以及将所述邻居数据分块索引所索引的邻居
数据分块从第四数据存储介质读取到所述数据查询装置的内存并进行解析。
[0022] 根据本说明书的实施例的另一方面,提供一种数据存储装置,包括:节点数量确定单元,确定待存储的有向图图数据中的各个起始图节点的邻居图节点数量;数据存储方式
确定单元,根据各个起始图节点的邻居图节点数量确定数据存储方式;以及数据存储单元,
针对各个起始图节点,在所述数据存储方式为非超大点数据存储时,将该起始图节点的节
点数据、邻居信息、出边索引特征信息以及出边数据存储到第一数据存储介质的第一起始
图节点数据分块,所述出边索引特征信息包括该起始图节点的所有出边的出边索引特征,
每个出边索引特征与用于索引所述第一起始图节点数据分块中存储的对应出边数据的出
边数据索引之间形成映射关系;以及在所述数据存储方式为超大点数据存储时,将该起始
图节点的节点数据、邻居信息、出边索引特征范围信息以及出边数据分块索引存储到第二
数据存储介质的第二起始图节点数据分块,所述出边索引特征范围信息包括与出边数据分
块索引之间形成映射关系的多个出边索引特征范围,以及将该起始图节点的出边数据以及
出边数据存储地址信息存储到第三数据存储介质的至少两个出边数据分块,所述出边数据
存储地址信息包括二元数组<出边数据的出边索引特征,出边数据在出边数据分块中的相
对存储地址>。
[0023] 可选地,在上述方面的一个示例中,所述数据存储方式确定单元相对于所述有向图图数据中的所有起始图节点确定所述数据存储方式,或者相对于所述有向图图数据中的
各个起始图节点确定所述数据存储方式。
[0024] 可选地,在上述方面的一个示例中,针对邻居数量超过预定阈值的各个起始图节点,在所述数据存储方式为超大点数据存储时,所述数据存储单元将该起始图节点的节点
数据、邻居索引特征范围、邻居数据分块索引、出边索引特征范围信息以及出边数据分块索
引存储到第二数据存储介质的第二起始图节点数据分块,将邻居信息分别存储到第四数据
存储介质的至少两个邻居数据分块,以及将该起始图节点的出边数据以及出边数据存储地
址信息存储到第三数据存储介质的至少两个出边数据分块。
[0025] 根据本说明书的实施例的另一方面,提供一种数据查询装置,包括:数据分块索引确定单元,响应于接收到用户发起的数据查询请求,基于待查询图节点的节点标识确定该
待查询图节点的数据分块索引,有向图图数据按照如上所述的方法存储到第一数据存储介
质、第二数据存储介质和/或第三数据存储介质中;数据读取单元,将所述数据分块索引所
索引的起始图节点数据分块从第一数据存储介质或第二数据存储介质读取到数据查询装
置的内存中;数据解析单元,对所读取的起始图节点数据分块进行解析;查询数据获取单
元,根据解析后的起始图节点数据分块,在所述数据查询装置的本地解析数据中或者从第
三数据存储介质的出边数据分块获取所述数据查询请求的查询数据;以及查询数据提供单
元,将所获取的查询数据提供给所述用户。
[0026] 可选地,在上述方面的一个示例中,所述节点数据包括起始图节点的节点标识以及节点属性,所述邻居信息包括起始图节点的节点标识以及邻居属性,所述邻居属性包括
所有出边的基本信息,所述出边数据包括出边标识以及出边属性。响应于所述数据查询请
求指示查询图节点的节点属性,所述查询数据获取单元获取解析出的起始图节点数据分块
的节点数据中的节点属性,作为所述查询数据。响应于所述数据查询请求指示查询图节点
的邻居属性,所述查询数据获取单元获取解析出的邻居信息中的邻居属性,作为所述查询
数据。响应于所述数据查询请求指示查询图节点的出边属性,所述查询数据获取单元从解
析后的起始图节点数据分块的邻居信息中确定目标出边的出边索引特征,基于所述出边索
引特征和所述出边索引特征信息确定所述目标出边的出边数据索引,以及从所述出边数据
索引所索引的解析后的起始图节点数据分块的出边数据中获取所述目标出边的出边属性
作为所述查询数据,或者基于所述出边索引特征和所述出边索引特征范围信息确定所述目
标出边的出边数据分块索引,以及从所述出边数据分块索引所索引的第三数据存储介质的
出边数据分块中获取所述目标出边的出边属性作为所述查询数据。
[0027] 可选地,在上述方面的一个示例中,所述数据查询请求包括过滤条件。响应于所述数据查询请求指示查询图节点的节点属性,所述查询数据获取单元进一步基于所述数据查
询请求中的过滤条件对解析出的起始图节点数据分块的节点数据进行查询过滤。响应于所
述数据查询请求指示查询图节点的节点属性,所述查询数据获取单元基于所述数据查询请
求中的过滤条件对解析出的邻居信息进行查询过滤。响应于所述数据查询请求指示查询图
节点的出边属性,所述查询数据获取单元进一步从解析后的起始图节点数据分块的邻居信
息中确定符合所述过滤条件的目标出边的出边索引特征。
[0028] 可选地,在上述方面的一个示例中,所述数据读取单元将所述出边数据分块索引所索引的出边数据分块从第三数据存储介质读取到所述数据查询装置的内存中。所述数据
解析单元解析所述出边数据分块中的出边数据存储地址信息;基于所述目标出边的出边索
引特征。所述数据查询单元被配置为:从解析后的出边数据存储地址信息中确定所述目标
出边在所述出边数据分块中的相对存储地址;根据所述相对存储地址从所读取的出边数据
分块中获取所述目标出边的出边数据并进行解析;以及获取解析后的所述目标出边的出边
数据中的出边属性,作为所述查询数据。
[0029] 可选地,在上述方面的一个示例中,针对邻居数量超过预定阈值的各个起始图节点,在所述数据存储方式为超大点数据存储时,所述第二起始图节点数据分块存储起始图
节点的节点数据、邻居索引特征范围、邻居数据分块索引、出边索引特征范围信息以及出边
数据分块索引,以及邻居信息分别存储到第四数据存储介质的至少两个邻居数据分块。响
应于所述数据查询请求指示查询图节点的邻居属性,所述查询数据获取单元基于邻居索引
特征和所述邻居索引特征范围信息确定邻居数据分块索引,以及所述数据读取单元将所述
邻居数据分块索引所索引的邻居数据分块从第四数据存储介质读取到所述数据查询装置
的内存。所述数据解析单元进一步解析所读取的邻居数据分块。
[0030] 根据本说明书的实施例的另一方面,提供一种数据库系统,包括:如上所述的数据存储装置;如上所述的数据查询装置;以及至少一个数据存储介质,包括第一数据存储介
质、第二数据存储介质和/或第三数据存储介质。
[0031] 根据本说明书的实施例的另一方面,提供一种数据存储装置,包括:至少一个处理器,与所述至少一个处理器耦合的存储器,以及存储在所述存储器中的计算机程序,所述至
少一个处理器执行所述计算机程序来实现如上所述的数据存储方法。
[0032] 根据本说明书的实施例的另一方面,提供一种数据查询装置,包括:至少一个处理器,与所述至少一个处理器耦合的存储器,以及存储在所述存储器中的计算机程序,所述至
少一个处理器执行所述计算机程序来实现如上所述的数据查询方法。
[0033] 根据本说明书的实施例的另一方面,提供一种计算机可读存储介质,其存储有可执行指令,所述指令当被执行时使得处理器执行如上所述的数据存储方法或者执行如上所
述的数据查询方法。
[0034] 根据本说明书的实施例的另一方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行来实现如上所述的数据存储方法或者执行如上所述的数据
查询方法。

附图说明

[0035] 通过参照下面的附图,可以实现对于本说明书内容的本质和优点的进一步理解。在附图中,类似组件或特征可以具有相同的附图标记。
[0036] 图1示出了根据本说明书的实施例的数据库系统的示例示意图。
[0037] 图2示出了根据本说明书的实施例的数据存储方法的示例流程图。
[0038] 图3示出了有向图图数据的示例示意图。
[0039] 图4示出了根据本说明书的实施例的非超大点数据存储过程的示例示意图。
[0040] 图5示出了根据本说明书的实施例的第一起始图节点数据分块的示例示意图。
[0041] 图6示出了根据本说明书的实施例的超大点数据存储过程的示例流程图。
[0042] 图7示出了根据本说明书的实施例的超大点数据存储过程的另一示例流程图。
[0043] 图8示出了根据本说明书的实施例的数据查询方法的示例流程图。
[0044] 图9示出了根据本说明书的实施例的查询数据获取过程的示例流程图。
[0045] 图10示出了根据本说明书的实施例的用于从第四数据存储介质的邻居数据分块中获取邻居属性的方法的示例流程图。
[0046] 图11示出了根据本说明书的实施例的用于从第三数据存储介质的出边数据分块中获取出边属性的方法的示例流程图。
[0047] 图12示出了根据本说明书的实施例的数据存储装置的示例方框图。
[0048] 图13示出了根据本说明书的实施例的数据查询装置的示例方框图。
[0049] 图14示出了根据本说明书的实施例的基于计算机系统实现的数据存储装置的示例示意图。
[0050] 图15示出了根据本说明书的实施例的基于计算机系统实现的数据查询装置的示例示意图。

具体实施方式

[0051] 现在将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求
书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本说明书内容的保护范围
的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或
者添加各种过程或组件。例如,所描述的方法可以按照与所描述的顺序不同的顺序来执行,
以及各个步骤可以被添加、省略或者组合。另外,相对一些示例所描述的特征在其它例子中
也可以进行组合。
[0052] 如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施
例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不
同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明
确地指明,否则一个术语的定义在整个说明书中是一致的。
[0053] 图数据包括图节点数据和边数据。图节点数据例如可以包括图节点的节点标识(节点ID)和节点属性,以及边数据可以包括边属性数据。图节点的节点标识用于唯一标识
节点。节点标识、节点属性数据和边属性数据可以与业务相关。比如,对于社交网络场景,节
点标识可以是人的身份证号码或者人员编号等。节点属性数据可以包括年龄、学历、住址、
职业等。边属性数据可以包括节点与节点之间的关系,即,人与人之间的关系,比如,同学/
同事关系等。在海量图数据的情况下,存在海量图节点数据和边数据,并且图节点数据和边
数据之间存在复杂的关联关系。数据存储介质中的图数据存储方式会大大影响图数据查询
效率。
[0054] 在一些图数据存储方案中,对边数据进行单独存储。按照这种图数据存储方案,某个起始点的多个出边数据可能会存储在不同的数据分块(边表)中。在进行边信息查询(例
如,查询出边属性)时,可能会需要进行多次IO查询(IO读取)。这里,IO查询是指通过数据查
询装置的操作系统的IO接口来与数据存储介质(例如,磁盘)进行数据交互,由此将IO查询
结果(IO查询数据)从数据存储介质读取到数据查询装置的内存中。IO查询可能会成为数据
查询装置的系统瓶颈,从而延长数据查询延时,由此导致图数据查询效率不佳。此外,在这
种图数据存储方案中,在图节点的邻居数量非常大的情况下,查询该图节点的指定时间戳
的出边信息时,需要遍历该图节点的所有出边,从而导致需要进行较多不必要的数据查询
及数据解析,由此导致数据查询效率较低。
[0055] 在一些图数据存储方案中,将图节点的节点数据、边数据以及邻居信息存储成具有不同数据结构的点表、边表和邻居表,并且分别部署在独立的点表服务端、边表服务端和
邻居表服务端中。由于不同服务端上的存储数据异构,从而使得在图拓扑结构更新频繁的
情况下,邻居表的更新会成为数据库系统的系统瓶颈。
[0056] 下面将参照附图描述根据本说明书的实施例的数据库系统、数据存储方法、数据存储装置、数据查询方法及数据查询装置。
[0057] 图1示出了根据本说明书的实施例的数据库系统100的示例示意图。数据库系统100也可以称为数据库应用的服务端,用于提供数据存储服务和数据查询服务。
[0058] 如图1所示,数据库系统100包括数据存储装置110、数据查询装置120和至少一个数据存储介质130。在图1的示例中,至少一个数据存储介质130包括第一数据存储介质130‑
1、第二数据存储介质130‑2和/或第三数据存储介质130‑3。要说明的是,第一数据存储介质
130‑1、第二数据存储介质130‑2和第三数据存储介质130‑3虽然例示为一个数据存储介质,
但是在其它实施例中,第一数据存储介质130‑1、第二数据存储介质130‑2和第三数据存储
介质130‑3中的每种数据存储介质可以具有多个数据存储介质。
[0059] 数据存储装置110被配置为将待存储数据存储到数据库系统100的数据存储介质130中。数据查询装置120被配置为响应于数据查询请求,从数据存储介质130中获取目标数
据(查询数据)。
[0060] 数据存储介质130也可以称为外部存储器。在数据查询装置120进行数据查询时,需要通过向数据存储介质130发起例如IO查询的数据读取操作来将数据存储介质130中的
数据读取到数据查询装置120的内存中,并且在内存中进行数据查询处理得到查询数据。数
据存储介质130例如可以是各种非易失性存储介质,比如,磁盘设备、存储卡等。磁盘是指利
用磁记录技术存储数据的存储器。磁盘的示例例如可以包括各种形式的(Soft Disk)软盘
和硬盘(Hard Disk)。
[0061] 图2示出了根据本说明书的实施例的数据存储方法200的示例流程图。
[0062] 如图2所示,在210,确定待存储的有向图图数据中的各个起始图节点的邻居图节点数量。术语“有向图”是指图节点之间的边关系具有方向性的图数据。在本说明书中,术语
“邻居图节点”是指沿着边的方向一跳可以到达的图节点。图3示出了有向图图数据的示例
示意图。在图3的示例中,示出了6个图节点A、B、C、D、E和F。图节点B、C和D是图节点A的邻居
节点,图节点F是图节点C的邻居节点。图节点E不是图节点A的邻居节点,但图节点E是图节
点A的逆向邻居节点。
[0063] 在如上确定出各个起始图节点的邻居图节点数量后,在220,根据各个起始图节点的邻居图节点数量确定数据存储方式。
[0064] 在一个示例中,可以相对于有向图图数据中的所有起始图节点确定该有向图图数据的数据存储方式。在该示例中,有向图图数据中的所有图节点的数据存储方式都相同。在
这种方式下,在确定出有向图图数据的所有起始图节点的邻居图节点的节点数量后,将邻
居图节点的节点数量的最大值与第一阈值进行比较。如果该最大值大于第一阈值,则将数
据存储方式确定为超大点数据存储。如果该最大值不大于第一阈值,则将数据存储方式确
定为非超大点数据存储。这里,第一阈值可以基于所使用的数据存储介质的存储容量设定,
或者可以根据应用场景或者经验设置。
[0065] 在另一示例中,可以相对于有向图图数据中的各个起始图节点分别确定各个起始图节点的数据存储方式。在该示例中,有向图图数据中的各个图节点的数据存储方式基于
各自的邻居节点数量确定,从而各个起始图节点的数据存储方式可能相同,也可能不同。在
这种方式下,在确定出一个起始图节点的邻居节点数量后,可以基于该起始图节点的邻居
节点数量确定该起始图节点的数据存储方式,并且随后执行后续数据存储操作,而无需等
待其它起始图节点的邻居节点数量确定和数据存储方式确定。
[0066] 在如上完成起始图节点的数据存储方式确定后,按照所确定的数据存储方式完成对应起始图节点的图数据存储。
[0067] 具体地,在230,针对各个起始图节点,在所确定的数据存储方式为非超大点数据存储时,将该起始图节点的节点数据、邻居信息、出边索引特征信息以及出边数据存储到第
一数据存储介质130‑1的第一起始图节点数据分块中。在本说明书中,术语“索引特征”可以
指代有助于在图数据存储和/或图数据查询时生成或确定索引信息的特定图数据特征。例
如,在数据存储时,可以在每个出边的出边索引特征与用于索引数据分块中所存储的对应
出边数据的出边数据索引之间形成映射关系。在一个示例中,可以将每个出边的出边索引
特征存储在出边索引特征信息中,并且按照每个出边的出边索引特征在出边索引特征信息
中的存储顺序(或存储位置)来将对应的出边数据依序存储在数据分块中,由此使得出边索
引特征信息中的每个存储位置可以用作对应出边数据的出边数据索引,并且在出边索引特
征与边索引特征信息中的存储位置(即,出边数据索引)之间形成映射关系。在数据查询时,
可以基于数据索引特征得到对应的数据索引,由此实现数据查询。数据的索引特征的示例
例如可以包括时间戳、数据的特定属性等。这里,数据的特定属性可以包括有助于确定数据
存储索引的特定属性。例如,在数据属性包括“收款人的年龄”的情况下,在进行数据存储
时,可以按照收款人的年龄顺序存储,由此可以基于属性“收款人的年龄”生成数据存储位
置的索引,从而属性“收款人的年龄”可以充当索引特征。所述出边索引特征信息包括该起
始图节点的所有出边的出边索引特征,并且每个出边索引特征与用于索引第一起始图节点
数据分块中存储的对应出边数据的出边数据索引之间形成映射关系。例如,每个出边数据
的出边索引特征可以与出边索引特征在出边索引特征信息中的存储顺序建议映射关系,出
边索引特征信息中的存储顺序可以用于索引第一起始图节点数据分块中的对应出边数据。
比如,假设存在4个出边数据A1、A2、A3和A4,以及出边数据A1、A2、A3和A4的出边索引特征的
特征值分别为F1、F2、F3和F4。在进行数据存储时,可以将特征值F1、F2、F3和F4保存在出边
索引特征信息中。如果出边索引特征信息中的特征值的存储顺序为F1、F3、F2和F4,则出边
数据A1、A2、A3和A4在数据分块中的存储顺序为A1、A3、A2和A4。
[0068] 在一个示例中,每个第一数据存储介质可以存储一个第一起始图节点数据分块。在另一示例中,第一数据存储介质也可以存储多于一个第一起始图节点数据分块。
[0069] 图4示出了根据本说明书的实施例的非超大点数据存储过程的示例示意图。如图4所示,有向图图数据中存在n个起始图节点,每个起始图节点的节点数据、邻居信息、出边索
引特征信息以及出边数据被独立地存储在一个第一起始图节点数据分块中。
[0070] 图5示出了根据本说明书的实施例的第一起始图节点数据分块的示例示意图。
[0071] 如图5所示,第一起始图节点数据分块可以存储起始图节点的节点数据、邻居信息、出边索引特征信息1 n以及出边数据1 n。例如,第一起始图节点数据分块可以形成为具
~ ~
有多个字段的第一数据结构,该第一数据结构中的各个字段分别用于存储起始图节点的节
点数据、邻居信息、出边索引特征信息1 n以及出边数据1 n。此外,可选地,第一起始图节点
~ ~
数据分块中还可以存储有逆向邻居信息。逆向邻居信息所具有的内容可以与邻居信息相
同。
[0072] 起始图节点的节点数据可以包括起始图节点的节点标识(节点ID)、节点属性以及节点元数据。起始图节点的节点属性可以包括一个或多个节点属性。每个节点属性可以包
括属性名和属性值。节点的属性名例如可以包括“年龄”、“身高”、“职业”等。属性值是指属
性名的对应取值。可选地,属性名可以用于建立索引,从而在数据查询时支持条件过滤。起
始图节点的节点元数据可以包括该起始图节点的索引特征,例如,节点时间戳。可选地,在
一个示例中,起始图节点的节点元数据还可以包括节点类型。节点类型例如可以是实现节
点分类的特征信息,例如,“人”、“公司”、“设备”等。在图5的示例中,节点元数据包括时间戳
和节点类型。此外,可选地,在其它实施例中,节点数据也可以不包括节点元数据。
[0073] 邻居信息可以包括起始图节点的节点标识以及邻居属性。邻居属性包括起始图节点的所有出边的基本信息。每个出边的基本信息可以包括该出边的终止图节点的节点标识
(终点ID)以及该出边的出边索引特征。可选地,在一个示例中,每个出边的基本信息可以按
照每个出边的出边索引特征在出边索引特征信息中的对应存储顺序依序存储在邻居信息
中。在图5的示例中,出边索引特征为出边时间戳。此外,可选地,起始图节点的邻居信息还
可以包括终止图节点的终点类型和出边类型。
[0074] 在一些实施例中,出边索引特征信息可以包括起始图节点的所有出边的经过排序后的出边索引特征。出边数据在起始图节点数据分块中的存储顺序与其出边索引特征在出
边索引特征信息中的存储顺序相同。在一个示例中,用于存储出边索引特征信息的存储位
置(例如,字段)可以包括多个出边索引特征存储位置,每个出边索引特征存储位置用于存
储一个出边索引特征,并且每个出边索引特征的存储位置可以索引后续的一个对应出边数
据,即,该存储位置充当出边数据的数据索引。如图5所示,出边索引特征信息包括n个用于
存储出边索引特征的存储位置,其中,第k个存储位置对应后续第k个出边数据, ,
并且k为正整数。例如,在数据索引特征是时间戳的情况下,可以将所有出边的出边时间戳
按照降序排序保存在出边时间戳信息中。然后,在存储出边数据时,可以将各个出边数据按
照其时间戳在出边时间戳信息中的保存顺序依序存储。
[0075] 出边数据可以包括出边标识以及出边属性。出边标识可以包括终止图节点的节点标识(终点ID)以及出边索引特征。此外,可选地,出边标识还可以包括出边类型。出边类型
例如可以是实现边分类的特征信息。例如,在该出边指示账户转账时,出边类型可以为“转
账”。在该出边指示支付时,出边类型可以为“支付”。出边属性可以包括一个或多个出边属
性。每个出边属性可以包括属性名和属性值。出边属性的属性名例如可以包括“金额”、“货
币”、“操作设备”等。属性值是指属性名的对应取值。
[0076] 回到图2,在240,针对各个起始图节点,在所确定的数据存储方式为超大点数据存储时,将该起始图节点的节点数据、邻居信息、出边索引特征范围信息以及出边数据分块索
引存储到第二数据存储介质的第二起始图节点数据分块中。例如,第二起始图节点数据分
块可以形成为具有多个字段的第二数据结构,该第二数据结构中的各个字段分别用于存储
起始图节点的节点数据、邻居信息、出边索引特征范围信息以及出边数据分块索引。出边索
引特征范围可以包括与出边数据分块索引之间形成映射关系的多个出边索引特征范围,从
而使得每个出边索引特征范围信息可以用于索引一个出边数据分块索引。例如,每个出边
索引特征范围信息的存储顺序可以对应一个出边数据分块索引。可选地,每个出边索引特
征范围中可以存储对应出边数据分块中的最大出边索引特征值和最小出边索引特征值。此
外,将该起始图节点的出边数据以及出边数据存储地址信息存储在第三数据存储介质的至
少两个出边数据分块中,所述出边数据存储地址信息包括二元数组<出边数据的出边索引
特征,出边数据在出边数据分块中的相对存储地址>。换言之,每个出边数据分块可以形成
为具有多个字段的第三数据结构,该第三数据结构中的各个字段分别用于存储至少两个出
边数据以及对应的出边数据存储地址信息,如图6所示。这里,出边数据在出边数据分块中
的相对存储地址可以是相对于该出边数据分块的首地址的偏移量。要说明的是,在出边数
据分块中,出边数据存储在出边数据存储地址信息之前。此外,可选地,出边数据分块还可
以存储出边数量。在这种情况下,出边数量存储在出边数据分块的头部,即,存储在所有出
边数据之前。
[0077] 图6示出了根据本说明书的实施例的超大点数据存储过程的示例流程图。图6中的起始图节点的节点数据、邻居信息以及出边数据的定义及其存储内容与图5中的节点数据、
邻居信息以及出边数据完全相同,在此不再描述。
[0078] 在出边索引特征为时间戳的情况下,出边索引特征范围信息包括经过排序后的多个出边时间戳范围,每个出边时间戳范围保存对应出边数据分块的最大出边时间戳和最小
出边时间戳。出边数据分块索引用于保存出边数据分块的索引信息。例如,出边数据分块索
引可以用于保存出边数据分块在第三数据存储介质中的起始存储地址(即,存储首地址)。
[0079] 可选地,针对邻居数量超过预定阈值的各个起始图节点,如果所确定的数据存储方式为超大点数据存储,则在针对该类起始图节点进行图数据存储时,将该起始图节点的
节点数据、邻居索引特征范围、邻居数据分块索引、出边索引特征范围信息以及出边数据分
块索引存储到第二数据存储介质的第二起始图节点数据分块中,将邻居信息分别存储到第
四数据存储介质的至少两个邻居数据分块中,以及将该起始图节点的出边数据以及出边数
据存储地址信息存储到第三数据存储介质的至少两个出边数据分块中。同样,邻居索引特
征范围包括与邻居数据分块索引形成映射关系的多个邻居索引特征范围,从而使得每个邻
居索引特征范围可以索引一个邻居数据分块索引。例如,可以使得每个邻居索引特征范围
信息的存储顺序对应一个邻居数据分块索引,由此使得存储在该存储顺序上的邻居索引特
征范围可以映射到该存储顺序所对应的邻居数据分块索引。在一个示例中,每个邻居索引
特征范围用于存储对应邻居数据分块的最大索引特征值和最小索引特征值。邻居数据分块
索引用于保存邻居数据分块的索引信息。例如,邻居数据分块索引可以用于保存邻居数据
分块在第四数据存储介质中的起始存储地址(即,存储首地址)。图7示出了根据本说明书的
实施例的超大点数据存储过程的另一示例流程图。
[0080] 要说明的是,在一个示例中,在将起始图节点的图数据存储到第一起始图节点数据分块或第二起始图节点数据分块后,可以基于该起始图节点的节点标识生成第一起始图
节点数据分块或第二起始图节点数据分块的数据分块索引。例如,通过计算该起始图节点
的节点标识的完美哈希值,对该完美哈希值按照起始图节点的节点数量取模,并将经过取
模处理后得到的数值作为第一起始图节点数据分块或第二起始图节点数据分块的数据分
块索引。
[0081] 要说明的是,在一些实施例中,第一数据存储介质、第二数据存储介质、第三数据存储介质和/或第四数据存储介质中的部分数据存储介质可以采用同一数据存储介质实
现。此外,在一些实施例中,非超大点数据存储和超大点数据存储可以采用键值对存储方式
实现。键值对存储的示例例如可以包括但不限于:基于完美哈希技术实现的键值对存储、基
于LevelDB的键值对存储、基于RocksDB的键值对存储以及基于Redis的键值对存储。
[0082] 如上参照附图描述了根据本说明书的实施例的数据存储过程。在按照上述数据存储方法将数据存储到数据库系统中后,可以响应于用户发起的数据查询请求来进行数据查
询。
[0083] 图8示出了根据本说明书的实施例的数据查询过程800的示例流程图。
[0084] 如图8所示,在810,响应于接收到用户发起的数据查询请求,基于待查询图节点的节点标识确定待查询图节点的数据分块索引。所述数据分块索引用于索引数据存储介质中
存储的对应起始图节点数据分块。例如,可以通过计算待查询图节点的节点标识的完美哈
希值并对该完美哈希值按照起始图节点的节点数量取模,确定待查询图节点的数据分块索
引。
[0085] 在820,将数据分块索引所索引的起始图节点数据分块从第一数据存储介质或第二数据存储介质读取到数据查询装置的内存中并进行解析。
[0086] 在830,根据解析后的起始图节点数据分块,在数据查询装置的本地解析数据中或者从第三数据存储介质的出边数据分块获取数据查询请求的查询数据。查询数据获取过程
将在下面参照附图详细描述。
[0087] 在840,将所获取的查询数据提供给用户。
[0088] 图9示出了根据本说明书的实施例的查询数据获取过程900的示例流程图。在图9的示例中,节点数据包括起始图节点的节点标识、节点属性以及节点元数据。节点元数据包
括该起始图节点的节点索引特征。邻居信息包括起始图节点的节点标识以及邻居属性。邻
居属性包括所有出边的基本信息,每个出边的基本信息包括该出边的结束图节点的节点标
识以及该出边的出边索引特征。出边数据包括出边标识以及出边属性。所述出边标识包括
结束图节点的节点标识以及出边索引特征。此外,可选地,节点元数据还可以包括节点类
型。
[0089] 如图9所示,在910,接收数据查询请求。在920,响应于数据查询请求指示查询图节点的节点属性,基于数据查询请求中的过滤条件对解析出的节点数据进行查询过滤。例如,
假设数据查询请求中的过滤条件为索引特征(例如,时间戳),则可以基于解析出的节点数
据的节点元数据中的节点索引特征进行查询过滤。此外,可选地,在数据查询请求中还包括
节点类型的情况下,则可以基于解析出的节点数据的节点元数据中的索引特征和节点类型
来进行查询过滤。在其它示例中,数据查询请求也可以包括其它过滤条件。在930,获取经过
查询过滤后的节点数据的节点属性作为查询数据。可选地,在另一示例中,数据查询请求也
可以不包括过滤条件,由此在获取节点属性时可以不进行查询过滤,从而获取解析出的节
点数据中的所有节点属性作为查询数据。
[0090] 在940,响应于数据查询请求指示查询图节点的邻居属性,基于数据查询请求中的过滤条件对解析出的邻居信息进行查询过滤。邻居信息的查询过滤可以采用与节点数据过
滤类似的查询过滤方式。在邻居属性包括终点标识、终点类型、出边类型和出边索引特征的
情况下,可以利用终点标识、终点类型、出边类型和出边索引特征进行查询过滤。在其它示
例中,数据查询请求也可以包括其它过滤条件。在950,获取经过查询过滤后的邻居属性作
为查询数据。可选地,在另一示例中,数据查询请求也可以不包括过滤条件,由此在获取邻
居属性时可以不进行查询过滤,从而获取解析出的邻居信息中的所有邻居属性作为查询数
据。
[0091] 在一个示例中,针对邻居数量超过预定阈值的各个起始图节点,在所确定的数据存储方式为超大点数据存储时,第二起始图节点数据分块存储起始图节点的节点数据、邻
居索引特征范围、邻居数据分块索引、出边索引特征范围信息以及出边数据分块索引,以及
起始图节点的邻居信息分别存储在第四数据存储介质的至少两个邻居数据分块中。
[0092] 图10示出了根据本说明书的实施例的用于从第四数据存储介质的邻居数据分块中获取邻居属性的方法1000的示例流程图。
[0093] 如图10所示,在1010,响应于数据查询请求指示查询图节点的邻居属性,基于邻居索引特征在邻居索引特征范围信息中确定出邻居数据分块索引。
[0094] 在1020,将邻居数据分块索引所索引的邻居数据分块从第四数据存储介质读取到数据查询装置的内存并进行解析。
[0095] 在1030,基于数据查询请求中的过滤条件,对解析出的邻居数据分块中的邻居信息进行查询过滤。
[0096] 在1040,获取经过查询过滤后的邻居属性作为查询数据。
[0097] 同样,在图10的示例中,数据查询请求也可以不包括过滤条件,从而可以将解析出的邻居数据分块中的所有邻居属性作为查询数据。
[0098] 回到图9,在960,响应于数据查询请求指示查询图节点的出边属性,从解析后的起始图节点数据分块中确定符合数据查询请求中的过滤条件的目标出边的出边索引特征。例
如,在可以基于解析后的起始图节点数据分块中的邻居信息进行查询过滤,找到符合过滤
条件的终点标识(ID)。上述查询过滤过程可以采用与上面参照邻居属性查询相同的查询过
滤过程。然后,提取出所找出的终点ID所对应的出边索引特征。可选地,在另一示例中,在数
据查询请求不包括过滤条件的情况下,也可以不执行查询过滤。
[0099] 在970,基于出边索引特征以及出边索引特征信息确定目标出边的出边数据索引,或者基于出边索引特征和出边索引特征范围信息确定目标出边的出边数据分块索引。在索
引特征为时间戳的情况下,可以基于出边时间戳,使用二分查找法来在出边时间戳信息中
确定目标出边的出边数据索引,或者在出边时间戳范围信息中确定目标出边的出边数据分
块索引。
[0100] 在980,响应于确定出目标出边的出边数据索引,从出边数据索引所索引的经过解析后的起始图节点数据分块的出边数据中获取目标出边的出边属性,作为查询数据。
[0101] 在990,响应于确定出目标出边的出边数据分块索引,从出边数据分块索引所索引的第三数据存储介质的出边数据分块中获取目标出边的出边属性,作为查询数据。
[0102] 图11示出了根据本说明书的实施例的用于从第三数据存储介质的出边数据分块中获取出边属性的方法1100的示例流程图。
[0103] 如图11所示,在1110,将出边数据分块索引所索引的出边数据分块从第三数据存储介质读取到数据查询装置的内存中。
[0104] 在1120,解析所读取的出边数据分块中的出边数据存储地址信息。在本说明书的实施例中,出边数据存储地址信息通常存储在出边数据分块的结束位置处,即,存储在出边
数据分块之后。在进行出边数据分块解析时,可以自结束位置处向开始位置进行数据解析,
从而可以首先解析得到出边数据分块中的出边存储地址信息。此外,出边数据分块还可以
存储出边数量。基于出边数量,可以很容易地从出边数据分块中提取出出边数据存储地址
信息。
[0105] 在1130,基于目标出边的出边索引特征,从解析后的出边数据存储地址信息中确定目标出边在出边数据分块中的相对存储地址。
[0106] 在1140,根据所确定的相对存储地址,从所读取的出边数据分块中获取所述目标出边的出边数据并进行解析。
[0107] 在1150,获取解析出的目标出边的出边数据中的出边属性,作为查询数据。
[0108] 按照上述查询数据获取方式,通过先解析得到出边数据分块中的出边数据存储地址信息(即,部分解析),并且基于目标出边的出边索引特征确定出目标出边在出边数据分
块中的相对存储地址,从而可以从出边数据分块中仅仅获取目标出边的出边数据来进一步
解析,而无需获取并解析其余出边数据,由此大大降低数据查询过程的数据处理量,进而提
升数据查询效率。
[0109] 要说明的是,在一个示例中,邻居信息的邻居属性包括出边索引特征和出边类型,以及出边标识包括出边索引特征、终点标识和出边类型。在这种情况下,在找到终点标识并
提取出对应的出边索引特征后,基于出边索引特征确定出边数据索引或者出边数据分块索
引。在查询到出边数据索引或者出边数据分块索引所索引的目标出边的出边数据后,需要
基于上述邻居属性处理(即,终点ID查找处理)中得到的边索引特征、终点标识和出边类型,
对该目标出边的各条数据进行匹配。如果存在匹配的出边数据,则获取该匹配的出边数据
的出边属性作为查询数据。在非超大点数据存储的情况下,由于起始图节点数据分块被一
次性解析出,从而可以直接获取本地解析出的匹配出边数据的出边属性作为查询数据。在
超大点数据存储的情况下,如果存在匹配的出边数据,则从出边数据分块中读取该匹配的
出边数据并进行解析,然后,获取解析后的出边数据的出边属性作为查询数据。对于不匹配
的出边数据,则不进行出边属性获取。按照上述处理方式,在获取到目标出边的出边数据
后,通过利用边索引特征、终点标识和出边类型对需要获取的出边数据再次进行匹配处理,
并且对匹配数据进行解析得到查询数据,可以使得所获取的出边数据更加准确,并且进一
步降低解析处理的数据量,从而进一步提升图数据查询效率。
[0110] 利用上述数据存储及查询方案,在图节点的邻居节点规模不大时,通过将该图节点的节点数据、邻居信息、出边索引特征信息和出边数据存储在同一数据分块中,使得可以
通过针对数据存储介质的一次IO读取操作实现数据查询。此外,在图节点的邻居节点规模
较大时,通过将该起始图节点的节点数据、邻居信息、出边索引特征范围信息以及出边数据
分块索引存储到第二数据存储介质的第二起始图节点数据分块,以及将该起始图节点的出
边数据以及出边数据存储地址信息分别存储到第三数据存储介质的至少两个出边数据分
块,可以通过针对数据存储介质的两次IO读取操作实现数据查询。按照上述处理方案,可以
大大降低图数据查询时的IO读取操作次数,由此降低图数据查询时间,进而提升图数据查
询效率。
[0111] 此外,利用上述数据存储及查询方案,按照点边混合存储的方式进行存储,使得整个图数据存储过程只需要支持一种数据存储结构,从而使得各个存储服务端的存储结构相
同,由此使得各个存储服务端的数据更新压力均衡。
[0112] 此外,利用上述数据存储及查询方案,在邻居数量较大的情况下,将邻居信息存储在多个邻居数据分块中,并且在进行数据查询时,按需读取若干目标邻居数据分块进行解
析处理,从而可以降低数据查询过程的数据处理量,由此提升数据查询效率。
[0113] 图12示出了根据本说明书的实施例的数据存储装置1200的示例方框图。如图12所示,数据存储装置1200可以包括节点数量确定单元1210、数据存储方式确定单元1220和数
据存储单元1230。
[0114] 节点数量确定单元1210被配置为确定待存储的有向图图数据中的各个起始图节点的邻居图节点数量。
[0115] 数据存储方式确定单元1220被配置为根据各个起始图节点的邻居图节点数量确定数据存储方式。在一个示例中,数据存储方式确定单元1220相对于有向图图数据中的所
有起始图节点确定数据存储方式。在另一示例中,数据存储方式确定单元1220相对于有向
图图数据中的各个起始图节点分别确定数据存储方式。
[0116] 针对各个起始图节点,在所确定的数据存储方式为非超大点数据存储时,数据存储单元1230被配置为将该起始图节点的节点数据、邻居信息、出边索引特征信息以及出边
数据存储到第一数据存储介质的第一起始图节点数据分块,所述出边索引特征信息包括所
有出边的出边索引特征,每个出边索引特征与用于索引所述第一起始图节点数据分块中存
储的出边数据的出边数据索引之间形成映射关系。
[0117] 针对各个起始图节点,在所确定的数据存储方式为超大点数据存储时,数据存储单元1230被配置为将该起始图节点的节点数据、邻居信息、出边索引特征范围信息以及出
边数据分块索引存储到第二数据存储介质的第二起始图节点数据分块,所述出边索引特征
范围信息包括与出边数据分块索引之间形成映射关系的多个出边索引特征范围,每个出边
索引特征范围信息用于索引一个出边数据分块索引,以及将该起始图节点的出边数据以及
出边数据存储地址信息存储到第三数据存储介质的至少两个出边数据分块,所述出边数据
存储地址信息包括二元数组<出边数据的出边索引特征,出边数据在出边数据分块中的相
对存储地址>。
[0118] 可选地,在一个示例中,数据存储单元1230可以进一步将逆向邻居信息存储在第一起始图节点数据分块和第二起始图节点数据分块中。
[0119] 可选地,在一个示例中,针对邻居数量超过预定阈值的各个起始图节点,在所确定的数据存储方式为超大点数据存储时,数据存储单元1230可以将该起始图节点的节点数
据、邻居索引特征范围、邻居数据分块索引、出边索引特征范围信息以及出边数据分块索引
存储到第二数据存储介质的第二起始图节点数据分块中,将邻居信息分别存储到第四数据
存储介质的至少两个邻居数据分块中,以及将该起始图节点的出边数据以及出边数据存储
地址信息存储到第三数据存储介质的至少两个出边数据分块中。
[0120] 图13示出了根据本说明书的实施例的数据查询装置1300的示例方框图。如图13所示,数据查询装置1300包括数据分块索引确定单元1310、数据读取单元1320、数据解析单元
1330、查询数据获取单元1340和查询数据提供单元1350。
[0121] 数据分块索引确定单元1310被配置为响应于接收到用户发起的数据查询请求,基于待查询图节点的节点标识确定待查询图节点的数据分块索引。
[0122] 数据读取单元1320被配置为将数据分块索引的对应起始图节点数据分块从第一数据存储介质或第二数据存储介质读取到数据查询装置的内存。
[0123] 数据解析单元1330被配置为对所读取的起始图节点数据分块进行解析。
[0124] 查询数据获取单元1340被配置为根据解析后的起始图节点数据分块,在数据查询装置本地解析数据中或者从第三数据存储介质的出边数据分块获取数据查询请求的查询
数据。
[0125] 查询数据提供单元1350被配置为将所获取的查询数据提供给用户。
[0126] 在一个示例中,节点数据包括起始图节点的节点标识以及节点属性。邻居信息包括起始图节点的节点标识以及邻居属性。出边数据包括出边标识以及出边属性。
[0127] 响应于数据查询请求指示查询图节点的节点属性,查询数据获取单元1340获取解析出的起始图节点数据分块的节点数据中的节点属性,作为查询数据。
[0128] 响应于数据查询请求指示查询图节点的邻居属性,查询数据获取单元1340获取解析出的起始图节点数据分块的邻居信息中的邻居属性,作为查询数据。
[0129] 响应于数据查询请求指示查询图节点的出边属性,查询数据获取单元1340从解析后的起始图节点数据分块中确定目标出边的出边索引特征,基于出边索引特征以及出边索
引特征信息确定目标出边的出边数据索引或者基于出边索引特征和出边索引特征范围信
息确定目标出边的出边数据分块索引。响应于确定出目标出边的出边数据索引,查询数据
获取单元1340从出边数据索引所索引的解析后的起始图节点数据分块的出边数据中获取
目标出边的出边属性作为查询数据。响应于确定出目标出边的出边数据分块索引,查询数
据获取单元1340从出边数据分块索引所索引的第三数据存储介质的出边数据分块中获取
目标出边的出边属性作为查询数据。
[0130] 在一个示例中,数据查询请求可以包括过滤条件。响应于数据查询请求指示查询图节点的节点属性,查询数据获取单元1340基于数据查询请求中的过滤条件对解析出的起
始图节点数据分块的节点数据进行查询过滤,并且获取经过查询过滤后的节点数据中的节
点属性作为查询数据。响应于数据查询请求指示查询图节点的节点属性,查询数据获取单
元1340基于数据查询请求中的过滤条件对解析出的邻居信息进行查询过滤,并且获取经过
查询过滤后的邻居信息中的邻居属性作为查询数据。响应于数据查询请求指示查询图节点
的出边属性,查询数据获取单元1340从解析后的起始图节点数据分块的邻居信息中确定出
符合过滤条件的目标出边的出边索引特征。然后,查询数据获取单元1340基于出边索引特
征和出边索引特征信息确定目标出边的出边数据索引,或者基于出边索引特征和出边索引
特征范围信息确定目标出边的出边数据分块索引。响应于确定出目标出边的出边数据索
引,查询数据获取单元1340从出边数据索引所索引的解析后的起始图节点数据分块的出边
数据中获取目标出边的出边属性作为查询数据。响应于确定出目标出边的出边数据分块索
引,查询数据获取单元1340从出边数据分块索引所索引的第三数据存储介质的出边数据分
块中获取目标出边的出边属性作为查询数据。
[0131] 在一个示例中,响应于确定出目标出边的出边书分块索引,数据读取单元1320将出边数据分块索引所指示的出边数据分块从第三数据存储介质读取到数据查询装置的内
存中。在将出边数据分块读取到数据查询装置的内存后,数据解析单元1330解析出边数据
分块中的出边数据存储地址信息。查询数据获取单元1340基于目标出边的出边索引特征,
从解析后的出边数据存储地址信息中确定目标出边在出边数据分块中的相对存储地址。然
后,查询数据获取单元1340根据相对存储地址从所读取的出边数据分块中获取目标出边的
出边数据并进行解析,并且获取解析后的目标出边的出边数据中的出边属性,作为查询数
据。
[0132] 在索引特征为时间戳的情况下,查询数据获取单元1340可以基于出边时间戳,使用二分查找法来在出边时间戳信息中确定目标出边的出边数据索引信息或者在出边时间
戳范围信息中确定目标出边的出边数据分块索引。
[0133] 在一个示例中,针对邻居数量超过预定阈值的各个起始图节点,在所确定的数据存储方式为超大点数据存储时,第二起始图节点数据分块存储起始图节点的节点数据、邻
居索引特征范围、邻居数据分块索引、出边索引特征范围信息以及出边数据分块索引,以及
邻居信息分别存储在第四数据存储介质的至少两个邻居数据分块中。
[0134] 在这种情况下,响应于数据查询请求指示查询图节点的邻居属性,查询数据获取单元1340基于邻居索引特征和邻居索引特征范围信息确定邻居数据分块索引。在确定出邻
居数据分块索引后,数据读取单元1320将邻居数据分块索引所指示的邻居数据分块从第四
数据存储介质读取到数据查询装置的内存。随后,数据解析单元1330解析所读取的邻居数
据分块。查询数据获取单元1340基于数据查询请求中的过滤条件对解析出的邻居数据分块
中的邻居信息进行查询过滤,并且获取经过查询过滤后的邻居信息中的邻居属性,作为查
询数据。
[0135] 如上参照图1到图13,对根据本说明书实施例的数据存储方法、数据存储装置、数据查询方法以及数据查询装置进行了描述。上面的数据存储装置和数据查询装置可以采用
硬件实现,也可以采用软件或者硬件和软件的组合来实现。
[0136] 图14示出了根据本说明书的实施例的基于计算机系统实现的数据存储装置1400的示意图。如图14所示,数据存储装置1400可以包括至少一个处理器1410、存储器(例如,非
易失性存储器)1420、内存1430和通信接口1440,并且至少一个处理器1410、存储器1420、内
存1430和通信接口1440经由总线1460连接在一起。至少一个处理器1410执行在存储器中存
储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。
[0137] 在一个实施例中,在存储器中存储计算机可执行指令,其当执行时使得至少一个处理器1410:确定待存储的有向图图数据中的各个起始图节点的邻居图节点数量;根据各
个起始图节点的邻居图节点数量确定数据存储方式;针对各个起始图节点,在所述数据存
储方式为非超大点数据存储时,将该起始图节点的节点数据、邻居信息、出边索引特征信息
以及出边数据存储到第一数据存储介质的第一起始图节点数据分块,所述出边索引特征信
息包括该起始图节点的所有出边的出边索引特征,每个出边索引特征与用于索引所述第一
起始图节点数据分块中存储的对应出边数据的出边数据索引之间形成映射关系;以及针对
各个起始图节点,在所述数据存储方式为超大点数据存储时,将该起始图节点的节点数据、
邻居信息、出边索引特征范围信息以及出边数据分块索引存储到第二数据存储介质的第二
起始图节点数据分块,所述出边索引特征范围信息包括与出边数据分块索引之间形成映射
关系的多个出边索引特征范围,以及将该起始图节点的出边数据以及出边数据存储地址信
息存储到第三数据存储介质的至少两个出边数据分块,所述出边数据存储地址信息包括二
元数组<出边数据的出边索引特征,出边数据在出边数据分块中的相对存储地址>。
[0138] 应该理解,在存储器中存储的计算机可执行指令当执行时使得至少一个处理器1410进行本说明书的各个实施例中以上结合图1‑图7以及图12描述的各种操作和功能。
[0139] 图15示出了根据本说明书的实施例的基于计算机系统实现的数据查询装置1500的示意图。如图15所示,数据查询装置1500可以包括至少一个处理器1510、存储器(例如,非
易失性存储器)1520、内存1530和通信接口1540,并且至少一个处理器1510、存储器1520、内
存1530和通信接口1540经由总线1560连接在一起。至少一个处理器1510执行在存储器中存
储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。
[0140] 在一个实施例中,在存储器中存储计算机可执行指令,其当执行时使得至少一个处理器1510:响应于接收到用户发起的数据查询请求,基于待查询图节点的节点标识确定
该待查询图节点的数据分块索引,有向图图数据按照如上所述的方法存储在数据存储介质
中;将数据分块索引所索引的起始图节点数据分块从第一数据存储介质或第二数据存储介
质读取到数据查询装置的内存中并进行解析;根据解析后的起始图节点数据分块,在数据
查询装置的本地解析数据中或者从第三数据存储介质的出边数据分块获取数据查询请求
的查询数据;以及将所获取的查询数据提供给用户。
[0141] 应该理解,在存储器中存储的计算机可执行指令当执行时使得至少一个处理器1510执行本说明书的各个实施例中以上结合图8‑图11以及图13描述的各种操作和功能。
[0142] 根据一个实施例,提供了一种比如机器可读介质(例如,非暂时性机器可读介质)的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机
器执行时,使得机器执行本说明书的各个实施例中以上结合图1‑图13描述的各种操作和功
能。具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现
上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器
读出并执行存储在该可读存储介质中的指令。
[0143] 在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的可读存储介质构成了本发明的一部
分。
[0144] 可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如CD‑ROM、CD‑R、CD‑RW、DVD‑ROM、DVD‑RAM、DVD‑RW、DVD‑RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网
络从服务器计算机上或云上下载程序代码。
[0145] 根据一个实施例,提供一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序当被处理器执行时,使得处理器执行本说明书的各个实施例中以上结合图1‑
图13描述的各种操作和功能。
[0146] 本领域技术人员应当理解,上面公开的各个实施例可以在不偏离发明实质的情况下做出各种变形和修改。因此,本发明的保护范围应当由所附的权利要求书来限定。
[0147] 需要说明的是,上述各流程和各系统结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需
要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有
些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以
由多个独立设备中的某些部件共同实现。
[0148] 以上各实施例中,硬件单元或模块可以通过机械方式或电气方式实现。例如,一个硬件单元、模块或处理器可以包括永久性专用的电路或逻辑(如专门的处理器,FPGA或
ASIC)来完成相应操作。硬件单元或处理器还可以包括可编程逻辑或电路(如通用处理器或
其它可编程处理器),可以由软件进行临时的设置以完成相应操作。具体的实现方式(机械
方式、或专用的永久性电路、或者临时设置的电路)可以基于成本和时间上的考虑来确定。
[0149] 上面结合附图阐述的具体实施方式描述了示例性实施例,但并不表示可以实现的或者落入权利要求书的保护范围的所有实施例。在整个本说明书中使用的术语“示例性”意
味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对
所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的
情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公
知的结构和装置以框图形式示出。
[0150] 本公开内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本公开内容。对于本领域普通技术人员来说,对本公开内容进行的各种修改是显而易见
的,并且,也可以在不脱离本公开内容的保护范围的情况下,将本文所定义的一般性原理应
用于其它变型。因此,本公开内容并不限于本文所描述的示例和设计,而是与符合本文公开
的原理和新颖性特征的最广范围相一致。