一种图数据库数据导入的方法、系统、装置和介质与流程

文档序号:30493761发布日期:2022-06-22 03:00阅读:137来源:国知局
一种图数据库数据导入的方法、系统、装置和介质与流程

1.本技术涉及计算机技术领域,特别是涉及一种图数据库数据导入的方法、系统、装置和介质。


背景技术:

2.随着大数据和人工智能的飞速发展,超大规模网络图在金融、风控、安防、推荐等领域有着广阔的应用空间和良好的发展前景,这激发了图网络数据的快速崛起。在图数据库的各个领域应用中,大规模数据的导入是必须要面对的第一项挑战,除了在数据库初始时进行大批量数据导入外,在提供服务的过程中也需要根据业务进行数据的导入。而如何在不影响图数据库服务的前提下进行快速方便的数据导入则是需要重点解决的第一项问题。
3.目前针对图数据库的数据导入,主要存在以下几个问题:
4.1.一般数据的读取和写入是共享机器资源的,大量数据的写入会占用机器的大量磁盘和内存资源,影响图数据库的查询业务。这对于线上业务来说是不可接受的。
5.2.对于分布式图数据库而言虽然数据导入过程可以分布式,但由于网络传输和磁盘io的限制,导入速度仍需进一步提升。
6.3.当分配尽可能多的资源用于数据导入时,导入请求对图数据库存储服务压力大,容易导致在写入过程中出现leader切换的问题。
7.目前针对分布式图数据库中大规模数据导入时资源抢占问题和服务易出现不可用的问题,尚未提出有效的解决方案。


技术实现要素:

