CN106649335A - 一种数据处理方法及装置 - Google Patents

一种数据处理方法及装置 Download PDF

Info

Publication number
CN106649335A
CN106649335A CN201510726113.4A CN201510726113A CN106649335A CN 106649335 A CN106649335 A CN 106649335A CN 201510726113 A CN201510726113 A CN 201510726113A CN 106649335 A CN106649335 A CN 106649335A
Authority
CN
China
Prior art keywords
data
database table
source
row
request
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
Application number
CN201510726113.4A
Other languages
English (en)
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.)
Advanced New Technologies Co Ltd
Advantageous New Technologies Co Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201510726113.4A priority Critical patent/CN106649335A/zh
Publication of CN106649335A publication Critical patent/CN106649335A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/214Database migration support

Abstract

本发明是关于一种数据处理方法及装置,包括:当开始将源数据库表中存储的源数据向目标数据库表迁移时,检测是否接收到第一请求;当接收到第一请求时,判断所述第一请求为携带待存储数据的数据存储请求,或,为携带数据标识的数据获取请求;如果第一请求为数据存储请求,将待存储数据分别存储在源数据库表中和目标数据库表中。如果第一请求为数据获取请求,从源数据库表中读取数据标识对应的数据;由于源数据库表不仅存储了源数据,且存储新增的待存储数据,因此,无论数据获取请求是需要获取源数据还是需要获取新增的待存储数据,从源数据中表均可以获取到。

Description

