CN115858487A - 一种数据迁移方法及装置 - Google Patents
一种数据迁移方法及装置 Download PDFInfo
- Publication number
- CN115858487A CN115858487A CN202210693937.6A CN202210693937A CN115858487A CN 115858487 A CN115858487 A CN 115858487A CN 202210693937 A CN202210693937 A CN 202210693937A CN 115858487 A CN115858487 A CN 115858487A
- Authority
- CN
- China
- Prior art keywords
- field
- data
- migrated
- primary key
- bloom filter
- 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.)
- Pending
Links
- 238000013508 migration Methods 0.000 title claims abstract description 121
- 230000005012 migration Effects 0.000 title claims abstract description 121
- 238000000034 method Methods 0.000 title claims abstract description 82
- 238000013507 mapping Methods 0.000 claims abstract description 41
- 230000015654 memory Effects 0.000 claims description 31
- 238000012545 processing Methods 0.000 claims description 24
- 238000004590 computer program Methods 0.000 claims description 9
- 238000004364 calculation method Methods 0.000 claims description 8
- 238000010276 construction Methods 0.000 claims description 7
- 238000003860 storage Methods 0.000 claims description 7
- 238000010606 normalization Methods 0.000 claims description 4
- 241000475481 Nebula Species 0.000 abstract description 59
- 238000005516 engineering process Methods 0.000 abstract description 11
- 238000010586 diagram Methods 0.000 description 24
- 238000009826 distribution Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 14
- 230000008520 organization Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 7
- 238000001276 Kolmogorov–Smirnov test Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 238000000692 Student's t-test Methods 0.000 description 3
- 230000002457 bidirectional effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000012353 t test Methods 0.000 description 3
- 238000013506 data mapping Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000011022 operating instruction Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000000876 binomial test Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000010998 test method Methods 0.000 description 1
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/21—Design, administration or maintenance of databases
-
- 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/28—Databases characterised by their database models, e.g. relational or object models
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及金融科技(Fintech)领域,公开一种数据迁移方法及装置,根据图空间的要素,构建主键字典;基于主键字典的主键字段对拟迁移数据表的表字段进行匹配;若确定存在表字段与主键字典中相同含义的主键字段相同,则确定拟迁移数据表为待迁移数据表及确定表字段为配对字段,且基于表字段从主键字典中获取同一主键字段所在要素下的要素名称,构成要素名称集合;根据要素名称集合和图空间的各非主键属性,确定图空间的各非主键属性字段;根据待迁移数据表中的各非配对字段与图空间的各非主键属性字段,确定数据迁移映射关系并进行数据迁移。基于该方式可以实现简单、快速、准确地将数据从Hive数据库中迁入到Nebula图数据库中。
Description
技术领域
本申请实施例涉及金融科技(Fintech)领域,尤其涉及一种数据迁移方法及装置。
背景技术
随着计算机技术的发展,越来越多的技术(例如:大数据、云计算或区块链)应用在金融领域,传统金融业正在逐步向金融科技转变。金融科技的场景下,大量存在着用户与企业、组织间具有某种关联关系的数据,且该种数据普遍通过Hive数据库中的数据表进行存储。然而,随着技术的进一步发展,Nebula图数据库被研发出来。具体的,Nebula图数据库是一个开源的、分布式的、易扩展的原生图数据库;它以点、边为基础存储单元,能够承载千亿个点和数万亿条边的超大规模数据集,并提供毫秒级查询;它是专门用于存储庞大的图形网络并从中检索信息的图数据库,适用于各类具有内在联系的数据的存储,在欺诈检测、实时推荐、社交网络、知识图谱等领域都有应用场景。显然,通过将原先存储在Hive数据库中的数据迁入到Nebula图数据库中,将便于对数据进行高效查询。
目前在将存储于Hive数据库中的数据迁入到Nebula图数据库中时,需要预先在配置文件中写好Hive数据库中的迁出字段与Nebula图数据库中的迁入字段间的迁移对应关系,后续才可对同一字段下的数据自Hive数据库向Nebula数据库进行迁移。然而,该种数据迁移方法存在以下缺点:
首先,Hive数据库中的数据表的表数量规模很大,通常在几百甚至上千个,且每个数据表的字段数量也较多,平均在20-40个;其次,Hive数据库中的部分数据表可能会关联Nebula图数据库中的多个Tag/Edge Type(比如假设Hive数据库的一个数据表中同时存储有用户的个人信息、用户的银行卡信息、用户的设备信息以及用户的公司信息,那么个人信息、银行卡信息,设备信息以及公司信息则需要拆分存储在Nebula图数据库中的4个Tag中,同时这4个Tag还需要两两之间建立Edge Type关系),这就导致Hive数据库中的数据表与Nebula图数据库中的Tag/Edge Type之间交错关联,存在着复杂的映射关系;此外,Hive数据库中不同产品不同系统之间相同含义的数据表,在表结构上也会存在差异,比如用户信息表,一些系统可能会存放用户的设备型号,另一些系统可能就不会存放用户的设备型号,这就导致Nebula图数据库中任一Tag或Edge Type,可能对应Hive数据库中的多个数据表,对Tag或Edge Type的改动会带来复杂的关联影响;最后,Hive数据库中的数据表的表结构还会随时间变化而更新改变,那么对Nebula图数据库中的Tag或Edge Type的改动就是必然的操作。
基于以上种种原因,目前在将数据从Hive数据库向Nebula图数据库进行迁移时,面对在配置文件中写入迁出字段与迁入字段的迁移对应关系这一工作时,明显存在着耗时长、且易出错的风险。
因此,目前亟需一种数据迁移方法,通过该数据迁移方法,以实现简单、快速、准确地实现将数据从Hive数据库中迁入到Nebula图数据库中。
发明内容
本申请提供一种数据迁移方法及装置,用以简单、快速、准确地实现将数据从Hive数据库中迁入到Nebula图数据库中。
第一方面,本申请实施例提供一种数据迁移方法,该方法包括:针对图数据库中的图空间,根据所述图空间的多个要素,构建所述图空间的主键字典;所述图空间是根据源数据库中的多个待迁移数据表确定的;针对任一要素,所述主键字典以所述要素的主键字段作为键,以所述要素的要素名称作为值进行构建;针对配置的任一个拟迁移数据表,基于所述主键字典中的各主键字段对所述拟迁移数据表中的各表字段进行匹配;若确定所述拟迁移数据表中存在至少一个表字段与所述主键字典中相同含义的主键字段相同,则确定所述拟迁移数据表为一个待迁移数据表以及确定所述至少一个表字段为配对字段,且基于所述至少一个表字段从所述主键字典中获取同一主键字段所在要素下的要素名称,并构成要素名称集合;根据所述要素名称集合和所述图空间的各非主键属性,确定所述图空间的各非主键属性字段;针对任一个待迁移数据表,根据所述待迁移数据表中的各非配对字段与所述图空间的各非主键属性字段,确定数据迁移映射关系并进行数据迁移;其中,所述数据迁移映射关系用于对所述待迁移数据表中的数据按照同一字段向所述图空间的相同字段迁移;所述各非配对字段为所述待迁移数据表中除去配对字段外的每一个表字段。
上述方案中,通过构建图空间的主键字典,通过该主键字典将可以实现对Hive数据库中的各待迁移数据表的主键字段的自动匹配;而为了进一步将待迁移数据表中其他的非主键的字段的数据也能映射到Nebula图数据库中,则也可通过构建的主键字典而实现对各待迁移数据表中的非主键的字段的自动匹配,从而避免了背景技术中因为需要在配置文件中对错综复杂的字段的迁移对应关系进行配置、所需要付出的大量劳动工作且易出错的问题,基于该方式可以实现简单、快速、准确地将数据从Hive数据库中迁入到Nebula图数据库中。
在一种可能实现的方法中,所述根据所述图空间的多个要素,构建所述图空间的主键字典,包括:在所述图空间的要素为标签时,将所述标签的主键字段作为键,将所述标签的名称作为值;其中,不同标签的名称各不相同,且任一标签的主键字段与所述源数据库中具有相同含义的主键字段相一致;在所述图空间的要素为有向边时,将所述有向边的起点与终点分别对应的主键字段进行拼接后的第一拼接字段作为键,将所述有向边的名称作为值。
上述方案中,具体描述了主键字典的构成方式。因为主键字典是本申请的数据迁移方法在执行过程中的基础,因此通过精准地对图空间的主键字典进行构建,将可以提升数据迁移的速度以及迁移准确率。
在一种可能实现的方法中,所述基于所述至少一个表字段从所述主键字典中获取同一主键字段所在要素下的要素名称,并构成要素名称集合,包括:针对配置的任一个拟迁移数据表,基于所述主键字典中的各主键字段对所述拟迁移数据表中的各表字段进行匹配,若确定所述主键字典中仅存在一个主键字段与所述拟迁移数据表中的一个表字段相同,则基于所述主键字段从所述主键字典中获取所述主键字段所在要素下的要素名称,并添加所述要素名称至要素名称集合;若确定所述主键字典中存在至少两个主键字段与所述拟迁移数据表中相同数目的表字段一一相同,则对所述至少两个主键字段两两拼接,得到多个第二拼接字段;针对任一第二拼接字段,对所述第二拼接字段在所述主键字典的各主键字段中进行检索,若确定所述第二拼接字段存在于所述主键字典中,则基于所述第二拼接字段从所述主键字典中获取所述第二拼接字段所在要素下的要素名称,并添加所述要素名称至所述要素名称集合。
上述方案中,具体描述了要素名称集合的构成方式。因为要素名称集合中的各要素名称是后续对Hive数据库中的待迁移数据表的非主键字段(即非配对字段)与Nebula图数据库中的非主键属性字段进行匹配的基础,因此通过精准地对要素名称集合进行构建,将可以提升数据迁移的速度以及迁移准确率。
在一种可能实现的方法中,所述根据所述要素名称集合和所述图空间的各非主键属性,确定所述图空间的各非主键属性字段,包括:针对所述要素名称集合中的任一要素名称,将所述要素名称与所述要素名称在所述图空间中的各非主键属性一一进行拼接,并将拼接得到的各第三拼接字段作为所述图空间在所述要素名称下的各非主键属性字段;所述针对任一个待迁移数据表,根据所述待迁移数据表中的各非配对字段与所述图空间的各非主键属性字段,确定数据迁移映射关系,包括:针对任一个待迁移数据表,对所述待迁移数据表中的各非配对字段进行规范化处理,从而得到各第一字段;针对所述图空间中的各非主键属性字段,对所述各非主键属性字段进行所述规范化处理,从而得到各第二字段;根据各第一字段和各第二字段,确定数据迁移映射关系。
上述方案中,具体描述了该如何确定图空间的各非主键属性字段的技术,以及,在确定出图空间的非主键属性字段之后,又该如何基于所确定出来的图空间的非主键属性字段来实现对待迁移数据表中的各非主键字段(即非配对字段)进行相同字段的匹配,也即描述了该如何确定数据迁移映射关系的技术。该过程中以自动化的方式,可精准建立数据迁移映射关系,从而基于所建立的数据迁移映射关系,将可以提升数据迁移的速度以及迁移准确率。
在一种可能实现的方法中,所述根据各第一字段和各第二字段,确定数据迁移映射关系,包括:针对各第一字段中的任一第一字段,根据所述第一字段的字段值的数据类型,从各第二字段中确定出相同数据类型的各第三字段;针对任一第三字段,按照与所述数据类型匹配的字段相似度计算方法确定所述第三字段与所述第一字段的字段相似度;根据所述字段相似度,确定是否构建所述第一字段与所述第三字段的数据迁移映射关系。
上述方案中,进一步细化地描述了是否能建立起待迁移数据表中的各非主键字段(即非配对字段)与图空间的非主键属性字段间的数据迁移映射关系的技术。由于该技术中对字段的字段值的数据类型进行了考量,并仅对相同数据类型的字段去计算字段相似度,如此可以提升数据迁移映射关系的确定效率,有鉴于此,将可以提升数据迁移的速度。
在一种可能实现的方法中,所述进行数据迁移之后,所述方法还包括:分别设置针对于所述源数据库的第一布隆过滤器和针对于所述图数据库的第二布隆过滤器;按照数据的生成时间,将设定时长内的迁出所述源数据库中的数据写入所述第一布隆过滤器,以及将所述设定时长内的写入所述图数据库中的数据写入所述第二布隆过滤器;根据写入所述第一布隆过滤器的第一写入结果和写入所述第二布隆过滤器的第二写入结果,确定所述设定时长内的数据迁移是否正确。
众所周知,任一数据迁移方法在执行的过程中都要求对数据迁移的一致性进行校验,也即需要确保数据在迁移过程中不发生丢失。其中,目前在校验迁移过程中的数据是否一致时,是按照单条数据的粒度处理的,也即对于每条数据,需要将所有字段读取出来转为json后,计算hash值,从而通过比较每条数据在Hive数据库中的hash值与在Nebula图数据库中的hash值,就可以确定数据的一致性。而实际情况下,通常会存在Hive数据库中的数据表需要拆分成多个Nebula图数据库中Tag/Edge Type,或者多个兼容性的数据表迁移到Nebula图数据库中同一个Tag/Edge Type中,那么这时候Hive数据库中的数据表和目的Tag/Edge Type之间的字段结构就会出现差异。因此,在遇到这种情况时,则需要对Hive数据库中的数据表的表结构进行拆分,或者将多个兼容性的数据表的表结构进行统一,然后才能按照单条数据的粒度进行处理。显然该种数据一致性的校验方法在执行过程中存在效率低下的问题。对此,本申请的上述方案通过设计布隆过滤器,然后按照数据生成的时间,对指定时间内的数据进行校验,如此对字段结构存在差异的数据也能实现数据一致性的校验,从而将克服当前数据一致性校验时校验效率低下的问题。
在一种可能实现的方法中,所述第一布隆过滤器和所述第二布隆过滤器均为N层设计的布隆过滤器,任一在后一层的布隆过滤器用于对在前一层的布隆过滤器的写入结果进行写入;所述根据写入所述第一布隆过滤器的第一写入结果和写入所述第二布隆过滤器的第二写入结果,确定所述设定时长内的数据迁移是否正确,包括:将写入所述第一布隆过滤器中的最后一层布隆过滤器的第一写入结果与写入所述第二布隆过滤器中的最后一层布隆过滤器的第二写入结果进行比较;若确定所述第一写入结果与所述第二写入结果相同,则确定所述设定时长内的数据迁移正确。
上述方案中,通过设计多层的布隆过滤器,并使用在后一层的布隆过滤器来对在前一层的布隆过滤器的写入结果进行写入,那么通过比较最后一层的布隆过滤器的写入结果,将可以达到较快地对Hive数据库中的迁出数据与Nebula图数据库中的迁入数据进行校验的技术效果。
在一种可能实现的方法中,所述N=2;所述方法还包括:将所述第一布隆过滤器中的第一层布隆过滤器和所述第二布隆过滤器中的第一层布隆过滤器均设计为链表形态;所述链表形态表示在写入数据的数目满足设定阈值后,则在所述第一层布隆过滤器中新增一个布隆过滤器。
由于布隆过滤器随着数据越写越多,误算率也将越来越大。对此问题,本申请的上述方案通过对写入到一个布隆过滤器的数据的数目进行记录,那么当写入的数据的数目达到设计的阈值时,将自动使用一个新的布隆过滤器来对数据进行写入,如此可以降低布隆过滤器在使用过程中发生误算的概率。
第二方面,本申请实施例提供一种数据迁移装置,该装置包括:主键字典构建单元,用于针对图数据库中的图空间,根据所述图空间的多个要素,构建所述图空间的主键字典;所述图空间是根据源数据库中的多个待迁移数据表确定的;针对任一要素,所述主键字典以所述要素的主键字段作为键,以所述要素的要素名称作为值进行构建;要素名称集合构建单元,用于针对配置的任一个拟迁移数据表,基于所述主键字典中的各主键字段对所述拟迁移数据表中的各表字段进行匹配;若确定所述拟迁移数据表中存在至少一个表字段与所述主键字典中相同含义的主键字段相同,则确定所述拟迁移数据表为一个待迁移数据表以及确定所述至少一个表字段为配对字段,且基于所述至少一个表字段从所述主键字典中获取同一主键字段所在要素下的要素名称,并构成要素名称集合;非主键属性字段确定单元,用于根据所述要素名称集合和所述图空间的各非主键属性,确定所述图空间的各非主键属性字段;迁移处理单元,用于针对任一个待迁移数据表,根据所述待迁移数据表中的各非配对字段与所述图空间的各非主键属性字段,确定数据迁移映射关系并进行数据迁移;其中,所述数据迁移映射关系用于对所述待迁移数据表中的数据按照同一字段向所述图空间的相同字段迁移;所述各非配对字段为所述待迁移数据表中除去配对字段外的每一个表字段。
第三方面,本申请实施例提供了一种计算设备,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行如第一方面任一实现方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如第一方面任一实现方法。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种数据迁移方法的示意图;
图2为本申请实施例提供的一种配置文件的示意图;
图3为本申请实施例提供的一种数据迁移装置的示意图;
图4为本申请实施例提供的一种计算设备的示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
对于目前的将数据从Hive数据库向Nebula图数据库进行迁移的工作,具体在开展在配置文件中写入迁出字段与迁入字段的迁移对应关系这一工作时,所明显存在着的耗时长、且易出错的问题,本申请提出一种数据迁移方法。如图1所示,为本申请实施例提供的一种数据迁移方法的示意图,该方法由数据迁移装置执行。参见图1,该数据迁移方法包括以下步骤:
步骤101,针对图数据库中的图空间,根据所述图空间的多个要素,构建所述图空间的主键字典;所述图空间是根据源数据库中的多个待迁移数据表确定的;针对任一要素,所述主键字典以所述要素的主键字段作为键,以所述要素的要素名称作为值进行构建。
可选的,图数据库为Nebula图数据库,源数据库为Hive数据库。作为一种示例,本申请接下来以将Hive数据库中的数据向Nebula图数据库中进行迁移来阐述本申请的数据迁移方法。
其中,Hive数据库中存在有大量的数据表,那么在将Hive数据库中的数据向Nebula图数据库中进行迁移时,可以选择将Hive数据库中的部分数据表的数据向Nebula图数据库进行迁移,也可以选择将Hive数据库中的全部数据表的数据向Nebula图数据库进行迁移,那么该Hive数据库中的部分数据表或者该Hive数据库中的全部数据表均可以作为多个待迁移数据表。
如下表1所示,为本申请实施例提供的一种图空间的要素信息表。
表1
参见表1,该图空间的要素信息表包括4列,自左至右的各列依次表示图空间的要素、要素名称、要素的主键字段、要素的非主键属性。具体的,参见表1第1列中的4条记录,其中第1条记录和第2条记录分别为标签要素(Tag),第3条记录和第4条记录分别为边类型要素(Edge Type);继续参见表1第2列中的4条记录,其中第1条记录表示标签要素的要素名称为“user”,第2条记录表示标签要素的要素名称为“organization”,第3条记录表示边类型要素的要素名称为“loan”,第4条记录表示边类型要素的要素名称为“occupy”。其中,以上表1中的第1列与第2列的数据是通过对Hive数据库中的多个待迁移数据表进行分析后、而从Nebula图数据库中已有的要素中确定出来的;而对于表1中的第3列和第4列的数据,具体以“user”这一标签要素所在一行的第3列数据和第4列数据为例,其是在确定出“user”这一名称的标签要素后,继续基于Nebula图数据库在建立该名称的标签要素时,技术人员基于业务需要而预先为该标签要素所创建的主键字段以及非主键属性,而对该标签要素的主键字段和非主键属性进行获取所得出来的,换句话说,技术人员在Nebula图数据库中预先创建“user”这一名称的标签要素时,将同时定义出该标签要素的主键字段为“userId”,该标签要素的非主键属性包括有“username”、“nationality”、“age”和“phone”。其中“username”表示用户名,其值为string类型(即字符串类型),“nationality”表示国籍,其值为string类型,“age”表示年纪,其值为int类型(即数值类型),“phone”表示电话号码,其值为string类型。说明的是,本申请不再对表1中的第2行、第3行以及第4行的数据进行解释说明。
在一种可能实现的方法中,所述根据所述图空间的多个要素,构建所述图空间的主键字典,包括:在所述图空间的要素为标签时,将所述标签的主键字段作为键,将所述标签的名称作为值;其中,不同标签的名称各不相同,且任一标签的主键字段与所述源数据库中具有相同含义的主键字段相一致;在所述图空间的要素为有向边时,将所述有向边的起点与终点分别对应的主键字段进行拼接后的第一拼接字段作为键,将所述有向边的名称作为值。
继续以表1中提供的图空间的要素信息为例,在构建该图空间的主键字典时,可通过如下方式进行:
遍历该图空间中所有的Tag和Edge Type,其中:
对于每一个Tag,将其主键名称作为键(键记作key),Tag名称构成的列表作为值(值记作value),存入主键字典中;
对于每一个Edge Type,将其SRC_VID和DST_VID的名称进行字符串拼接,将拼接而成的字段(该拼接而成的字段即为第一拼接字段)作为key,Edge Type名称构成的列表作为value,存入Nebula主键字典中。
说明的是,当前的数据库开发规范有如下规定:Nebula图数据库中同一个图空间(即space)下的不同Tag的主键名称不能相同,且需要与Hive数据库的数据表中相同含义的主键字段的名称保持一致。
因此,由于不同Tag的主键名称不能相同,所以用Tag主键名称作为key的value列表中,仅会包含唯一的一个列表元素。但是,用Edge Type的SRC_VID和DST_VID的名称进行字符串拼接后作为key的value列表中,则可以包含若干个不同的值。
根据上述描述的主键字典的构建方法,通过将该方法应用于表1所示的图空间的要素信息,那么可建立如下的主键字典:
步骤102,针对配置的任一个拟迁移数据表,基于所述主键字典中的各主键字段对所述拟迁移数据表中的各表字段进行匹配;若确定所述拟迁移数据表中存在至少一个表字段与所述主键字典中相同含义的主键字段相同,则确定所述拟迁移数据表为一个待迁移数据表以及确定所述至少一个表字段为配对字段,且基于所述至少一个表字段从所述主键字典中获取同一主键字段所在要素下的要素名称,并构成要素名称集合。
可选的,本申请的数据迁移方法将应用Nebula Exchange工具,同时基于Spark集群来完成。
接着前述的例子,针对Hive数据库中的各待迁移数据表中的数据将如何正确迁入Nebula图数据库中,具体是迁入到Nebula图数据库中的图空间中的问题,在步骤101已经得到图空间的主键字典后,那么可在配置文件中进行配置,所需要配置的内容包括:Spark的相关配置,Nebula Graph的相关配置,Hive数据库中各待迁移数据表的表名称,以及Nebula图数据库的目的图空间(目的图空间指的是数据需要迁入的图空间)名称。此外,还需要在配置文件中对如何对齐Hive数据库中各待迁移数据表中的非主键的表字段与Nebula图数据库的目的图空间中的非主键属性字段进行配置。
对于步骤101中已经得到的图空间的主键字典,其仅仅是建立了Hive数据库中待迁移数据表的主键字段与Nebula图数据库中的目的图空间下的主键字段间的对应关系,而待迁移数据表的其余表字段与Nebula图数据库中Tag/Edge Type的字段名称并不是完全相同的,且相同含义的字段在不同的待迁移数据表之间,也可能是不同的名称,而且配置文件中也没有指定字段对齐关系,因此需要对Hive数据库中的待迁移数据表和Nebula图数据库中的相应的图空间的Tag/Edge Type之间的字段进行对齐后,将字段对齐时产生的数据迁移映射关系写入到配置文件中,从而后续通过执行配置文件,将可以实现准确将Hive数据库中的数据迁移到Nebula图数据库中。
具体的,Hive数据库中的数据表存在有两种类型,一种是实体信息表,一种是实体关系表。其中,实体信息表可为用户信息表,机构信息表等,实体关系表可为用户贷款流水表(描述用户和机构之间存在的借贷关系)等。下面分别描述对于这两中不同类型的数据表,如何构成要素名称集合;当在有了要素名称集合后,候选将可实现自动化地对齐Hive数据库中的非主键字段与Nebula图数据库中的非主键属性字段。
情况1,针对于实体信息表:
针对配置文件中所配置的任一个拟迁移数据表,依据构建的主键字典中的各主键字段对该拟迁移数据表内的所有表字段进行检索,若所有表字段均查不到对应的主键字段,则确定配置文件中对该拟迁移数据表进行过配置是不对的,也即该拟迁移数据表并非为本次需要进行数据迁移的数据表,即不是待迁移数据表,因此此时需要对配置文件中下一个拟迁移数据表、按照相同的方法进行操作。那么此时,若经过对配置文件中所有的拟迁移数据表进行如上的操作方法后,都确定为不是待迁移数据表,那么则输出系统异常、抛出配置文件发生错误的提示信息。除此情况以外,在依据构建的主键字典中的各主键字段对一拟迁移数据表内的所有表字段进行检索时,还将出现如下两种的检索结果:
检索结果1为仅检索到1个主键字段,那么可按照下述方法确定要素名称集合:
若确定所述主键字典中仅存在一个主键字段与所述拟迁移数据表中的一个表字段相同,则基于所述主键字段从所述主键字典中获取所述主键字段所在要素下的要素名称,并添加所述要素名称至要素名称集合。
检索结果2为检索到大于等于2个主键字段,那么可按照下述方法确定要素名称集合:
若确定所述主键字典中存在至少两个主键字段与所述拟迁移数据表中相同数目的表字段一一相同,则对所述至少两个主键字段两两拼接,得到多个第二拼接字段;针对任一第二拼接字段,对所述第二拼接字段在所述主键字典的各主键字段中进行检索,若确定所述第二拼接字段存在于所述主键字典中,则基于所述第二拼接字段从所述主键字典中获取所述第二拼接字段所在要素下的要素名称,并添加所述要素名称至所述要素名称集合。
举例说明如下:
接着前文的例子,设一拟迁移数据表T,该拟迁移数据表的表结构中包含如下9个表字段:
“userId”,“user_name”,“age”,“nationality”,“telephone”,“organizationId”,“org_address”,“loanDate”,“loanAmount”。
遍历所有表字段,并从前文确定的图空间的主键字典中检索,其中,该主键字典如下:
经检索,得到返回结果为“user”和“organization”。由于返回数量大于2(这时候将足以说明该拟迁移数据表实际是一张待迁移数据表,且该待迁移数据表中同时存放了多种实体信息,而且这些实体之间存在某种内在的关联关系,本例中的关联关系是用户与机构之间的借贷关系。那么在数据导入Nebula图数据库后,也需要将这些关联关系一并导入Nebula图数据库中,也即在user Tag与organization Tag之间构建Edge Type边关系),再将userId和organizationId进行字符串拼接后得到“userIdorganizationId”(该“userIdorganizationId”即为第二拼接字段),检索上述的主键字典得到返回结果为“loan”和“occupy”。最后,将两次返回的结果合并在一起,从而构成要素名称集合为[“user”,“organization”,“loan”,“occupy”]。
情况2,针对于实体关系表:
具体可以参考上文对实体信息表的处理,本申请不做具体描述。
步骤103,根据所述要素名称集合和所述图空间的各非主键属性,确定所述图空间的各非主键属性字段。
在一种可能实现的方法中,所述根据所述要素名称集合和所述图空间的各非主键属性,确定所述图空间的各非主键属性字段,包括:针对所述要素名称集合中的任一要素名称,将所述要素名称与所述要素名称在所述图空间中的各非主键属性一一进行拼接,并将拼接得到的各第三拼接字段作为所述图空间在所述要素名称下的各非主键属性字段。
以前述例子中的要素名称集合中[“user”,“organization”,“loan”,“occupy”]的“user”这一要素名称为例,通过将该要素名称与该要素名称在图空间中的各非主键属性一一进行拼接,具体的,根据表1所示的图空间的要素信息可知,“user”这一要素名称在该图空间中的各非主键属性有“username”、“nationality”、“age”和“phone”,因此,通过将“user”这一要素名称与该4个非主键属性一一进行拼接后,可得到4个拼接字段,依次为“user.username”、“user.nationality”、“user.age”和“user.phone”。同理,将“organization”这一要素名称与对应的非主键属性“address”进行拼接后,可得到“organization.address”这一拼接字段;将“loan”这一要素名称与对应的非主键属性“loan_date”、“loan_amount”一一进行拼接后,可得到2个拼接字段,依次为“loan.loan_date”、“loan.loan_amount”;将“occupy”这一要素名称与对应的非主键属性“start_year”、“end_year”一一进行拼接后,可得到2个拼接字段,依次为“occupy.start_year”、“occupy.end_year”。其中,该些拼接字段即为各第三拼接字段,该些拼接字段也即为图空间中的各非主键属性字段。
步骤104,针对任一个待迁移数据表,根据所述待迁移数据表中的各非配对字段与所述图空间的各非主键属性字段,确定数据迁移映射关系并进行数据迁移;其中,所述数据迁移映射关系用于对所述待迁移数据表中的数据按照同一字段向所述图空间的相同字段迁移;所述各非配对字段为所述待迁移数据表中除去配对字段外的每一个表字段。
可选的,所述针对任一个待迁移数据表,根据所述待迁移数据表中的各非配对字段与所述图空间的各非主键属性字段,确定数据迁移映射关系,包括:针对任一个待迁移数据表,对所述待迁移数据表中的各非配对字段进行规范化处理,从而得到各第一字段;针对所述图空间中的各非主键属性字段,对所述各非主键属性字段进行所述规范化处理,从而得到各第二字段;根据各第一字段和各第二字段,确定数据迁移映射关系。
例如,结合前文的例子,整理拟迁移数据表T中除主键外的所有表字段如下:
“user_name”,“age”,“nationality”,“telephone”,“org_address”,“loanDate”,“loanAmount”。
对于以上字段,将其全部转换为下划线小写的方式,得到如下结果:“user_name”,“age”,“nationality”,“telephone”,“org_address”,“loan_date”,“loan_amount”。该些字段即为各第一字段。
针对前文例子中的各非主键属性字段“user.username”,“user.nationality”,“user.age”,“user.phone”,“organization.address”,“loan.loan_date”,“loan.loan_amount”,“occupy.start_year”,“occupy.end_year”,也将其全部转换为下划线小写的方式,得到如下结果:
“user.username”,“user.nationality”,“user.age”,“user.phone”,“organization.address”,“loan.loan_date”,“loan.loan_amount”,“occupy.start_year”,“occupy.end_year”。该些字段即为各第二字段。
在本申请的某些实施中,所述根据各第一字段和各第二字段,确定数据迁移映射关系,包括:针对各第一字段中的任一第一字段,根据所述第一字段的字段值的数据类型,从各第二字段中确定出相同数据类型的各第三字段;针对任一第三字段,按照与所述数据类型匹配的字段相似度计算方法确定所述第三字段与所述第一字段的字段相似度;根据所述字段相似度,确定是否构建所述第一字段与所述第三字段的数据迁移映射关系。
在字段对齐的过程中,需要计算字段名称的相似度,以及字段值的分布的相似度。其中:
(1)字段名称的相似度计算:
用k表示两个字段名称之间的编辑距离,用m1和m2分别表示两个字段名称的字符串长度,本发明用L=k/(2*(m1+m2))来表示两个字段名称之间的相似度。
(2)字段值的分布的相似度计算:
这里首先要区分字段值的数据类型。例如,对于数值型,离散型,字符串类型,分别有对应的字段值的分布的相似度计算方法,具体如下:
i.数值型:这类类型的字段包括“年龄”等。对于数值型数据的分布相似度检验方法,通常有t-检验和KS检验两种算法,考虑到数据迁移的实际应用场景中,会存在部分表数据量偏少的情况,此外由于产品定位的原因,使得用户往往会在某个特征层面发生聚集,而不是随机的符合正态分布的。而KS检验相比t-检验的不同是KS检验不需要知道数据的分布情况,可以算是一种非参数检验方法,这样在数据分布不符合特定的分布时,KS检验的灵敏度要高于t-检验。同时,在数据量比较小的时候,KS检验作为非参数检验在分析两组数据之间是否相似时效果也更好。基于以上的分析,本发明选择KS检验来描述数值型字段的值的分布相似度。计算过程:取两个字段的值的集合,计算KS检验,得到相似度结果。
ii.离散型:这类数据不能简单的通过排重,判断集合是否相等或者相似的方式来处理,比如“国籍”字段,不同hive表之间除了“中国”外,其他的值的重合度可能非常的低。针对这种情况,本发明的做法是:首先对该字段下所有的值的集合进行频数统计,然后按照频数大小进行倒序排序,取75%的总数据量的值的集合作为正向集合,取其余值的集合作为负向集合(比如总数据量10,所有的值的频数统计为:7个A,2个B,1个C,然后将数据按照值的频数倒序排序后为A,A,A,A,A,A,A,B,B,C,前75%的数据的值的集合为[A,B],作为正向集合,然后集合[C]作为负向集合),接下来假定值属于正向集合为“事件发生”,值属于负向集合为“事件不发生”,通过二项检验算法求得事件发生的概率P。最后,如果两个字段的值的集合的二项检验的概率P的差的绝对值小于0.05(也可以根据实际情况设定其他的常数值),则认为这两个字段的分布相似。
iii.字符串类型:这类类型的字段包括“姓名”,“手机号”,“身份证号”,“居住地址”等,首先考虑到这类字段的值虽然在内容上可能千差万别,但在前缀或者后缀上具有高度的相似性,本发明借助Trie树算法来实现对这类型的值的分布的相似度计算。步骤如下:将该字段下所有的值取出构建一棵Trie树,然后求得该字段下所有的值的最大长度L,接下来针对Trie树的前0.3L层,取出每一层的叶子节点,判断两棵树之间是否相似(每一层的叶子节点集合的重合度大于0.9)。最后将该字段下所有的值取出,按照反方向构建一棵Trie树,用上述相同的算法进行相似度计算。只要正向或者反向有一种情况下,两个字段的值的集合构建的Trie树是相似的,就认为这两个字段的值的分布是相似的。
最后,字段对齐的结果可以分为如下几个情况:
i.字段名称大于等于8个字符,且名称完全相同,则认为这两个字段可以对齐合并。比如举例中:源字段集合中的“nationality”,“loan_date”,“loan_amount”和目的字段集合中的“nationality”,“loan_date”,“loan_amount”是对齐的;
ii.字段名称小于8个字符的情况下字段名称相同,且字段值的分布是相似的,则认为这两个字段可以对齐合并。比如举例中:源字段集合中的“age”和目的字段集合中的“age”是对齐的;
iii.字段名称大于8个字符的情况下字段名称相似度大于0.8,且字段值的分布是相似的,则认为这两个字段可以对齐合并。比如举例中:源字段集合中的“user_name”,“telephone”,“org_address”和目的字段集合中的“username”,“phone”,“address”是对齐的;
iv.其他情况均认为源字段集合中的字段,与目的字段集合中任意字段都不对齐。跳过处理。
如图2所示,为本申请实施例提供的一种配置文件的示意图,其中使用矩形框框出来的内容即为待迁移数据表中的非配对字段与图空间中的非主键属性字段的对齐信息,也即是数据迁移映射关系。
最后,在得到图2所示的数据迁移映射关系后,使用Spark读取Hive数据库中的数据表数据,将数据导入到Nebula图数据库中,操作如下:
a.Spark程序的main函数中,创建SparkSession对象。通过appName函数指定本次导数的应用名,同时调用enableHiveSupport,支持查询hive表功能。
b.读取源hive表信息,获取源表字段,根据配置文件中源hive表与目的Tag/EdgeType之间的字段对齐关系拼写映射sql:
1)将hive表数据迁移至Tag的异构数据映射方式:
Nebula建立TAG的语法如下:
CREATE TAG[IF NOT EXISTS]<tag_name>(<prop_name1><data_type>,(<prop_name2><data_type>...])
往Tag写入数据的语法如下:
INSERT VERTEX[IF NOT EXISTS]<tag_name>[tag_props1,[tag_props2]...]
VALUES VID:([prop_value_list])
参考往Tag写入数据的语法,这里我们规定将hive表数据映射到Nebula的Tag的映射方式如下:
SELECT VID,PROP_NAME_LIST FROM SRC_TABLE。
映射要求,建立Tag语句中的字段名、字段顺序、字段个数、字段类型与SELECT语句中出现的字段保持一致。其中VID表示某个具体Vertex的主键,PROP_NAME_LIST表示Tag的其他属性值。
2)将hive表数据迁移至Edge Type的异构数据映射方式:
Nebula建立Edge Type的语法如下:
CREATE EDGE[IF NOT EXISTS]<edge_type_name>(<prop_name1><data_type1>)
往EDGE写入数据的语法如下:
INSERT EDGE[IF NOT EXISTS]<edge_type_name>(<prop_name_list>)VALUES<src_vid>-><dst_vid>[@<rank>]:(<prop_value_list>)...];
参考往Edge Type写入数据的语法,这里我们规定将hive表数据映射到Nebula的Edge Type的映射方式如下:
SELECT SRC_VID,DST_VID,RANK,PROP_NAME_LIST FROM SRC_TABLE。
映射要求,建立Edge Type语句中的字段名、字段顺序、字段个数、字段类型与SELECT语句出现的字段保持一致。由于Edge Type是有方向的,所以需要“起点”即SRC_VID,“终点”DST_VID。Rank是Nebula特有的边字段属性,用于区分Edge Type、起点、终点类型都一致时的数据。Rank可以是一些时间属性的字段,或者其他有含义的字段。PROP_NAME_LIST表示Edge Type的其他属性值。
根据上面得到的Tag与Edge Type的映射逻辑,调用Spark.sql进行数据的写入处理。
上述方案中,通过构建图空间的主键字典,通过该主键字典将可以实现对Hive数据库中的各待迁移数据表的主键字段的自动匹配;而为了进一步将待迁移数据表中其他的非主键的字段的数据也能映射到Nebula图数据库中,则也可通过构建的主键字典而实现对各待迁移数据表中的非主键的字段的自动匹配,从而避免了背景技术中因为需要在配置文件中对错综复杂的字段的迁移对应关系进行配置、所需要付出的大量劳动工作且易出错的问题,基于该方式可以实现简单、快速、准确地将数据从Hive数据库中迁入到Nebula图数据库中。
众所周知,任一数据迁移方法在执行的过程中都要求对数据迁移的一致性进行校验,也即需要确保数据在迁移过程中不发生丢失。本申请的数据迁移方法也不例外。为此,本申请提出如下的数据一致性校验的方法,包括:
在进行数据迁移之后,分别设置针对于所述源数据库的第一布隆过滤器和针对于所述图数据库的第二布隆过滤器;按照数据的生成时间,将设定时长内的迁出所述源数据库中的数据写入所述第一布隆过滤器,以及将所述设定时长内的写入所述图数据库中的数据写入所述第二布隆过滤器;根据写入所述第一布隆过滤器的第一写入结果和写入所述第二布隆过滤器的第二写入结果,确定所述设定时长内的数据迁移是否正确。
在本申请的某些实施中,所述第一布隆过滤器和所述第二布隆过滤器均为N层设计的布隆过滤器,任一在后一层的布隆过滤器用于对在前一层的布隆过滤器的写入结果进行写入;所述根据写入所述第一布隆过滤器的第一写入结果和写入所述第二布隆过滤器的第二写入结果,确定所述设定时长内的数据迁移是否正确,包括:将写入所述第一布隆过滤器中的最后一层布隆过滤器的第一写入结果与写入所述第二布隆过滤器中的最后一层布隆过滤器的第二写入结果进行比较;若确定所述第一写入结果与所述第二写入结果相同,则确定所述设定时长内的数据迁移正确。
在本申请的某些实施中,所述N=2;所述方法还包括:将所述第一布隆过滤器中的第一层布隆过滤器和所述第二布隆过滤器中的第一层布隆过滤器均设计为链表形态;所述链表形态表示在写入数据的数目满足设定阈值后,则在所述第一层布隆过滤器中新增一个布隆过滤器。
具体的,首先根据BloomFilter类生成4个BloomFilterList实例,2个BloomFilterList实例用于存放Hive数据库中的待迁移数据表的一致性校验数据,2个BloomFilterList实例用于存放Nebula图数据库的一致性校验数据。
根据数据的创建时间(create_time字段)或者修改时间(update_time),分别提取出Hive数据库与nebula图数据库中同一指定时间段内的数据,该时间段可以以分钟为维度。如对第一分钟内所有数据的所有字段,写入第一层布隆过滤器,第一分钟的数据全部写入第一层布隆过滤器后,将第一层布隆过滤器的二进制字符串序列写入第二层布隆过滤器,第一分钟的数据写入第二层布隆过滤器后,清空第一层布隆过滤器的状态,然后对比Hive数据库对应的布隆过滤器(具体指第二层布隆过滤器)状态与Nebula图数据库对应的布隆过滤器(具体指第二层布隆过滤器)状态是否一致。若一致,则说明数据迁移正确,否则说明数据迁移有问题,需要重新对这个时间窗口内的所有数据进行迁移。接下来开始处理下一分钟的数据,直到全部数据处理完成。这种双层压缩后的布隆过滤器可以极大的减少数据存储量,减少数据一致性校验过程对服务器内存资源的占用。
此外,考虑到传统的布隆过滤器随着数据的不断写入,误算率会随之增加。这里我们对传统布隆过滤器进行改造,支持自动扩容,随着存入的元素数量增加,误算率并不会因此而显著增加。降低数据一致性校验过程中的误算率的具体方法如下:
Bloomfilter类中包含俩个属性,LinkedList<BloomFilterEntity>bloomFilterList,以及String bloomFilterName属性。其中bloomFilterList属性是利用LinkList这种双向循环链表包装BloomFilterEntity实体,该属性是实现布隆过滤器自动扩容的核心。bloomFilterName是定义的布隆过滤器的名称。Bloomfilter类中包装的几个核心方法分别是mightContain,put,mightContainAndPut。下面重点介绍mightContain,put,mightContainAndPut方法的实现逻辑。
a)mightContain的作用是判断一个字符串是否在布隆过滤器中。方法的实现逻辑是当bloomFilterList为空时,直接返回false。当bloomFilterList不为空时,通过遍历bloomFilterList的每一个BloomFilterEntity实体,判断单个BloomFilterEntity实体是否包含外部传递过来的数据,如果存在,那么返回true,否则返回false。
b)put方法的作用是实现自动扩容布隆过滤器的核心。首先判断bloomFilterList是否为空,如果为空,创建一个新的BloomFilterEntity,并加在bloomFilterList的末尾。然后借助bloomFilterList这种双向循环链表的特性,能够在时间复杂度为1的情况下,快速获取最后一个布隆过滤器实体lastBloomFilterEntity。然后往lastBloomFilterEntity添加数据,添加成功后,当lastBloomFilterEntity中count的属性(布隆过滤器记录的数据量)达到一定的数据量m之后(这个数据量可以自定义),比如到达1万条数据后,重新新建一个新的布隆过滤器,并添加在双向循环链表bloomFilterList的末尾。
c)mightContainAndPut方法是对mightContain的加强,是当传入的数据不在布隆过滤器中时,将该数据添加到布隆过滤器中。该方法的实现逻辑是先调用mightContain方法,当返回false时,直接调用上面的put方法。
在进行数据迁移时,创建Bloomfilter对象,并且调用mightContainAndPut方法,将数据写入到布隆过滤器中。数据迁移完毕之后,通过读取nebula的数据,然后调用Bloomfilter对象的mightContain方法,当每一次调用mightContain方法时,都是返回true时,则说明该条nebula数据存在Bloomfilter布隆过滤器中,数据是正常的。当出现返回的是false的数据时,说明数据迁移有误,打印该条数据。
基于同样的构思,本申请实施例提供一种数据迁移装置,如图3所示,为本申请实施例提供的一种数据迁移装置的示意图,该装置包括主键字典构建单元301、要素名称集合构建单元302、非主键属性字段确定单元303和迁移处理单元304;
主键字典构建单元301,用于针对图数据库中的图空间,根据所述图空间的多个要素,构建所述图空间的主键字典;所述图空间是根据源数据库中的多个待迁移数据表确定的;针对任一要素,所述主键字典以所述要素的主键字段作为键,以所述要素的要素名称作为值进行构建;
要素名称集合构建单元302,用于针对配置的任一个拟迁移数据表,基于所述主键字典中的各主键字段对所述拟迁移数据表中的各表字段进行匹配;若确定所述拟迁移数据表中存在至少一个表字段与所述主键字典中相同含义的主键字段相同,则确定所述拟迁移数据表为一个待迁移数据表以及确定所述至少一个表字段为配对字段,且基于所述至少一个表字段从所述主键字典中获取同一主键字段所在要素下的要素名称,并构成要素名称集合;
非主键属性字段确定单元303,用于根据所述要素名称集合和所述图空间的各非主键属性,确定所述图空间的各非主键属性字段;
迁移处理单元304,用于针对任一个待迁移数据表,根据所述待迁移数据表中的各非配对字段与所述图空间的各非主键属性字段,确定数据迁移映射关系并进行数据迁移;其中,所述数据迁移映射关系用于对所述待迁移数据表中的数据按照同一字段向所述图空间的相同字段迁移;所述各非配对字段为所述待迁移数据表中除去配对字段外的每一个表字段。
进一步的,对于该装置,主键字典构建单元301,具体用于:在所述图空间的要素为标签时,将所述标签的主键字段作为键,将所述标签的名称作为值;其中,不同标签的名称各不相同,且任一标签的主键字段与所述源数据库中具有相同含义的主键字段相一致;在所述图空间的要素为有向边时,将所述有向边的起点与终点分别对应的主键字段进行拼接后的第一拼接字段作为键,将所述有向边的名称作为值。
进一步的,对于该装置,要素名称集合构建单元302,具体用于:针对配置的任一个拟迁移数据表,基于所述主键字典中的各主键字段对所述拟迁移数据表中的各表字段进行匹配,若确定所述主键字典中仅存在一个主键字段与所述拟迁移数据表中的一个表字段相同,则基于所述主键字段从所述主键字典中获取所述主键字段所在要素下的要素名称,并添加所述要素名称至要素名称集合;若确定所述主键字典中存在至少两个主键字段与所述拟迁移数据表中相同数目的表字段一一相同,则对所述至少两个主键字段两两拼接,得到多个第二拼接字段;针对任一第二拼接字段,对所述第二拼接字段在所述主键字典的各主键字段中进行检索,若确定所述第二拼接字段存在于所述主键字典中,则基于所述第二拼接字段从所述主键字典中获取所述第二拼接字段所在要素下的要素名称,并添加所述要素名称至所述要素名称集合。
进一步的,对于该装置,非主键属性字段确定单元303,具体用于:针对所述要素名称集合中的任一要素名称,将所述要素名称与所述要素名称在所述图空间中的各非主键属性一一进行拼接,并将拼接得到的各第三拼接字段作为所述图空间在所述要素名称下的各非主键属性字段;迁移处理单元304,具体用于:针对任一个待迁移数据表,对所述待迁移数据表中的各非配对字段进行规范化处理,从而得到各第一字段;针对所述图空间中的各非主键属性字段,对所述各非主键属性字段进行所述规范化处理,从而得到各第二字段;根据各第一字段和各第二字段,确定数据迁移映射关系。
进一步的,对于该装置,迁移处理单元304,还用于:针对各第一字段中的任一第一字段,根据所述第一字段的字段值的数据类型,从各第二字段中确定出相同数据类型的各第三字段;针对任一第三字段,按照与所述数据类型匹配的字段相似度计算方法确定所述第三字段与所述第一字段的字段相似度;根据所述字段相似度,确定是否构建所述第一字段与所述第三字段的数据迁移映射关系。
进一步的,对于该装置,还包括数据一致性校验单元305;数据一致性校验单元305,用于:分别设置针对于所述源数据库的第一布隆过滤器和针对于所述图数据库的第二布隆过滤器;按照数据的生成时间,将设定时长内的迁出所述源数据库中的数据写入所述第一布隆过滤器,以及将所述设定时长内的写入所述图数据库中的数据写入所述第二布隆过滤器;根据写入所述第一布隆过滤器的第一写入结果和写入所述第二布隆过滤器的第二写入结果,确定所述设定时长内的数据迁移是否正确。
进一步的,对于该装置,所述第一布隆过滤器和所述第二布隆过滤器均为N层设计的布隆过滤器,任一在后一层的布隆过滤器用于对在前一层的布隆过滤器的写入结果进行写入;数据一致性校验单元305,具体用于:将写入所述第一布隆过滤器中的最后一层布隆过滤器的第一写入结果与写入所述第二布隆过滤器中的最后一层布隆过滤器的第二写入结果进行比较;若确定所述第一写入结果与所述第二写入结果相同,则确定所述设定时长内的数据迁移正确。
进一步的,对于该装置,所述N=2;数据一致性校验单元305,还用于:将所述第一布隆过滤器中的第一层布隆过滤器和所述第二布隆过滤器中的第一层布隆过滤器均设计为链表形态;所述链表形态表示在写入数据的数目满足设定阈值后,则在所述第一层布隆过滤器中新增一个布隆过滤器。
本申请实施例还提供了一种计算设备,该计算设备具体可以为桌面计算机、便携式计算机、智能手机、平板电脑、个人数字助理(Personal Digital Assistant,PDA)等。该计算设备可以包括中央处理器(Center Processing Unit,CPU)、存储器、输入/输出设备等,输入设备可以包括键盘、鼠标、触摸屏等,输出设备可以包括显示设备,如液晶显示器(Liquid Crystal Display,LCD)、阴极射线管(Cathode Ray Tube,CRT)等。
存储器,可以包括只读存储器(ROM)和随机存取存储器(RAM),并向处理器提供存储器中存储的程序指令和数据。在本申请实施例中,存储器可以用于存储数据迁移方法的程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行数据迁移方法。
如图4所示,为本申请实施例提供的一种计算设备的示意图,该计算设备包括:
处理器401、存储器402、收发器403、总线接口404;其中,处理器401、存储器402与收发器403之间通过总线405连接;
所述处理器401,用于读取所述存储器402中的程序,执行上述数据迁移方法;
处理器401可以是中央处理器(central processing unit,简称CPU),网络处理器(network processor,简称NP)或者CPU和NP的组合。还可以是硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,简称ASIC),可编程逻辑器件(programmable logic device,简称PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,简称CPLD),现场可编程逻辑门阵列(field-programmable gate array,简称FPGA),通用阵列逻辑(generic array logic,简称GAL)或其任意组合。
所述存储器402,用于存储一个或多个可执行程序,可以存储所述处理器401在执行操作时所使用的数据。
具体地,程序可以包括程序代码,程序代码包括计算机操作指令。存储器402可以包括易失性存储器(volatile memory),例如随机存取存储器(random-access memory,简称RAM);存储器402也可以包括非易失性存储器(non-volatile memory),例如快闪存储器(flash memory),硬盘(hard disk drive,简称HDD)或固态硬盘(solid-state drive,简称SSD);存储器402还可以包括上述种类的存储器的组合。
存储器402存储了如下的元素,可执行模块或者数据结构,或者它们的子集,或者它们的扩展集:
操作指令:包括各种操作指令,用于实现各种操作。
操作系统:包括各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。
总线405可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
总线接口404可以为有线通信接入口,无线总线接口或其组合,其中,有线总线接口例如可以为以太网接口。以太网接口可以是光接口,电接口或其组合。无线总线接口可以为WLAN接口。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行数据迁移方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (11)
1.一种数据迁移方法,其特征在于,包括:
针对图数据库中的图空间,根据所述图空间的多个要素,构建所述图空间的主键字典;所述图空间是根据源数据库中的多个待迁移数据表确定的;针对任一要素,所述主键字典以所述要素的主键字段作为键,以所述要素的要素名称作为值进行构建;
针对配置的任一个拟迁移数据表,基于所述主键字典中的各主键字段对所述拟迁移数据表中的各表字段进行匹配;若确定所述拟迁移数据表中存在至少一个表字段与所述主键字典中相同含义的主键字段相同,则确定所述拟迁移数据表为一个待迁移数据表以及确定所述至少一个表字段为配对字段,且基于所述至少一个表字段从所述主键字典中获取同一主键字段所在要素下的要素名称,并构成要素名称集合;
根据所述要素名称集合和所述图空间的各非主键属性,确定所述图空间的各非主键属性字段;
针对任一个待迁移数据表,根据所述待迁移数据表中的各非配对字段与所述图空间的各非主键属性字段,确定数据迁移映射关系并进行数据迁移;其中,所述数据迁移映射关系用于对所述待迁移数据表中的数据按照同一字段向所述图空间的相同字段迁移;所述各非配对字段为所述待迁移数据表中除去配对字段外的每一个表字段。
2.如权利要求1所述的方法,其特征在于,
所述根据所述图空间的多个要素,构建所述图空间的主键字典,包括:
在所述图空间的要素为标签时,将所述标签的主键字段作为键,将所述标签的名称作为值;其中,不同标签的名称各不相同,且任一标签的主键字段与所述源数据库中具有相同含义的主键字段相一致;
在所述图空间的要素为有向边时,将所述有向边的起点与终点分别对应的主键字段进行拼接后的第一拼接字段作为键,将所述有向边的名称作为值。
3.如权利要求2所述的方法,其特征在于,
所述基于所述至少一个表字段从所述主键字典中获取同一主键字段所在要素下的要素名称,并构成要素名称集合,包括:
针对配置的任一个拟迁移数据表,基于所述主键字典中的各主键字段对所述拟迁移数据表中的各表字段进行匹配,若确定所述主键字典中仅存在一个主键字段与所述拟迁移数据表中的一个表字段相同,则基于所述主键字段从所述主键字典中获取所述主键字段所在要素下的要素名称,并添加所述要素名称至要素名称集合;
若确定所述主键字典中存在至少两个主键字段与所述拟迁移数据表中相同数目的表字段一一相同,则对所述至少两个主键字段两两拼接,得到多个第二拼接字段;针对任一第二拼接字段,对所述第二拼接字段在所述主键字典的各主键字段中进行检索,若确定所述第二拼接字段存在于所述主键字典中,则基于所述第二拼接字段从所述主键字典中获取所述第二拼接字段所在要素下的要素名称,并添加所述要素名称至所述要素名称集合。
4.如权利要求3所述的方法,其特征在于,
所述根据所述要素名称集合和所述图空间的各非主键属性,确定所述图空间的各非主键属性字段,包括:
针对所述要素名称集合中的任一要素名称,将所述要素名称与所述要素名称在所述图空间中的各非主键属性一一进行拼接,并将拼接得到的各第三拼接字段作为所述图空间在所述要素名称下的各非主键属性字段;
所述针对任一个待迁移数据表,根据所述待迁移数据表中的各非配对字段与所述图空间的各非主键属性字段,确定数据迁移映射关系,包括:
针对任一个待迁移数据表,对所述待迁移数据表中的各非配对字段进行规范化处理,从而得到各第一字段;
针对所述图空间中的各非主键属性字段,对所述各非主键属性字段进行所述规范化处理,从而得到各第二字段;
根据各第一字段和各第二字段,确定数据迁移映射关系。
5.如权利要求4所述的方法,其特征在于,
所述根据各第一字段和各第二字段,确定数据迁移映射关系,包括:
针对各第一字段中的任一第一字段,根据所述第一字段的字段值的数据类型,从各第二字段中确定出相同数据类型的各第三字段;
针对任一第三字段,按照与所述数据类型匹配的字段相似度计算方法确定所述第三字段与所述第一字段的字段相似度;根据所述字段相似度,确定是否构建所述第一字段与所述第三字段的数据迁移映射关系。
6.如权利要求1所述的方法,其特征在于,
所述进行数据迁移之后,所述方法还包括:
分别设置针对于所述源数据库的第一布隆过滤器和针对于所述图数据库的第二布隆过滤器;
按照数据的生成时间,将设定时长内的迁出所述源数据库中的数据写入所述第一布隆过滤器,以及将所述设定时长内的写入所述图数据库中的数据写入所述第二布隆过滤器;
根据写入所述第一布隆过滤器的第一写入结果和写入所述第二布隆过滤器的第二写入结果,确定所述设定时长内的数据迁移是否正确。
7.如权利要求6所述的方法,其特征在于,所述第一布隆过滤器和所述第二布隆过滤器均为N层设计的布隆过滤器,任一在后一层的布隆过滤器用于对在前一层的布隆过滤器的写入结果进行写入;
所述根据写入所述第一布隆过滤器的第一写入结果和写入所述第二布隆过滤器的第二写入结果,确定所述设定时长内的数据迁移是否正确,包括:
将写入所述第一布隆过滤器中的最后一层布隆过滤器的第一写入结果与写入所述第二布隆过滤器中的最后一层布隆过滤器的第二写入结果进行比较;
若确定所述第一写入结果与所述第二写入结果相同,则确定所述设定时长内的数据迁移正确。
8.如权利要求7所述的方法,其特征在于,所述N=2;
所述方法还包括:
将所述第一布隆过滤器中的第一层布隆过滤器和所述第二布隆过滤器中的第一层布隆过滤器均设计为链表形态;所述链表形态表示在写入数据的数目满足设定阈值后,则在所述第一层布隆过滤器中新增一个布隆过滤器。
9.一种数据迁移装置,其特征在于,包括:
主键字典构建单元,用于针对图数据库中的图空间,根据所述图空间的多个要素,构建所述图空间的主键字典;所述图空间是根据源数据库中的多个待迁移数据表确定的;针对任一要素,所述主键字典以所述要素的主键字段作为键,以所述要素的要素名称作为值进行构建;
要素名称集合构建单元,用于针对配置的任一个拟迁移数据表,基于所述主键字典中的各主键字段对所述拟迁移数据表中的各表字段进行匹配;若确定所述拟迁移数据表中存在至少一个表字段与所述主键字典中相同含义的主键字段相同,则确定所述拟迁移数据表为一个待迁移数据表以及确定所述至少一个表字段为配对字段,且基于所述至少一个表字段从所述主键字典中获取同一主键字段所在要素下的要素名称,并构成要素名称集合;
非主键属性字段确定单元,用于根据所述要素名称集合和所述图空间的各非主键属性,确定所述图空间的各非主键属性字段;
迁移处理单元,用于针对任一个待迁移数据表,根据所述待迁移数据表中的各非配对字段与所述图空间的各非主键属性字段,确定数据迁移映射关系并进行数据迁移;其中,所述数据迁移映射关系用于对所述待迁移数据表中的数据按照同一字段向所述图空间的相同字段迁移;所述各非配对字段为所述待迁移数据表中除去配对字段外的每一个表字段。
10.一种计算机设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于调用所述存储器中存储的计算机程序,按照获得的程序执行如权利要求1-8任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,所述存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如权利要求1-8任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210693937.6A CN115858487A (zh) | 2022-06-19 | 2022-06-19 | 一种数据迁移方法及装置 |
PCT/CN2022/127665 WO2023245941A1 (zh) | 2022-06-19 | 2022-10-26 | 一种数据迁移方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210693937.6A CN115858487A (zh) | 2022-06-19 | 2022-06-19 | 一种数据迁移方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115858487A true CN115858487A (zh) | 2023-03-28 |
Family
ID=85660205
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210693937.6A Pending CN115858487A (zh) | 2022-06-19 | 2022-06-19 | 一种数据迁移方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115858487A (zh) |
WO (1) | WO2023245941A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116737870A (zh) * | 2023-08-09 | 2023-09-12 | 北京国电通网络技术有限公司 | 上报信息存储方法、装置、电子设备和计算机可读介质 |
CN118331945A (zh) * | 2024-04-25 | 2024-07-12 | 北京星航机电装备有限公司 | 一种面向航天离散制造的实时非实时数据迁移方法及装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118132540B (zh) * | 2024-05-08 | 2024-07-23 | 杭州悦数科技有限公司 | 一种实现在线图数据库迁移的方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101525529B1 (ko) * | 2014-09-30 | 2015-06-05 | 주식회사 비트나인 | 데이터 처리장치 및 그 데이터 매핑방법 |
WO2017044119A1 (en) * | 2015-09-11 | 2017-03-16 | Hewlett Packard Enterprise Development Lp | Graph database and relational database mapping |
CN105930361B (zh) * | 2016-04-12 | 2019-05-03 | 北京恒冠网络数据处理有限公司 | 一种关系型数据库向Neo4j模型转换和数据迁移方法 |
-
2022
- 2022-06-19 CN CN202210693937.6A patent/CN115858487A/zh active Pending
- 2022-10-26 WO PCT/CN2022/127665 patent/WO2023245941A1/zh unknown
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116737870A (zh) * | 2023-08-09 | 2023-09-12 | 北京国电通网络技术有限公司 | 上报信息存储方法、装置、电子设备和计算机可读介质 |
CN116737870B (zh) * | 2023-08-09 | 2023-10-27 | 北京国电通网络技术有限公司 | 上报信息存储方法、装置、电子设备和计算机可读介质 |
CN118331945A (zh) * | 2024-04-25 | 2024-07-12 | 北京星航机电装备有限公司 | 一种面向航天离散制造的实时非实时数据迁移方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2023245941A1 (zh) | 2023-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115858487A (zh) | 一种数据迁移方法及装置 | |
US20230025934A1 (en) | Configurable and incremental database migration framework for heterogeneous databases | |
US11604797B2 (en) | Inferring joins for data sets | |
WO2017215370A1 (zh) | 构建决策模型的方法、装置、计算机设备及存储设备 | |
CN109933514B (zh) | 一种数据测试方法和装置 | |
WO2019161645A1 (zh) | 基于Shell的数据表提取方法、终端、设备及存储介质 | |
US20240126817A1 (en) | Graph data query | |
US20220229854A1 (en) | Constructing ground truth when classifying data | |
US10339035B2 (en) | Test DB data generation apparatus | |
WO2020233347A1 (zh) | 工作流管理系统的测试方法、装置、存储介质及终端设备 | |
CN114385722A (zh) | 接口属性的一致性校验方法、装置、电子设备和存储介质 | |
CN115185998A (zh) | 目标字段查找方法及装置、服务器、计算机可读存储介质 | |
US20220284307A1 (en) | Decision tree native to graph database | |
CN114490415A (zh) | 业务测试方法、计算机设备、存储介质和计算机程序产品 | |
CN114443634A (zh) | 数据质量检核方法、装置、设备及存储介质 | |
US11783206B1 (en) | Method and system for making binary predictions for a subject using historical data obtained from multiple subjects | |
CN113835780A (zh) | 一种事件响应方法及装置 | |
CN112559331A (zh) | 测试方法和装置 | |
CN114579573B (zh) | 信息检索方法、装置、电子设备以及存储介质 | |
US11971891B1 (en) | Accessing siloed data across disparate locations via a unified metadata graph systems and methods | |
EP4220473B1 (en) | Method and system for validation of calculation code against calculation specification | |
CN111914065B (zh) | 短信内容验证方法、装置、计算机系统和计算机可读介质 | |
US11704094B2 (en) | Data integrity analysis tool | |
CN117370160A (zh) | 代码审核方法、装置、计算机设备、存储介质和程序产品 | |
CN118796794A (zh) | 异构数据库迁移方法、装置及电子设备 |
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 |