发明内容
本申请提供了一种数据迁移方法、装置、计算机设备和存储介质。
第一方面提供了一种数据迁移方法,所述方法包括:
根据目标业务确定数据迁出端的目标数据;
确定所述目标数据迁出所述数据迁出端的数据分布状态;
将各候选时间分片以及该获选时间分片中目标数据的数据密度输入决策树模型的根节点;在每个非根节点,将经过当前非根节点的母节点的条件计算后分类到当前非根节点的候选时间分片进行条件计算,从候选时间分片中筛选出满足预设条件的正式时间分片;
按照所述时间分片策略对所述目标数据的迁出时间进行分片,获得多个时间分片;
根据数据迁出端和数据迁入端确定数据迁移过程中的数据流向,根据所述数据流向依次将各个时间分片对应的目标数据迁移至数据迁入端。
在一些实施例中,所述确定所述目标数据迁出所述数据迁出端的数据分布状态,包括:
根据所述目标业务确定所述目标数据迁出所述数据迁出端的时间轴;
根据所时间轴确定对所述目标数据的迁出时间进行分片的多个候选时间粒度;
分别按照各候选时间粒度划分所述目标数据的迁出时间,得到多个候选时间分片;
统计各候选时间分片中目标数据的数据密度,得到所述数据分布状态。
在一些实施例中,所述决策树模型中的每个所述非根节点对应一个候选时间粒度的筛选条件,所述筛选条件为候选时间分片中目标数据的数据密度不大于预设阈值。
在一些实施例中,所述根据所述数据流向依次将各个时间分片对应的目标数据迁移至数据迁入端,包括:
对每个时间分片的目标数据基于定时器进行计时统计,在所述定时器计时期间检测到所述时间分片时,判断每个所述数据迁移任务在所述定时器到达预设计时时长时完成迁移的数据量是否等于相应的目标数据量。
当完成迁移的数据量等于相应的目标数据量时,停止执行相应的数据迁移任务;
获取停止执行的所述数据迁移任务的历史数据;根据所述历史数据得到停止执行的所述数据迁移任务在不停止执行的情况下完成迁移目标数据量的理论执行时长,根据所述预设阈值和停止执行的所述数据迁移任务的所述理论执行时长之间的大小关系,调整所述预设计时时长。
在一些实施例中,在所述目标数据的迁移过程中,按照预设的时间间隔周期性的记录已迁移到的数据位置;
所述根据所述数据流向依次将各个时间分片对应的目标数据迁移至数据迁入端,包括:
当所述数据迁移任务重启之后,从最后记录的数据位置开始继续从所述原数据库向所述新数据库中迁移所述目标数据。
在一些实施例中,所述根据所述数据流向依次将各个时间分片对应的目标数据迁移至数据迁入端,包括:在将所述目标数据迁移至数据迁入端之前对所述目标数据进行合法性检查,根据检查结果对所述目标数据进行处理。
在一些实施例中,所述根据所述数据流向依次将各个时间分片对应的目标数据迁移至数据迁入端,包括:
如果所述目标数据的迁出端和迁入端不是同一数据库,则对所述目标数据进行加密后再将所述目标数据由所述数据迁出端迁移至所述数据迁入端。
第二方面提供了一种数据迁移装置,包括:
目标数据获取单元,用于根据目标业务确定数据迁出端的目标数据;
数据分布确定单元,用于确定所述目标数据迁出所述数据迁出端的数据分布状态;
分片策略输出单元,用于基于决策树模型,根据所述数据分布状态确定所述目标数据的时间分片策略;
时间分片单元,用于按照所述时间分片策略对所述目标数据的迁出时间进行分片,获得多个时间分片;
数据迁移单元,用于根据数据迁出端和数据迁入端确定数据迁移过程中的数据流向,根据所述数据流向依次将各个时间分片对应的目标数据迁移至数据迁入端。
第三方面提供了一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行上述所述数据迁移方法的步骤。
第四方面提供了一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述所述数据迁移方法的步骤。
本申请提供的技术方案中,首先根据目标业务确定数据迁出端的目标数据;其次确定所述目标数据迁出所述数据迁出端的数据分布状态;基于决策树模型,根据所述数据分布状态确定所述目标数据的时间分片策略;再次按照所述时间分片策略对所述目标数据的迁出时间进行分片,获得多个时间分片;最后根据数据迁出端和数据迁入端确定数据迁移过程中的数据流向,根据所述数据流向依次将各个时间分片对应的目标数据迁移至数据迁入端。因此通过定时任务处理的方案,时间分片和重试机制,可以高效快速且完整无缺的将数据进行完成迁移。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。
图1为一个实施例中提供的数据迁移方法的实施环境图,如图1所示,以下各本发明实施例的典型应用场景是利用第一存储端120、在第二存储端110和第三存储端120之间完成数据高速迁移。第一存储端、第二存储端和第三存储端均包括多台存储服务器多台存储服务器用于存储如即时通信客户端用户共享的或收藏图片、视频、音频以及应用程序等文件数据。
为了方便理解,下面首先对本申请实施例中涉及的名词进行说明。
数据传输服务(Data Transmission Service,DTS):又称数据迁移服务,是一种支持多种同构或者异构存储数据仓库之间进行数据同步的服务,在数据迁移的过程中,需要经过迁移配置、迁移检查以及正式迁移三个主要过程。
如图2所示,在一个实施例中,提出了一种数据迁移方法,该数据迁移方法可以应用于上述的计算机设备110中,具体可以包括以下步骤:
步骤201、根据目标业务确定数据迁出端的目标数据;
其中,目标业务是指需要基于数据库中的数据才能开展的业务,具体可以是根据应用场景自行设定,例如可以是业务比重较大的业务、用户较多的业务、活跃度较高的公司或单位涉及的业务或者满足一定要求的业务等。具体来说,目标业务可以是查询业务、统计业务等。相应的,目标数据是指存储于原数据库中用于开展目标业务所需的数据。
当确定目标业务及开展目标业务所需的目标数据后,数据迁移装置优先将目标数据从原数据库中迁移到新数据库中,这样可以保证目标业务的及时开展。进一步,数据迁移装置将除目标数据之外的其他数据也迁移到新数据库中,完成整个数据迁移过程。
步骤202、确定目标数据迁出数据迁出端的数据分布状态;
其中,数据库中数据进入数据库的时间不同,因此就有了数据库中的数据在时间轴上的分布密度这一特性,在该步骤中对待迁移数进行时间分布统计,就是指确定不同时间的数据分布密度。
在一些实施例中,上述步骤202确定目标数据迁出数据迁出端的数据分布状态,可以包括:
步骤2021、根据目标业务确定目标数据迁出数据迁出端的时间轴;
步骤2022、根据所时间轴确定对目标数据的迁出时间进行分片的多个候选时间粒度;
其中,时间粒度可以使步骤2023、分别按照各候选时间粒度划分目标数据的迁出时间,得到多个候选时间分片;
步骤2024、统计各候选时间分片中目标数据的数据密度,得到数据分布状态。
步骤203、基于决策树模型,根据数据分布状态确定目标数据的时间分片策略;
在一些实施例中,上述步骤203基于决策树模型,根据数据分布状态确定目标数据的时间分片策略,可以包括:
步骤2031、将各候选时间分片以及该获选时间分片中目标数据的数据密度输入决策树模型的根节点;
步骤2032、在每个非根节点,将经过当前非根节点的母节点的条件计算后分类到当前非根节点的候选时间分片进行条件计算,从候选时间分片中筛选出满足预设条件的正式时间分片。
进一步地,在一些实施例中,决策树模型中的每个非根节点对应一个候选时间粒度的筛选条件,筛选条件为候选时间分片中目标数据的数据密度不大于预设阈值。
可以理解的是,对于每个非根节点,其母节点的分类计算过程便会确定有哪些样本被归类到了当前非根节点。当前非根节点便会提取这些被分配到本地的样本的与当前非根节点对应的特征值,并将这些提取的特征值以并行化计算的方式分别与判断阈值进行比较,以完成正式时间分片的筛选过程。例如,确定待迁移数据的时间分片策略就是根据数据的分布密度进行相应的时间分片,按年、月、周进行时间分片,编写相应时间分片代码。例如,数据库中的数据的时间跨度是1年,有20%的数据分布在前三个月(1、2、3月),且每个月分布有10%的数据,50%的数据分布在4月份,20%的数据分布在剩下的几个月,如此,时间分片策略可以是20%的数据按照月时间分片,50%的数据按照周时间分片,20%的数据按照2个月或者3个月时间分片。
步骤204、按照时间分片策略对目标数据的迁出时间进行分片,获得多个时间分片;
针对每个时间切片,查询出该时间切片范围内对应的数据库中的数据文件,并且将获得的数据文件存储至内存中。检测到第n个时间切片开始时,基于一天开始时刻至第n-1个时间切片的迁移信息获得待迁移信息的第n个时间切片的迁移数据;n为正整数,且n大于1小于等于N。这里,第n个时间切片为N个时间切片中的除第1个时间切片外的任一时间切片。因此,本步骤中,n为正整数且n小于等于N,并且n大于1。其中,一天开始时刻为每一天的00:00。检测到第n个时间切片开始时,n为正整数且n小于等于N,并且n大于1,基于一天开始时刻至第n-1个时间切片的迁移信息获得第n个时间切片的迁移数据,包括:基于一天开始时刻至第n-1个时间切片结束时刻的理论迁移数据和一天开始时刻至第n-1个时间切片结束时刻的实际迁移数据获得第n个时间切片的迁移数据。
步骤205、根据数据迁出端和数据迁入端确定数据迁移过程中的数据流向,根据数据流向依次将各个时间分片对应的目标数据迁移至数据迁入端。
其中,根据所述目标数据迁移方案确定至少一个迁出数据库和每个迁出数据库对应的至少一个迁入数据库;根据所述目标数据迁移方案中数据迁移需求,确定每个迁出数据库与对应的每个迁入数据库之间的迁移数据内容;依据每个迁出数据库与对应的每个迁入数据库之间的迁移数据内容确定数据迁移过程中的数据流向。
对每个时间分片任务里,首先根据数据处理任务,对数据进行查询,得到待迁移的数据,然后,对数据进行数据处理,数据处理完了之后,进行数据迁移,在这里,数据处理可以是各种各样的数据处理,例如,数据格式的改变、数据加密等等。以数据迁移为例,以时间切片为单位分别获取每个时间切片对应时间范围内的数据文件,根据查询条件对获取到的多个数据文件进行数据查询,得到数据查询结果。
在一些实施例中,上述步骤205中根据数据流向依次将各个时间分片对应的目标数据迁移至数据迁入端,可以包括:包括:制定数据迁移指令计划,根据所述数据迁移调度指令计划中的数据迁移指令,执行数据迁移。具体地,执行数据迁移包括:
为每个数据迁移任务设置数据迁移时间区间、迁移数据内容、至少一个迁出端、与迁出端对应的至少一个迁入端;
根据每个数据迁移任务对应的数据迁移时间区间、迁移数据内容、至少一个迁出端、与迁出端对应的至少一个迁入端,生成相应的数据迁移指令,得到数据迁移调度指令计划。
在一些实施例中,上述步骤205根据数据流向依次将各个时间分片对应的目标数据迁移至数据迁入端,可以包括:
步骤2051、对每个时间分片的目标数据基于定时器进行计时统计,在定时器计时期间检测到时间分片时,判断每个数据迁移任务在定时器到达预设计时时长时完成迁移的数据量是否等于相应的目标数据量。
其中,根据每个所述数据迁移任务的所述开始时间及对应的当前时间,计算得到每个所述数据迁移任务的执行时长,判断每个所述数据迁移任务在所述定时器到达预设计时时长时完成迁移的数据量是否等于相应的目标数据量。
步骤2052、当完成迁移的数据量等于相应的目标数据量时,停止执行相应的数据迁移任务;
其中,目标数据量为数据迁移任务对应的源库在启动定时器时的数据量。
步骤2053、获取停止执行的数据迁移任务的历史数据;根据历史数据得到停止执行的数据迁移任务在不停止执行的情况下完成迁移目标数据量的理论执行时长,根据预设阈值和停止执行的数据迁移任务的理论执行时长之间的大小关系,调整预设计时时长。
可以理解的是,如此动态地调整预设计时时长,使得预设计时时长为较为合适的数值范围,在保证监控的灵敏度的基础上,有效地减少了系统开销。
上述步骤205根据数据流向依次将各个时间分片对应的目标数据迁移至数据迁入端,可以包括:
当数据迁移任务重启之后,从最后记录的数据位置开始继续从原数据库向新数据库中迁移目标数据。这样有利于提高数据迁移效率,节约数据迁移装置的资源。
在一些实施例中,在目标数据的迁移过程中,按照预设的时间间隔周期性的记录已迁移到的数据位置;
在一种具体场景中,根据时间分片策略,确定出和时间分片策略对应的一个或者多个第运行节点;将相应节点记录到redis中,重跑任务,数据做好重复跑更新处理。例如,可以通过缓存技术Redis来实现数据迁移分片落地,实现迁移过程的可控,保证数据的可靠性、稳定性和可追溯性。其中,Redis(Remote Dictionary Server),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API,在本实施例中,Redis可以用于缓存存储。
时间分片规则涉及到两个参数:一个或者多个时间分片,以及时间分片的划分数量。其中,所述时间分片规则中包含多个时间分片。每条待恢复业务流水都有各自的异常发生时间。异常发生时间,指的是待恢复业务流水的故障产生时间。其中,每个时间分片携带有各自的捞取策略和重发策略,使得每个所述运行节点根据自身分配到的时间分片的捞取策略捞取对应数量的待恢复业务流水的标志信息,并按照自身分配到的时间分片的重发策略将所述待恢复业务流水的标志信息分成N组,将每组待恢复业务流水的标志信息分配给对应的运行节点进行恢复操作。其中,运行节点的数量由时间分片的划分数量决定。假设有两个时间分片,则会将这两个时间分配给各自的运行节点,并且将各时间分片的相关策略(捞取策略、重发策略)也发送给各自对应的所述运行节点中。
在一些实施例中,如果数据迁出端和数据迁入端的数据存储地址不同(如两个数据库),则对待迁出的数据进行加密处理后迁移至数据迁入端。
在该步骤中,为了保证数据传输的保密性,首先对待迁移数据进行加密处理后,再进行传输。
本实施例提供一种数据迁移方法,可由数据迁移装置来执行。数据迁移装置可以是各种具有能力实施本实施例提供的数据迁移方法的设备,例如专用于数据迁移的迁移设备等。
在数据库的使用过程中,经常面临数据迁移的情况,例如当数据库的存储结构无法满足业务需求,需要将数据库中的数据迁移到能够满足业务需求的新数据库,或者当数据库因扩容,需要将数据库中的数据迁移到容量更大的新数据库,等等。为便于描述,将之前存储数据的数据库称为原数据库。本实施例提供的方法适用于各种需要进行数据库迁移的情况。
如图3所示,在一个实施例中,提供了一种数据迁移装置,该数据迁移装置可以集成于上述的计算机设备110中,具体可以包括
目标数据获取单元311,用于根据目标业务确定数据迁出端的目标数据;
数据分布确定单元312,用于确定目标数据迁出数据迁出端的数据分布状态;
分片策略输出单元313,用于基于决策树模型,根据数据分布状态确定目标数据的时间分片策略;
时间分片单元314,用于按照时间分片策略对目标数据的迁出时间进行分片,获得多个时间分片;
数据迁移单元315,用于根据数据迁出端和数据迁入端确定数据迁移过程中的数据流向,根据数据流向依次将各个时间分片对应的目标数据迁移至数据迁入端。
在一些实施例中,上述数据分布确定单元包括:
时间轴确定模块,用于根据目标业务确定目标数据迁出数据迁出端的时间轴;
时间粒度确定模块,用于根据所时间轴确定对目标数据的迁出时间进行分片的多个候选时间粒度;
候选时间分片模块,用于分别按照各候选时间粒度划分目标数据的迁出时间,得到多个候选时间分片;
数据分布状态确定模块,用于统计各候选时间分片中目标数据的数据密度,得到数据分布状态。
在一些实施例中,数据迁移单元包括:
计时器,用于对每个时间分片的目标数据基于定时器进行计时统计,在定时器计时期间检测到时间分片时,判断每个数据迁移任务在定时器到达预设计时时长时完成迁移的数据量是否等于相应的目标数据量;当完成迁移的数据量等于相应的目标数据量时,停止执行相应的数据迁移任务;
时间调整模块,用于获取停止执行的数据迁移任务的历史数据;根据历史数据得到停止执行的数据迁移任务在不停止执行的情况下完成迁移目标数据量的理论执行时长,根据预设阈值和停止执行的数据迁移任务的理论执行时长之间的大小关系,调整预设计时时长。
在一些实施例中,在目标数据的迁移过程中,按照预设的时间间隔周期性的记录已迁移到的数据位置;数据迁移单元包括:
重启模块,用于当数据迁移任务重启之后,从最后记录的数据位置开始继续从原数据库向新数据库中迁移目标数据。
在一些实施例中,数据迁移单元包括:合法性检查模块,该模块用于根据数据流向依次将各个时间分片对应的目标数据迁移至数据迁入端,包括:在将目标数据迁移至数据迁入端之前对目标数据进行合法性检查,根据检查结果对目标数据进行处理。
在一些实施例中,数据迁移单元包括:加密模块,该模块用于如果目标数据的迁出端和迁入端不是同一数据库,则对目标数据进行加密后再将目标数据由数据迁出端迁移至数据迁入端。
图4为一个实施例中计算机设备的内部结构示意图。如图4所示,该计算机设备包括通过系统总线连接的处理器、存储介质、存储器和网络API接口。其中,该计算机设备的存储介质存储有操作系统、数据库和计算机可读指令,数据库中可存储有控件信息序列,该计算机可读指令被处理器执行时,可使得处理器实现一种数据迁移方法。该计算机设备的处理器用于提供计算和控制能力,支撑整个计算机设备的运行。该计算机设备的存储器中可存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行一种数据迁移方法。该计算机设备的网络API接口用于与终端连接通信。本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提出了一种计算机设备,计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:根据目标业务确定数据迁出端的目标数据;确定目标数据迁出数据迁出端的数据分布状态;基于决策树模型,根据数据分布状态确定目标数据的时间分片策略;按照时间分片策略对目标数据的迁出时间进行分片,获得多个时间分片;根据数据迁出端和数据迁入端确定数据迁移过程中的数据流向,根据数据流向依次将各个时间分片对应的目标数据迁移至数据迁入端。
在一个实施例中,确定目标数据迁出数据迁出端的数据分布状态步骤,包括:根据目标业务确定目标数据迁出数据迁出端的时间轴;根据所时间轴确定对目标数据的迁出时间进行分片的多个候选时间粒度;分别按照各候选时间粒度划分目标数据的迁出时间,得到多个候选时间分片;统计各候选时间分片中目标数据的数据密度,得到数据分布状态。
在一个实施例中,基于决策树模型,根据数据分布状态确定目标数据的时间分片策略步骤,包括:将各候选时间分片以及该获选时间分片中目标数据的数据密度输入决策树模型的根节点;在每个非根节点,将经过当前非根节点的母节点的条件计算后分类到当前非根节点的候选时间分片进行条件计算,从候选时间分片中筛选出满足预设条件的正式时间分片。
在一个实施例中,决策树模型中的每个非根节点对应一个候选时间粒度的筛选条件,筛选条件为候选时间分片中目标数据的数据密度不大于预设阈值。
在一个实施例中,根据数据流向依次将各个时间分片对应的目标数据迁移至数据迁入端步骤,包括:对每个时间分片的目标数据基于定时器进行计时统计,在定时器计时期间检测到时间分片时,判断每个数据迁移任务在定时器到达预设计时时长时完成迁移的数据量是否等于相应的目标数据量;当完成迁移的数据量等于相应的目标数据量时,停止执行相应的数据迁移任务;获取停止执行的数据迁移任务的历史数据;根据历史数据得到停止执行的数据迁移任务在不停止执行的情况下完成迁移目标数据量的理论执行时长,根据预设阈值和停止执行的数据迁移任务的理论执行时长之间的大小关系,调整预设计时时长。
在一个实施例中,在目标数据的迁移过程中,按照预设的时间间隔周期性的记录已迁移到的数据位置;根据数据流向依次将各个时间分片对应的目标数据迁移至数据迁入端,包括:当数据迁移任务重启之后,从最后记录的数据位置开始继续从原数据库向新数据库中迁移目标数据。
在一个实施例中,根据数据流向依次将各个时间分片对应的目标数据迁移至数据迁入端,包括:在将目标数据迁移至数据迁入端之前对目标数据进行合法性检查,根据检查结果对目标数据进行处理。
在一个实施例中,提出了一种存储有计算机可读指令的存储介质,该计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行以下步骤:根据目标业务确定数据迁出端的目标数据;确定所述目标数据迁出所述数据迁出端的数据分布状态;基于决策树模型,根据所述数据分布状态确定所述目标数据的时间分片策略;按照所述时间分片策略对所述目标数据的迁出时间进行分片,获得多个时间分片;根据数据迁出端和数据迁入端确定数据迁移过程中的数据流向,根据所述数据流向依次将各个时间分片对应的目标数据迁移至数据迁入端。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。