CN116340290A - 数据迁移方法、装置、电子设备及存储介质 - Google Patents

数据迁移方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN116340290A
CN116340290A CN202310276009.4A CN202310276009A CN116340290A CN 116340290 A CN116340290 A CN 116340290A CN 202310276009 A CN202310276009 A CN 202310276009A CN 116340290 A CN116340290 A CN 116340290A
Authority
CN
China
Prior art keywords
data
migrated
destination
sliced
data set
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
CN202310276009.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.)
Wuhan Dream Database Co ltd
Original Assignee
Wuhan Dream Database Co 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 Wuhan Dream Database Co ltd filed Critical Wuhan Dream Database Co ltd
Priority to CN202310276009.4A priority Critical patent/CN116340290A/zh
Publication of CN116340290A publication Critical patent/CN116340290A/zh
Pending legal-status Critical Current

Links

Images

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/214Database migration support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0712Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a virtual computing platform, e.g. logically partitioned systems
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种数据迁移方法、装置、电子设备及存储介质。数据迁移方法包括:首先根据设定的分片规则,将源端上的待迁移数据集进行分片,得到多个分片数据集及分片信息,分片数据集包括至少一条待迁移数据,分片信息包括待迁移数据的标识信息、分片数据集的数量及大小;然后根据分片信息,确定待迁移数据的目的端数据标识;最后根据目的端数据标识,分别将各分片数据集之中的待迁移数据传输至目的端,得到已迁移数据,已迁移数据与目的端数据标识一一对应。本发明可以通过多线程分别传输分片数据集,同时各分片数据集的传输互不影响,当其中某一分片数据集出现迁移中断时,可以只重新传输此分片数据集,这样提升了数据迁移效率。

Description

