一种数据迁移方法及装置与流程

文档序号:12786407阅读:246来源:国知局
一种数据迁移方法及装置与流程

本申请涉及数据库技术领域,尤其涉及一种数据迁移方法及装置。



背景技术:

计算机文件基本上分为两种:二进制文件和ASCII(也称纯文本text文件),图形文件及文字处理程序等计算机程序都属于二进制文件。这些文件含有特殊的格式及计算机代码。ASCII是可以用任何文字处理程序阅读的简单文本文件。

在某些情况下,比如当进行业务拆分、当前数据库满足不了二进制文件(二进制文件一般占用的存储空间较大)的存储需求等时,我们会需要将当前数据库(以下简称旧库)中的数据迁移到另一个数据库(以下简称新库)中,并在完成数据迁移后,将线上业务从旧库迁移到新库中。在进行数据迁移的过程中,仍然采用旧库为线上业务提供数据服务。

在进行数据迁移的过程中,会有新的数据需要进行存储。为了不影响线上业务的正常进行,一般采用同步双写的机制进行新数据的迁移。具体地,新的数据首先被写入旧库的待处理队列中,然后将待处理队列中的数据同步写入旧库及新库中,并将旧库中从开始执行同步双写的时间点以前的数据迁移到新库。

目前,对于二进制文件的存储及访问成为影响数据库的数据传输速度及稳定性的瓶颈。在进行数据迁移时,若仍采用现有方式执行二进制文件的迁移,将会严重影响数据迁移效率,及迁移后的数据访问性能。



技术实现要素:

本申请实施例提供一种数据迁移方法及装置,用以解决现有技术中对于二进制文件的存储及访问影响了数据库的数据传输速度及稳定性的问题。

本申请实施例提供一种数据迁移方法,包括:

基于第一数据库中的待迁移数据记录,确定第一待迁移文件;

将所述第一待迁移文件存储在设置的文件系统中,并将所述第一待迁移文件的标识信息存储在第二数据库中;

其中,所述第一待迁移文件的标识信息为用于标识所述第一待迁移文件在所述文件系统中的存储位置的信息。

可选地,所述文件系统为分布式文件系统。

可选地,将所述第一待迁移文件存储在设置的文件系统中,并将所述第一待迁移文件的标识信息存储在第二数据库中之后,还包括:

当接收到客户端针对所述第一待迁移文件的访问请求时,基于所述第二数据库中所述第一待迁移文件的标识信息,获取所述文件系统中存储的所述第一待迁移文件,并返回给所述客户端。

可选地,基于第一数据库中的待迁移数据记录,确定第一待迁移文件,包括:

从所述待迁移数据记录中,提取二进制文件;

将提取的所述二进制文件、和基于所述二进制文件转换得到的文本text文件两者中的至少一种确定为所述第一待迁移文件。

可选地,若所述第一待迁移文件包括所述二进制文件,则将所述二进制文件存储在设置的文件系统中,并将所述二进制文件的标识信息存储在第二数据库中之后,还包括:

当接收到客户端针对所述二进制文件的下载请求时,基于所述第二数据库中所述二进制文件的标识信息,从所述文件系统中获取所述二进制文件,并将获取的所述二进制文件缓存在内容分发网络CDN中;

向所述客户端返回所述二进制文件在所述CDN中的访问地址。

可选地,若所述待迁移数据记录为位于所述第一数据库的待存储队列中的新数据记录,则所述方法还包括:

将基于所述二进制文件转换得到的text文件存储在所述第一数据库中。

可选地,所述方法还包括:

从所述待迁移数据记录中,提取第二待迁移文件,所述第二待迁移文件为非二进制文件;

若所述待迁移数据记录为位于所述第一数据库的待存储队列中的新数据记录,则将所述第二待迁移文件存储在所述第一数据库和第二数据库中;

若所述待迁移数据记录为位于所述第一数据库的已存储列表中的历史数据记录,则将所述第二待迁移文件存储在所述第二数据库中。

可选地,所述方法还包括:

将所述第一数据库的已存储列表中的各条历史数据记录的标识信息写入预设数据表中;其中,每条历史数据记录的标识信息用于标识该条历史数据记录在所述第一数据库中的存储位置;