一种数据处理方法及装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据处理方法及装置。
背景技术
随着业务的发展以及数据量的逐年增长,出于技术架构优化或公司战略的决策,数据存储的策略往往会发生变更。例如,基于公司去oracle存储战略决策,需要更换存储数据库的类型,将原先在oracle数据库的数据库表中存储的数据迁移至mysql数据库的数据库表中。
其中,在开始将源数据库表中存储的源数据向目标数据库表迁移时,就会将存储策略和获取策略全部迁移至目标数据库表。这样,如果接收到携带待存储数据的数据存储请求,则会将待存储的数据存储在目标数据库表中;如果接收到携带有数据标识的数据获取请求,则会从目标数据库表中获取该数据标识对应的数据。
然而,在将源数据库表中存储的源数据向目标数据库表迁移的过程中,由于还未将源数据库表中存储的源数据全部迁移至目标数据库表中,即,此时目标数据库表中并未存储源数据库表中的全部源数据,而仅仅存储了源数据库表中的一部分源数据,如果该获取请求是需要获取源数据库表中的除该一部分源数据以外的另一部分源数据时,就无法获取到该另一部分源数据。
例如,假设源数据库表中存储的源数据为源数据A、源数据B和源数据C,当源数据A和源数据B已经迁移至目标数据库表且源数据C还未迁移至目标数据库表时,如果此时接收到用于获取源数据C的获取请求,由于此时目标数据库表还未存储源数据C,则就无法获取到源数据C。
发明内容
为克服相关技术中存在的问题,本发明提供一种数据处理方法及装置。
根据本发明实施例的第一方面,提供一种数据处理方法,所述方法包括:
当开始将源数据库表中存储的源数据向目标数据库表迁移时,检测是否接收到第一请求;
当接收到第一请求时,判断所述第一请求为携带待存储数据的数据存储请求,或,为携带数据标识的数据获取请求;
如果所述第一请求为所述数据获取请求,从所述源数据库表中获取所述第一请求携带的数据标识对应的数据;
如果所述第一请求为所述数据存储请求,将所述第一请求携带的待存储数据分别存储在所述源数据库表和所述目标数据库表中。
进一步地,所述方法还包括:
当将所述源数据库表中存储的源数据全部迁移至所述目标数据库表时,检测是否接收到第二请求;
当接收到第二请求时,判断所述第二请求为携带待存储数据的数据存储请求,或,为携带数据标识的数据获取请求;
如果所述第二请求为所述数据获取请求,从所述目标数据库表中获取所述第二请求携带的数据标识对应的数据;
如果所述第二请求为所述数据存储请求,将所述第二请求携带的待存储数据存储在所述目标数据库表中。
进一步地,所述方法还包括:
当将所述源数据库表中存储的源数据全部迁移至所述目标数据库表时,对所述目标数据库表中存储的、从所述源数据库表中迁移的源数据的完整性进行校验;
当所述目标数据库表中存储的、从所述源数据库表中迁移的源数据完整时,如果接收到的所述第二请求为所述数据读取请求,则执行所述从所述目标数据库表中获取所述数据标识对应的数据的步骤;或,如果接收到的所述第二请求为数据存储请求,则执行所述将所述待存储数据存储在所述目标数据库表中的步骤。
其中,所述对所述目标数据库表中存储的、从所述源数据库表中迁移的源数据的完整性进行校验,包括:
判断所述源数据库表中的源数据的数据总量与所述目标数据库表中的源数据的数据总量是否相同;
当所述源数据库表中的源数据的数据总量与所述目标数据库表中的源数据的数据总量相同时,确定所述目标数据库表中的源数据完整。
其中,所述判断所述源数据库表中的源数据的数据总量与所述目标数据库表中的源数据的数据总量是否相同,包括:
获取所述源数据库表的表结构信息;所述源数据库表的表结构信息包括用于存储所述源数据的列的总个数,以及用于存储所述源数据的列的列名;
获取所述目标数据库表的表结构信息,所述目标数据库表中的表结构信息包括用于存储所述源数据的列的总个数,以及用于存储所述源数据的列的列名;
判断所述源数据库表的表结构信息与所述目标数据库表的表结构信息是否相同;
当所述源数据库表的表结构信息与所述目标数据库表的表结构信息相同时,将所述源数据库表中的表结构信息与所述目标数据库表中的表结构信息中的相同的列名组成列名组;
对于每一个列名组,统计所述列名组中的第一个列名对应的列中的、用于存储源数据的行的第一个数;以及统计所述列名组中的第二个列名对应的列中的、用于存储源数据的行的第二个数;
对于每一个列名组,当统计出的所述第一个数与所述第二个数相同时,确定所述源数据库表中的源数据的数据总量与所述目标数据库表中的源数据的数据总量相同。
进一步地,所述方法还包括:
对于每一个列名组,当统计出的所述第一个数与所述第二个数相同时,从组成的列名组中获取第一预设个数个列名组;
对于每一个获取的列名组,获取所述列名组中的两个列名对应的列;从所述两个列名对应的列中分别获取第二预设个数个、且行编号相同的行中存储的数据;判断所述两个列名对应的列中的、所述获取的相同行编号的行中存储的数据是否相同;当所述两个列名对应的列中的、所述获取的相同行编号的行中存储的数据相同时,执行所述确定所述源数据库表中的源数据的数据总量与所述目标数据库表中的源数据的数据总量相同的步骤。
其中,所述方法还包括:
当所述目标数据库表中的源数据完整时,删除所述源数据库表中存储的数据。
根据本发明实施例的第二方面,提供一种数据处理装置,所述装置包括:
第一检测模块,用于当开始将源数据库表中存储的源数据向目标数据库表迁移时,检测是否接收到第一请求;
第一判断模块,用于当接收到第一请求时,判断所述第一请求为携带待存储数据的数据存储请求,或,为携带数据标识的数据获取请求;
第一获取模块,用于如果所述第一请求为所述数据获取请求,从所述源数据库表中获取所述第一请求携带的数据标识对应的数据;
第一存储模块,用于如果所述第一请求为所述数据存储请求,将所述第一请求携带的待存储数据分别存储在所述源数据库表和所述目标数据库表中。
进一步地,所述装置还包括:
第二检测模块,用于当将所述源数据库表中存储的源数据全部迁移至所述目标数据库表时,检测是否接收到第二请求;
第二判断模块,用于当接收到第二请求时,判断所述第二请求为携带待存储数据的数据存储请求,或,为携带数据标识的数据获取请求;
第二获取模块,用于如果所述第二请求为所述数据获取请求,从所述目标数据库表中获取所述第二请求携带的数据标识对应的数据;
第二存储模块,用于如果所述第二请求为所述数据存储请求,将所述第二请求携带的待存储数据存储在所述目标数据库表中。
进一步地,所述装置还包括:
校验模块,用于当将所述源数据库表中存储的源数据全部迁移至所述目标数据库表时,对所述目标数据库表中存储的、从所述源数据库表中迁移的源数据的完整性进行校验;
所述第二获取模块还用于当所述目标数据库表中存储的、从所述源数据库表中迁移的源数据完整时,如果接收到的所述第二请求为所述数据读取请求,则执行所述从所述目标数据库表中获取所述数据标识对应的数据的步骤;
所述第二存储模块还用于当所述目标数据库表中存储的、从所述源数据库表中迁移的源数据完整时,如果接收到的所述第二请求为数据存储请求,则执行所述将所述待存储数据存储在所述目标数据库表中的步骤。
其中,所述校验模块包括:
判断单元,用于判断所述源数据库表中的源数据的数据总量与所述目标数据库表中的源数据的数据总量是否相同;
确定单元,用于当所述源数据库表中的源数据的数据总量与所述目标数据库表中的源数据的数据总量相同时,确定所述目标数据库表中的源数据完整。
其中,所述判断单元包括:
第一获取子单元,用于获取所述源数据库表的表结构信息;所述源数据库表的表结构信息包括用于存储所述源数据的列的总个数,以及用于存储所述源数据的列的列名;
第二获取子单元,用于获取所述目标数据库表的表结构信息,所述目标数据库表中的表结构信息包括用于存储所述源数据的列的总个数,以及用于存储所述源数据的列的列名;
第一判断子单元,用于判断所述源数据库表的表结构信息与所述目标数据库表的表结构信息是否相同;
组成子单元,用于当所述源数据库表的表结构信息与所述目标数据库表的表结构信息相同时,将所述源数据库表中的表结构信息与所述目标数据库表中的表结构信息中的相同的列名组成列名组;
统计子单元,用于对于每一个列名组,统计所述列名组中的第一个列名对应的列中的、用于存储源数据的行的第一个数;以及统计所述列名组中的第二个列名对应的列中的、用于存储源数据的行的第二个数;
确定子单元,用于对于每一个列名组,当统计出的所述第一个数与所述第二个数相同时,确定所述源数据库表中的源数据的数据总量与所述目标数据库表中的源数据的数据总量相同。
进一步地,所述判断单元还包括:
第三获取子单元,用于对于每一个列名组,当统计出的所述第一个数与所述第二个数相同时,从组成的列名组中获取第一预设个数个列名组;
第四获取子单元,用于对于每一个获取的列名组,获取所述列名组中的两个列名对应的列;
第五获取子单元,用于从所述两个列名对应的列中分别获取第二预设个数个、且行编号相同的行中存储的数据;
第二判断子单元,用于判断所述两个列名对应的列中的、所述获取的相同行编号的行中存储的数据是否相同;
所述确定子单元,用于当所述两个列名对应的列中的、所述获取的相同行编号的行中存储的数据相同时,执行所述确定所述源数据库表中的源数据的数据总量与所述目标数据库表中的源数据的数据总量相同的步骤。
进一步地,所述装置还包括:
删除模块,用于当所述目标数据库表中的源数据完整时,删除所述源数据库表中存储的数据。
本发明的实施例提供的技术方案可以包括以下有益效果:在本发明中,如果第一请求为数据存储请求,将待存储数据分别存储在源数据库表中和目标数据库表中。如果第一请求为数据获取请求,从源数据库表中读取数据标识对应的数据;由于源数据库表不仅存储了源数据,且存储新增的待存储数据,因此,无论数据获取请求是需要获取源数据还是需要获取新增的待存储数据,从源数据中表均可以获取到。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1是根据一示例性实施例示出的一种数据处理方法的流程图。
图2是根据一示例性实施例示出的一种数据处理方法的流程图。
图3是根据一示例性实施例示出的一种数据处理方法的流程图。
图4是根据一示例性实施例示出的一种数据处理方法的流程图。
图5是根据一示例性实施例示出的一种数据处理装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种数据处理方法的流程图,如图1所示,该方法包括以下步骤。
在步骤S101中,当开始将源数据库表中存储的源数据向目标数据库表迁移时,检测是否接收到第一请求;
源数据库表所属的数据库与目标数据库所属的数据库可以是同一数据库,也可以是不同的数据库。
当接收到第一请求时,在步骤S102中,判断第一请求为携带待存储数据的数据存储请求,或,为携带数据标识的数据获取请求;
如果第一请求为数据获取请求,在步骤S103中,从源数据库表中获取第一请求携带的数据标识对应的数据;
由于源数据库表存储了完整的源数据,因此,如果数据获取请求包含的数据标识为源数据的数据标识,根据该数据标识从源数据库中一定能获取到源数据。
如果第一请求为数据存储请求,在步骤S104中,将第一请求携带的待存储数据分别存储在源数据库表和目标数据库表中。
其中,将待存储数据存储在源数据库表中是为了:如果之后接收到携带该待存储数据的数据标识的数据获取请求,则可以从源数据库表中获取到该待存储数据的数据标识对应的数据。
其中,将待存储数据存储在目标数据库表中是为了:当将源数据库表中存储的源数据向目标数据库迁移完毕时,会将存储策略和获取策略迁移至目标数据库表,之后可能不再使用源数据库表,但可以从目标数据库表中获取到该待存储的数据。
在本发明图1所示的实施例中,如果第一请求为数据存储请求,将待存储数据分别存储在源数据库表中和目标数据库表中。如果第一请求为数据获取请求,从源数据库表中读取数据标识对应的数据;由于源数据库表不仅存储了源数据,且存储新增的待存储数据,因此,无论数据获取请求是需要获取源数据还是需要获取新增的待存储数据,从源数据中表均可以获取到。
在本发明另一实施例中,参见图2,该方法还包括:
在步骤S201中,当将源数据库表中存储的源数据全部迁移至目标数据库表时,检测是否接收到第二请求;
当接收到第二请求时,在步骤S202中,判断第二请求为携带待存储数据的数据存储请求,或,为携带数据标识的数据获取请求;
如果第二请求为数据获取请求,在步骤S203中,从目标数据库表中获取第二请求携带的数据标识对应的数据;
其中,当将源数据库表中存储的源数据全部迁移至目标数据库表时,就可以实现去源数据库表,即,不再使用源数据库表,进而可以将存储策略和读取策略都迁移至目标数据库中。
且由于当将源数据库表中存储的源数据全部迁移至目标数据库表时,目标数据库表中存储了源数据库表中的全部的源数据,同时也存储了在将源数据库表中存储的源数据向目标数据库表迁移的过程中新增加的数据。
因此,本发明实施例保障了无论该数据获取请求用于获取源数据,还是用于获取在将源数据库表中存储的源数据向目标数据库表中迁移的过程中新增加的数据,均可能从目标数据库表中获取到。
如果第二请求为数据存储请求,在步骤S204中,将第二请求携带的待存储数据存储在目标数据库表中。
其中,当将源数据库表中存储的源数据全部迁移至目标数据库表时,就可以实现去源数据库,即,不再使用源数据库中,可以将存储策略和读取策略都迁移至目标数据库中。
当接收到携带待存储数据的存储请求时,不再将待存储数据存储在源数据库表中,只需将待存储数据存储在目标数据库表中即可,之后当接收到用于获取该待存储数据的数据获取请求时,从目标数据库表中一定能获取到该待存储的数据。
其中,由于在将源数据库表中的源数据向目标数据库表表中迁移时,可能会发生数据传输错误、数据丢失等情况,因此,最终迁移到目标数据库表中的源数据可能是不完整的源数据,即,最终迁移到目标数据库表中的源数据可能与源数据库中的源数据不完全相同。所以,当将源数据库表中的源数据向目标数据库表中迁移完毕时,需要对目标数据库表中的、从源数据库表中迁移过来的源数据的完整性进行校验,当目标数据库表中的、从源数据库表中迁移过来的源数据完整时,才能保证之后可以从目标数据表中获取到所有的源数据。
因此,在本发明又一实施例中,参见图3,该方法还包括:
在步骤S301中,当将源数据库表中存储的源数据全部迁移至目标数据库表时,对目标数据库表中存储的、从源数据库表中迁移的源数据的完整性进行校验;
当目标数据库表中存储的、从源数据库表中迁移的源数据完整时,在步骤S302中,如果接收到的第二请求为数据获取请求,则从目标数据库表中获取第二请求携带的数据标识对应的数据;或,如果接收到的第二请求为数据存储请求,则将第二请求携带的待存储数据存储在目标数据库表中。
其中,需要说明的是,本发明实施例中的目标数据库表中的源数据为从源数据库表中迁移至目标数据库表中的源数据。
其中,在确定出目标数据库表中的源数据完整之前,如果接收到的请求为携带数据标识的数据获取请求,则从源数据库表中获取该请求携带的数据标识对应的数据;如果接收到的请求为携带待存储数据的数据存储请求,则将该请求携带的待存储数据分别存储在源数据库表中和目标数据库表中。
其中,在本发明又一实施例中,参见图4,步骤S301中的“对目标数据库表中的源数据的完整性进行校验”,包括:
在步骤S401中,判断源数据库表中的源数据的数据总量与目标数据库中表的源数据的数据总量是否相同;
其中,目标数据库表中的源数据为从源数据库表中迁移过来的源数据。
具体地,本步骤可以通过如下流程实现,包括:
11)、获取源数据库表的表结构信息;
源数据库表的表结构信息包括用于存储源数据的列的总个数,以及用于存储源数据的列的列名;
其中,任一数据库表中包括至少一个列,一列中包括至少一行,行用于存储数据。
例如,假设源数据库表中的、用于存储源数据的列一共有三个,列名分别为A、B和C。
12)、获取目标数据库表的表结构信息;
目标数据库表中的表结构信息包括用于存储源数据的列的总个数,以及用于存储源数据的列的列名;
假设目标数据库表中的、用于存储从源数据库表中迁移的源数据的列一共有三个,列名分别为A、B和C。
13)、判断源数据库表的表结构信息与目标数据库表的表结构信息是否相同;
具体地,比较源数据库表中包括的用于存储源数据的列的总个数与目标数据库表中包括的用于存储源数据的列的总个数是否相同;如果源数据库表中包括的用于存储源数据的列的总个数与目标数据库表中包括的用于存储源数据的列的总个数相同,则在目标数据库表中包括的所有用于存储源数据的列的列名中,分别查找源数据库表中的每一个用于存储源数据的列的列名,如果在目标数据库表中包括的所有用于存储源数据的列的列名中能够查找源数据库表中的每一个用于存储源数据的列的列名,则确定源数据库表中的表结构信息与目标数据库表中的表结构信息是否相同。
例如,将源数据库表中包括的用于存储源数据的列的总个数3与目标数据库表中包括的用于存储源数据的列的总个数3进行比较,且二者相同,然后在目标数据库表中包括的所有用于存储源数据的列的列名A、B和C中,分别查找源数据库表中的每一个用于存储源数据的列的列名A、B和C,且分别查找到列名A、B和C,则确定源数据库表中的表结构信息与目标数据库表中的表结构信息是否相同。
14)、当源数据库表的表结构信息与目标数据库表的表结构信息相同时,将源数据库表中的表结构信息与目标数据库表中的表结构信息中的相同的列名组成列名组;
其中,同一个数据库表中的任意两个列的列名都不相同。
例如,将源数据库表中的列名A与目标数据库表中的列名A组成第一列名组;将源数据库表中的列名B与目标数据库表中的列名B组成第二列名组;将源数据库表中的列名C与目标数据库表中的列名C组成第三列名组。
15)、对于每一个列名组,统计该列名组中的第一个列名对应的列中的、用于存储源数据的行的第一个数;以及统计该列名组中的第二个列名对应的列中的、用于存储源数据的行的第二个数;
其中,对于任一列名组,统计出该列名组中的第一个列名对应的列中的、用于存储源数据的行的第一个数,以及统计出该列名组中的第二个列名对应的列中的、用于存储源数据的行的第二个数。对于其他每一个列名组,均执行上述操作。
例如,对于第一列名组,统计出第一列名组中的源数据库表中的列名A对应的列中包括的行的个数,以及出第一列名组中的目标数据库表中的列名A对应的列中包括的行的个数。对于第二列名组和第三列名组均执行上述操作。
例如,假设统计出第一列名组中的源数据库表中的列名A对应的列中包括的行的个数为10,以及统计出第一列名组中的目标数据库表中的列名A对应的列中包括的行的个数为10;统计出第二列名组中的源数据库表中的列名B对应的列中包括的行的个数为12,以及统计出第二列名组中的目标数据库表中的列名B对应的列中包括的行的个数为12。统计出第三列名组中的源数据库表中的列名C对应的列中包括的行的个数为13,以及统计出第三列名组中的目标数据库表中的列名C对应的列中包括的行的个数为13。
16)、对于每一个列名组,当统计出的该第一个数与该第二个数相同时,确定源数据库表中的源数据的数据总量与目标数据库表中的源数据的数据总量相同。
对于任一列名组,判断统计出的该列名组中的第一个数与第二个数是否相同;对于其他每一列名组,均执行上述操作;如果每一个列名组中的第一个数与第二个数都相同时,则确定源数据库表中的源数据的数据总量与目标数据库表中的源数据的数据总量相同。
例如,第一列名组中的源数据库表中的列名A对应的列中包括的行的个数10与第一列名组中的目标数据库表中的列名A对应的列中包括的行的个数10相同;
第二列名组中的源数据库表中的列名B对应的列中包括的行的个数12与第二列名组中的目标数据库表中的列名B对应的列中包括的行的个数12相同;
第三列名组中的源数据库表中的列名C对应的列中包括的行的个数14与第三列名组中的目标数据库表中的列名C对应的列中包括的行的个数14相同。
其中,只要存在一个列名组中的第一个数与第二个数不同,确定源数据库表中的源数据的数据总量与目标数据库表中的源数据的数据总量不同。
当源数据库表中的源数据的数据总量与目标数据库表中的源数据的数据总量相同时,在步骤S402中,确定目标数据库表中的源数据完整。
当源数据库表中的源数据的数据总量与目标数据库表中的源数据的数据总量不相同时,在步骤S403中,确定目标数据库表中的源数据不完整。
进一步地,如果确定目标数据库表中的源数据完整,则需要将源数据库表中的源数据向目标数据库表中重新迁移,直至迁移至目标数据库表中的源数据完整时为止。
其中,为了进一步确保目标数据库表中存储的源数据的完整性,在本发明又一实施例中,该方法还包括:
对于每一个列名组,当统计出的该第一个数与该第二个数相同时,21)、从组成的列名组中获取第一预设个数个列名组;
第一预设个数为技术人员事先设置的数值,可以为2、3或5等,本发明对此不加以限定。
如果第一预设个数小于组成的列名组的个数,则可以从组成的列名组中随机挑选出第一预设个数个列名组。
如果第一预设个数等于或大于组成的列名组的个数,则获取组成的全部列名组。
例如,假设组成的列名组为上述实施例中的第一列名组、第二列名组和第三列名组。如果第一预设个数为2,则从第一列名组、第二列名组和第三列名组随机挑选出两个列名组。如果第一预设个数为3或5,则获取第一列名组、第二列名组和第三列名组。
22)、对于每一个获取的列名组,获取该列名组中的两个列名对应的列;从两个列名对应的列中分别获取第二预设个数个、且行编号相同的行中存储的数据;
对于获取的任一个列名组,获取该列名组中的第一个列名对应的列,以及获取该列名组中的第二个列名对应的列。从第一个列名对应的列中选择第二预设个数个行,从第二个列名中选择第二预设个数个行,从第一个列名对应的列中获取的行的行编号与从第二个列名中对应的列中获取的行编号相同。例如,从第一个列名中对应的列中选择第1行、第3行和第4行。则从第一个列名中对应的列中也选择第1行、第3行和第4行。然后获取存储在选择的行中的数据,再将获取相同的行编号的行中的数据进行比较。
另外,对于获取的其他每一列名组,均执行上述操作。
其中,在数据库表中的列可以为包括至少一行,每一行都有行编号,用于唯一标识该行。
第二预设个数为技术人员事先设置的数值,可以为5、10或15等,本发明对此不加以限定。
如果一个列名对应的列中包括的行的个数大于第二预设个数,则从该列名对应的列中包括的行中随机选择出第二预设个数个行。
如果一个列名对应的列中包括的行的个数小于或等于第二预设个数,则从该列名对应的列中选择所有行。
23)、判断每个列名组中的两个列名对应的列中的、获取的相同行编号的行中存储的数据是否相同;
当两个列名对应的列中的、获取的相同行编号的行中存储的数据相同时,16)、确定源数据库表中的源数据的数据总量与目标数据库表中的源数据的数据总量相同。
其中,在本发明又一实施例中,当目标数据库表中的源数据完整时,之后当接收到请求时,如果接收到的请求为携带待存储数据的数据存储请求,则会将该请求携带的待存储数据存储在目标数据库表中;以及,如果接收到的该请求为携带数据标识数据获取请求,则会从目标数据库表中获取该请求携带的数据标识对应的数据;即,当目标数据库表中的源数据完整时,之后无论是接收到的请求为携带待存储数据的数据存储请求,还是为携带数据标识的数据获取请求,均不会再利用到源数据库表,因此,当目标数据库表中的源数据完整时,为了节省源数据库表的存储空间,可以删除源数据库表中存储的数据。
图5是根据一示例性实施例示出的一种数据处理装置的框图。参照图5,该装置包括:
第一检测模块11,用于当开始将源数据库表中存储的源数据向目标数据库表迁移时,检测是否接收到第一请求;
第一判断模块12,用于当接收到第一请求时,判断所述第一请求为携带待存储数据的数据存储请求,或,为携带数据标识的数据获取请求;
第一获取模块13,用于如果所述第一请求为所述数据获取请求,从所述源数据库表中获取所述第一请求携带的数据标识对应的数据;
第一存储模块14,用于如果所述第一请求为所述数据存储请求,将所述第一请求携带的待存储数据分别存储在所述源数据库表和所述目标数据库表中。
在本发明图5所示的实施例中,如果第一请求为数据存储请求,将待存储数据分别存储在源数据库表中和目标数据库表中。如果第一请求为数据获取请求,从源数据库表中读取数据标识对应的数据;由于源数据库表不仅存储了源数据,且存储新增的待存储数据,因此,无论数据获取请求是需要获取源数据还是需要获取新增的待存储数据,从源数据中表均可以获取到。
进一步地,所述装置还包括:
第二检测模块,用于当将所述源数据库表中存储的源数据全部迁移至所述目标数据库表时,检测是否接收到第二请求;
第二判断模块,用于当接收到第二请求时,判断所述第二请求为携带待存储数据的数据存储请求,或,为携带数据标识的数据获取请求;
第二获取模块,用于如果所述第二请求为所述数据获取请求,从所述目标数据库表中获取所述第二请求携带的数据标识对应的数据;
第二存储模块,用于如果所述第二请求为所述数据存储请求,将所述第二请求携带的待存储数据存储在所述目标数据库表中。
进一步地,所述装置还包括:
校验模块,用于当将所述源数据库表中存储的源数据全部迁移至所述目标数据库表时,对所述目标数据库表中存储的、从所述源数据库表中迁移的源数据的完整性进行校验;
所述第二获取模块还用于当所述目标数据库表中存储的、从所述源数据库表中迁移的源数据完整时,如果接收到的所述第二请求为所述数据读取请求,则执行所述从所述目标数据库表中获取所述数据标识对应的数据的步骤;
所述第二存储模块还用于当所述目标数据库表中存储的、从所述源数据库表中迁移的源数据完整时,如果接收到的所述第二请求为数据存储请求,则执行所述将所述待存储数据存储在所述目标数据库表中的步骤。
其中,所述校验模块包括:
判断单元,用于判断所述源数据库表中的源数据的数据总量与所述目标数据库表中的源数据的数据总量是否相同;
确定单元,用于当所述源数据库表中的源数据的数据总量与所述目标数据库表中的源数据的数据总量相同时,确定所述目标数据库表中的源数据完整。
其中,所述判断单元包括:
第一获取子单元,用于获取所述源数据库表的表结构信息;所述源数据库表的表结构信息包括用于存储所述源数据的列的总个数,以及用于存储所述源数据的列的列名;
第二获取子单元,用于获取所述目标数据库表的表结构信息,所述目标数据库表中的表结构信息包括用于存储所述源数据的列的总个数,以及用于存储所述源数据的列的列名;
第一判断子单元,用于判断所述源数据库表的表结构信息与所述目标数据库表的表结构信息是否相同;
组成子单元,用于当所述源数据库表的表结构信息与所述目标数据库表的表结构信息相同时,将所述源数据库表中的表结构信息与所述目标数据库表中的表结构信息中的相同的列名组成列名组;
统计子单元,用于对于每一个列名组,统计所述列名组中的第一个列名对应的列中的、用于存储源数据的行的第一个数;以及统计所述列名组中的第二个列名对应的列中的、用于存储源数据的行的第二个数;
确定子单元,用于对于每一个列名组,当统计出的所述第一个数与所述第二个数相同时,确定所述源数据库表中的源数据的数据总量与所述目标数据库表中的源数据的数据总量相同。
其中,所述判断单元还包括:
第三获取子单元,用于对于每一个列名组,当统计出的所述第一个数与所述第二个数相同时,从组成的列名组中获取第一预设个数个列名组;
第四获取子单元,用于对于每一个获取的列名组,获取所述列名组中的两个列名对应的列;
第五获取子单元,用于从所述两个列名对应的列中分别获取第二预设个数个、且行编号相同的行中存储的数据;
第二判断子单元,用于判断所述两个列名对应的列中的、所述获取的相同行编号的行中存储的数据是否相同;
所述确定子单元,用于当所述两个列名对应的列中的、所述获取的相同行编号的行中存储的数据相同时,执行所述确定所述源数据库表中的源数据的数据总量与所述目标数据库表中的源数据的数据总量相同的步骤。
进一步地,所述装置还包括:
删除模块,用于当所述目标数据库表中的源数据完整时,删除所述源数据库表中存储的数据。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