数据迁移方法、装置、电子设备及存储介质
技术领域
本发明涉及数据处理技术领域,具体而言,涉及一种数据迁移方法、装置、电子设备及存储介质。
背景技术
为了满足业务需求,经常会需要进行数据的迁移。目前常用的方案是通过单线程将数据整体从源端迁移到目的端。这个过程中,有时候会出现源端或目的端的连接中断,迁移程序崩溃等故障问题,这些故障问题会使迁移过程中断,进而导致数据迁移失败。
现有的解决方案是,在处理玩故障问题后,清空之前已迁移的数据,然后再重新开始迁移整个数据,以保证数据迁移的完整性和准确性。但这无疑降低了数据迁移效率,造成了时间和资源的浪费。
发明内容
为了克服上述问题和缺陷,本发明的目的是提供一种数据迁移方法、装置、电子设备及存储介质,可以通过多线程分别迁移分片数据集,当某一个分片数据集迁移中断时,只用重新迁移该分片数据集,提升了数据迁移效率,节省时间和资源。
为了实现上述目的,本发明第一方面提供一种数据迁移方法,包括:
根据设定的分片规则,将源端上的待迁移数据集进行分片,得到多个分片数据集及分片信息,分片数据集包括至少一条待迁移数据,分片信息包括待迁移数据的标识信息、分片数据集的数量及大小;
根据分片信息,确定待迁移数据的目的端数据标识;
根据目的端数据标识,分别将各分片数据集之中的待迁移数据传输至目的端,得到已迁移数据,已迁移数据与目的端数据标识一一对应。
可选地,待迁移数据集包括在线数据,在根据目的端数据标识,分别将各分片数据集之中的待迁移数据传输至目的端的步骤中,还包括:
将发生迁移中断的分片数据集确定为目标分片数据集;
根据目标分片数据集的目标分片信息,将目标分片数据集所对应的已迁移数据,从目的端上删除;
根据目标分片信息,获得目标分片数据集,及目标分片数据集中目标待迁移数据对应的目标目的端数据标识;
根据目标目的端数据标识,将目标待迁移数据传输至目的端。
可选地,待迁移数据集包括离线数据,在根据目的端数据标识,分别将各分片数据集之中的待迁移数据传输至目的端的步骤中,还包括:
根据已迁移数据,将发生迁移中断的分片数据集中未迁移的数据,确定为目标待迁移数据;
根据目标待迁移数据所对应的目的端数据标识,将目标待迁移数据传输至目的端。
可选地,在根据目的端数据标识,分别将各分片数据集之中的待迁移数据传输至目的端的步骤中,还包括:
将已传输的待迁移数据的目的端数据标识记录在存储单元上;
根据存储单元上记录的目的端数据标识,获得分片数据集的迁移状态。
可选地,根据设定的分片规则,将源端上的待迁移数据集进行分片的步骤,包括:
根据设定的分片规则,获得分片数据集的大小值和数据块的大小值,分片数据集包括至少一个数据块,数据块包括至少一条行数据;
根据分片数据集的大小值和数据块的大小值,确定数据块的数量;
基于数据块的数量,对待迁移数据集进行分片。
可选地,在根据设定的分片规则,获得分片数据集的大小值和数据块的大小值的步骤之前,还包括:
确定分片数据集中列数据的类型,列数据为行数据的序列符号;
当列数据的类型为序号数值时,根据序号数值设定分片规则;当列数据的类型为时间信息时,将时间信息转换为时间数值,根据时间数值设定分片规则。
可选地,根据分片信息,确定待迁移数据的目的端数据标识的步骤,包括:
根据分片信息,获得标识信息的最小序号值和待迁移数据的行数;
根据待迁移数据的行数和最小序号值,确定目的端数据标识。
本发明第二方面提供一种数据迁移装置,包括:
分片模块,用于根据设定的分片规则,将源端上的待迁移数据集进行分片,得到多个分片数据集及分片信息,分片数据集包括至少一条待迁移数据,分片信息包括待迁移数据的标识信息、分片数据集的数量及大小;
确定模块,用于根据分片信息,确定待迁移数据的目的端数据标识;
传输模块,用于根据目的端数据标识,分别将各分片数据集之中的待迁移数据传输至目的端,得到已迁移数据,已迁移数据与目的端数据标识一一对应。
本发明第三方面提供一种电子设备,包括处理器和存储器,存储器上存储有计算机程序,计算机程序被处理器执行时,实现上述的数据迁移方法。
本发明第四方面提供一种计算机可读的存储介质,其上存储有计算机程序,计算机程序被处理器执行时,实现上述的数据迁移方法。
与现有技术相比,本发明的有益效果包括:首先根据设定的分片规则,将源端上的待迁移数据集进行分片,得到多个分片数据集及分片信息,分片数据集包括至少一条待迁移数据,分片信息包括待迁移数据的标识信息、分片数据集的数量及大小;然后根据分片信息,确定待迁移数据的目的端数据标识;最后根据目的端数据标识,分别将各分片数据集之中的待迁移数据传输至目的端,得到已迁移数据,已迁移数据与目的端数据标识一一对应。本发明通过上述步骤,可以通过多线程分别传输分片数据集,以提升数据迁移速度;同时各分片数据集的传输互不影响,当其中某一分片数据集出现迁移中断时,可以只重新传输此分片数据集,其他未中断的分片数据集则不用重新迁移;这样提升了数据迁移效率,节省了时间和资源。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例的技术方案的示例性系统架构的示意图;
图2为本发明实施例数据迁移方法的流程示意图一;
图3为本发明实施例数据迁移方法的流程示意图二;
图4为本发明实施例数据迁移方法的流程示意图三;
图5为本发明实施例源端和目的端之间的连接示意图;
图6为本发明实施例数据迁移方法的流程示意图四;
图7为本发明实施例数据迁移方法的流程示意图五;
图8为本发明实施例数据迁移装置的架构示意图;
图9为本发明实施例电子设备的计算机系统的架构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
图1示出了可以应用本发明实施例的技术方案的示例性系统架构的示意图。
如图1所示,系统架构可以包括终端设备(如图1中所示智能手机101、平板电脑102和便携式计算机103中的一种或多种,当然也可以是台式计算机等等)、网络104和服务器105。网络104用以在终端设备和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线通信链路、无线通信链路等等。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。比如服务器105可以是多个服务器组成的服务器集群等。
需要说明的是,本发明实施例所提供的数据迁移方法一般由服务器105执行,相应地,数据迁移装置一般设置于服务器105中。但是,在本发明的其它实施例中,终端设备也可以与服务器具有相似的功能,从而执行本发明实施例所提供的数据迁移的技术方案。
下面对本发明实施例的技术方案的实现细节进行详细阐述。
本发明实施例提供一种数据迁移方法,用于将源端上的数据迁移到目的端上。其中源端可以为关系型数据库,包括但不限于Oracle、DM达梦数据库、DB2、MySQL、MicrosoftSQL Server、Microsoft Access;目的端可以为分布式搜索和分析引擎(ElasticSearch),具体为ElasticSearch的索引。
如图2所示,本实施例的数据迁移方法包括步骤210、步骤220及步骤230,具体如下:
步骤210,根据设定的分片规则,将源端上的待迁移数据集进行分片,得到多个分片数据集及分片信息,分片数据集包括至少一条待迁移数据,分片信息包括待迁移数据的标识信息、分片数据集的数量及大小。
其中,待迁移数据集一般以数据表为单位进行迁移,在数据表中每一行代表一条数据。
一种实施例中,上述步骤中,根据设定的分片规则,将源端上的待迁移数据集进行分片的步骤,可以具体包括步骤211、步骤212和步骤213,如图3所示:
步骤211,根据设定的分片规则,获得分片数据集的大小值和数据块的大小值,确定数据块的数量,分片数据集包括至少一个数据块,数据块包括至少一条行数据。
例如,分片数据集的大小值为1MB,即1024KB,数据块的大小值为9182B,即8KB。
上述步骤中,可以先根据迁移配置信息,确定待迁移数据集的数据大小和分片数据集大小,每个待迁移数据集对应一个数据迁移任务,每个分片数据集对应一个数据迁移子任务。在配置信息中还可以配置待迁移数据集的tablename(表名)、目的端中索引的schema_table(表名,例如可以具体为schema1_table1),源端和目的端的连接配置、迁移模式(在线迁移或离线迁移)等。
步骤212,根据分片数据集的大小值和数据块的大小值,确定数据块的数量。
具体地,数据块的数量为分片数据集的大小值除以数据块的大小值,例如,分片数据集的大小值为1024KB,数据块的大小值为8KB,则每个分片数据集的数据块的数量为1024KB/8KB=128。
步骤213,基于数据块的数量,对待迁移数据集进行分片。
具体地,例如当待迁移数据集为数据表中的第1966208号至第1967040号数据块,数据块的数量为128,则可以分为6个分片数据集,根据数据块的序号,各分片数据集的划分为:
[1966208,1966335],
[1966336,1966463],
[1966464,1966647],
[1966648,1966775],
[1966776,1966975],
[1966976,1967040]。
本实施例中,待迁移数据的标识信息为ROWID(行标识)。
当源端为Oracle时,数据表中每一行数据都有一个全局唯一的ROWID。具体地,ROWID是一个18位的Base64字符串,其结构为[DATAOBJ#,6位]+[RELATIVE_FNO,3位]+[BLOCK_ID,6位]+[ROW_NUM,3位]。其中,DATAOBJ#、RELATIVE_FNO、BLOCK_ID可以通过查询数据表中的数据块信息得到,DATAOBJ#代表全局唯一的对象编号(在本示例中表示数据表对象编号),RELATIVE_FNO代表数据表中数据文件的编号,BLOCK_ID代表数据文件中各数据块的编号,ROW_NUM表示数据块中各行数据的行编号;将DATAOBJ#、RELATIVE_FNO、BLOCK_ID和ROW_NUM这四个整形数字转换为Base64字符串后拼接起来,即可得到数据表中一行数据的ROWID。
分片数据集的切割点,为各分片数据集中最后一个数据块中的第一行的数据的ROWID。计算切割点,ROWID时的ROW_NUM值为0;每个分片数据集的行数据集合,以一个左开右闭的ROWID区间表示。例如,以ROWID进行分片,分片结果如下所示:
(AAAAAAAAAAAAAAAAAA,AAAvcrAAEAAHgD/AAA],
(AAAvcrAAEAAHgD/AAA,AAAvcrAAEAAHgF/AAA],
(-AAAvcrAAEAAHgF/AAA,AAAvcrAAEAAHgI3AAA],
(-AAAvcrAAEAAHgI3AAA,AAAvcrAAEAAHgK3AAA],
(-AAAvcrAAEAAHgK3AAA,AAAvcrAAEAAHgN/AAA],
(AAAvcrAAEAAHgN/AAA,//////////////////]。
在本实施例汇总,查询各分片数据集的SQL(Structured Query Language,结构化查询语言)语句依次为:
①select*from SCHEMA1.TABLE1 where ROWID<=‘AAAvcrAAEAAHgD/AAA’;
②select*from SCHEMA1.TABLE1 where ROWID>‘AAAvcrAAEAAHgD/AAA’andROWID<=‘AAAvcrAAEAAHgF/AAA’;
③select*from SCHEMA1.TABLE1 where ROWID>‘AAAvcrAAEAAHgF/AAA’andROWID<=‘AAAvcrAAEAAHgI3AAA’;
④select*from SCHEMA1.TABLE1 where ROWID>‘AAAvcrAAEAAHgI3AAA’andROWID<=‘AAAvcrAAEAAHgK3AAA’;
⑤select*from SCHEMA1.TABLE1 where ROWID>‘AAAvcrAAEAAHgK3AAA’andROWID<=‘AAAvcrAAEAAHgN/AAA’;
⑥select*from SCHEMA1.TABLE1 where ROWID>‘AAAvcrAAEAAHgN/AAA’;
上述6条查询语句的结果集的并集就是表SCHEMA1.TABLE1中的所有数据。
当源端为DM达梦数据库时,设分片数据集的大小值为1024KB,数据块的大小值为8KB,则每个分片数据集的数据块的数量为1024KB/8KB=128,通过查询数据表中的数据块信息得知,数据块的数量为600,600/128=4.6875,则分片数据集的个数为5。假设数据表中共有100000行数据,则每个分片数据集的数据行数为20000,设ROWID的最小值为1,最大值为100000,那么,分片数据集的切割点ROWID值分别为20000,40000,60000,80000,各分片数据集对应的ROWID区间依次为(0,20000],(20000,40000],(40000,60000],(60000,80000],(80000,100000]。
查询各分片数据集的SQL语句依次为:
①select*from SCHEMA1.TABLE1 where ROWID<=‘20000’;
②select*from SCHEMA1.TABLE1 where ROWID>‘20000’and ROWID<=‘40000’;
③select*from SCHEMA1.TABLE1 where ROWID>‘40000and ROWID<=‘60000’;
④select*from SCHEMA1.TABLE1 where ROWID>‘60000’and ROWID<=‘80000’;
⑤select*from SCHEMA1.TABLE1 where ROWID>‘80000’;
上述6条查询语句的结果集的并集就是表SCHEMA1.TABLE1中的所有数据。
本实施例中,根据各分片数据集中ROWID的最小值minROWID确定分片的切割点,切割点的ROWID的值为minColValue,具体地,minColValue+1等于minROWID。分片信息可以存储在存储单元中。
一种实施例中,在步骤211,根据设定的分片规则,获得分片数据集的大小值和数据块的大小值之前,还包括:确定分片数据集中列数据的类型,列数据为行数据的序列符号;当列数据的类型为序号数值时,根据序号数值设定分片规则;当列数据的类型为时间信息时,将时间信息转换为时间数值,根据时间数值设定分片规则。
具体地,确定分片数据集中分片列(即用于切分数据表所依赖的列)的数据类型sliceColumnType,为序号数值number时,分片数据集的个数为sliceCount、分片列的数据最大值为maxValue,最小值为minValue,参考上述DM数据库中待迁移数据集的分片规则,即可计算出以分片列值范围区间为表现形式的分片结果,再据此构建各分片数据集的数据查询SQL语句,如:
select*from SCHEMA1.TABLE1 where COL1<=20000;select*fromSCHEMA1.TABLE1 where COL1>20000and COL1<=40000。
当分片列的数据类型sliceColumnType为时间信息time时,则将minValue和maxValue转换成距离格林尼治标准时间1970年1月1日0时0分0秒的毫秒数(时间戳),类型为64位长整数,然后根据转换所得的整数值、类比sliceColumnType为number的分片列取值范围计算方法,计算出以分片列值范围区间为表现形式的分片结果,在将各分片区间的边界值转换为原来的时间类型,最后构建各分片数据集的数据查询SQL,例如,分片列类型为DATE,sliceCount=5,minValue=‘2022-05-01’,maxValue=‘2022-10-07’,则时间戳分别为minValueLong=1651334400000,maxValueLong=1665072000000,分片切割点分别为1654081920000,1656829440000,1659576960000,1662324480000,各分片数据集对应的分片列值区间依次为(-∞,1654081920000],(1654081920000,1656829440000],(1656829440000,1659576960000],(1659576960000,1662324480000],(1662324480000,+∞];还原为时间信息类型的各分片数据集对应的分片列值区间依次为(-∞,‘2022-06-01’],(‘2022-06-01’,‘2022-07-03’],(‘2022-07-03’,‘2022-08-04’],(‘2022-08-04’,‘2022-09-05’],(‘2022-09-05’,+∞];再据此构建各分片数据集的数据查询SQL语句,如:
select*from SCHEMA1.TABLE1 where COL1<=‘2022-06-01’;select*fromSCHEMA1.TABLE1 where COL1>‘2022-06-01’and COL1<=‘2022-07-03’。
上述步骤可以适用于大部分数据库的数据集分片。
步骤220,根据分片规则,确定待迁移数据的目的端数据标识。如图4所示,包括:
步骤221,根据分片规则,获得标识信息的最小序号值和待迁移数据的行数。以DM达梦数据库为例,一个分片数据集,其ROWID的分片区间为(20000,40000],切割点minColValue为20000,待迁移数据的标识信息的最小序号值记为minROWID,则minROWID=20000+1=20001,待迁移数据的行数为40000-20000=20000。
步骤222,根据待迁移数据的行数和最小序号值,确定目的端数据标识。
例如,待迁移数据的标识信息的最小序号值minROWID为20001,行数为20000。目的端数据标识为docId,docId由前缀docIdPrefix和后缀docIdSuffix拼接所得。其中,docIdPrefix由minColValue决定,docIdSuffix由待迁移数据的序号递增值docIdSeq决定,序号递增值docIdSeq为待迁移数据的ROWID值与minColValue之间的差值。
docIdPrefix的值为一个长度为20的字符串,以minColValue对应的字符串结尾,不足部分,在头部填充字母A;例如,minColValue为“20000”,则docIdPrefix为“AAAAAAAAAAAAAAA20000”。对于Oracle以ROWID为分片依据的情形来说,minColValue,即分片以ROWID区间表示时的区间左边界,是一个长度为18的字符串;对于DM达梦数据库以ROWID为分片依据或一般方式分片的情形,分片以区间表示时的区间左值为long型数字,最大长度为20;长度为20的字符串足以适用于所有情况。
docIdSuffix为一个长度为12的字符串,以docIdSeq对应的字符串结尾,不足部分,在头部填充字母B,例如,在本例中,第一行数据(20001)对应的docIdSeq为1,则docIdSuffix为“BBBBBBBBBBB1”;
docId有docIdPrefix+docIdSuffix拼接而来,例如在本例中,第一行数据对应的docId为“AAAAAAAAAAAAAAA20000 BBBBBBBBBBB1”。以这种方式构建的docId,可以保证源端数据表中的每行数据对应的目的端索引中的文档的docId都是唯一的,且支持每个分片的最大行数为10^12。
步骤230,根据目的端数据标识,分别将各分片数据集之中的待迁移数据传输至目的端,得到已迁移数据,已迁移数据与目的端数据标识一一对应。
各分片数据集中的行数据对应的目的端中文档的docId,存在有规律的区别,相互之间不会混淆,因此,分片数据集迁移的线程也是相互独立的。以一个分片数据集的迁移为例,可以先将该分片数据集中的待迁移数据和docId,逐条放入到存储单元中进行缓存,当缓存的数据达到设定值(如100条,1000条等)或源端无数据传输时,将缓存的待迁移数据写入到目的端上。待迁移数据的定量缓存过程,为最大编号阶段性地动态扩展(拓展时机:编号超过最大编号时)。例如,第一阶段的数据最大编号为1000,即编号1至1000的数据,当缓存的数据编号超过1000时,则扩展至第二阶段;第二阶段的数据的最大编号为2000,即编号为1001至2000的数据;第三阶段及以后阶段,以此类推。
一种实施例中,在步骤230中,还包括:将已传输的待迁移数据的目的端数据标识记录在存储单元上;根据存储单元上记录的目的端数据标识,获得分片数据集的迁移状态。
具体地,如图5所示,可以先通过数据读取模块从源端上读取待迁移数据,然后由数据读取模块将待迁移数据发送给数据写入模块,数据写入模块将待迁移数据和其对应的目的端数据标识缓存至存储单元上,当存储单元上缓存的数据量达到上限或从源端上没有读取到数据时,数据写入模块根据目的端数据标识,将缓存中对应的待迁移数据写入到目的端上。
一种实施例中,待迁移数据集包括在线数据,在线数据会动态更新变化。步骤230还包括步骤231、步骤232、步骤233及步骤234,如图6所示,具体如下:
步骤231,将发生迁移中断的分片数据集确定为目标分片数据集。
步骤232,根据目标分片数据集的目标分片信息,将目标分片数据集所对应的已迁移数据,从目的端上删除。
设目标分片数据集为SCHEMA1.TABLE1,其ROWID∈(20000,40000],读取该目标分片数据集的数据有可能已经发生了变化,需要先清理目的端上对应文档schema1_table1中的数据,然后开始数据迁移。首先,从存储单元中读取docIdSeq中的最大值(docIdMaxSeq的值),例如为9000(初始值为0,每次缓存1000条),则说明上次迁移过程中,docIdSeq的值在(8000,9000]范围内,也就是说,有8000至9000条数据从该分片中迁移到了目的端schema1_table1中,是脏数据。按最大可能存在9000条脏数据估计,根据前文中docId的生成方法,这9000条脏数据的docId依次为:
“AAAAAAAAAAAAAAA20000 BBBBBBBBBBB1”,
“AAAAAAAAAAAAAAA20000 BBBBBBBBBBB2”,
“AAAAAAAAAAAAAAA20000 BBBBBBBBBBB3”,
……
“AAAAAAAAAAAAAAA20000 BBBBBBBB9000”;
在将这可能存在的9000条脏数据从目的端schema1_table1中删除,这样就保证数据迁移的准确性。
步骤233,根据目标分片信息,获得目标分片数据集,及目标分片数据集中目标待迁移数据对应的目标目的端数据标识。
具体地,例如,目标分片数据集为SCHEMA1.TABLE1,ROWID∈(20000,40000],则重新获取SCHEMA1.TABLE1的数据,确定目标目的端数据标识docId为AAAAAAAAAAAAAAA20000BBBBBBBBBBB1至“AAAAAAAAAAAAAAA20000 BBBBBBB20000。
步骤234,根据目标目的端数据标识,将目标待迁移数据传输至目的端。
具体的根据docId的值,依次将对应的待迁移数据传输至目的端。
需要说明的是,在步骤232中,脏数据可能不足9000条,当执行删除9000条数据的操作时,会删除不存在的数据,但这不影响删除存在的数据,该删除操作可以成功地将可能存在的所有脏数据从目的端schema1_table1中删除,同时不影响其它分片数据集的数据迁移结果。然后,再次尝试将该分片中的数据迁移至schema1_table1中,直至成功。
通过上述步骤,当待迁移数据集为在线数据时,某个分片数据集出现迁移中断时,可以单独对此分片数据集进行重新迁移,并保证数据迁移的准确性。
一种实施例中,待迁移数据集包括离线数据,离线数据不更新变化,保持不变。步骤230还包括步骤235和步骤236,如图7所示:
步骤235,根据已迁移数据,将发生迁移中断的分片数据集中未迁移的数据,确定为目标待迁移数据。
例如,发生迁移中断的分片数据集为SCHEMA1.TABLE1,ROWID∈(20000,40000],已迁移数据的ROWID值为20001至29000,那么未迁移的数据的ROWID值为29001至40000,再将这些数据确定为目标待迁移数据。
步骤236,根据目标待迁移数据所对应的目的端数据标识,将目标待迁移数据传输至目的端。例如,目标迁移数据所对应的目的端数据标识docId为,
AAAAAAAAAAAAAAA20000BBBBBBBB9001至
AAAAAAAAAAAAAAA20000BBBBBBB20000。
进一步地,考虑到数据的迁移过程中,待迁移数据是每缓存到一定数量(例如1000)或源端无数据传输时,再写入到目的端中。因此,当查询到已迁移数据的ROWID值为20001至29000时,表明最近一次写入的数据的ROWID值为28001至29000,那么ROWID值为28001至29000的数据中,可能会存在部分数据实际上是没有写入到目的端的schema1_table1中。而可以确定的是,ROWID值为20001至28000的这8000条数据,是已经实际写入到目的端的schema1_table1中。
由此,在数据读取模块中过滤掉这8000条数据,不发送到数据写入模块,从而避免重复写入操作,这样可以节省时间和资源、提高数据迁移效率。而在分片数据集SCHEMA1.TABLE1中,第8001条数据到第9000条数据(ROWID值为28001至29000),可能已经有部分行数据已经迁移到目的端schema1_table1中,此时,由于前后两次从该分片中读取到的数据的内容、顺序是一致的,写入到目的端中时生成docId的规则也是一致的,根据ElasticSearch的_bulk写入index方式的特性,采用docId方式写入数据时,若已存在的目的端数据标识为该docId的数据时,直接替换原数据,也就是说,从第8001条数据到第9000条数据,可能存在重复写入的情形,但并不影响结果的正确性。
通过上述方法步骤,对于离线迁移模式(待迁移数据集为离线数据),当某个分片数据集的数据迁移子任务失败时,下次重做过程可以先过滤掉已经确定成功迁移的行数据,然后直接继续迁移剩余未迁移数据,提升数据迁移效率。
在某些业务场景中,源端的数据源服务可以暂停DML(数据库操作),以保证数据迁移过程中,源端数据保持不变,即开启离线迁移模式,让源端待迁移数据变为离线数据。当某个分片的数据迁移过程失败时,在下次重现迁移过程中,无须清理索引中的数据,并过滤掉从表中读取的数据中已完成迁移的部分,这又进一步避免了分片内的数据的重复迁移工作,提升了迁移效率。
通过本实施例提供的数据迁移述方法,将待迁移数据集以表的形式,划分成较小的分片,以分片数据集为单位,并发地读取数据并写入到目的端上,从而极大地提升了数据迁移效率。并且,某一个分片数据集的数据迁移过程出错时,其它分片数据集的数据迁移结果依然有效,不需要重新迁移,尽量避免重复操作。
本实施例根据分片数据集的唯一性属性生成目的端数据标识docId的前缀,并存储至存储单元中,以“前缀+后缀”的格式生成docId,以指定docId的方式将分片数据集中的行数据写入目的端。docId最大编号阶段性地动态扩展(拓展时机:编号超过最大编号时),每次扩展时,先持久化存储最大编号,再向目的端中写入数据,以实现每个分片数据集中的行数据对应的目的端文档的docId的范围的有限性和可重复性;如果该分片数据集迁移失败,则只需要以指定docId的方式删除该分片的数据,从而避免不同分片数据集的数据对应的目的端文档无法区分的问题,以实现各分片数据集的数据迁移的相互独立性。
本发明实施例提供一种数据迁移装置,如图8所示,包括:
分片模块301,用于根据设定的分片规则,将源端上的待迁移数据集进行分片,得到多个分片数据集及分片信息,分片数据集包括至少一条待迁移数据,分片信息包括待迁移数据的标识信息、分片数据集的数量及大小;
确定模块302,用于根据分片信息,确定待迁移数据的目的端数据标识;
传输模块303,用于根据目的端数据标识,分别将各分片数据集之中的待迁移数据传输至目的端,得到已迁移数据,已迁移数据与目的端数据标识一一对应。
本实施例的数据迁移装置采用上述实施例提供的数据迁移方法,可以通过多线程分别传输分片数据集,以提升数据迁移速度;同时各分片数据集的传输互不影响,当其中某一分片数据集出现迁移中断时,可以只重新传输此分片数据集,其他未中断的分片数据集则不用重新迁移;这样提升了数据迁移效率,节省了时间和资源。
图9示出了适于用来实现本发明实施例的电子设备的计算机系统的结构示意图。
需要说明的是,图9示出的电子设备的计算机系统仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图9所示,计算机系统包括中央处理单元(Central Processing Unit,CPU)1801,中央处理单元CPU 1801即为处理器,其可以根据存储在只读存储器(Read-OnlyMemory,ROM)1802中的程序或者从存储部分1808加载到随机访问存储器(Random AccessMemory,RAM)1803中的程序而执行各种适当的动作和处理,例如执行上述实施例中所述的方法。在RAM 1803中,还存储有系统操作所需的各种程序和数据。CPU 1801、ROM 1802以及RAM 1803通过总线1804彼此相连。输入/输出(Input/Output,I/O)接口1805也连接至总线1804。
以下部件连接至I/O接口1805:包括键盘、鼠标等的输入部分1806;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分1807;包括硬盘等的存储部分1808;以及包括诸如LAN(Local AreaNetwork,局域网)卡、调制解调器等的网络接口卡的通信部分1809。通信部分1809经由诸如因特网的网络执行通信处理。驱动器1810也根据需要连接至I/O接口1805。可拆卸介质1811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1810上,以便于从其上读出的计算机程序根据需要被安装入存储部分1808。
特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的计算机程序。在这样的实施例中,该计算机程序可以通过通信部分1809从网络上被下载和安装,和/或从可拆卸介质1811被安装。在该计算机程序被中央处理单元(CPU)1801执行时,执行本发明的系统中限定的各种功能。
需要说明的是,本发明实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的计算机程序。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的计算机程序可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
具体地,通过本实施例的电子设备,首先根据设定的分片规则,将源端上的待迁移数据集进行分片,得到多个分片数据集及分片信息,分片数据集包括至少一条待迁移数据,分片信息包括待迁移数据的标识信息、分片数据集的数量及大小;然后根据分片信息,确定待迁移数据的目的端数据标识;最后根据目的端数据标识,分别将各分片数据集之中的待迁移数据传输至目的端,得到已迁移数据,已迁移数据与目的端数据标识一一对应。本发明通过上述步骤,可以通过多线程分别传输分片数据集,以提升数据迁移速度;同时各分片数据集的传输互不影响,当其中某一分片数据集出现迁移中断时,可以只重新传输此分片数据集,其他未中断的分片数据集则不用重新迁移;这样提升了数据迁移效率,节省了时间和资源。
作为另一方面,本发明还提供了一种计算机可读的存储介质,该存储介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述存储介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备的处理器执行时,使得该电子设备实现上述实施例中提供的方法。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本发明实施方式的方法。
具体地,通过本实施例的存储介质,首先根据设定的分片规则,将源端上的待迁移数据集进行分片,得到多个分片数据集及分片信息,分片数据集包括至少一条待迁移数据,分片信息包括待迁移数据的标识信息、分片数据集的数量及大小;然后根据分片信息,确定待迁移数据的目的端数据标识;最后根据目的端数据标识,分别将各分片数据集之中的待迁移数据传输至目的端,得到已迁移数据,已迁移数据与目的端数据标识一一对应。本发明通过上述步骤,可以通过多线程分别传输分片数据集,以提升数据迁移速度;同时各分片数据集的传输互不影响,当其中某一分片数据集出现迁移中断时,可以只重新传输此分片数据集,其他未中断的分片数据集则不用重新迁移;这样提升了数据迁移效率,节省了时间和资源。
本领域技术人员在考虑说明书及实践这里公开的实施方式后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

Claims (10)

1.一种数据迁移方法,其特征在于,包括:
根据设定的分片规则,将源端上的待迁移数据集进行分片,得到多个分片数据集及分片信息,所述分片数据集包括至少一条待迁移数据,所述分片信息包括所述待迁移数据的标识信息、所述分片数据集的数量及大小;
根据所述分片信息,确定所述待迁移数据的目的端数据标识;
根据所述目的端数据标识,分别将各所述分片数据集之中的所述待迁移数据传输至目的端,得到已迁移数据,所述已迁移数据与所述目的端数据标识一一对应。
2.根据权利要求1所述的数据迁移方法,其特征在于,所述待迁移数据集包括在线数据,在所述根据所述目的端数据标识,分别将各所述分片数据集之中的所述待迁移数据传输至目的端的步骤中,还包括:
将发生迁移中断的所述分片数据集确定为目标分片数据集;
根据所述目标分片数据集的目标分片信息,将所述目标分片数据集所对应的已迁移数据,从所述目的端上删除;
根据所述目标分片信息,获得目标分片数据集,及所述目标分片数据集中目标待迁移数据对应的目标目的端数据标识;
根据所述目标目的端数据标识,将所述目标待迁移数据传输至所述目的端。
3.根据权利要求1所述的数据迁移方法,其特征在于,所述待迁移数据集包括离线数据,在所述根据所述目的端数据标识,分别将各所述分片数据集之中的所述待迁移数据传输至目的端的步骤中,还包括:
根据已迁移数据,将发生迁移中断的所述分片数据集中未迁移的数据,确定为目标待迁移数据;
根据所述目标待迁移数据所对应的目的端数据标识,将所述目标待迁移数据传输至所述目的端。
4.根据权利要求1至3任一项所述的数据迁移方法,其特征在于,在所述根据所述目的端数据标识,分别将各所述分片数据集之中的所述待迁移数据传输至目的端的步骤中,还包括:
将已传输的待迁移数据的目的端数据标识记录在存储单元上;
根据所述存储单元上记录的目的端数据标识,获得所述分片数据集的迁移状态。
5.根据权利要求1所述的数据迁移方法,其特征在于,所述根据设定的分片规则,将源端上的待迁移数据集进行分片的步骤,包括:
根据设定的分片规则,获得分片数据集的大小值和数据块的大小值,所述分片数据集包括至少一个所述数据块,所述数据块包括至少一条行数据;
根据所述分片数据集的大小值和所述数据块的大小值,确定所述数据块的数量;
基于所述数据块的数量,对所述待迁移数据集进行分片。
6.根据权利要求5所述的数据迁移方法,其特征在于,在所述根据设定的分片规则,获得分片数据集的大小值和数据块的大小值的步骤之前,还包括:
确定所述分片数据集中列数据的类型,所述列数据为所述行数据的序列符号;
当所述列数据的类型为序号数值时,根据所述序号数值设定分片规则;当所述列数据的类型为时间信息时,将所述时间信息转换为时间数值,根据所述时间数值设定分片规则。
7.根据权利要求5所述的数据迁移方法,其特征在于,所述根据所述分片信息,确定所述待迁移数据的目的端数据标识的步骤,包括:
根据所述分片信息,获得所述标识信息的最小序号值和所述待迁移数据的行数;
根据所述待迁移数据的行数和所述最小序号值,确定所述目的端数据标识。
8.一种数据迁移装置,其特征在于,包括:
分片模块,用于根据设定的分片规则,将源端上的待迁移数据集进行分片,得到多个分片数据集及分片信息,所述分片数据集包括至少一条待迁移数据,所述分片信息包括所述待迁移数据的标识信息、所述分片数据集的数量及大小;
确定模块,用于根据所述分片信息,确定所述待迁移数据的目的端数据标识;
传输模块,用于根据所述目的端数据标识,分别将各所述分片数据集之中的所述待迁移数据传输至目的端,得到已迁移数据,所述已迁移数据与所述目的端数据标识一一对应。
9.一种电子设备,其特征在于,包括处理器和存储器,所述存储器上存储有计算机程序,所述计算机程序被所述处理器执行时,实现权利要求1至7中任一项所述的数据迁移方法。
10.一种计算机可读的存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现权利要求1至7中任一项所述的数据迁移方法。
CN202310276009.4A 2023-03-16 2023-03-16 数据迁移方法、装置、电子设备及存储介质 Pending CN116340290A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310276009.4A CN116340290A (zh) 2023-03-16 2023-03-16 数据迁移方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310276009.4A CN116340290A (zh) 2023-03-16 2023-03-16 数据迁移方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN116340290A true CN116340290A (zh) 2023-06-27

Family

ID=86876927

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310276009.4A Pending CN116340290A (zh) 2023-03-16 2023-03-16 数据迁移方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN116340290A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116541419A (zh) * 2023-07-06 2023-08-04 美云智数科技有限公司 数据导入导出方法、装置、电子设备及可读存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116541419A (zh) * 2023-07-06 2023-08-04 美云智数科技有限公司 数据导入导出方法、装置、电子设备及可读存储介质

Similar Documents

Publication Publication Date Title
CN110799960B (zh) 数据库租户迁移的系统和方法
US10180992B2 (en) Atomic updating of graph database index structures
US20170153979A1 (en) Dynamic result set caching with a database accelerator
US8103621B2 (en) HSM two-way orphan reconciliation for extremely large file systems
US10628492B2 (en) Distributed graph database writes
US10671671B2 (en) Supporting tuples in log-based representations of graph databases
US9811577B2 (en) Asynchronous data replication using an external buffer table
US11487714B2 (en) Data replication in a data analysis system
US20170255708A1 (en) Index structures for graph databases
CN107766374B (zh) 一种海量小文件存储读取的优化方法和系统
WO2018097846A1 (en) Edge store designs for graph databases
US10776345B2 (en) Efficiently updating a secondary index associated with a log-structured merge-tree database
CN110799961B (zh) 在数据库中创建和删除租户的系统和方法
US10678784B2 (en) Dynamic column synopsis for analytical databases
US20170255677A1 (en) Preventing staleness in query results when using asynchronously updated indexes
US20200125584A1 (en) Reorganization of partition by growth space with lob columns
US10445370B2 (en) Compound indexes for graph databases
CN116340290A (zh) 数据迁移方法、装置、电子设备及存储介质
US20180357328A1 (en) Functional equivalence of tuples and edges in graph databases
US11556519B2 (en) Ensuring integrity of records in a not only structured query language database
US20180144060A1 (en) Processing deleted edges in graph databases
CN114610959B (zh) 数据处理方法、装置、设备及存储介质
US10409799B2 (en) Supporting updatable repeated values over variable schema
CN115344603A (zh) 运价数据存储方法、装置、电子设备和计算机存储介质
US20220405263A1 (en) Increasing Index Availability in Databases

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