CN117131023B - 数据表处理方法、装置、计算机设备和可读存储介质 - Google Patents
数据表处理方法、装置、计算机设备和可读存储介质 Download PDFInfo
- Publication number
- CN117131023B CN117131023B CN202311381633.7A CN202311381633A CN117131023B CN 117131023 B CN117131023 B CN 117131023B CN 202311381633 A CN202311381633 A CN 202311381633A CN 117131023 B CN117131023 B CN 117131023B
- Authority
- CN
- China
- Prior art keywords
- migration
- source
- data
- data table
- key value
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title abstract description 21
- 238000013508 migration Methods 0.000 claims abstract description 851
- 230000005012 migration Effects 0.000 claims abstract description 847
- 238000000034 method Methods 0.000 claims abstract description 47
- 238000004590 computer program Methods 0.000 claims abstract description 26
- 238000012545 processing Methods 0.000 claims description 113
- 230000000977 initiatory effect Effects 0.000 claims description 36
- 230000008859 change Effects 0.000 claims description 15
- 238000010276 construction Methods 0.000 claims description 3
- 230000001360 synchronised effect Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000000547 structure data Methods 0.000 description 1
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
- G06F16/214—Database migration support
-
- 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
- G06F16/2228—Indexing 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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
一种数据表处理方法、装置、计算机设备、存储介质和计算机程序产品。该方法包括:获取源数据表的源表结构信息,基于源表结构信息创建目标表结构的目标数据表;确定源数据表中的多个源主键值,多个源主键值用于标识源数据表中的不同源数据;基于源数据表中的源主键值,将源数据表中的源数据逐次迁移至目标数据表,且每次迁移在前一次迁移成功后开始;基于每次迁移的源数据的源主键值生成迁移进度记录;当发生迁移中断,确定迁移中断时的迁移进度记录,根据迁移中断时的迁移进度记录确定中断迁移的源主键值;从中断迁移的源主键值起,继续基于源数据表中的源主键值,将源数据表中的源数据逐次迁移至目标数据表。本方法能够提高数据表的迁移效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据表处理方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
表结构变更是数据库运维过程中必须经历的阶段,但是对于拥有超大数据量的表,执行表结构变更是一个十分耗时的操作。执行一次表结构变更通常需要几小时甚至几天的等待,而在表结构变更的执行过程中,可能由于软件缺陷、硬件故障或者是人为干扰等因素导致执行失败。
按照当前数据库的处理逻辑,一旦执行失败,就会将所有数据回滚,将数据库系统恢复到一个尚未进行表结构变更的状态,如果用户希望继续完成表结构变更,则需要重新执行,这意味着已经迁移的数据均无效,从而导致表结构变更的效率低下。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高效率的数据表处理方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种数据表处理方法。所述方法包括:
获取源数据表的源表结构信息,基于所述源表结构信息创建目标表结构的目标数据表;
确定所述源数据表中的多个源主键值,所述多个源主键值用于分别标识所述源数据表中的不同源数据;
基于所述源数据表中的源主键值,将所述源数据表中的源数据逐次迁移至所述目标数据表,且每次迁移在前一次迁移成功后开始;
基于每次迁移的源数据的源主键值生成迁移进度记录;
当发生迁移中断的情况,确定迁移中断时的迁移进度记录,并根据所述迁移中断时的迁移进度记录确定中断迁移的源主键值;
从中断迁移的源主键值起,继续基于所述源数据表中的源主键值,将所述源数据表中的源数据逐次迁移至所述目标数据表。
第二方面,本申请还提供了一种数据表处理装置。所述装置包括:
变更模块,用于获取源数据表的源表结构信息,基于所述源表结构信息创建目标表结构的目标数据表;
第一确定模块,用于确定所述源数据表中的多个源主键值,所述多个源主键值用于分别标识所述源数据表中的不同源数据;
第一迁移模块,用于基于所述源数据表中的源主键值,将所述源数据表中的源数据逐次迁移至所述目标数据表,且每次迁移在前一次迁移成功后开始;
生成模块,用于基于每次迁移的源数据的源主键值生成迁移进度记录;
第二确定模块,用于当发生迁移中断的情况,确定迁移中断时的迁移进度记录,并根据所述迁移中断时的迁移进度记录确定中断迁移的源主键值;
第二迁移模块,用于从中断迁移的源主键值起,继续基于所述源数据表中的源主键值,将所述源数据表中的源数据逐次迁移至所述目标数据表。
在一个实施例中,所述源数据表中的源主键值作为所述目标数据表中的目标主键值;所述第二确定模块,还用于当发生迁移中断的情况,确定迁移中断时的迁移进度记录,并查询迁移中断时所述目标数据表中的目标主键值;基于所述目标主键值更新所述迁移中断时的迁移进度记录;根据更新的迁移进度记录确定中断迁移的源主键值。
在一个实施例中,所述迁移进度记录存储在进度数据表中;所述第二确定模块,还用于确定所述进度数据表中的联合主键,所述联合主键是所述源数据表的表名与数据库的库名的组合,所述数据库用于存储所述源数据表;基于所述联合主键和更新的迁移进度记录,确定所述源数据表中中断迁移的源主键值。
在一个实施例中,所述装置还包括:
构建模块,用于获取所述源数据表的表名,确定存储所述源数据表的数据库的库名;构建进度数据表,所述进度数据表包括表字段名、库字段名和记录字段名;所述迁移进度记录,作为所述记录字段名的记录字段内容;将所述源数据表的表名作为所述表字段名下的表字段内容,并将所述数据库的库名作为所述库字段名下的库字段内容;将所述表字段内容和所述库字段内容,配置为所述进度数据表的联合主键。
在一个实施例中,所述第一迁移模块,还用于基于所述源数据表中的多个所述源主键值在所述源数据表中的位置,确定多个所述源主键值对应的迁移顺序;按照多个所述源主键值对应的迁移顺序,将所述源数据表中的源主键值和源数据逐次迁移至所述目标数据表。
在一个实施例中,所述装置还包括:
添加模块,用于确定每次迁移的源数据的源主键值在所述源数据表中所处的位置,在所述位置处添加所述迁移进度记录;
所述第二确定模块,还用于当发生迁移中断的情况,从所述源数据表中确定迁移中断时的迁移进度记录所处的位置;将所述迁移中断时的迁移进度记录所处位置处的源主键值,作为中断迁移的源主键值。
在一个实施例中,所述源数据表中的源主键值和源数据以键值对形式存储,所述源主键值作为键,所述源主键值标识的源数据作为键对应的值;所述装置还包括:
添加模块,用于确定所述源数据表中的每个键值对所对应的索引数据,所述索引数据包括键值对中的源主键值和源数据;将每次迁移的源数据的源主键值生成的迁移进度记录,添加到每次迁移的源数据所属键值对所对应的索引数据中;
所述第二确定模块,还用于当发生迁移中断的情况,查询每个所述键值对所对应的索引数据,获得迁移中断时的迁移进度记录所属的索引数据;将获得的索引数据包括的源主键值,作为中断迁移的源主键值。
在一个实施例中,所述索引数据包括索引键数据,所述索引键数据包括所述键值对中的源主键值和源数据;所述添加模块,还用于确定每次迁移的源数据所属的索引键数据;将基于每次迁移的源数据的源主键值生成的迁移进度记录,作为每次迁移的源数据所属的索引键数据对应的索引值数据;
所述第二确定模块,还用于当发生迁移中断的情况,基于各所述索引键数据查询各所述索引值数据,获得迁移中断时的索引值数据;将获得的索引值数据对应的索引键数据包括的源主键值,确定为中断迁移的源主键值。
在一个实施例中,所述添加模块,还用于将基于每次迁移的源数据的源主键值生成的迁移进度记录,添加至每次迁移的源数据所属的索引键数据中;
所述第二确定模块,还用于当发生迁移中断的情况,查询各所述索引键数据,获得迁移中断时的迁移进度记录所属的索引键数据;将获得的索引键数据包括的源主键值,确定为中断迁移的源主键值。
在一个实施例中,所述装置还包括:
同步模块,用于建立所述源数据表和所述目标数据表之间的关联关系;记录所述源数据表的迁移发起时间;当在所述迁移发起时间后接收到针对所述源数据表的数据处理请求,基于所述关联关系将所述数据处理请求在所述源数据表中的处理操作,同步至所述目标数据表中。
在一个实施例中,所述同步模块,还用于当在所述迁移发起时间后接收到针对所述源数据表的数据处理请求,确定所述数据处理请求的类型;基于所述关联关系,确定与所述数据处理请求的类型相匹配的触发器;通过与所述数据处理请求的类型相匹配的触发器,将所述数据处理请求在所述源数据表中的处理操作,同步至所述目标数据表中。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取源数据表的源表结构信息,基于所述源表结构信息创建目标表结构的目标数据表;
确定所述源数据表中的多个源主键值,所述多个源主键值用于分别标识所述源数据表中的不同源数据;
基于所述源数据表中的源主键值,将所述源数据表中的源数据逐次迁移至所述目标数据表,且每次迁移在前一次迁移成功后开始;
基于每次迁移的源数据的源主键值生成迁移进度记录;
当发生迁移中断的情况,确定迁移中断时的迁移进度记录,并根据所述迁移中断时的迁移进度记录确定中断迁移的源主键值;
从中断迁移的源主键值起,继续基于所述源数据表中的源主键值,将所述源数据表中的源数据逐次迁移至所述目标数据表。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取源数据表的源表结构信息,基于所述源表结构信息创建目标表结构的目标数据表;
确定所述源数据表中的多个源主键值,所述多个源主键值用于分别标识所述源数据表中的不同源数据;
基于所述源数据表中的源主键值,将所述源数据表中的源数据逐次迁移至所述目标数据表,且每次迁移在前一次迁移成功后开始;
基于每次迁移的源数据的源主键值生成迁移进度记录;
当发生迁移中断的情况,确定迁移中断时的迁移进度记录,并根据所述迁移中断时的迁移进度记录确定中断迁移的源主键值;
从中断迁移的源主键值起,继续基于所述源数据表中的源主键值,将所述源数据表中的源数据逐次迁移至所述目标数据表。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取源数据表的源表结构信息,基于所述源表结构信息创建目标表结构的目标数据表;
确定所述源数据表中的多个源主键值,所述多个源主键值用于分别标识所述源数据表中的不同源数据;
基于所述源数据表中的源主键值,将所述源数据表中的源数据逐次迁移至所述目标数据表,且每次迁移在前一次迁移成功后开始;
基于每次迁移的源数据的源主键值生成迁移进度记录;
当发生迁移中断的情况,确定迁移中断时的迁移进度记录,并根据所述迁移中断时的迁移进度记录确定中断迁移的源主键值;
从中断迁移的源主键值起,继续基于所述源数据表中的源主键值,将所述源数据表中的源数据逐次迁移至所述目标数据表。
上述数据表处理方法、装置、计算机设备、存储介质和计算机程序产品,通过获取源数据表的源表结构信息,基于源表结构信息创建目标表结构的目标数据表,以基于源数据表的结构信息创建新的数据表,以及确定数据迁移的来源和数据接收方。确定源数据表中的多个源主键值,多个源主键值用于分别标识源数据表中的不同源数据,以实现对不同源数据的迁移。基于源数据表中的源主键值,将源数据表中的源数据逐次迁移至目标数据表,且每次迁移在前一次迁移成功后开始,以保证每次迁移均在前一次迁移成功后执行,从而确保数据迁移的连贯性和准确性。基于每次迁移的源数据的源主键值生成迁移进度记录,使得在发生迁移中断的情况下,能够获取迁移中断时的迁移进度记录,以确定源数据表中的哪些数据已经迁移成功,哪些数据未迁移成功。根据迁移中断时的迁移进度记录确定中断迁移的源主键值,从而能够从中断迁移的源主键值起,继续向目标数据表迁移源数据表中未迁移的数据,而无需从头开始迁移,有效解决了表结构变更失败带来的负面影响,提高了数据迁移的效率。
附图说明
图1为一个实施例中数据表处理方法的应用环境图;
图2为一个实施例中数据表处理方法的流程示意图;
图3为一个实施例中源数据表中的源主键值和源数据的示意图;
图4为一个实施例中目标数据表的示意图;
图5为一个实施例中更新迁移进度记录的示意图;
图6为一个实施例中构建的进度数据表的示意图;
图7为其中一个实施例中根据迁移中断时的迁移进度记录确定中断迁移的源主键值的流程示意图;
图8为一个实施例中在源主键值在源数据表中所处的位置添加迁移进度记录的示意图;
图9为其中一个实施例中根据迁移中断时的迁移进度记录确定中断迁移的源主键值的流程示意图;
图10为一个实施例中将基于每次迁移的源数据的源主键值生成的迁移进度记录,添加到每次迁移的源数据所属键值对所对应的索引数据中的流程示意图;
图11为一个实施例中将迁移进度记录作为索引键数据对应的索引值数据的示意图;
图12为一个实施例中将迁移进度记录添加至源数据所属的索引键数据中的示意图;
图13为一个实施例中基于关联关系,将数据处理请求在源数据表中的处理操作同步至目标数据表中的示意图;
图14为一个实施例中数据表处理装置的结构框图;
图15为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的数据表处理方法涉及的数据表可以为大数据仓库中的数据表。其中大数据(Big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。随着云时代的来临,大数据也吸引了越来越多的关注,大数据需要特殊的技术,以有效地处理大量的容忍经过时间内的数据。适用于大数据的技术,包括大规模并行处理数据库、数据挖掘、分布式文件系统、分布式数据库、云计算平台、互联网和可扩展的存储系统。
数据库(Database),简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
数据库管理系统(Database Management System,DBMS)是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。数据库管理系统可以依据它所支持的数据库模型来作分类,例如关系式、XML(Extensible Markup Language,可扩展标记语言);或依据所支持的计算机类型来作分类,例如服务器群集、移动电话;或依据所用查询语言来作分类,例如SQL(Structured Query Language,结构化查询语言)、XQuery;或依据性能冲量重点来作分类,例如最大规模、最高运行速度;亦或其他的分类方式。不论使用哪种分类方式,一些DBMS能够跨类别,例如,同时支持多种查询语言。
本申请实施例提供的数据表处理方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他服务器上。终端102和服务器104均可单独执行本申请实施例中提供的数据表处理方法。终端102和服务器104也可协同用于执行本申请实施例中提供的数据表处理方法。当终端102和服务器104协同用于执行本申请实施例中提供的数据表处理方法时,终端102获取源数据表,并将源数据表发送给服务器104。服务器104获取源数据表的源表结构信息,基于所述源表结构信息创建目标表结构的目标数据表,服务器104确定源数据表中的多个源主键值,多个源主键值用于分别标识源数据表中的不同源数据。服务器104基于源数据表中的源主键值,将源数据表中的源数据逐次迁移至目标数据表,且每次迁移在前一次迁移成功后开始。服务器104基于每次迁移的源数据的源主键值生成迁移进度记录。当发生迁移中断的情况,服务器104确定迁移中断时的迁移进度记录,并根据迁移中断时的迁移进度记录确定中断迁移的源主键值。从中断迁移的源主键值起,服务器104继续基于源数据表中的源主键值,将源数据表中的源数据逐次迁移至目标数据表。
其中,终端102可以但不限于是各种台式计算机、笔记本电脑、智能手机、平板电脑、智能语音交互设备、智能家电、车载终端、飞行器等。该终端102上可运行应用程序,该应用程序可以是通信应用、音视频应用和图像处理应用等。服务器104可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
在一个实施例中,如图2所示,提供了一种数据表处理方法,以该方法应用于计算机设备(计算机设备可以是图1中的终端或服务器)为例进行说明,包括以下步骤:
步骤S202,获取源数据表的源表结构信息,基于源表结构信息创建目标表结构的目标数据表。
其中,源数据表是指需要进行数据迁移的数据表。数据表的“列”称为“字段”,每个字段包含某一专题的信息。字段名通常为数据表中每一列的列名,用于对该列中的数据进行泛化表示,就像“通讯录”数据库中,“姓名”、“联系电话”这些都是数据表中所有行共有的属性,所以这些列的字段名为“姓名”和“联系电话”。字段内容是指数据表中每一列的具体数据记录,例如,字段名为“姓名”所对应的字段内容为“张XX”、“李XX”等。
源表结构信息是形成源数据表的表结构的相关信息,源数据表的表结构即数据结构,是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据记录的集合。源表结构信息定义了源数据表的表名、字段个数、字段名、字段类型等,还可以定义数据长度、主键、外键和索引等信息。
目标数据表是指接收源数据表的迁移数据的数据表。目标数据表具有目标表结构的数据表,目标表结构是指目标数据表的表结构。目标数据表在被创建时,仅具有表结构,并未存储数据。
具体地,计算机设备可确定需要进行数据迁移的源数据表,获取该源数据表的源表结构信息,对源表结构信息进行调整,获得目标表结构信息,基于所述目标表结构信息创建目标数据表,所创建的目标数据表具有目标表结构。
例如,源表结构信息定义了源数据表包括3个字段,字段名分别为:字段1、字段2和字段3,计算机设备对源表结构信息进行调整,以增加一个新的字段,获得的目标表结构信息包括4个字段,字段名分别为:字段1、字段2、字段3和字段4。
在一个实施例中,当存在多张需要进行数据迁移的源数据表,计算机设备可确定每张源数据表的源表结构;当多张源数据表的源表结构相同,基于多张源数据表的源表结构生成一张目标表结构的目标数据表。
当多张源数据表的源表结构不同,调整多张源数据表的源表结构,以生成相同结构的多张数据表,再基于相同结构的多张数据表,生成一张目标表结构的目标数据表。
步骤S204,确定源数据表中的多个源主键值,该多个源主键值用于分别标识源数据表中的不同源数据。
其中,一个数据表有一个主键,一个主键可具有多个主键值,每个主键值用于唯一的标识数据表中的一条记录。源数据表的主键即源主键,该源主键具有多个源主键值。多个源主键值各不相同,即多个源主键值不是相同的值,例如,3个源主键值分别为1、2、3。
多个源主键值用于分别标识源数据表中的不同源数据。每个源主键值用于唯一标识源数据表中的源数据。源数据为源数据表中的一条记录,例如,源数据是指源数据表中的一行数据中除该行的源主键值以外的数据,如图3所示。
具体地,计算机设备可确定源数据表中的源主键,并确定该源主键的多个源主键值。一个源主键值用于标识该源数据表中的一条源数据。
例如,一个源数据表中有5列数据,5列数据形成4行数据。第1列为主键列,则第1列中每行的元素即为源主键值,第1列中的源主键值用于标识第1行的源数据。第1行源数据,是指第2-5列的第1行的元素。
步骤S206,基于源数据表中的源主键值,将源数据表中的源数据逐次迁移至目标数据表,且每次迁移在前一次迁移成功后开始。
具体地,计算机设备基于源数据表中的每个源主键值,将源数据表中每个源主键值和源主键值标识的源数据逐次迁移至目标数据表。每次迁移在前一次迁移成功后开始。
计算机设备每次可迁移至少一个源主键值和至少一个源主键值所标识的源数据。例如,每次迁移一个源主键值和该源主键值所标识的源数据,在本次迁移成功后,进行下一次迁移。或者,计算机设备每次迁移预设数量个源主键值和预设数量个源主键值所标识的源数据。
步骤S208,基于每次迁移的源数据的源主键值生成迁移进度记录。
其中,迁移进度记录,用于记录源数据表中的数据迁移的进度,可以包括迁移的源主键值或源主键值在源数据表中的位置中的至少一种,还可以包括迁移时间、迁移状态等。迁移时间具体可以是迁移的发起时间或结束时间中的至少一种。迁移状态,用于表征迁移成功或迁移失败。迁移状态可通过预设状态位表征,且可通过不同的预设状态位表示不同的迁移状态。例如,通过1表征迁移成功,通过0表征迁移失败,具体可根据需求设置。
每次迁移形成的迁移进度记录,可以记录每次迁移的每条源数据的源主键值的迁移状态。例如,每次从源数据表中迁移50行数据,迁移第1-50行所形成的迁移进度记录中可记录每行的源主键值的迁移状态,比如:第1行迁移成功、第2行迁移成功、……、第50行迁移成功。当迁移第51-100行的过程中,第51-60行迁移成功,第61行起迁移失败,则本次的迁移进度记录如:第51行迁移成功、第52行迁移成功、……、第61行迁移失败。
每次迁移形成的迁移进度记录,可以是在每次迁移只记录一个迁移状态,例如,迁移第1-50行所形成的迁移进度记录为“迁移成功”,表示第1-50行数据均迁移成功。迁移第51-100行所形成的迁移进度记录为“迁移失败”,表示第51-100行数据在迁移时产生中断,后续可确定具体在哪行数据产生中断,以确定中断迁移的源主键值,也可以将第51行的源主键值作为中断迁移的源主键值。
该迁移进度记录,具体可以是记录每次迁移的源主键值和源数据的迁移进度。
具体地,在每次数据迁移中,计算机设备可生成每个数据迁移的迁移进度记录。该迁移进度记录可在每次数据迁移到目标数据表后生成,也可以在每次数据迁移到目标数据表之前生成。
迁移进度记录在每次数据迁移到目标数据表后生成,例如,第一行数据的源主键值为“1”,将第一行的数据迁移到目标数据表后,生成如“1迁移成功”的迁移进度记录。
迁移进度记录在每次数据迁移到目标数据表后生成,则每次的迁移进度记录中记录了迁移成功的源数据的源主键值或该源主键值在源数据表中的位置。
在每次数据迁移到目标数据表之前生成,可以是在已确定本次迁移的数据后且未迁移到目标数据表之前生成,则迁移进度记录中记录本次要迁移的源数据的源主键值或该源主键值在源数据表中的位置。例如,计算机设备确定本次迁移第1-3行数据,则拷贝了第1-3行数据后,生成“迁移1-3行”的迁移进度记录。
步骤S210,当发生迁移中断的情况,确定迁移中断时的迁移进度记录,并根据迁移中断时的迁移进度记录确定中断迁移的源主键值。
其中,迁移中断是指由于硬件或软件故障,或者是人为干扰等因素导致源数据表的迁移发生中断的现象。
具体地,当在源数据表的数据迁移过程中发生迁移中断的情况,计算机设备可从每次迁移的迁移进度记录中,确定迁移中断时的迁移进度记录,并根据迁移中断时的迁移进度记录确定中断迁移的源主键值。
本实施例中,计算机设备可确定迁移中断时的迁移进度记录中所记录的源主键值,将该源主键值作为中断迁移的源主键值。
本实施例中,当迁移中断时的迁移进度记录中记录了多个源主键值,可确定多个源主键值在源数据表中的位置,基于各位置确定中断迁移的源主键值。
当迁移中断时的迁移进度记录中还记录了多个源主键值的迁移状态,将表征迁移失败的迁移状态对应的源主键值作为中断迁移的源主键值。当迁移中断时的迁移进度记录中记录了多个源主键值的迁移状态,且多个源主键值的迁移状态均表征迁移成功,则可根据多个源主键值在源数据表中的位置,确定位置最小的源主键值在源数据表中的下一个源主键值,将下一个源主键值作为中断迁移的源主键值。
例如,迁移中断时的迁移进度记录中记录了3个源主键值,3个源主键值在源数据表中分别处于第51行、第52行和第53行的位置,可将第51行的源主键值作为中断迁移的源主键值。当该迁移进度记录中还记录了3个源主键值对应的迁移状态,如:第51行迁移成功、第52行迁移成功、第53行迁移失败,则可将第53行的源主键值作为中断迁移的源主键值。
当该迁移中断时的迁移进度记录为:第51行迁移成功、第52行迁移成功、第53行迁移成功,则可将第54行的源主键值作为中断迁移的源主键值。
步骤S212,从中断迁移的源主键值起,继续基于源数据表中的源主键值,将源数据表中的源数据逐次迁移至目标数据表。
具体地,当确定迁移中断的源主键值后,计算机设备从中断迁移的源主键值起,继续基于源数据表中的该源主键值和该源主键值之后的其余源主键值,将源数据表中的该源主键值标识的源数据和其余源主键值标识的源数据,逐次迁移至目标数据表。
上述数据表处理方法中,获取源数据表的源表结构信息,基于源表结构信息创建目标表结构的目标数据表,以基于源数据表的结构数据创建新的数据表,以及确定数据迁移的来源和数据接收方。确定源数据表中的多个源主键值,多个源主键值用于分别标识源数据表中的不同源数据,以实现对不同源数据的迁移。基于源数据表中的源主键值,将源数据表中的源数据逐次迁移至目标数据表,且每次迁移在前一次迁移成功后开始,以保证每次迁移均在前一次迁移成功后执行,从而确保数据迁移的连贯性和准确性。基于每次迁移的源数据的源主键值生成迁移进度记录,使得在发生迁移中断的情况下,能够获取迁移中断时的迁移进度记录,以确定源数据表中的哪些数据已经迁移成功,哪些数据未迁移成功。根据迁移中断时的迁移进度记录确定中断迁移的源主键值,从而能够从中断迁移的源主键值起,继续向目标数据表迁移源数据表中未迁移的数据,而无需从头开始迁移,有效解决了表结构变更失败带来的负面影响,提高了数据迁移的效率。
在一个实施例中,源数据表中的源主键值作为目标数据表中的目标主键值;当发生迁移中断的情况,确定迁移中断时的迁移进度记录,并根据迁移中断时的迁移进度记录确定中断迁移的源主键值,包括:
当发生迁移中断的情况,确定迁移中断时的迁移进度记录,并查询迁移中断时目标数据表中的目标主键值;基于目标主键值更新迁移中断时的迁移进度记录;根据更新的迁移进度记录确定中断迁移的源主键值。
具体地,计算机设备将源数据表中的源主键作为目标数据表中的目标主键,将源数据表中的源主键值作为目标数据表中的目标主键值,将源数据表中的源数据作为目标数据表中的目标数据。该目标主键即具有多个目标主键值,多个目标主键值用于分别标识目标数据表中的不同目标数据。
本实施例中,目标数据表中的目标主键为显式主键。
计算机设备基于源数据表中的源主键值,将源数据表中的源数据逐次迁移至目标数据表,每次迁移时,将每次迁移的源主键值和该源主键值所标识的源数据迁移到目标数据表中,并将每次迁移的源主键值作为目标数据表中的目标主键值。
当在源数据表的数据迁移过程中发生迁移中断的情况,计算机设备可从每次迁移的迁移进度记录中,确定迁移中断时的迁移进度记录,并根据迁移中断时的迁移进度记录确定中断迁移的源主键值,或该源主键值在源数据表中的位置。计算机设备查询迁移中断时目标数据表中的目标主键值,当迁移中断时目标数据表中的目标主键值与迁移中断时的迁移进度记录中记录的源主键值不一致时,基于目标主键值更新迁移中断时的迁移进度记录,即将迁移中断时的迁移进度记录中记录的源主键值,替换为迁移中断时目标数据表中的目标主键值,从而获得更新的迁移进度记录。
本实施例中,计算机设备可确定迁移中断时目标数据表中的最大目标主键值,将迁移中断时的迁移进度记录中记录的源主键值,替换为该最大目标主键值,获得更新的迁移进度记录。如图4所示,迁移中断时目标数据表中的最大目标主键值为150,即迁移到第150行,而如图5所示,迁移进度记录中记录的中断迁移的源主键值为100,则可将迁移进度记录的源主键值从100更新为150,使得后续从第150行数据开始继续迁移。
进一步地,当迁移中断时的迁移进度记录中记录了中断迁移的源主键值在源数据表中的位置,计算机设备基于该目标主键值更新中断迁移的源主键值在源数据表中的位置。
计算机设备根据更新的迁移进度记录确定中断迁移的源主键值或该源主键在源数据表中的位置。
本实施例中,源数据表中的源主键值作为目标数据表中的目标主键值,当发生迁移中断的情况,确定迁移中断时的迁移进度记录,并查询迁移中断时目标数据表中的目标主键值,该目标主键值是数据迁移成功和失败的分界点,则基于目标主键值更新迁移中断时的迁移进度记录,使得迁移进度记录中记录的中断迁移的源主键值更准确,从而能够从该中断迁移的源主键值起继续执行数据迁移,能够准确地确定再次迁移时的迁移发起位置,避免了部分已迁移成功的数据需要再次迁移,有利于提高数据迁移的精准性和迁移速度。
在一个实施例中,迁移进度记录存储在进度数据表中;根据更新的迁移进度记录确定中断迁移的源主键值,包括:
确定进度数据表中的联合主键,联合主键是源数据表的表名与数据库的库名的组合,数据库用于存储源数据表;基于联合主键和更新的迁移进度记录,确定源数据表中中断迁移的源主键值。
其中,进度数据表,是用于存储迁移进度记录的数据表。联合主键,是指进度数据表的主键是由该进度数据表中多个字段组成的,例如,将进度数据表中的表字段名和库字段名共同配置作为主键,则为进度数据表的联合主键。表字段名和库字段名配置为联合主键,即表示表字段名下的表字段内容和库字段名下的库字段内容作为联合主键。
具体地,计算机设备将每次迁移生成的迁移进度记录写入进度数据表,或者,计算机设备基于每次迁移的源数据的源主键值,在进度数据表中生成迁移进度记录。
当发生迁移中断的情况,计算机设备确定进度数据表中的联合主键,基于该联合主键查询产生迁移中断的源数据表和该源数据表所存储在哪个数据库。
计算机设备从进度数据表中查询迁移中断时的迁移进度记录,以确定迁移中断时目标数据表中的目标主键值,基于目标主键值更新迁移中断时的迁移进度记录,获得更新的迁移进度记录。
计算机设备基于联合主键查询到该数据库中的该源数据表,从而基于更新的迁移进度记录,确定该源数据表中中断迁移的源主键值,以从该数据库的该源数据表中的中断迁移的源主键值起,继续执行数据迁移。
本实施例中,确定进度数据表中的联合主键,联合主键是源数据表的表名与数据库的库名的组合,数据库用于存储源数据表,从而能够确定是哪张数据表产生的迁移中断现象,以及产生的迁移中断现象的数据表存储在哪个数据库,使得基于联合主键和更新的迁移进度记录,确定源数据表中中断迁移的源主键值后,继续执行该数据库的数据表的数据迁移,保证数据迁移的准确性。
在一个实施例中,该方法还包括:
获取源数据表的表名,确定存储源数据表的数据库的库名;构建进度数据表,该进度数据表包括表字段名、库字段名和记录字段名;迁移进度记录,作为记录字段名的记录字段内容;将源数据表的表名作为表字段名下的表字段内容,并将数据库的库名作为库字段名下的库字段内容;将表字段内容和库字段内容,配置为进度数据表的联合主键。
具体地,计算机设备获取源数据表的表名,确定存储源数据表的数据库,获取该数据库的库名。计算机设备构建进度数据表,所构建的进度数据表包括表字段名、库字段名和记录字段名。将源数据表的表名作为表字段名下的表字段内容,并将数据库的库名作为库字段名下的库字段内容。计算机设备将表字段名和库字段名配置为进度数据表的联合主键,即将表字段内容和库字段内容,配置为进度数据表的联合主键。
在每次从源数据表中迁移数据,将生成的迁移进度记录写入进度数据表的记录字段名下,即将迁移进度记录作为记录字段名的记录字段内容。
例如,进度数据表t_ddl_break_point,该进度数据表t_ddl_break_point用于持久化记录断点K,断点K即迁移中断的源主键值。该t_ddl_break_point的定义如下:
CREATE TABLE t_ddl_break_point (
db_name VARCHAR(256), // 执行ddl库名
table_name VARCHAR(256), // 执行ddl的表名
break_point VARCHAR(256), // 记录断点,断点可能是各种数据类型;
PRIMARY KEY(db_name,table_name) // 库表名构成联合主键,以快速识别需要断点续传的表
);
所生成的进度数据表如图6所示,该进度数据表包括表字段名、库字段名和记录字段名等。
本实施例中,获取源数据表的表名,确定存储源数据表的数据库的库名,以构建进度数据表,该进度数据表包括表字段名、库字段名和记录字段名。迁移进度记录作为记录字段名的记录字段内容,使得能够从该进度数据表中查询到迁移进度记录。将源数据表的表名作为表字段名下的表字段内容,并将数据库的库名作为库字段名下的库字段内容,将表字段内容和库字段内容,配置为进度数据表的联合主键,从而能够快速识别需要断点续传的数据表。
在一个实施例中,基于所述源数据表中的源主键值,将所述源数据表中的源数据逐次迁移至所述目标数据表,包括:
基于源数据表中的多个源主键值在源数据表中的位置,确定多个源主键值对应的迁移顺序;按照多个源主键值对应的迁移顺序,将源数据表中的源主键值和源数据逐次迁移至目标数据表。
具体地,计算机设备可确定每个源主键值在源数据表中的位置,基于源数据表中的多个源主键值在源数据表中的位置,确定多个源主键值对应的迁移顺序。按照多个源主键值对应的迁移顺序,将源数据表中的源主键值和源数据逐次迁移至目标数据表。
本实施例中,基于源数据表中的多个源主键值在源数据表中的位置,确定多个源主键值对应的迁移顺序,以按照多个源主键值对应的迁移顺序,将源数据表中的源主键值和源数据逐次迁移至目标数据表,能够保证迁移后的各个源数据的顺序不会被打乱,从而保证了数据的准确性。
在一个实施例中,如图7所示,该方法还包括:
步骤S702,确定每次迁移的源数据的源主键值在源数据表中所处的位置,在位置处添加迁移进度记录。
具体地,计算机设备可确定每次迁移的源数据的源主键值在源数据表中所处的位置,在生成迁移进度记录后,将迁移进度记录添加在源数据表中的该位置处,以指示每次数据迁移的源主键值。
如图8所示,在源主键值1标识的源数据迁移成功后,在源主键值1的位置处添加迁移进度记录“成功”。
本实施例中,迁移进度记录可通过预设状态位表征,则可通过预设状态位表示源主键值和源数据的迁移状态,例如,在源主键值1的位置处添加预设状态位“1”,则表示该源主键值和源数据迁移成功。在源主键值1的位置处添加预设状态位“0”,则表示该源主键值和源数据迁移失败。
本实施例中,可在每次迁移前或迁移后,将迁移进度记录添加到相应源主键值所处的位置处。
当发生迁移中断的情况,确定迁移中断时的迁移进度记录,并根据迁移中断时的迁移进度记录确定中断迁移的源主键值,包括:
步骤S704,当发生迁移中断的情况,从源数据表中确定迁移中断时的迁移进度记录所处的位置。
具体地,当发生迁移中断的情况,计算机设备查询源数据表中的源主键值,以确定存在迁移进度记录的源主键值,从这些迁移进度记录中确定迁移中断时的迁移进度记录,并确定迁移中断时的迁移进度记录所处的位置。
步骤S706,将迁移中断时的迁移进度记录所处位置处的源主键值,作为中断迁移的源主键值。
具体地,确定在迁移中断时的迁移进度记录所处位置处的源主键值,将该源主键值作为中断迁移的源主键值。
本实施例中,确定每次迁移的源数据的源主键值在源数据表中所处的位置,在位置处添加迁移进度记录,从而能够直接标记出源数据表中的哪些数据已经迁移了哪些还没有迁移。并且,当发生迁移中断的情况,从源数据表中可以快速、准确地确定出迁移中断时的迁移进度记录所处的位置,以将迁移中断时的迁移进度记录所处位置处的源主键值,作为中断迁移的源主键值,从而能够从该位置处继续执行数据迁移,避免了迁移中断导致全部数据需要重新迁移的情况。
在一个实施例中,如图9所示,源数据表中的源主键值和源数据以键值对形式存储,源主键值作为键,源主键值标识的源数据作为键对应的值;该方法还包括:
步骤S902,确定源数据表中的每个键值对所对应的索引数据,该索引数据包括键值对中的源主键值和源数据。
其中,源数据表中的源主键值和源数据以键值对形式存储。源主键值作为键,作为键的源主键值所标识的源数据作为该键对应的值。索引数据是用于在源数据表中查询源主键值和源数据的信息。一个索引数据包括一个键值对中的源主键值和源数据。每个键值对对应不同的索引数据。
本实施例中,该索引数据也是以键值对形式存储,索引数据包括索引键数据和索引值数据,键即为索引键数据,值即为索引值数据。
具体地,计算机设备确定源数据表中的每个键值对,针对每个键值对,计算机设备确定所针对键值对所对应的索引数据,所针对键值对所对应的索引数据包括针对键值对中的键和值,即包括针对键值对中作为键的源主键值和作为值的源数据。
步骤S904,将基于每次迁移的源数据的源主键值生成的迁移进度记录,添加到每次迁移的源数据所属键值对所对应的索引数据中。
具体地,针对每次迁移,确定所针对迁移的源数据所属键值对所对应的索引数据,在基于所针对迁移的源数据的源主键值生成迁移进度记录后,将该迁移进度记录添加到所针对迁移的源数据所属键值对所对应的索引数据中。
本实施例中,索引数据包括索引键数据和索引值数据,则计算机设备将所针对迁移生成的迁移进度记录,添加到相应的索引数据包括索引键数据或索引值数据中。
当发生迁移中断的情况,确定迁移中断时的迁移进度记录,并根据迁移中断时的迁移进度记录确定中断迁移的源主键值,包括:
步骤S906,当发生迁移中断的情况,查询每个键值对所对应的索引数据,获得迁移中断时的迁移进度记录所属的索引数据。
具体地,当发生迁移中断的情况,计算机设备查询每个键值对所对应的索引数据,以获得迁移中断时的迁移进度记录所属的索引数据。
进一步地,当发生迁移中断的情况,计算机设备按顺序遍历每个键值对所对应的索引数据,当当前遍历的索引数据中存在迁移进度记录,且当前遍历的索引数据之后的索引数据中不存在迁移进度记录,则将当前遍历的索引数据,作为迁移中断时的迁移进度记录所属的索引数据。
步骤S908,将获得的索引数据包括的源主键值,作为中断迁移的源主键值。
具体地,计算机设备确定迁移中断时的迁移进度记录所属的索引数据,确定该索引数据包括的源主键值,将该源主键值作为中断迁移的源主键值。
本实施例中,源数据表中的源主键值和源数据以键值对形式存储,源主键值作为键,源主键值标识的源数据作为键对应的值,从而能够通过每个键获取对应的值。确定源数据表中的每个键值对所对应的索引数据,索引数据包括键值对中的源主键值和源数据,将基于每次迁移的源数据的源主键值生成的迁移进度记录,添加到每次迁移的源数据所属键值对所对应的索引数据中,使得能够在索引数据中增加迁移进度记录,以直接标记出那些数据已经迁移,使得在发生迁移中断的情况,能够查询每个键值对所对应的索引数据,快速准确地确定出迁移中断时的迁移进度记录所属的索引数据,从而准确确定出作为中断迁移的源主键值。
在一个实施例中,如图10所示,索引数据包括索引键数据,索引键数据包括键值对中的源主键值和源数据;将基于每次迁移的源数据的源主键值生成的迁移进度记录,添加到每次迁移的源数据所属键值对所对应的索引数据中,包括:
步骤S1002,确定每次迁移的源数据所属的索引键数据。
其中,索引数据包括索引键数据,索引键数据包括键值对中的源主键值和源数据。
具体地,在每次迁移中,计算机设备确定每次迁移的源数据所属的索引键数据。
步骤S1004,将基于每次迁移的源数据的源主键值生成的迁移进度记录,作为每次迁移的源数据所属的索引键数据对应的索引值数据。
具体地,计算机设备基于每次迁移的源数据的源主键值生成迁移进度记录,获得每次迁移的迁移进度记录。
计算机设备将每次迁移的迁移进度记录,作为每次迁移的源数据所属的索引键数据对应的索引值数据,使得每个索引数据包括索引键数据和索引值数据,该索引值数据为迁移进度记录。
如图11所示,源主键值1标识源数据1,则索引键数据K1为:源主键值1+源数据1,迁移该条数据后,将迁移进度记录1作为该索引数据K1对应的索引值数据V1。源主键值2标识源数据2,则索引键数据K2为:源主键值2+源数据2,迁移该条数据后,将迁移进度记录2作为该索引数据K2对应的索引值数据V2。
源主键值3标识源数据3,则索引键数据K3为:源主键值3+源数据3,迁移该条数据后,将迁移进度记录3作为该索引数据K3对应的索引值数据V3。
源主键值4标识源数据4,则索引键数据K4为:源主键值4+源数据4,迁移该条数据后,将迁移进度记录4作为该索引数据K4对应的索引值数据V4。
当发生迁移中断的情况,查询每个键值对所对应的索引数据,获得迁移中断时的迁移进度记录所属的索引数据,包括:
步骤S1006,当发生迁移中断的情况,基于各索引键数据查询各索引值数据,获得迁移中断时的索引值数据。
具体地,当发生迁移中断的情况,计算机设备基于各索引键数据查询各索引值数据,获得迁移中断时的索引值数据。进一步地,当发生迁移中断的情况,计算机设备按照各索引键数据的顺序依次遍历各索引值数据,当当前遍历的索引键数据存在索引值数据,且当前遍历的索引键数据之后索引键数据不存在对应的索引值数据,则将当前遍历的索引键数据对应的索引值数据,作为迁移中断时的索引值数据,该迁移中断时的索引值数据即为迁移中断时的迁移进度记录。
将获得的索引数据包括的源主键值,作为中断迁移的源主键值,包括:
步骤S1008,将获得的索引值数据对应的索引键数据包括的源主键值,确定为中断迁移的源主键值。
具体地,计算机设备确定迁移中断时的索引值数据对应的索引键数据,将该索引键数据包括的源主键值,确定为中断迁移的源主键值。
本实施例中,确定每次迁移的源数据所属的索引键数据,将基于每次迁移的源数据的源主键值生成的迁移进度记录,作为每次迁移的源数据所属的索引键数据对应的索引值数据,从而能够通过索引信息直接查询到源数据表中的哪些数据已经迁移,使得在发生迁移中断的情况时,可基于各索引键数据查询各索引值数据,以快速获得迁移中断时的索引值数据,从而快速确定中断迁移的源主键值。
在一个实施例中,该方法还包括:
将基于每次迁移的源数据的源主键值生成的迁移进度记录,添加至每次迁移的源数据所属的索引键数据中;当发生迁移中断的情况,查询各索引键数据,获得迁移中断时的迁移进度记录所属的索引键数据;将获得的索引键数据包括的源主键值,确定为中断迁移的源主键值。
具体地,计算机设备基于每次迁移的源数据的源主键值生成每次迁移的迁移进度记录,还可以将每次迁移的迁移进度记录,添加至每次迁移的源数据所属的索引键数据中。
如图12所示,源主键值1标识源数据1,未迁移数据时,索引键数据K1为:源主键值1+源数据1,迁移该条数据后,将迁移进度记录1添加到该索引键数据K1中,形成索引键数据K1:源主键值1+源数据1+迁移进度记录1。类似地,索引键数据K2:源主键值2+源数据2+迁移进度记录2,索引键数据K3:源主键值3+源数据3+迁移进度记录3,索引键数据K4:源主键值4+源数据4+迁移进度记录4。
当发生迁移中断的情况,计算机设备查询各索引键数据,以确定哪些数据已迁移哪些未迁移,从而获得迁移中断时的迁移进度记录所属的索引键数据。
进一步地,计算机设备查询各索引键数据,当索引键数据中包括有迁移进度记录,表示迁移已执行到该位置或该索引键数据所指示的源数据已迁移。当索引键数据不包括迁移进度记录,表示迁移未执行到该位置或正好执行到该位置时发生中断。当当前查询的索引键数据包括有迁移进度记录,且当前查询的索引键数据的下一索引键数据不包括迁移进度记录,则将当前查询的索引键数据包括的源主键值,作为中断迁移的源主键值。
本实施例中,将基于每次迁移的源数据的源主键值生成的迁移进度记录,添加至每次迁移的源数据所属的索引键数据中,使得能够在索引数据的索引键数据中增加迁移进度记录,以直接标记出那些数据已经迁移,使得在发生迁移中断的情况,通过查询索引数据的索引键数据,即可快速确定出迁移中断时的索引键数据,从而准确确定出作为中断迁移的源主键值。
在一个实施例中,该方法还包括:
建立源数据表和目标数据表之间的关联关系;记录源数据表的迁移发起时间;当在迁移发起时间后接收到针对源数据表的数据处理请求,基于关联关系将数据处理请求在源数据表中的处理操作,同步至目标数据表中。
具体地,计算机设备可建立源数据表和目标数据表之间的关联关系。当发起源数据表的数据迁移时,记录迁移发起时间。该迁移发起时间可以是首次发起源数据表的数据迁移的时刻。
当在迁移发起时间后接收到针对源数据表的数据处理请求,计算机设备在源数据表中执行与数据处理请求所指示的处理操作,并基于关联关系将在源数据表中的该处理操作,同步至目标数据表中。即,在源数据表和目标数据表中均执行该处理操作。
如图13所示,在进行数据拷贝之前,建立源数据表t1和目标数据表t1_new之间的关联关系。源数据表t1通过托马斯写的形式向目标数据表t1_new中迁移数据,在这个迁移过程中,可能存在对源数据表的访问请求,例如插入数据、更新数据或删除数据等一种或多种处理操作。由于源数据表t1和目标数据表t1_new之间已经建立了关联关系,对于源数据表t1上的处理操作可以直接同步到t1_new上。
例如,访问请求发生的时间为T_ddl,那么在T_ddl之前源数据表t1中已有的数据通过数据拷贝回填迁移到目标数据表t1_new,而T_ddl之后源数据表产生的新数据将通过写转发同步到目标数据表t1_new,这样可以保证访问期间产生的数据不会影响数据的迁移,且产生的新数据会同步到目标数据表中,不会有数据丢失的问题。
如图13中,DDL(data definition language,数据库模式定义语言)在进行数据拷贝的过程中,例如,源数据中的数据已经拷贝至源主键值=4的位置,若此时发生了DML(DataManipulation Language,数据操纵语言):将主键=2处的b修改为3。按照传统意义上的拷贝操作,此时的DML进行的数据修改操作已经无法被DDL感知,也就是目标数据表t1_new上主键a=2处的b值仍为2,不会被更改,则会出现数据丢失的问题。而本实施例中,建立了源数据表t1_old与目标数据表t1_new之间的关联关系,则在源数据表t1_old上的数据修改操作可以转发到目标数据表t1_new上,基于托马斯写规则,数据修改操作也会在t1_new上生效,这也就保证了DDL进行期间DML数据不丢失。
本实施例中,建立源数据表和目标数据表之间的关联关系,记录源数据表的迁移发起时间,已将源数据表中在迁移发起时间前的数据作为已有数据,将迁移发起时间后的产生的数据作为新数据。当在迁移发起时间后接收到针对源数据表的数据处理请求,基于关联关系将数据处理请求在源数据表中的处理操作,同步至目标数据表中,使得在数据迁移期间能够允许对源数据表的正常访问。并且,可以保证访问期间产生的数据不会影响数据的迁移,且产生的新数据会同步到目标数据表中,不会存在数据丢失的问题。
在一个实施例中,当在迁移发起时间后接收到针对源数据表的数据处理请求,基于关联关系将数据处理请求在源数据表中的处理操作,同步至目标数据表中,包括:
当在迁移发起时间后接收到针对源数据表的数据处理请求,确定数据处理请求的类型;基于关联关系,确定与数据处理请求的类型相匹配的触发器;通过与数据处理请求的类型相匹配的触发器,将数据处理请求在源数据表中的处理操作,同步至目标数据表中。
具体地,当接收到针对源数据表的数据处理请求,计算机设备可确定接收到数据处理请求的时间,当该时间在迁移发起时间之后,计算机设备确定数据处理请求的类型,基于关联关系确定与数据处理请求的类型相匹配的触发器。通过与数据处理请求的类型相匹配的触发器,在源数据表中执行数据处理请求所指示的处理操作,并在目标数据表中执行该处理操作。
本实施例中,预先为源数据表设置插入触发器、更新触发器或删除触发器中的至少一种触发器;插入触发器用于将源数据表中插入的数据同步插入至目标数据表中;更新触发器用于将源数据表中更新的数据同步更新至目标数据表中;删除触发器用于将源数据表中删除的数据同步从目标数据表中删除。
本实施例中,当在迁移发起时间后接收到针对源数据表的数据处理请求,确定数据处理请求的类型,基于关联关系,确定与数据处理请求的类型相匹配的触发器,通过与数据处理请求的类型相匹配的触发器,将数据处理请求在源数据表中的处理操作,同步至目标数据表中,使得在数据迁移期间能够允许对源数据表的正常访问。并且,保证访问期间产生的数据不会影响数据的迁移,而产生的新数据会同步到目标数据表中,不会存在数据丢失的问题。
在一个实施例中,提供了一种数据表处理方法,应用于计算机设备,包括:
获取源数据表的源表结构信息,基于源表结构信息创建目标表结构的目标数据表;建立源数据表和目标数据表之间的关联关系;
获取源数据表的表名,确定存储源数据表的数据库的库名;构建进度数据表,进度数据表包括表字段名、库字段名和记录字段名;将源数据表的表名作为表字段名下的表字段内容,并将数据库的库名作为库字段名下的库字段内容;将表字段内容和库字段内容,配置为进度数据表的联合主键。
确定源数据表中的多个源主键值,多个源主键值用于分别标识源数据表中的不同源数据;
基于源数据表中的多个源主键值在源数据表中的位置,确定多个源主键值对应的迁移顺序;按照多个源主键值对应的迁移顺序,将源数据表中的源主键值和源数据逐次迁移至目标数据表,且每次迁移在前一次迁移成功后开始;记录首次迁移的迁移发起时间;
基于每次迁移的源数据的源主键值生成迁移进度记录,将每次迁移的迁移进度记录写入进度数据表中记录字段名下,作为记录字段名的记录字段内容。
当发生迁移中断的情况,从进度数据表中确定迁移中断时的迁移进度记录,并根据迁移中断时的迁移进度记录确定中断迁移的源主键值。
基于进度数据表中的联合主键,确定存储在数据库中的该源数据表,从该数据表中中断迁移的源主键值起,继续基于该源数据表中的源主键值,将源数据表中的源主键值和源数据逐次迁移至目标数据表。
当在迁移发起时间后接收到针对源数据表的数据处理请求,确定数据处理请求的类型;基于关联关系,确定与数据处理请求的类型相匹配的触发器;通过与数据处理请求的类型相匹配的触发器,将数据处理请求在源数据表中的处理操作,同步至目标数据表中。
本实施例中,获取对源数据表进行结构变更获得的目标数据表,以确定数据迁移的来源和数据接收方。获取源数据表的表名,确定存储源数据表的数据库的库名,以构建进度数据表,该进度数据表包括表字段名、库字段名和记录字段名。迁移进度记录作为记录字段名的记录字段内容,使得能够从该进度数据表中查询到迁移进度记录。将源数据表的表名作为表字段名下的表字段内容,并将数据库的库名作为库字段名下的库字段内容,将表字段内容和库字段内容,配置为进度数据表的联合主键,从而能够快速识别需要断点续传的数据表。
确定源数据表中的多个源主键值,多个源主键值用于分别标识源数据表中的不同源数据,以实现对不同源数据的迁移。基于源数据表中的多个源主键值在源数据表中的位置,确定多个源主键值对应的迁移顺序,以按照多个源主键值对应的迁移顺序,将源数据表中的源主键值和源数据逐次迁移至目标数据表,能够保证迁移后的各个源数据的顺序不会被打乱,从而保证了数据的准确性。
并且,每次迁移在前一次迁移成功后开始,以保证每次迁移均在前一次迁移成功后执行,从而确保数据迁移的连贯性和准确性。
基于每次迁移的源数据的源主键值生成迁移进度记录,使得在发生迁移中断的情况下,能够获取迁移中断时的迁移进度记录,以确定源数据表中的哪些数据已经迁移成功,哪些数据未迁移成功。
确定进度数据表中的联合主键,联合主键是源数据表的表名与数据库的库名的组合,数据库用于存储源数据表,从而能够确定是哪张数据表产生的迁移中断现象,以及产生的迁移中断现象的数据表存储在哪个数据库,使得基于联合主键和更新的迁移进度记录,确定源数据表中中断迁移的源主键值后,继续执行该数据库的数据表的数据迁移,而无需从头开始迁移,有效解决了表结构变更失败带来的负面影响,提高了数据迁移的效率。
在一个实施例中,提供了一种数据表处理方法的应用场景,包括:
在数据库中,每张表都有显式或者隐式的主键(PRIMARY KEY),主键能够唯一标识数据表中数据行的字段或者字段的联合。通用的DDL执行方式是依据新的表定义创建一张新数据表(t_new),再将源数据表(t_old)中的数据依次写入到新数据表中去。而本实施例中,源数据表存储在基于键值数据结构的预设存储引擎中,源主键的多个源主键值存储是有顺序的,并且按数据的字典顺序进行排列,而进行数据拷贝的扫描阶段也是按照源主键值的顺序进行的。数据拷贝即数据迁移,将源数据表中的数据迁移到目标数据表中。
例如,源数据表t1_old中的多个源主键值为1-10,则在将数据迁移到目标数据表t1_new的过程中,也是按照1-10的顺序依次进行迁移的,则当迁移执行到某个阶段失败中断时,就会存在一个源主键值K,它分割了已经被迁移的数据和尚未被迁移的数据,可以称这个源主键值K为断点。
在将源数据表t1_old中的数据迁移到目标数据表t1_new的过程中,周期性地记录当前已经扫描到的源主键值,并将该源主键值记录到进度记录表t_ddl_break_point中。
断点存储周期的设置,就是每隔一段时间更新一次进度记录t_ddl_break_point,更新方式如下:
每从源数据表中扫描一行数据就生成一个迁移进度记录,则更新一次t_ddl_break_point ,使得断点精度可以控制在行级别;
或者,设置一个时间周期,每过一个时间周期就生成一个迁移进度记录,则更新一次t_ddl_break_point;
或者,设置一个数据行范围,每到一个数据行范围就生成一个迁移进度记录,则更新一次t_ddl_break_point;例如,每迁移50行数据就生成一个迁移进度记录。
或者,在目标数据表t1_new中设置显式主键,即联合主键,则可通过查询目标数据表t1_new中的目标主键值的最大值,即可确定当前迁移到哪一行了,则可根据目标主键值的最大值,更新t_ddl_break_point中的最新断点值。
当迁移中断时,客户端会收到失败提醒,此时分布式数据库系统会根据库表名查询t_ddl_break_point中是否存在相应断点,如果存在,则跳过该断点之前的所有数据行,从断点处继续执行数据迁移。
该分布式数据库系统,主要包含两大功能模块,负责全局信息管控的MetaCluster(以下简称MC)以及负责计算与数据存储的HyperNode(以下简称HN)。HN基于自研的高效存储引擎TDStore(以下简称TS)进行数据存储,并且数据是分布式存储的。通过HN(HyperNode)提供的断点信息直接从数据层进行定位,可以在极短的时间内完成数据断点的搜寻。
并且,本实施例中,在数据迁移期间允许进行DML:
在进行数据拷贝之前,建立源数据表t1和目标数据表t1_new之间的关联关系。源数据表t1通过托马斯写的形式向目标数据表t1_new中迁移数据,在这个迁移过程中,可能存在对源数据表的访问请求,例如插入数据、更新数据或删除数据等一种或多种处理操作。由于源数据表t1和目标数据表t1_new之间已经建立了关联关系,对于源数据表t1上的处理操作可以直接同步到t1_new上。
例如,访问请求发生的时间为T_ddl,那么在T_ddl之前源数据表t1中已有的数据通过数据拷贝回填迁移到目标数据表t1_new,而T_ddl之后源数据表产生的新数据将通过写转发同步到目标数据表t1_new,这样可以保证访问期间产生的数据不会影响数据的迁移,且产生的新数据会同步到目标数据表中,不会有数据丢失的问题。
传统的表结构变更会影响在线业务,可能导致数据异常,并且大表的表结构变更失败,会导致大量的时间损失。而本实施例中的数据表处理方法,是一种断点续传机制,允许表结构变更过程中发生失败,让数据库能够记住表结构变更的进度,当表结构变更过程发生错误而退出时,再次执行相同的表结构变更命令,数据库能够找到上一次执行中断的位置,并以此位置为基础,继续执行表结构变更操作,使得用户不必担心表结构变更失败带来的负面影响,也不用担心大量的等待时间被浪费,从而能够提高表结构变更的处理效率。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的数据表处理方法的数据表处理装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个数据表处理装置实施例中的具体限定可以参见上文中对于数据表处理方法的限定,在此不再赘述。
在一个实施例中,如图14所示,提供了一种数据表处理装置1400,包括变更模块1402、第一确定模块1404、第一迁移模块1406、生成模块1408、第二确定模块1410和第二迁移模块1412,其中:
变更模块1402,用于获取源数据表的源表结构信息,基于源表结构信息创建目标表结构的目标数据表。
第一确定模块1404,用于确定源数据表中的多个源主键值,多个源主键值用于分别标识源数据表中的不同源数据。
第一迁移模块1406,用于基于源数据表中的源主键值,将源数据表中的源数据逐次迁移至目标数据表,且每次迁移在前一次迁移成功后开始。
生成模块1408,用于基于每次迁移的源数据的源主键值生成迁移进度记录。
第二确定模块1410,用于当发生迁移中断的情况,确定迁移中断时的迁移进度记录,并根据迁移中断时的迁移进度记录确定中断迁移的源主键值。
第二迁移模块1412,用于从中断迁移的源主键值起,继续基于源数据表中的源主键值,将源数据表中的源数据逐次迁移至目标数据表。
本实施例中,获取源数据表的源表结构信息,基于源表结构信息创建目标表结构的目标数据表,以基于源数据表的结构信息创建新的数据表,以及确定数据迁移的来源和数据接收方。确定源数据表中的多个源主键值,多个源主键值用于分别标识源数据表中的不同源数据,以实现对不同源数据的迁移。基于源数据表中的源主键值,将源数据表中的源数据逐次迁移至目标数据表,且每次迁移在前一次迁移成功后开始,以保证每次迁移均在前一次迁移成功后执行,从而确保数据迁移的连贯性和准确性。基于每次迁移的源数据的源主键值生成迁移进度记录,使得在发生迁移中断的情况下,能够获取迁移中断时的迁移进度记录,以确定源数据表中的哪些数据已经迁移成功,哪些数据未迁移成功。根据迁移中断时的迁移进度记录确定中断迁移的源主键值,从而能够从中断迁移的源主键值起,继续向目标数据表迁移源数据表中未迁移的数据,而无需从头开始迁移,有效解决了表结构变更失败带来的负面影响,提高了数据迁移的效率。
在一个实施例中,源数据表中的源主键值作为目标数据表中的目标主键值;第二确定模块1410,还用于当发生迁移中断的情况,确定迁移中断时的迁移进度记录,并查询迁移中断时目标数据表中的目标主键值;基于目标主键值更新迁移中断时的迁移进度记录;根据更新的迁移进度记录确定中断迁移的源主键值。
本实施例中,源数据表中的源主键值作为目标数据表中的目标主键值,当发生迁移中断的情况,确定迁移中断时的迁移进度记录,并查询迁移中断时目标数据表中的目标主键值,该目标主键值是数据迁移成功和失败的分界点,则基于目标主键值更新迁移中断时的迁移进度记录,使得迁移进度记录中记录的中断迁移的源主键值更准确,从而能够从该中断迁移的源主键值起继续执行数据迁移,能够准确地确定再次迁移时的迁移发起位置,避免了部分已迁移成功的数据需要再次迁移,有利于提高数据迁移的精准性和迁移速度。
在一个实施例中,迁移进度记录存储在进度数据表中;第二确定模块1410,还用于确定进度数据表中的联合主键,联合主键是源数据表的表名与数据库的库名的组合,数据库用于存储源数据表;基于联合主键和更新的迁移进度记录,确定源数据表中中断迁移的源主键值。
本实施例中,确定进度数据表中的联合主键,联合主键是源数据表的表名与数据库的库名的组合,数据库用于存储源数据表,从而能够确定是哪张数据表产生的迁移中断现象,以及产生的迁移中断现象的数据表存储在哪个数据库,使得基于联合主键和更新的迁移进度记录,确定源数据表中中断迁移的源主键值后,继续执行该数据库的数据表的数据迁移,保证数据迁移的准确性。
在一个实施例中,该装置还包括:
构建模块,用于获取源数据表的表名,确定存储源数据表的数据库的库名;构建进度数据表,进度数据表包括表字段名、库字段名和记录字段名;迁移进度记录,作为记录字段名的记录字段内容;将源数据表的表名作为表字段名下的表字段内容,并将数据库的库名作为库字段名下的库字段内容;将表字段内容和库字段内容,配置为进度数据表的联合主键。
本实施例中,获取源数据表的表名,确定存储源数据表的数据库的库名,以构建进度数据表,该进度数据表包括表字段名、库字段名和记录字段名。迁移进度记录作为记录字段名的记录字段内容,使得能够从该进度数据表中查询到迁移进度记录。将源数据表的表名作为表字段名下的表字段内容,并将数据库的库名作为库字段名下的库字段内容,将表字段内容和库字段内容,配置为进度数据表的联合主键,从而能够快速识别需要断点续传的数据表。
在一个实施例中,第一迁移模块1406,还用于基于源数据表中的多个源主键值在源数据表中的位置,确定多个源主键值对应的迁移顺序;按照多个源主键值对应的迁移顺序,将源数据表中的源主键值和源数据逐次迁移至目标数据表。
本实施例中,基于源数据表中的多个源主键值在源数据表中的位置,确定多个源主键值对应的迁移顺序,以按照多个源主键值对应的迁移顺序,将源数据表中的源主键值和源数据逐次迁移至目标数据表,能够保证迁移后的各个源数据的顺序不会被打乱,从而保证了数据的准确性。
在一个实施例中,该装置还包括:
添加模块,用于确定每次迁移的源数据的源主键值在源数据表中所处的位置,在位置处添加迁移进度记录;
第二确定模块1410,还用于当发生迁移中断的情况,从源数据表中确定迁移中断时的迁移进度记录所处的位置;将迁移中断时的迁移进度记录所处位置处的源主键值,作为中断迁移的源主键值。
本实施例中,确定每次迁移的源数据的源主键值在源数据表中所处的位置,在位置处添加迁移进度记录,从而能够直接标记出源数据表中的哪些数据已经迁移了哪些还没有迁移。并且,当发生迁移中断的情况,从源数据表中可以快速、准确地确定出迁移中断时的迁移进度记录所处的位置,以将迁移中断时的迁移进度记录所处位置处的源主键值,作为中断迁移的源主键值,从而能够从该位置处继续执行数据迁移,避免了迁移中断导致全部数据需要重新迁移的情况。
在一个实施例中,源数据表中的源主键值和源数据以键值对形式存储,源主键值作为键,源主键值标识的源数据作为键对应的值;该装置还包括:
添加模块,用于确定源数据表中的每个键值对所对应的索引数据,索引数据包括键值对中的源主键值和源数据;将每次迁移的源数据的源主键值生成的迁移进度记录,添加到每次迁移的源数据所属键值对所对应的索引数据中;
第二确定模块1410,还用于当发生迁移中断的情况,查询每个键值对所对应的索引数据,获得迁移中断时的迁移进度记录所属的索引数据;将获得的索引数据包括的源主键值,作为中断迁移的源主键值。
本实施例中,源数据表中的源主键值和源数据以键值对形式存储,源主键值作为键,源主键值标识的源数据作为键对应的值,从而能够通过每个键获取对应的值。确定源数据表中的每个键值对所对应的索引数据,索引数据包括键值对中的源主键值和源数据,将基于每次迁移的源数据的源主键值生成的迁移进度记录,添加到每次迁移的源数据所属键值对所对应的索引数据中,使得能够在索引数据中增加迁移进度记录,以直接标记出那些数据已经迁移,使得在发生迁移中断的情况,能够查询每个键值对所对应的索引数据,快速准确地确定出迁移中断时的迁移进度记录所属的索引数据,从而准确确定出作为中断迁移的源主键值。
在一个实施例中,索引数据包括索引键数据,索引键数据包括键值对中的源主键值和源数据;添加模块,还用于确定每次迁移的源数据所属的索引键数据;将基于每次迁移的源数据的源主键值生成的迁移进度记录,作为每次迁移的源数据所属的索引键数据对应的索引值数据;
第二确定模块1410,还用于当发生迁移中断的情况,基于各索引键数据查询各索引值数据,获得迁移中断时的索引值数据;将获得的索引值数据对应的索引键数据包括的源主键值,确定为中断迁移的源主键值。
本实施例中,确定每次迁移的源数据所属的索引键数据,将基于每次迁移的源数据的源主键值生成的迁移进度记录,作为每次迁移的源数据所属的索引键数据对应的索引值数据,从而能够通过索引信息直接查询到源数据表中的哪些数据已经迁移,使得在发生迁移中断的情况时,可基于各索引键数据查询各索引值数据,以快速获得迁移中断时的索引值数据,从而快速确定中断迁移的源主键值。
在一个实施例中,添加模块,还用于将基于每次迁移的源数据的源主键值生成的迁移进度记录,添加至每次迁移的源数据所属的索引键数据中;
第二确定模块1410,还用于当发生迁移中断的情况,查询各索引键数据,获得迁移中断时的迁移进度记录所属的索引键数据;将获得的索引键数据包括的源主键值,确定为中断迁移的源主键值。
本实施例中,将基于每次迁移的源数据的源主键值生成的迁移进度记录,添加至每次迁移的源数据所属的索引键数据中,使得能够在索引数据的索引键数据中增加迁移进度记录,以直接标记出那些数据已经迁移,使得在发生迁移中断的情况,通过查询索引数据的索引键数据,即可快速确定出迁移中断时的索引键数据,从而准确确定出作为中断迁移的源主键值。
在一个实施例中,该装置还包括:
同步模块,用于建立源数据表和目标数据表之间的关联关系;记录源数据表的迁移发起时间;当在迁移发起时间后接收到针对源数据表的数据处理请求,基于关联关系将数据处理请求在源数据表中的处理操作,同步至目标数据表中。
本实施例中,建立源数据表和目标数据表之间的关联关系,记录源数据表的迁移发起时间,已将源数据表中在迁移发起时间前的数据作为已有数据,将迁移发起时间后的产生的数据作为新数据。当在迁移发起时间后接收到针对源数据表的数据处理请求,基于关联关系将数据处理请求在源数据表中的处理操作,同步至目标数据表中,使得在数据迁移期间能够允许对源数据表的正常访问。并且,可以保证访问期间产生的数据不会影响数据的迁移,且产生的新数据会同步到目标数据表中,不会存在数据丢失的问题。
在一个实施例中,同步模块,还用于当在迁移发起时间后接收到针对源数据表的数据处理请求,确定数据处理请求的类型;基于关联关系,确定与数据处理请求的类型相匹配的触发器;通过与数据处理请求的类型相匹配的触发器,将数据处理请求在源数据表中的处理操作,同步至目标数据表中。
本实施例中,当在迁移发起时间后接收到针对源数据表的数据处理请求,确定数据处理请求的类型,基于关联关系,确定与数据处理请求的类型相匹配的触发器,通过与数据处理请求的类型相匹配的触发器,将数据处理请求在源数据表中的处理操作,同步至目标数据表中,使得在数据迁移期间能够允许对源数据表的正常访问。并且,保证访问期间产生的数据不会影响数据的迁移,而产生的新数据会同步到目标数据表中,不会存在数据丢失的问题。
上述数据表处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端或服务器。以服务器为例,其内部结构图可以如图15所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据表处理数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据表处理方法。
本领域技术人员可以理解,图15中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要符合相关规定。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (17)
1.一种数据表处理方法,其特征在于,所述方法包括:
获取源数据表的源表结构信息,基于所述源表结构信息创建目标表结构的目标数据表,并建立所述源数据表和所述目标数据表之间的关联关系;
获取所述源数据表的表名,并确定存储所述源数据表的数据库的库名;
构建包括表字段名、库字段名和记录字段名的进度数据表,将所述源数据表的表名作为所述表字段名对应的表字段内容,并将所述数据库的库名作为所述库字段名对应的库字段内容;
将所述表字段内容和所述库字段内容,配置为所述进度数据表的联合主键;
确定所述源数据表中的多个源主键值,所述多个源主键值用于分别标识所述源数据表中的不同源数据;
基于所述多个源主键值在所述源数据表中的位置,确定所述多个源主键值各自对应的迁移顺序;
按照所述源数据表中的多个源主键值对应的迁移顺序,将所述源数据表中的源主键值和源数据逐次迁移至所述目标数据表,且每次迁移在前一次迁移成功后开始,并记录首次迁移的迁移发起时间;
基于每次迁移的源数据的源主键值生成迁移进度记录,将每次迁移的迁移进度记录作为所述记录字段名的记录字段内容写入所述进度数据表;
当发生迁移中断的情况,从所述进度数据表中确定迁移中断时的迁移进度记录,并根据迁移中断时的迁移进度记录确定中断迁移的源主键值;
基于所述进度数据表中的联合主键,查找所述中断迁移的源主键值在所述数据库中所属的源数据表;
从查找到的所述源数据表中中断迁移的源主键值起,继续按照所述源数据表中的源主键值对应的迁移顺序,将所述源数据表中的源主键值和源数据逐次迁移至所述目标数据表;
当在所述迁移发起时间后接收到针对所述源数据表的数据处理请求,基于所述关联关系将所述数据处理请求在所述源数据表中的处理操作,同步至所述目标数据表中。
2.根据权利要求1所述的方法,其特征在于,所述源数据表中的源主键值作为所述目标数据表中的目标主键值;所述方法还包括:
当发生迁移中断的情况,确定迁移中断时的迁移进度记录,并查询迁移中断时所述目标数据表中的目标主键值;
基于所述目标主键值更新所述迁移中断时的迁移进度记录;
根据更新的迁移进度记录确定中断迁移的源主键值。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定每次迁移的源数据的源主键值在所述源数据表中所处的位置,在所述位置处添加所述迁移进度记录;
当发生迁移中断的情况,从所述源数据表中确定迁移中断时的迁移进度记录所处的位置;
将所述迁移中断时的迁移进度记录所处位置处的源主键值,作为中断迁移的源主键值。
4.根据权利要求1所述的方法,其特征在于,所述源数据表中的源主键值和源数据以键值对形式存储,所述源主键值作为键,所述源主键值标识的源数据作为键对应的值;所述方法还包括:
确定所述源数据表中的每个键值对所对应的索引数据,所述索引数据包括键值对中的源主键值和源数据;
将基于每次迁移的源数据的源主键值生成的迁移进度记录,添加到每次迁移的源数据所属键值对所对应的索引数据中;
当发生迁移中断的情况,查询每个所述键值对所对应的索引数据,获得迁移中断时的迁移进度记录所属的索引数据;
将获得的索引数据对应的键值对中的源主键值,作为中断迁移的源主键值。
5.根据权利要求4所述的方法,其特征在于,所述索引数据包括索引键数据,所述索引键数据包括所述键值对中的源主键值和源数据;所述将基于每次迁移的源数据的源主键值生成的迁移进度记录,添加到每次迁移的源数据所属键值对所对应的索引数据中,包括:
确定每次迁移的源数据所属的索引键数据;
将基于每次迁移的源数据的源主键值生成的迁移进度记录,作为每次迁移的源数据所属的索引键数据对应的索引值数据;
所述当发生迁移中断的情况,查询每个所述键值对所对应的索引数据,获得迁移中断时的迁移进度记录所属的索引数据,包括:
当发生迁移中断的情况,基于各所述索引键数据查询各所述索引值数据,获得迁移中断时的索引值数据;
所述将获得的索引数据对应的键值对中的源主键值,作为中断迁移的源主键值,包括:
将获得的索引值数据对应的索引键数据包括的源主键值,确定为中断迁移的源主键值。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
将基于每次迁移的源数据的源主键值生成的迁移进度记录,添加至每次迁移的源数据所属的索引键数据中;
当发生迁移中断的情况,查询各所述索引键数据,获得迁移中断时的迁移进度记录所属的索引键数据;
将获得的索引键数据包括的源主键值,确定为中断迁移的源主键值。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述当在所述迁移发起时间后接收到针对所述源数据表的数据处理请求,基于所述关联关系将所述数据处理请求在所述源数据表中的处理操作,同步至所述目标数据表中,包括:
当在所述迁移发起时间后接收到针对所述源数据表的数据处理请求,确定所述数据处理请求的类型;
基于所述关联关系,确定与所述数据处理请求的类型相匹配的触发器;
通过与所述数据处理请求的类型相匹配的触发器,将所述数据处理请求在所述源数据表中的处理操作,同步至所述目标数据表中。
8.一种数据表处理装置,其特征在于,所述装置包括:
变更模块,用于获取源数据表的源表结构信息,基于所述源表结构信息创建目标表结构的目标数据表;
同步模块,用于建立所述源数据表和所述目标数据表之间的关联关系;
构建模块,用于获取所述源数据表的表名,并确定存储所述源数据表的数据库的库名;构建包括表字段名、库字段名和记录字段名的进度数据表,将所述源数据表的表名作为所述表字段名对应的表字段内容,并将所述数据库的库名作为所述库字段名对应的库字段内容;将所述表字段内容和所述库字段内容,配置为所述进度数据表的联合主键;
第一确定模块,用于确定所述源数据表中的多个源主键值,所述多个源主键值用于分别标识所述源数据表中的不同源数据;
第一迁移模块,用于基于所述多个源主键值在所述源数据表中的位置,确定所述多个源主键值各自对应的迁移顺序;按照所述源数据表中的多个源主键值对应的迁移顺序,将所述源数据表中的源主键值和源数据逐次迁移至所述目标数据表,且每次迁移在前一次迁移成功后开始,并记录首次迁移的迁移发起时间;
生成模块,用于基于每次迁移的源数据的源主键值生成迁移进度记录,将每次迁移的迁移进度记录作为所述记录字段名的记录字段内容写入所述进度数据表;
第二确定模块,用于当发生迁移中断的情况,从所述进度数据表中确定迁移中断时的迁移进度记录,并根据迁移中断时的迁移进度记录确定中断迁移的源主键值;基于所述进度数据表中的联合主键,查找所述中断迁移的源主键值在所述数据库中所属的源数据表;
第二迁移模块,用于从查找到的所述源数据表中中断迁移的源主键值起,继续按照所述源数据表中的源主键值对应的迁移顺序,将所述源数据表中的源主键值和源数据逐次迁移至所述目标数据表;
所述同步模块,还用于当在所述迁移发起时间后接收到针对所述源数据表的数据处理请求,基于所述关联关系将所述数据处理请求在所述源数据表中的处理操作,同步至所述目标数据表中。
9.根据权利要求8所述的装置,其特征在于,所述源数据表中的源主键值作为所述目标数据表中的目标主键值;所述第二确定模块,还用于当发生迁移中断的情况,确定迁移中断时的迁移进度记录,并查询迁移中断时所述目标数据表中的目标主键值;基于所述目标主键值更新所述迁移中断时的迁移进度记录;根据更新的迁移进度记录确定中断迁移的源主键值。
10.根据权利要求8所述的装置,其特征在于,所述第一迁移模块,还用于确定每次迁移的源数据的源主键值在所述源数据表中所处的位置,在所述位置处添加所述迁移进度记录;当发生迁移中断的情况,从所述源数据表中确定迁移中断时的迁移进度记录所处的位置;将所述迁移中断时的迁移进度记录所处位置处的源主键值,作为中断迁移的源主键值。
11.根据权利要求8所述的装置,其特征在于,所述源数据表中的源主键值和源数据以键值对形式存储,所述源主键值作为键,所述源主键值标识的源数据作为键对应的值;所述装置还包括:
添加模块,用于确定所述源数据表中的每个键值对所对应的索引数据,所述索引数据包括键值对中的源主键值和源数据;将基于每次迁移的源数据的源主键值生成的迁移进度记录,添加到每次迁移的源数据所属键值对所对应的索引数据中;当发生迁移中断的情况,查询每个所述键值对所对应的索引数据,获得迁移中断时的迁移进度记录所属的索引数据;将获得的索引数据对应的键值对中的源主键值,作为中断迁移的源主键值。
12.根据权利要求11所述的装置,其特征在于,所述索引数据包括索引键数据,所述索引键数据包括所述键值对中的源主键值和源数据;
所述添加模块,还用于确定每次迁移的源数据所属的索引键数据;将基于每次迁移的源数据的源主键值生成的迁移进度记录,作为每次迁移的源数据所属的索引键数据对应的索引值数据;
所述第二确定模块,还用于当发生迁移中断的情况,基于各所述索引键数据查询各所述索引值数据,获得迁移中断时的索引值数据;将获得的索引值数据对应的索引键数据包括的源主键值,确定为中断迁移的源主键值。
13.根据权利要求12所述的装置,其特征在于,所述添加模块,还用于将基于每次迁移的源数据的源主键值生成的迁移进度记录,添加至每次迁移的源数据所属的索引键数据中;
所述第二确定模块,还用于当发生迁移中断的情况,查询各所述索引键数据,获得迁移中断时的迁移进度记录所属的索引键数据;将获得的索引键数据包括的源主键值,确定为中断迁移的源主键值。
14.根据权利要求8至13任一项所述的装置,其特征在于,所述同步模块,还用于当在所述迁移发起时间后接收到针对所述源数据表的数据处理请求,确定所述数据处理请求的类型;基于所述关联关系,确定与所述数据处理请求的类型相匹配的触发器;通过与所述数据处理请求的类型相匹配的触发器,将所述数据处理请求在所述源数据表中的处理操作,同步至所述目标数据表中。
15.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
17.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311381633.7A CN117131023B (zh) | 2023-10-24 | 2023-10-24 | 数据表处理方法、装置、计算机设备和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311381633.7A CN117131023B (zh) | 2023-10-24 | 2023-10-24 | 数据表处理方法、装置、计算机设备和可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117131023A CN117131023A (zh) | 2023-11-28 |
CN117131023B true CN117131023B (zh) | 2024-03-26 |
Family
ID=88863086
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311381633.7A Active CN117131023B (zh) | 2023-10-24 | 2023-10-24 | 数据表处理方法、装置、计算机设备和可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117131023B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112860697A (zh) * | 2021-02-10 | 2021-05-28 | 中国工商银行股份有限公司 | 分布式数据库表结构变更方法、装置及系统 |
CN113485980A (zh) * | 2021-07-27 | 2021-10-08 | 拉扎斯网络科技(上海)有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN114328458A (zh) * | 2021-12-29 | 2022-04-12 | 北京金堤科技有限公司 | 数据迁移方法及其装置、计算机存储介质 |
CN116069765A (zh) * | 2023-03-06 | 2023-05-05 | 天翼云科技有限公司 | 数据迁移方法、装置、电子设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11232084B2 (en) * | 2020-06-26 | 2022-01-25 | Microsoft Technology Licensing, Llc | Schema agnostic migration of delineated data between relational databases |
-
2023
- 2023-10-24 CN CN202311381633.7A patent/CN117131023B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112860697A (zh) * | 2021-02-10 | 2021-05-28 | 中国工商银行股份有限公司 | 分布式数据库表结构变更方法、装置及系统 |
CN113485980A (zh) * | 2021-07-27 | 2021-10-08 | 拉扎斯网络科技(上海)有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN114328458A (zh) * | 2021-12-29 | 2022-04-12 | 北京金堤科技有限公司 | 数据迁移方法及其装置、计算机存储介质 |
CN116069765A (zh) * | 2023-03-06 | 2023-05-05 | 天翼云科技有限公司 | 数据迁移方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117131023A (zh) | 2023-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109906448B (zh) | 用于促进可插拔数据库上的操作的方法、设备和介质 | |
US11934356B2 (en) | Synchronization of metadata in a distributed storage system | |
US8924365B2 (en) | System and method for range search over distributive storage systems | |
US8078825B2 (en) | Composite hash and list partitioning of database tables | |
US11314717B1 (en) | Scalable architecture for propagating updates to replicated data | |
US8527556B2 (en) | Systems and methods to update a content store associated with a search index | |
US11914585B2 (en) | Servicing queries of a hybrid event index | |
EP2746971A2 (en) | Replication mechanisms for database environments | |
US10754854B2 (en) | Consistent query of local indexes | |
US20090012932A1 (en) | Method and System For Data Storage And Management | |
US20150254320A1 (en) | Using colocation hints to facilitate accessing a distributed data storage system | |
US11150996B2 (en) | Method for optimizing index, master database node and subscriber database node | |
CN109902127B (zh) | 历史态数据处理方法、装置、计算机设备及存储介质 | |
CN111930850A (zh) | 数据校验方法、装置、计算机设备和存储介质 | |
CN111917834A (zh) | 一种数据同步方法、装置、存储介质及计算机设备 | |
US20240346010A1 (en) | Data processing method, distributed database system, electronic device and storage medium | |
US8386462B2 (en) | Standby index in physical data replication | |
US10817507B2 (en) | Document store export/import | |
US20230394024A1 (en) | Data processing method and apparatus, electronic device, storage medium, and program product | |
CN108256019A (zh) | 数据库主键生成方法、装置、设备及其存储介质 | |
CN117131023B (zh) | 数据表处理方法、装置、计算机设备和可读存储介质 | |
US11481372B1 (en) | Systems and methods for indexing multi-versioned data | |
CN116414848A (zh) | 数据库主备复制一致性验证方法、装置和计算机设备 | |
CN117909344A (zh) | 数据更新方法、装置、非易失性存储介质及计算机设备 | |
CN117076470A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40098424 Country of ref document: HK |