Claims (14)

1.一种数据处理方法,其特征在于,所述方法包括:
当开始将源数据库表中存储的源数据向目标数据库表迁移时,检测是否接收到第一请求;
当接收到第一请求时,判断所述第一请求为携带待存储数据的数据存储请求,或,为携带数据标识的数据获取请求;
如果所述第一请求为所述数据获取请求,从所述源数据库表中获取所述第一请求携带的数据标识对应的数据;
如果所述第一请求为所述数据存储请求,将所述第一请求携带的待存储数据分别存储在所述源数据库表和所述目标数据库表中。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当将所述源数据库表中存储的源数据全部迁移至所述目标数据库表时,检测是否接收到第二请求;
当接收到第二请求时,判断所述第二请求为携带待存储数据的数据存储请求,或,为携带数据标识的数据获取请求;
如果所述第二请求为所述数据获取请求,从所述目标数据库表中获取所述第二请求携带的数据标识对应的数据;
如果所述第二请求为所述数据存储请求,将所述第二请求携带的待存储数据存储在所述目标数据库表中。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当将所述源数据库表中存储的源数据全部迁移至所述目标数据库表时,对所述目标数据库表中存储的、从所述源数据库表中迁移的源数据的完整性进行校验;
当所述目标数据库表中存储的、从所述源数据库表中迁移的源数据完整时,如果接收到的所述第二请求为所述数据读取请求,则执行所述从所述目标数据库表中获取所述数据标识对应的数据的步骤;或,如果接收到的所述第二请求为数据存储请求,则执行所述将所述待存储数据存储在所述目标数据库表中的步骤。
4.根据权利要求3所述的方法,其特征在于,所述对所述目标数据库表中存储的、从所述源数据库表中迁移的源数据的完整性进行校验,包括:
判断所述源数据库表中的源数据的数据总量与所述目标数据库表中的源数据的数据总量是否相同;
当所述源数据库表中的源数据的数据总量与所述目标数据库表中的源数据的数据总量相同时,确定所述目标数据库表中的源数据完整。
5.根据权利要求4所述的方法,其特征在于,所述判断所述源数据库表中的源数据的数据总量与所述目标数据库表中的源数据的数据总量是否相同,包括:
获取所述源数据库表的表结构信息;所述源数据库表的表结构信息包括用于存储所述源数据的列的总个数,以及用于存储所述源数据的列的列名;
获取所述目标数据库表的表结构信息,所述目标数据库表中的表结构信息包括用于存储所述源数据的列的总个数,以及用于存储所述源数据的列的列名;
判断所述源数据库表的表结构信息与所述目标数据库表的表结构信息是否相同;
当所述源数据库表的表结构信息与所述目标数据库表的表结构信息相同时,将所述源数据库表中的表结构信息与所述目标数据库表中的表结构信息中的相同的列名组成列名组;
对于每一个列名组,统计所述列名组中的第一个列名对应的列中的、用于存储源数据的行的第一个数;以及统计所述列名组中的第二个列名对应的列中的、用于存储源数据的行的第二个数;
对于每一个列名组,当统计出的所述第一个数与所述第二个数相同时,确定所述源数据库表中的源数据的数据总量与所述目标数据库表中的源数据的数据总量相同。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
对于每一个列名组,当统计出的所述第一个数与所述第二个数相同时,从组成的列名组中获取第一预设个数个列名组;
对于每一个获取的列名组,获取所述列名组中的两个列名对应的列;从所述两个列名对应的列中分别获取第二预设个数个、且行编号相同的行中存储的数据;判断所述两个列名对应的列中的、所述获取的相同行编号的行中存储的数据是否相同;当所述两个列名对应的列中的、所述获取的相同行编号的行中存储的数据相同时,执行所述确定所述源数据库表中的源数据的数据总量与所述目标数据库表中的源数据的数据总量相同的步骤。
7.根据权利要求3-6任一项权利要求所述的方法,其特征在于,所述方法还包括:
当所述目标数据库表中的源数据完整时,删除所述源数据库表中存储的数据。
8.一种数据处理装置,其特征在于,所述装置包括:
第一检测模块,用于当开始将源数据库表中存储的源数据向目标数据库表迁移时,检测是否接收到第一请求;
第一判断模块,用于当接收到第一请求时,判断所述第一请求为携带待存储数据的数据存储请求,或,为携带数据标识的数据获取请求;
第一获取模块,用于如果所述第一请求为所述数据获取请求,从所述源数据库表中获取所述第一请求携带的数据标识对应的数据;
第一存储模块,用于如果所述第一请求为所述数据存储请求,将所述第一请求携带的待存储数据分别存储在所述源数据库表和所述目标数据库表中。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括:
第二检测模块,用于当将所述源数据库表中存储的源数据全部迁移至所述目标数据库表时,检测是否接收到第二请求;
第二判断模块,用于当接收到第二请求时,判断所述第二请求为携带待存储数据的数据存储请求,或,为携带数据标识的数据获取请求;
第二获取模块,用于如果所述第二请求为所述数据获取请求,从所述目标数据库表中获取所述第二请求携带的数据标识对应的数据;
第二存储模块,用于如果所述第二请求为所述数据存储请求,将所述第二请求携带的待存储数据存储在所述目标数据库表中。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:
校验模块,用于当将所述源数据库表中存储的源数据全部迁移至所述目标数据库表时,对所述目标数据库表中存储的、从所述源数据库表中迁移的源数据的完整性进行校验;
所述第二获取模块还用于当所述目标数据库表中存储的、从所述源数据库表中迁移的源数据完整时,如果接收到的所述第二请求为所述数据读取请求,则执行所述从所述目标数据库表中获取所述数据标识对应的数据的步骤;
所述第二存储模块还用于当所述目标数据库表中存储的、从所述源数据库表中迁移的源数据完整时,如果接收到的所述第二请求为数据存储请求,则执行所述将所述待存储数据存储在所述目标数据库表中的步骤。
11.根据权利要求10所述的装置,其特征在于,所述校验模块包括:
判断单元,用于判断所述源数据库表中的源数据的数据总量与所述目标数据库表中的源数据的数据总量是否相同;
确定单元,用于当所述源数据库表中的源数据的数据总量与所述目标数据库表中的源数据的数据总量相同时,确定所述目标数据库表中的源数据完整。
12.根据权利要求11所述的装置,其特征在于,所述判断单元包括:
第一获取子单元,用于获取所述源数据库表的表结构信息;所述源数据库表的表结构信息包括用于存储所述源数据的列的总个数,以及用于存储所述源数据的列的列名;
第二获取子单元,用于获取所述目标数据库表的表结构信息,所述目标数据库表中的表结构信息包括用于存储所述源数据的列的总个数,以及用于存储所述源数据的列的列名;
第一判断子单元,用于判断所述源数据库表的表结构信息与所述目标数据库表的表结构信息是否相同;
组成子单元,用于当所述源数据库表的表结构信息与所述目标数据库表的表结构信息相同时,将所述源数据库表中的表结构信息与所述目标数据库表中的表结构信息中的相同的列名组成列名组;
统计子单元,用于对于每一个列名组,统计所述列名组中的第一个列名对应的列中的、用于存储源数据的行的第一个数;以及统计所述列名组中的第二个列名对应的列中的、用于存储源数据的行的第二个数;
确定子单元,用于对于每一个列名组,当统计出的所述第一个数与所述第二个数相同时,确定所述源数据库表中的源数据的数据总量与所述目标数据库表中的源数据的数据总量相同。
13.根据权利要求12所述的装置,其特征在于,所述判断单元还包括:
第三获取子单元,用于对于每一个列名组,当统计出的所述第一个数与所述第二个数相同时,从组成的列名组中获取第一预设个数个列名组;
第四获取子单元,用于对于每一个获取的列名组,获取所述列名组中的两个列名对应的列;
第五获取子单元,用于从所述两个列名对应的列中分别获取第二预设个数个、且行编号相同的行中存储的数据;
第二判断子单元,用于判断所述两个列名对应的列中的、所述获取的相同行编号的行中存储的数据是否相同;
所述确定子单元,用于当所述两个列名对应的列中的、所述获取的相同行编号的行中存储的数据相同时,执行所述确定所述源数据库表中的源数据的数据总量与所述目标数据库表中的源数据的数据总量相同的步骤。
14.根据权利要求10-13任一项权利要求所述的装置,其特征在于,所述装置还包括:
删除模块,用于当所述目标数据库表中的源数据完整时,删除所述源数据库表中存储的数据。
CN201510726113.4A 2015-10-30 2015-10-30 一种数据处理方法及装置 Pending CN106649335A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510726113.4A CN106649335A (zh) 2015-10-30 2015-10-30 一种数据处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510726113.4A CN106649335A (zh) 2015-10-30 2015-10-30 一种数据处理方法及装置