8.本技术实施例提供了一种图数据库数据导入的方法、系统、装置和介质,以至少解决分布式图数据库中大规模数据导入时资源抢占问题和服务易出现不可用的问题。
9.第一方面,本技术实施例提供了一种图数据库数据导入的方法,所述方法包括:
10.筛选出符合预设条件的数据;
11.根据所述图数据库的存储层的编码方式对所述数据进行编码,得到key-value格式的编码数据;
12.自定义数据分区策略,根据所述数据分区策略计算所述编码数据的分片id,并基于所述分片id对所述编码数据进行分区;
13.根据编码数据的key值对同一数据分片的编码数据进行排序,并基于key值对同一数据分片的编码数据进行去重,得到目标数据;
14.根据所述分片id,将相同数据分片的目标数据写入同一预设文件;
15.将所述预设文件载入所述图数据库的数据存储目录中,进而将所述数据存储目录中的预设文件对应导入到所述图数据库的图空间中。
16.在其中一些实施例中,根据所述图数据库的存储层的编码方式对所述数据进行编
码,得到key-value格式的编码数据包括:
17.根据所述图数据库的图空间定义的点id长度、数据类型和图空间分片数进行编码,得到点编码数据的key值;
18.根据所述图空间定义的点类型的属性信息和属性值进行编码,得到所述点编码数据的value值;
19.根据所述图数据库的图空间定义的点id长度、数据类型和图空间分片数,以及预设边rank值进行正反两次编码,得到边编码数据的两个key值;
20.根据所述图空间定义的边类型的属性信息,以及预设属性值进行编码,得到所述边编码数据的value值。
21.在其中一些实施例中,将所述预设文件载入所述图数据库的数据存储目录中包括:
22.若所述图数据库的目标图空间是单副本,则将预设文件载入所述预设文件所属数据分片的leader节点的数据存储目录下;
23.若所述图数据库的目标图空间是多副本,则将预设文件载入所述预设文件所属数据分片的leader节点和follower节点的数据存储目录下。
24.在其中一些实施例中,筛选出符合预设条件的数据包括:
25.根据所述图数据库的元数据信息,判断点和/或边的数据格式是否符合目标schema的设定,若否,则过滤不符合所述设定的数据。
26.在其中一些实施例中,在筛选出符合预设条件的数据之前,所述方法包括:
27.接收要进行数据导入的数据源信息,根据所述数据源信息读取源数据,其中,所述数据源信息包括数据源类型、读取数据源所需的文件地址、server地址和端口号。
28.在其中一些实施例中,根据所述数据源信息读取源数据包括:
29.根据源数据的数据源类型匹配不同的数据读取器进行数据读取,其中,所述数据源类型包括文件数据类型、数据库数据类型和流式数据类型。
30.第二方面,本技术实施例提供了一种图数据库数据导入的系统,所述系统包括数据读取模块、数据处理模块和数据导入模块;
31.所述数据读取模块筛选出符合预设条件的数据;
32.所述数据处理模块根据所述图数据库的存储层的编码方式对所述数据进行编码,得到key-value格式的编码数据;
33.所述数据处理模块自定义数据分区策略,根据所述数据分区策略计算所述编码数据的分片id,并基于所述分片id对所述编码数据进行分区;
34.所述数据处理模块根据编码数据的key值对同一数据分片的编码数据进行排序,并基于key值对同一数据分片的编码数据进行去重,得到目标数据;
35.所述数据导入模块根据所述分片id,将相同数据分片的目标数据写入同一预设文件;
36.所述数据导入模块将所述预设文件载入所述图数据库的数据存储目录中,进而将所述数据存储目录中的预设文件对应导入到所述图数据库的图空间中。
37.在其中一些实施例中,
38.所述数据读取模块还用于在筛选出符合预设条件的数据之前,根据所述数据源信
息读取源数据,其中,所述数据源信息包括数据源类型、读取数据源所需的文件地址、server地址和端口号。
39.第三方面,本技术实施例提供了一种电子装置,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的图数据库数据导入的方法。
40.第四方面,本技术实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面所述的图数据库数据导入的方法。
41.相比于相关技术,本技术实施例提供的一种图数据库数据导入的方法、系统、装置和介质,筛选出符合预设条件的数据,根据图数据库的存储层的编码方式对数据进行编码,得到key-value格式的编码数据;自定义数据分区策略,根据数据分区策略计算编码数据的分片id,并基于分片id对编码数据进行分区;根据编码数据的key值对同一数据分片的编码数据进行排序,并基于key值对同一数据分片的编码数据进行去重,得到目标数据;根据分片id,将相同数据分片的目标数据写入同一预设文件;将预设文件载入图数据库的数据存储目录中,进而将数据存储目录中的预设文件对应导入到图数据库的图空间中,解决了分布式图数据库中大规模数据导入时资源抢占问题和服务易出现不可用的问题,实现了多源数据的图数据库数据导入,将多源数据直接构造成图数据库所支持的底层数据存储格式,将数据导入过程和图数据库的读写服务隔离,避免数据导入和数据服务产生资源抢占。
附图说明
42.此处所说明的附图用来提供对本技术的进一步理解,构成本技术的一部分,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
43.图1是根据本技术实施例的图数据库数据导入方法的步骤流程图;
44.图2是根据本技术实施例生成的目标sst文件数据分布示意图;
45.图3是根据本技术实施例的图数据库数据导入系统的结构框图;
46.图4是根据本技术实施例的电子设备的内部结构示意图。
47.附图说明:31、数据读取模块;32、数据处理模块;33、数据导入模块。
具体实施方式
48.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。基于本技术提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
49.显而易见地,下面描述中的附图仅仅是本技术的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本技术应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本技术公开的内容相关的本领域的普通技术人员而言,在本技术揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本技术公开的内容不充分。
50.在本技术中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以
包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本技术所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
51.除非另作定义,本技术所涉及的技术术语或者科学术语应当为本技术所属技术领域内具有一般技能的人士所理解的通常意义。本技术所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本技术所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本技术所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本技术所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本技术所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
52.在本技术提供的一种图数据库数据导入的方法、系统、装置和介质中,图数据库可以为采用key-value方式存储节点和边,并进行“边切割”存储的分布式图数据库(如nebula graph),图数据库具体知识补充如下:
53.图(graph):图是图论中一种数据结构,使用点、边和属性来表示和存储数据。
54.图数据库:专门设计用于存储图的一种数据库。不同于传统的关系型数据库(rdms),图中的关系(边)允许直接将存储区中的数据链接在一起,对于节点之间关联关系的检索操作更方便快速。
55.图数据库的schema(模式):schema是指图数据库中存储的元数据信息,包括图中的点类型和边类型,以及各类型所维护的属性名字、属性数据类型、默认值、属性设置等信息。
56.leader:分布式图数据库的各服务之间通过一致性协议来保证多副本数据之间的一致性,在一致性协议中各副本都会处于三种状态之一:leader、follower、candidate。在同一时刻,多个副本会存在一个leader角色和多个follower角色。当服务存在异常时,某个leader节点挂掉会触发重新选举新的leader,这时便发生了leader change。
57.数据分片(partition):分布式图数据库中数据是以数据分片的形式存在的,具体的分片数是在创建图空间时指定的。数据将根据特定的计算方式计算出所处的分片id。
58.dataframe:大数据框架spark中的分布式结构化数据集,该数据集在分布式框架中可被分为多个数据分区,其中数据分区策略可采用默认的hash分区方式,也可进行自定义。
59.本技术实施例提供了一种图数据库数据导入的方法,图1是根据本技术实施例的图数据库数据导入方法的步骤流程图,如图1所示,该方法包括以下步骤:
60.步骤s102,筛选出符合预设条件的数据;
61.具体地,根据图数据库的元数据信息,判断点和/或边(主要是点边id)的数据格式
是否符合目标schema的设定,若否,则过滤不符合设定的数据。此外,当点边id的数据为空时,则该条数据无法进入图数据库,此时会忽略该数据或者直接终止数据导入过程。
62.需要说明的是,在步骤s102之前,用户配置要进行数据导入的数据源信息,导入程序接收该数据源信息,根据数据源信息读取源数据,其中,数据源信息包括数据源类型、读取数据源所需的文件地址、server地址和端口号。
63.在源数据读取时,根据源数据的数据源类型匹配不同的数据读取器进行数据读取,其中,数据源类型包括文件数据类型、数据库数据类型和流式数据类型等等,不同类型的源数据被读取为统一的dataframe格式。
64.通过上述的数据传输功能,打通各存储系统与图数据库之间的数据交换方式,支持文件数据、数据库数据、批/流式数据导入图数据库,打通各大存储系统与图数据库的数据传输通道;图和流/批为业务应用提供了不同的视角和维度。
65.步骤s104,根据图数据库的存储层的编码方式对数据进行编码,得到key-value格式的编码数据;
66.具体地,首先对于图数据库中的点来说,需要读取图数据中的目标schema,根据图数据库的图空间定义的点id长度、数据类型和图空间分片数进行编码,得到点编码数据的key值;根据图空间定义的点类型的属性信息和属性值进行编码,得到点编码数据的value值,即(key,value)便是编码完成后的一条点编码数据。
67.对于图数据库中的边来说,由于图数据底层存储了正向边和反向边,所以一条数据源记录会被编码成一对符合预设文件格式(如sst文件格式)的(key,value)对,程序读取图数据库中的目标schema,根据图数据库的图空间定义的点id长度(即边的源点id和目标点id的长度)、数据类型和图空间分片数,以及预设边rank值(用户配置,默认为0)进行正反两次编码,得到边编码数据的两个key值;根据图空间定义的边类型的属性信息,以及预设属性值进行编码,得到边编码数据的value值,正反两个key分别和value形成两条(key,value)数据,即编码完成后的一对边编码数据。
68.通过上述的数据处理功能,支持将多源数据直接构造成图数据库所支持的底层数据存储格式,将数据导入过程和图数据库的读写服务隔离,避免数据导入和数据服务产生资源抢占。
69.步骤s106,自定义数据分区策略,根据数据分区策略计算编码数据的分片id,并基于分片id对编码数据进行分区;
70.具体地,自定义数据分区策略,基于图数据库中对数据计算数据分片的方式,对所有编码数据进行分片id的计算,根据计算得到的分片id进行编码数据的重分区,确保分片id相同的数据被分配到同一个dataframe的partition(数据分片)中。
71.步骤s108,根据编码数据的key值对同一数据分片的编码数据进行排序,并基于key值对同一数据分片的编码数据进行去重,得到目标数据;
72.具体地,对每个dataframe的partition中的数据进行严格的数据排序,排序时基于dataframe中的(key,value)编码数据的key值进行排序(如升序),且对编码数据基于key值进行去重,得到目标数据。最终确保每个partition内部的目标数据是无重复的且严格遵守排序逻辑的(如升序)。
73.步骤s110,根据分片id,将相同数据分片的目标数据写入同一预设文件;
74.具体地,对每个dataframe中的目标数据进行落盘,将数据写入预设文件(如sst文件)。在写sst文件时需计算该partition中的目标数据所属的图数据库的分片id,使所属相同分片id的目标数据被写入同一个sst文件。由于步骤s106已经对数据根据图数据库的分片id计算方式进行了重分区,图2是根据本技术实施例生成的目标sst文件数据分布示意图,如图2所示,在本步骤中可保证一个dataframe的partition目标数据会被写入同一个sst文件,且不同partition的目标数据会被写入不同的sst文件。同时由于图数据库编码中点边数据所在的分片id是位于存储结构的第二位的,可确保不同的sst文件之间的key是不存在范围重叠的。
75.步骤s112,将预设文件载入图数据库的数据存储目录中,进而将数据存储目录中的预设文件对应导入到图数据库的图空间中。
76.具体地,下载sst文件到图数据库的数据存储目录中。程序在图数据库中读取目标图空间的副本数、数据总分片数,根据每个sst文件所在的数据分片信息,将数据下载到分布式图数据库图空间的数据存储目录中。
77.若目标图空间是单副本,则将sst文件下载到该sst文件所属数据分片的leader节点的数据存储目录下;若目标图空间是多副本(k副本,k》1),则将sst文件下载到该sst文件所属数据分片的leader节点和(k-1)个follower节点的数据存储目录下。
78.将图数据库的数据存储目录下的sst文件ingest到目标图空间中。当目标图空间中没有数据存在时,即第一次全量数据导入时,由于所有的sst文件的key范围没有重叠,在ingest到图数据库后会落入lsmt的最底层,避免数据后续的compaction操作。同时由于图数据库图空间一个数据分片对应的只会生成一个sst文件,在ingest过程中需要进行比较的文件数较少,会大大提升ingest过程的性能。
79.通过上述的数据导入功能,数据导入性能可根据系统资源调整,其性能不受图数据库写入时磁盘io和网络io瓶颈的影响。图数据库存储层面因压力大而发生的leader change不对数据导入方法中生成目标文件产生影响。
80.通过本技术实施例中的步骤s102至步骤s112,解决了分布式图数据库中大规模数据导入时资源抢占问题和服务易出现不可用的问题,实现了多源数据的图数据库数据导入,将多源数据直接构造成图数据库所支持的底层数据存储格式,将数据导入过程和图数据库的读写服务隔离,避免数据导入和数据服务产生资源抢占。
81.需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
82.本技术实施例提供了一种图数据库数据导入的系统,图3是根据本技术实施例的图数据库数据导入系统的结构框图,如图3所示,该系统包括数据读取模块31、数据处理模块32和数据导入模块33;
83.数据读取模块31筛选出符合预设条件的数据;
84.数据处理模块32根据图数据库的存储层的编码方式对数据进行编码,得到key-value格式的编码数据;
85.数据处理模块32自定义数据分区策略,根据数据分区策略计算编码数据的分片id,并基于分片id对编码数据进行分区;
86.数据处理模块32根据编码数据的key值对同一数据分片的编码数据进行排序,并基于key值对同一数据分片的编码数据进行去重,得到目标数据;
87.数据导入模块33根据分片id,将相同数据分片的目标数据写入同一预设文件;
88.数据导入模块33将预设文件载入图数据库的数据存储目录中,进而将数据存储目录中的预设文件对应导入到图数据库的图空间中。
89.通过本技术实施例中的数据读取模块31、数据处理模块32和数据导入模块33,解决了分布式图数据库中大规模数据导入时资源抢占问题和服务易出现不可用的问题,实现了多源数据的图数据库数据导入,将多源数据直接构造成图数据库所支持的底层数据存储格式,将数据导入过程和图数据库的读写服务隔离,避免数据导入和数据服务产生资源抢占。
90.在其中一些实施例中,
91.数据读取模块31还用于在筛选出符合预设条件的数据之前,根据数据源信息读取源数据,其中,数据源信息包括数据源类型、读取数据源所需的文件地址、server地址和端口号。
92.需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
93.本实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
94.可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
95.需要说明的是,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
96.另外,结合上述实施例中的图数据库数据导入的方法,本技术实施例可提供一种存储介质来实现。该存储介质上存储有计算机程序;该计算机程序被处理器执行时实现上述实施例中的任意一种图数据库数据导入的方法。
97.在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种图数据库数据导入的方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
98.在一个实施例中,图4是根据本技术实施例的电子设备的内部结构示意图,如图4所示,提供了一种电子设备,该电子设备可以是服务器,其内部结构图可以如图4所示。该电子设备包括通过内部总线连接的处理器、网络接口、内存储器和非易失性存储器,其中,该
非易失性存储器存储有操作系统、计算机程序和数据库。处理器用于提供计算和控制能力,网络接口用于与外部的终端通过网络连接通信,内存储器用于为操作系统和计算机程序的运行提供环境,计算机程序被处理器执行时以实现一种图数据库数据导入的方法,数据库用于存储数据。
99.本领域技术人员可以理解,图4中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
100.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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)等。
101.本领域的技术人员应该明白,以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
102.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1