基于所述预设数据表中各条历史数据记录的标识信息,分别从所述第一数据库中提取每条未处理的历史数据记录作为所述待迁移数据记录,并在所述预设数据表中记录该条历史数据记录的处理状态。

本申请实施例提供一种数据迁移装置,包括:

确定模块,用于基于第一数据库中的待迁移数据记录,确定第一待迁移文件;

存储模块,用于将所述第一待迁移文件存储在设置的文件系统中,并将所述第一待迁移文件的标识信息存储在第二数据库中;

其中,所述第一待迁移文件的标识信息为用于标识所述第一待迁移文件在所述文件系统中的存储位置的信息。

本申请实施例在需要进行迁库时,从第一数据库中的待迁移数据记录中确定第一待迁移文件,将该第一待迁移文件存储在设置的文件系统中,并将该第一待迁移文件的标识信息存储在第二数据库中。这样,由于只在新数据库中存储该第一待迁移文件的标识信息,因此可以极大地提高向新数据库中迁移数据的效率,另外,该文件系统具体可以是分布式文件系统,由于分布式文件系统可以为外部提供高可靠和高并发的存储访问,因此可以提高进行数据迁移后的数据访问性能。这样,本申请实施例可以提高对第一待迁移文件,比如二进制文件的存储及访问能力。

另外,在本申请优选的实施方式中,在对二进制文件进行存储时进行了格式上的转换,即抽取其中的文本text内容进行存储,这样进行转换之后,在接收到客户端针对该二进制文件的页面访问请求后,可以基于该二进制文件的文本text内容快速进行页面渲染反馈,相比现有技术不进行格式转换的方式,提高了响应速度。

附图说明

图1为本申请实施例进行数据迁移的示意图;

图2为本申请实施例一提供的数据迁移方法流程图;

图3为本申请实施例二提供的数据迁移方法流程图;

图4为本申请实施例三提供的数据迁移方法流程图;

图5为本申请实施例提供的数据迁移装置结构示意图。

具体实施方式

如图1所示,为本申请实施例进行数据迁移的示意图。本申请实施例中,对于在确定进行迁库后接收的新数据(接收到新数据后,首先写入旧数据库的待处理队列中),对其中的二进制文件和非二进制文件分别进行不同的处理后执行同步双写(也即分别写入新数据库和旧数据库)。其中,在向新数据库中写入二进制文件时,将第一待迁移文件(包括二进制文件和/或基于该二进制文件转换得到的文本text文件)存储在分布式文件系统中,并将标识该第一待迁移文件的存储位置的标识信息存储在新数据库中。对于存储在旧数据库中的历史数据,也同样将其划分为二进制文件和非二进制文件,并分别进行不同的处理后存储到新数据库。

下面结合说明书附图对本申请实施例作进一步详细描述。

实施例一

如图2所示,为本申请实施例一提供的数据迁移方法流程图,包括以下步骤:

S201:基于第一数据库中的待迁移数据记录,确定第一待迁移文件。

这里,第一数据库中可以存在多条待迁移数据记录,针对其中每一条待迁移数据记录,确定其中的第一待迁移文件。

本申请实施例中,考虑到二进制文件占用的存储空间较大,而待迁移数据记录中的非二进制文件,也即text文件占用的存储空间都较小,因此可以只对其中的二进制文件执行步骤S202的处理。

具体地,可以从待迁移数据记录中,提取二进制文件;将提取的二进制文件、和基于该二进制文件转换得到的文本text文件两者中的至少一种确定为所述第一待迁移文件。

S202:将所述第一待迁移文件存储在设置的文件系统中,并将所述第一待迁移文件的标识信息存储在第二数据库中;其中,所述第一待迁移文件的标识信息为用于标识所述第一待迁移文件在所述文件系统中的存储位置的信息。

本申请实施例中的二进制文件包括图形文件及文字处理程序等,为非文本text文件。由于二进制文件占用的存储空间较大,因此,可以将二进制文件从待迁移数据记录中提取出来,只在数据库中存储其对应的标识信息,而将该二进制文件存储在文件系统中。