Publications (1)

Publication Number Publication Date
CN106649335A true CN106649335A (zh) 2017-05-10

Family

ID=58830651

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510726113.4A Pending CN106649335A (zh) 2015-10-30 2015-10-30 一种数据处理方法及装置

Country Status (1)

Country Link
CN (1) CN106649335A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110069489A (zh) * 2017-10-17 2019-07-30 株式会社日立制作所 一种信息处理方法、装置、设备及计算机可读存储介质
WO2020192290A1 (zh) * 2019-03-26 2020-10-01 阿里巴巴集团控股有限公司 一种数据库迁移的方法、装置、设备及计算机可读介质
CN112434015A (zh) * 2020-12-08 2021-03-02 新华三大数据技术有限公司 数据存储的方法、装置、电子设备及介质
CN112685391A (zh) * 2021-03-22 2021-04-20 腾讯科技(深圳)有限公司 一种服务数据迁移方法、装置、计算机设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101945131A (zh) * 2010-09-16 2011-01-12 华中科技大学 一种基于存储虚拟化的数据迁移方法
CN102073462A (zh) * 2010-11-29 2011-05-25 华为技术有限公司 虚拟存储迁移方法、系统和虚拟机监控器
CN102611745A (zh) * 2011-12-31 2012-07-25 成都市华为赛门铁克科技有限公司 文件在线迁移方法、装置和系统
CN103064753A (zh) * 2012-10-25 2013-04-24 浪潮电子信息产业股份有限公司 磁盘阵列三级恢复系统设计方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101945131A (zh) * 2010-09-16 2011-01-12 华中科技大学 一种基于存储虚拟化的数据迁移方法
CN102073462A (zh) * 2010-11-29 2011-05-25 华为技术有限公司 虚拟存储迁移方法、系统和虚拟机监控器
CN102611745A (zh) * 2011-12-31 2012-07-25 成都市华为赛门铁克科技有限公司 文件在线迁移方法、装置和系统
CN103064753A (zh) * 2012-10-25 2013-04-24 浪潮电子信息产业股份有限公司 磁盘阵列三级恢复系统设计方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110069489A (zh) * 2017-10-17 2019-07-30 株式会社日立制作所 一种信息处理方法、装置、设备及计算机可读存储介质
CN110069489B (zh) * 2017-10-17 2023-01-31 株式会社日立制作所 一种信息处理方法、装置、设备及计算机可读存储介质
WO2020192290A1 (zh) * 2019-03-26 2020-10-01 阿里巴巴集团控股有限公司 一种数据库迁移的方法、装置、设备及计算机可读介质
US11308048B2 (en) 2019-03-26 2022-04-19 Beijing Oceanbase Technology Co., Ltd. Database migration method, apparatus, device, and computer-readable medium
CN112434015A (zh) * 2020-12-08 2021-03-02 新华三大数据技术有限公司 数据存储的方法、装置、电子设备及介质
CN112434015B (zh) * 2020-12-08 2022-08-19 新华三大数据技术有限公司 数据存储的方法、装置、电子设备及介质
CN112685391A (zh) * 2021-03-22 2021-04-20 腾讯科技(深圳)有限公司 一种服务数据迁移方法、装置、计算机设备和存储介质
CN112685391B (zh) * 2021-03-22 2021-06-08 腾讯科技(深圳)有限公司 一种服务数据迁移方法、装置、计算机设备和存储介质

Similar Documents

Publication Publication Date Title
CN106649335A (zh) 一种数据处理方法及装置
CN107729383A (zh) 一种索引库生成方法、数据验证方法、装置及平台
CN103902702A (zh) 一种数据存储系统和存储方法
US9684684B2 (en) Index updates using parallel and hybrid execution
CN104268272A (zh) 一种数据唯一性检查方法及装置
US11126606B1 (en) System and method for identifying matching portions of two sets of data in a multiprocessor system
CN107679104B (zh) 大表流式并行高速数据比对方法
CN106980571A (zh) 一种测试用例集的构建方法和设备
CN106649412B (zh) 一种数据处理方法和设备
CN107391265A (zh) 用于进程中检测死锁的方法和设备
CN114281793A (zh) 数据校验方法、装置和系统
CN106326222A (zh) 一种数据处理方法和装置
CN106202110B (zh) 数据质量检测的方法和装置
CN104679829A (zh) 对车牌号进行快速搜索的方法及装置
CN106326439A (zh) 一种实时视频存储、检索方法及装置
CN104424204B (zh) 索引机制合并方法、搜索方法、装置及设备
WO2016040919A4 (en) Read cycles for identifying rfid tags
CN110706108B (zh) 在区块链中并发执行交易的方法和装置
CN107491905A (zh) 一种员工价值评分方法及装置
CN105159826B (zh) 一种定位目标程序中的错误语句的方法和装置
CN108024090A (zh) 一种用于视频监控平台的异常定位方法及装置
CN105718539A (zh) 一种数据库应用方法及装置
CN105868099A (zh) 分支提交差异检测方法及装置
CN114676061A (zh) 一种基于知识图谱自动化固件检测方法
US20130282728A1 (en) Method of querying a data

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20200924

Address after: Grand Cayman Islands

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: Grand Cayman Islands

Applicant before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20200924

Address after: Grand Cayman Islands

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: Grand Cayman Islands

Applicant before: Alibaba Group Holding Ltd.

RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20170510