优选地,该文件系统可以指分布式文件系统。分布式文件系统(Distributed File System)由众多的节点组成一个文件系统网络。分布式文件系统具有高性能、高可靠性及可扩展性强的特点,可以通过增加服务器支持高并发、大存储量、大吞吐量的访问,且能够有效避免单点故障。

S203:当接收到客户端针对所述第一待迁移文件的访问请求时,基于所述第二数据库中所述第一待迁移文件的标识信息,获取所述文件系统中存储的所述第一待迁移文件,并返回给所述客户端。

在具体实施中,若客户端需要访问第一待迁移文件,则基于该第一待迁移文件的标识信息,从分布式文件系统中获取对应的第一待迁移文件,并返回给客户端。

实施例二

下面以第一待迁移文件为二进制文件,第二待迁移文件为非二进制文件为例,作进一步介绍。

如图3所示,为本申请实施例二提供的数据迁移方法流程图,包括以下步骤:

S301:将第一数据库中的待迁移数据记录中的二进制文件和非二进制文件区分开,针对二进制文件,执行下述S302,针对非二进制文件,执行下述S303。

这里,待迁移数据记录可以为在确定需要进行迁库后,写入第一数据库(旧库)的待处理队列中的新数据(新接收、还未正式入库),也可以为已存储在第一数据库中的历史数据。

对于历史数据,可以将第一数据库的已存储列表中的各条历史数据记录的标识信息(Identity,ID)写入预设数据表(该数据表为创建的临时表,在完成历史数据迁移后可以删除)中;其中,每条历史数据记录的标识信息用于标识该条历史数据记录在所述第一数据库中的存储位置(该标识信息可以为存储地址,或者为在第一数据库中记录的对应该条历史数据记录的标识);基于所述预设数据表中各条历史数据记录的标识信息,分别从所述第一数据库中提取每条未处理的历史数据记录作为所述待迁移数据记录,并在所述预设数据表中记录该条历史数据记录的处理状态。这里,可以设立定时任务,基于预设数据表中的各条历史数据记录的标识信息,周期性取出第一数据库中每一条未处理(未写入第二数据库)的历史数据记录进行处理(也即写入第二数据库)。通过该预设数据表记录处理状态,可以实现对历史数据记录的不重复处理,也即支持幂等性。

对于每一条新数据记录或历史数据记录,都将其中的二进制文件(比如PDF格式的二进制文件)和非二进制文件区分开分别进行处理。

S302:基于所述二进制文件转换得到文本text文件;将二进制文件以及转换后的text文件存储在分布式文件系统中,并将标识该二进制文件在分布式文件系统中的存储位置的标识信息以及text文件在分布式文件系统中的存储位置的标识信息存储在第二数据库中;若待迁移数据记录为新数据,还将转换后的text文件存储在第一数据库中。

在S302中,将二进制文件以及基于二进制文件转换得到的text文件存储在分布式文件系统中,并将标识二进制文件在分布式文件系统中的存储位置的标识信息(该标识信息可以为存储地址,或者为在分布式文件系统中记录的对应该二进制文件的标识),以及标识所述text文件的存储位置的标识信息存储在第二数据库中。

这样,在完成迁库(为用户提供数据服务的数据库从第一数据库迁移到第二数据库)后,当接收到客户端针对该二进制文件的下载请求时,可以基于第二数据库中存储的该二进制文件的标识信息,在分布式文件系统中获取对应的二进制文件反馈给客户端。另外,为了进一步提高二进制文件的下载速度,在基于二进制文件的标识信息从分布式文件系统中获取对应的二进制文件后,可以将获取的二进制文件缓存在内容分发网络(Content Delivery Network,CDN)中,向客户端返回所述二进制文件在所述CDN中的访问地址。

这里,对于二进制文件下载,采用CDN缓存以后,返回给客户端该二进制文件在CDN中对应的访问地址。CDN系统能够实时地根据网络流量,及各节点的连接、负载状况,以及到客户端的距离和响应时间等综合信息,将客户端的访问请求重新导向离客户端最近的服务节点上。这样,客户端可以就近获取访问内容,避免网络拥挤的状况,提高用户访问网站的响应速度。

另外,在完成迁库后,若接收到客户端针对所述二进制文件的页面访问请求后,可以基于所述text文件的标识信息,在分布式文件系统中获取对应的text文件,并基于该text文件对访问页面进行渲染反馈。

另外,若所述待迁移数据记录为新数据,由于二进制文件占用存储空间一般较大,本申请实施例不在第一数据库中存储二进制文件,也即在第一数据库中丢弃该二进制文件,但是为了不影响线上业务的正常进行,将从二进制文件中抽取的text内容存储在第一数据库中(也即进行同步双写)。这样,在完成迁库之前,当接收到客户端针对所述二进制文件的页面访问请求后,可以基于第一数据库中的text文件对访问页面进行渲染反馈。

在具体实施中,当二进制文件为PDF格式的文件时,可以使用Pdfbox工具,从PDF文件中抽取text内容。

本申请实施例在对二进制文件进行存储时进行了格式上的转换,即抽取其中的文本text内容进行存储,这样进行转换之后,在接收到客户端针对该二进制文件的访问请求后,可以快速对该二进制文件的内容进行渲染反馈,相比现有技术不进行格式转换的方式,提高了响应速度。

S303:若待迁移数据记录为位于第一数据库的待存储队列中的新数据记录,则将非二进制文件存储在第一数据库和第二数据库中;若待迁移数据记录为位于第一数据库的已存储列表中的历史数据记录,则将非二进制文件存储在第二数据库中。

这里,针对待迁移数据记录中的非二进制文件,执行模型转化处理(比如进行数据表的拆分)后存储在第二数据库中,在待迁移数据记录为新数据的情况下,还会将非二进制文件存储在第一数据库中。

S304:将为线上业务提供服务的数据库从第一数据库迁移到第二数据库。

具体地,将为线上业务提供服务的数据库接口从所述第一数据库的访问接口切换到所述第二数据库的访问接口。

这里,给客户端提供数据服务的数据库切换到第二数据库,也即使用第二数据的数据服务接口提供数据服务,但是客户端的接口不变。

本申请实施例在需要进行迁库时,将待迁移数据记录中的二进制文件及转换后的text文件存储在分布式文件系统中,然后将用于标识该二进制文件在分布式文件系统中的存储位置的标识信息及标识该text文件在分布式文件系统中的存储位置的标识信息存储在新数据库中。这样,由于只在新数据库中存储该二进制文件及转换后的text文件的标识信息,可以极大地提高向新数据库中迁移数据的效率。另外,由于分布式文件系统可以为外部提供高可靠和高并发的存储访问,因此可以提高进行数据迁移后的数据访问性能。这样,本申请实施例可以提高对二进制文件的存储及访问能力。本申请实施例在对二进制文件进行存储时进行了格式上的转换,即抽取其中的文本text内容进行存储,这样进行转换之后,在接收到客户端针对该二进制文件的页面访问请求后,可以快速对该二进制文件的内容进行页面渲染反馈,相比现有技术不进行格式转换的方式,提高了响应速度。

实施例二

参见图1所示的数据迁移示意图,本申请实施例二给出了一个具体的实施过程:

针对在确定迁库后接收的新数据,执行下述S401a~S404a及S405~S407,针对在确定迁库前存储在第一数据库中的历史数据,执行下述S401b~S404b,及S405~S407。

S401a:将接收的每一条新数据记录写入第一数据库的待处理队列中。

S402a:从第一数据库的待处理队列中依次取出每一条新数据记录,针对每一条新数据记录,将该条新数据记录中的二进制文件和非二进制文件区分开,针对其中的二进制文件,执行下述S403a,针对其中的非二进制文件,执行下述S404a。

S403a:基于所述二进制文件转换得到text文件,将该text文件和二进制文件存储在分布式文件系统中,并将所述text文件和二进制文件分别对应的标识在分布式文件系统中的存储位置的标识信息存储在第二数据库中;将所述text文件同步存储在第一数据库中。

S404a:将所述非二进制文件进行模型转化后,同步存储在第一数据库和第二数据库中。

S401b:将第一数据库中的各条历史数据记录的标识信息写入预设数据表中。

S402b:基于预设数据表中各条历史数据记录的标识信息,分别从第一数据库中提取每条未处理的历史数据记录,针对提取的每一条历史数据记录,将该条历史数据记录中的二进制文件和非二进制文件区分开,针对其中的二进制文件,执行下述S403b,针对其中的非二进制文件,执行下述S404b。并在预设数据表中记录该条历史数据记录的处理状态。

S403b:抽取二进制文件中的text文本,将所述text文本和二进制文件存储在分布式文件系统中,并将标识所述text文本和二进制文件在分布式文件系统中的存储位置的标识信息存储在第二数据库中。

S404b:将所述非二进制文件进行模型转化后,存储在第二数据库中。

S405:在完成上述数据迁移后,将为线上业务提供服务的数据库从第一数据库迁移到第二数据库。

S406:当接收到客户端针对指定二进制文件的页面访问请求时,基于第二数据库中该指定二进制文件对应的text文件的标识信息,获取分布式文件系统中存储的text文件,基于该text文件对访问页面进行渲染反馈。

S407:当接收到客户端针对指定二进制文件的下载请求时,基于第二数据库中该指定二进制文件的标识信息,获取分布式文件系统中存储的该指定二进制文件,并缓存在CDN中,将对应的CDN的访问地址返回给客户端。

基于同一发明构思,本申请实施例中还提供了一种与数据迁移方法对应的数据迁移装置,由于该装置解决问题的原理与本申请实施例数据迁移方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。

如图5所示,为本申请实施例提供的数据迁移装置结构图,包括:

确定模块51,用于基于第一数据库中的待迁移数据记录,确定第一待迁移文件;

存储模块52,用于将所述第一待迁移文件存储在设置的文件系统中,并将所述第一待迁移文件的标识信息存储在第二数据库中;

其中,所述第一待迁移文件的标识信息为用于标识所述第一待迁移文件在所述文件系统中的存储位置的信息。

可选地,所述装置还包括:

第一获取模块53,用于当接收到客户端针对所述第一待迁移文件的访问请求时,基于所述第二数据库中所述第一待迁移文件的标识信息,获取所述文件系统中存储的所述第一待迁移文件,并返回给所述客户端。

可选地,所述确定模块51具体用于:

从第一数据库中的待迁移数据记录中,提取二进制文件;将提取的所述二进制文件、和基于所述二进制文件转换得到的文本text文件两者中的至少一种确定为所述第一待迁移文件。

可选地,所述装置还包括:

第二获取模块54,用于当接收到客户端针对所述二进制文件的下载请求时,基于所述第二数据库中所述二进制文件的标识信息,从所述文件系统中获取所述二进制文件,并将获取的所述二进制文件缓存在内容分发网络CDN中;向所述客户端返回所述二进制文件在所述CDN中的访问地址。

可选地,若所述待迁移数据记录为位于所述第一数据库的待存储队列中的新数据记录,则所述存储模块52还用于:

将基于所述二进制文件转换得到的text文件存储在所述第一数据库中。

可选地,所述确定模块51还用于:

从第一数据库中的待迁移数据记录中,提取第二待迁移文件,所述第二待迁移文件为非二进制文件;

所述存储模块52还用于:若所述待迁移数据记录为位于所述第一数据库的待存储队列中的新数据记录,则将所述第二待迁移文件存储在所述第一数据库和第二数据库中;若所述待迁移数据记录为位于所述第一数据库的已存储列表中的历史数据记录,则将所述第二待迁移文件存储在所述第二数据库中。

可选地,所述装置还包括:

记录模块55,用于将所述第一数据库的已存储列表中的各条历史数据记录的标识信息写入预设数据表中;其中,每条历史数据记录的标识信息用于标识该条历史数据记录在所述第一数据库中的存储位置;基于所述预设数据表中各条历史数据记录的标识信息,分别从所述第一数据库中提取每条未处理的历史数据记录作为所述待迁移数据记录,并在所述预设数据表中记录该条历史数据记录的处理状态。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1