CN111831625A - 数据迁移方法、数据迁移装置和可读存储介质 - Google Patents
数据迁移方法、数据迁移装置和可读存储介质 Download PDFInfo
- Publication number
- CN111831625A CN111831625A CN202010676183.4A CN202010676183A CN111831625A CN 111831625 A CN111831625 A CN 111831625A CN 202010676183 A CN202010676183 A CN 202010676183A CN 111831625 A CN111831625 A CN 111831625A
- Authority
- CN
- China
- Prior art keywords
- data
- file
- target
- database
- writing
- 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.)
- Granted
Links
- 230000005012 migration Effects 0.000 title claims abstract description 75
- 238000000034 method Methods 0.000 title claims abstract description 69
- 238000013508 migration Methods 0.000 title claims abstract description 64
- 239000012634 fragment Substances 0.000 claims abstract description 60
- 230000008569 process Effects 0.000 abstract description 26
- 230000005540 biological transmission Effects 0.000 abstract description 10
- 238000012546 transfer Methods 0.000 description 8
- 230000000903 blocking effect Effects 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
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
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (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
技术领域
本发明涉及数据处理技术领域,尤其涉及数据迁移方法、数据迁移装置和可读存储介质。
背景技术
随着大数据、人工智能的不断发展,数据变得尤为重要,而数据应用大多需要进行数据迁移。例如,在人脸大数据系统中,数据是以PB为数量级单位保存在分布式存储系统(如Hbase),并同步数据到搜索服务器(如Elasticsearch)中,以便于后期的查询、搜索等操作。其中,由于系统升级等原因,分布式存储系统中的数据需要迁移到搜索服务器中,然而数据如此庞大,在迁移过程中若程序中断的话,难以定位出未迁移的数据,则需从头开始重新迁移,严重浪费时间。
发明内容
本发明的主要目的在于提供一种数据迁移方法,旨在实现大量数据迁移过程中出现中断后,可基于中断前的数据传输进度继续进行数据传输,减少数据迁移时间,提高发生中断的数据迁移过程的整体传输效率。
为实现上述目的,本发明提供一种数据迁移方法,所述数据迁移方法包括以下步骤:
读取第一数据库中的数据片段,将读取到的数据片段写入数据文件;
获取所述数据片段在所述第一数据库中对应的索引信息,并将所述索引信息写入索引文件;
执行数据写入操作将所述数据文件中的数据写入目标数据库;
当数据写入操作中断后再次启动时,根据所述索引文件中的索引信息,读取所述第一数据库中未迁移的数据并写入所述目标数据库。
可选地,所述读取第一数据库中的数据片段,将读取到的数据片段写入数据文件的步骤包括:
读取所述第一数据库中的数据;
以设定数据量对读取到的数据进行分片,得到多于一个数据片段;
将每个数据片段分别写入对应的数据文件;其中,不同的数据片段对应不同的数据文件。
可选地,所述读取第一数据库中的数据片段,将读取到的数据片段写入数据文件的步骤包括:
通过单线程读取第一数据库中的数据片段,将读取到的数据片段以多线程的方式写入数据文件;
所述执行数据写入操作将所述数据文件中的数据写入目标数据库的步骤包括:
通过多于一个线程并行执行所述数据写入操作,将多于一个所述数据文件的数据写入所述目标数据库;其中,每个所述线程执行一个所述数据文件的数据写入操作。
可选地,所述获取所述数据片段在所述第一数据库中对应的索引信息的步骤包括:
获取每个所述数据片段中最后读取的一条数据在所述第一数据库中的数据索引,作为每个数据片段对应的索引信息;且/或,
所述根据所述索引文件中的索引信息,读取所述第一数据库中未迁移的数据并写入所述目标数据库的步骤包括:
在所述索引文件中,将在数据写入操作中断之前最后写入的数据片段的索引信息作为目标索引;
以所述目标索引读取所述第一数据库中未迁移的数据并写入所述目标数据库。
可选地,所述执行数据写入操作将所述数据文件中的数据写入目标数据库的步骤之后,还包括:
当数据写入操作中断后再次启动时,获取未完成数据写入操作的数据文件作为目标数据文件;
执行数据写入操作将所述目标数据文件中的数据写入所述目标数据库;
当所述目标数据文件中的所有数据均写入所述目标数据库时,执行所述根据所述索引文件中的索引信息,读取所述第一数据库中未迁移的数据并写入所述目标数据库的步骤。
可选地,每个所述数据文件包括多于一条数据,所述执行数据写入操作将所述数据文件中的数据写入目标数据库的步骤包括:
将所述数据文件中每条数据依次作为第一目标数据;
获取所述数据文件的第一文件标识信息、以及所述第一目标数据的第一数据标识信息;
根据所述第一文件标识信息和所述第一数据标识信息,生成所述第一目标数据对应的第一标识字段;
将携带有第一标识字段的第一目标数据写入所述目标数据库。
可选地,所述目标数据文件包括多于一条数据,所述执行数据写入操作将所述目标数据文件中的数据写入所述目标数据库的步骤包括:
将所述目标数据文件中每条数据依次作为第二目标数据;
获取所述目标数据文件的第二文件标识信息、以及所述第二目标数据的第二数据标识信息;
根据所述第二文件标识信息和所述第二数据标识信息,生成所述第二目标数据对应的第二标识字段;
当所述目标数据库中存在与所述第二标识字段一致的标识字段时,将所述第二目标数据覆盖所述第二标识字段在所述目标数据库中对应的数据;
当所述目标数据库中不存在与所述第二标识字段一致的标识字段时,将所述第二目标数据以添加的方式写入所述目标数据库。
可选地,所述数据文件中的数据包括图片数据,所述目标数据库为分布式搜索服务器,所述执行数据写入操作将所述数据文件中的数据写入目标数据库的步骤包括:
将所述图片数据发送至分布式文件系统服务器;
接收所述分布式文件系统服务器基于所述图片数据返回的地址信息;
将所述数据文件中的图片数据替换为对应的地址信息;
将替换后的数据写入所述分布式搜索服务器;且/或,
所述执行数据写入操作将所述数据文件中的数据写入目标数据库的步骤之后,还包括:
当所述数据文件中的数据已全部写入所述目标数据库时,删除所述数据文件。
此外,为了实现上述目的,本申请还提出一种数据迁移装置,所述数据迁移装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据迁移程序,所述数据迁移程序被所述处理器执行时实现如上任一项所述的数据迁移方法的步骤。
此外,为了实现上述目的,本申请还提出一种可读存储介质,所述可读存储介质上存储有数据迁移程序,所述数据迁移程序被处理器执行时实现如上任一项所述的数据迁移方法的步骤。
本发明提出的一种数据迁移方法,该方法从第一数据库中读取数据片段并写入数据文件,并在将数据文件的数据写入目标数据库前,获取数据片段在第一数据库中的索引信息写入索引文件,当数据写入过程发生中断后再次启动写入操作时,索引文件中的索引信息可表征中断前的数据迁移进度,因此基于索引文件中的索引信息可识别出第一数据库中未经迁移的数据,通过读取第一数据库中未迁移的数据写入目标数据库,从而实现大量数据迁移过程中出现中断后,无需从头开始迁移数据,而是可以基于中断前的数据传输进度继续进行数据传输,减少数据迁移时间,提高发生中断的数据迁移过程的整体传输效率。
附图说明
图1为本发明数据迁移装置一实施例运行涉及的硬件结构示意图;
图2为本发明数据迁移方法一实施例的流程示意图;
图3为图2中步骤S30的细化流程示意图;
图4为本发明数据迁移方法另一实施例的流程示意图;
图5为本发明数据迁移方法又一实施例的流程示意图;
图6为本发明数据迁移方法再一实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的主要解决方案是:读取第一数据库中的数据片段,将读取到的数据片段写入数据文件;获取所述数据片段在所述第一数据库中对应的索引信息,并将所述索引信息写入索引文件;执行数据写入操作将所述数据文件中的数据写入目标数据库;当所述数据写入操作中断后再次启动时,根据所述索引文件中的索引信息,读取所述第一数据库中未迁移的数据并写入所述目标数据库。
由于现有技术中,在进行大量的数据迁移时,在迁移过程中若程序中断的话,难以定位出未迁移的数据,则需从头开始重新迁移,严重浪费时间
本发明提供上述的解决方案,旨在实现大量数据迁移过程中出现中断后,可基于中断前的数据传输进度继续进行数据传输,减少数据迁移时间,提高发生中断的数据迁移过程的整体传输效率。
本发明实施例提出一种数据迁移装置,应用于数据迁移,尤其应用于人脸数据等大数据的迁移。
在本发明实施例中,参照图1,数据迁移装置包括:处理器1001(例如CPU),存储器1002,数据接口1003等。存储器1002可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1002可选的还可以是独立于前述处理器1001的存储装置。
数据接口1003用于数据传输。数据接口1003、存储器1002均与处理器1001连接。本领域技术人员可以理解,图1中示出的装置结构并不构成对装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种可读存储介质的存储器1002中可以包括数据迁移程序。在图1所示的装置中,处理器1001可以用于调用存储器1002中存储的数据迁移程序,并执行以下实施例中数据迁移方法的相关步骤操作。
本发明实施例还提供一种数据迁移方法,应用于数据迁移,尤其应用于人脸数据等大数据的迁移。
参照图2,提出本申请数据迁移方法一实施例。在本实施例中,所述数据迁移方法包括:
步骤S10,读取第一数据库中的数据片段,将读取到的数据片段写入数据文件;
数据片段指的是第一数据库中的部分数据,数据片段包括至少一条第一数据库中的数据。在本实施例中,通过单线程读取第一数据库中的数据片段,将读取到的数据片段以多线程的方式写入数据文件,具体的通过一个读线程扫描第一数据库中的数据,第一数据库具体为Hbase数据库。具体的,以设定数据量对读取到的数据进行分片,得到多于一个数据片段;将每个数据片段以多线程的方式分别写入对应的数据文件;其中,不同的数据片段对应不同的数据文件。设定数据量可根据实际需求进行设置。在本实施例中,设定数据量为1000条。读线程持续读取第一数据库中的数据,当读取到的数据量达到1000条时,将该1000条数据作为一个数据片段,并写入一个数据文件;然后再从0开始统计读取到的数据量,当读取到的数据量再次达到1000条时,再将该1000条数据作为另一个数据片段,写入另一个数据文件,如此类推。其中,不同的数据片段写入不同的数据文件,一个数据片段写入一个数据文件。数据文件可在读取到其数据片段之前或之后生成。每个数据文件通过随机生成的uuid命名。数据文件保存在设定的缓存区域。
步骤S20,获取所述数据片段在所述第一数据库中对应的索引信息,并将所述索引信息写入索引文件;
第一数据库中所存储的每条数据均具有一个对应的数据索引,以表征每条数据在第一数据库中的存储位置。在本实施例中,数据在第一数据库中按行存储,可将行键作为数据的数据索引。而在其他实施例中,数据在第一数据库中按列存储时,可将列键作为数据的数据索引。
每个数据片段均具有其对应的索引信息,每个数据片段的索引信息均写入索引文件。索引文件为独立于上述任一数据文件的文件。每次数据迁移的过程生成一个索引文件,数据迁移过程的每个数据片段中最后一条数据的索引信息均写入该索引文件中。
具体的,当数据片段包括一条数据时,可将该条数据在所述第一数据库中的数据索引作为所述索引信息;当数据片段包括多于一条数据时,可将数据片段中最后一条数据的索引作为该数据片段的索引信息。
步骤S30,执行数据写入操作将所述数据文件中的数据写入目标数据库;
目标数据库具体为搜索服务器(如Elasticsearch)中的数据库。在其他实施例中,目标数据库也可根据实际需求设置为其他数据库。
在设定的缓存区域中读取数据文件,将读取到的数据文件中的数据写入目标数据库。其中,缓存区域中的数据文件多于一个时,可依次将读取到的数据文件中的数据写入目标数据库。
具体的,在本实施例中,第一数据库为存储人脸图像数据的数据库,因此数据文件中的数据包括图片数据,基于此,当所述目标数据库为分布式搜索服务器时,参照图3,步骤S30具体包括:
步骤S31,将所述图片数据发送至分布式文件系统服务器;
步骤S32,接收所述分布式文件系统服务器基于所述图片数据返回的地址信息;将所述数据文件中的图片数据替换为对应的地址信息;
步骤S33,将替换后的数据写入所述分布式搜索服务器。
在本实施例中分布式文件系统服务器具体为FastDFS。数据文件可具体包括多于一条数据,提取每条数据中的图片数据并发送至FastDFS,接收FastDFS基于图片数据返回的URL地址作为地址信息,将接收到的地址信息替换对应的图片数据。基于此,数据文件中原本包括图片数据的数据均被替换成不包括图片数据、而是包括图像数据对应地址信息的数据。当图片数据均替换成对应的地址信息后,包括有地址信息对数据写入到分布式搜索服务器,基于此,由于图片数据均较大,将图片数据的地址信息代替图片数据写入分布式搜索服务器,可减少搜索服务器的数据存储量,同时便于用户可通过地址信息快速搜索到所需的图片数据。
其中,为了提高数据写入的效率,本实施例通过多于一个线程并行执行所述数据写入操作,将多于一个所述数据文件的数据写入所述目标数据库;其中,每个所述线程执行一个所述数据文件的数据写入操作。具体的,在本实施例中,通过5个线程并行执行数据写入操作。一个线程对应将一个数据文件中的数据写入目标数据库。
步骤S40,当数据写入操作中断后再次启动时,根据所述索引文件中的索引信息,读取所述第一数据库中未迁移的数据并写入所述目标数据库。
数据写入操作中断指的是第一数据库中所需写入到目标数据库中的数据未全部写入目标数据库时由于意外因素所导致的数据写入操作中止。数据写入操作中断后再次启动指的是数据写入操作中止后再次向目标数据库中写入数据。具体的,可通过获取系统的状态信息确定是否存在数据写入操作中断后再次启动的状态。
未迁移的数据指的是未写入到目标数据库中的数据,根据索引文件中的索引信息确定第一数据库已写入到目标数据库中的第一数据和未写入到目标数据库中的第二数据,读取第二数据并写入目标数据库。具体的,为了保证整个数据迁移的过程无论发生多少次中断也可继续中断前的迁移进度继续进行数据迁移,在本实施例中,步骤S40包括当所述数据写入操作中断后再次启动时,返回执行步骤S10,基于此,步骤S10包括根据所述索引文件中的索引信息读取第一数据库中未迁移的数据片段,将读取到的数据片段写入数据文件。
本发明实施例提出的一种数据迁移方法,该方法从第一数据库中读取数据片段并写入数据文件,并在将数据文件的数据写入目标数据库前,获取数据片段在第一数据库中的索引信息写入索引文件,当数据写入过程发生中断后再次启动写入操作时,索引文件中的索引信息可表征中断前的数据迁移进度,因此基于索引文件中的索引信息可识别出第一数据库中未经迁移的数据,通过读取第一数据库中未迁移的数据写入目标数据库,从而实现大量数据迁移过程中出现中断后,无需从头开始迁移数据,而是可以基于中断前的数据传输进度继续进行数据传输,减少数据迁移时间,提高发生中断的数据迁移过程的整体传输效率。
具体的,在本实施例中,读线程使用Array Blocking Queue方法设置了文件队列阻塞机制。数据文件按照数据写入的顺序依次在队列中排列,当队列中的数据文件达到设定阈值(如10个)时,读线程暂停从第一数据库中读取数据,直至写线程将队列中的数据文件写入目标数据库并删除相应的文件后,使队列中数据文件的数量小于10个后读线程才会继续从第一数据库中读取数据,从而保证读写线程的同步。
进一步的,在本实施例中,为了避免文件的堆积,所述步骤S30之后,还包括:当所述数据文件中的数据已全部写入所述目标数据库时,删除所述数据文件。其中,当数据文件多于一个时,当一所述数据文件中的数据已全部写入目标数据库中,则将该数据文件从缓存区域中删除。具体的,当多于一个线程并行执行数据写入操作时,每个写线程完成一个数据文件的数据写入操作,便将对应的数据文件删除,并对缓存区域中空余空闲状态的数据文件执行数据写入操作。
进一步的,基于上述实施例,提出本申请数据迁移方法另一实施例。将所述步骤S20中获取所述数据片段在所述第一数据库中对应的索引信息的步骤定义为步骤S21,将步骤S20中将所述索引信息写入索引文件的步骤定义为步骤S22,参照图4,在本实施例中,步骤S10具体包括:步骤S11,以设定数据量对读取到的数据进行分片,得到多于一个数据片段;将每个数据片段分别写入对应的数据文件;其中,不同的数据片段对应不同的数据文件;基于此,所述步骤S21包括:
步骤S211,获取每个所述数据片段中最后获取的一条数据在所述第一数据库中的数据索引,作为每个数据片段对应的索引信息;
具体的,在本实施例中,第一数据库中以行保存数据,第一数据库中的每行保存一条数据,每条数据在第一数据库中的行键(rowkey)作为该条数据对应的数据索引。读线程读取第一数据库中的数据时,以行键rowkey的顺序读取数据,例如先读取行键rowkey为1的数据,再读取行键rowkey为2的数据,如此类推。基于此,可将每个数据片段中最后读取的第一数据在第一数据库中的行键rowkey,作为该数据片段所对应的索引信息。例如,第一数据库中行键rowkey为1-1000的1000条数据作为一个数据片段,行键rowkey为1000的数据为该数据片段最后一条获取的数据,该数据片段保存在一个数据文件中,该数据片段所对应的索引信息为1000,将该条数据的rowkey保存至索引文件中;第一数据库中行键rowkey为1001-2000的1000条数据作为一个数据片段,行键rowkey为2000的数据为该数据片段最后一条获取的数据,该数据片段保存在另一个数据文件中,该数据片段所对应的索引信息为2000,将该条数据的rowkey保存至索引文件中,如此类推。通过上述方式得到的所有数据片段所对应的索引信息均保存在索引文件中,例如通过上述方式读取到5000条数据时,相当于读取到了5个数据片段,则索引文件中所记载的索引信息可具体包括1000、2000、3000、4000、5000。这里通过将数据片段中最后读取到的一条数据在所述第一数据库中的数据索引,作为该数据片段所对应的索引信息,从而使索引信息可准确的表征读线程已从第一数据库读取到的数据。
进一步的,在本实施例中,所述步骤S40包括:
步骤S401,当数据写入操作中断后再次启动时,在所述索引文件中,将在数据写入操作中断之前最后写入的数据片段的索引信息作为目标索引;
具体的,在读线程从第一数据库读取数据片段的过程中,每读取到一个数据片段,便将该数据片段对应的索引信息写入索引文件。基于此,可基于索引信息写入的时间先后或索引信息的比较等在索引文件所记载的信息中确定目标索引。具体的,将写入的时间最晚的索引信息作为目标索引,或者当索引信息为上述最后一条读取到的数据的行键时,将数值最大的行键作为目标索引。
步骤S402,以所述目标索引读取所述第一数据库中未迁移的数据并写入所述目标数据库。
在本实施例中,索引信息为最后读取到的数据的行键,基于此,可以目标索引作为第一数据库中区分未迁移的数据与已迁移的数据的标志位。第一数据库中比目标索引小的行键对应的数据则已迁移的数据(读线程已读取的数据),第一数据库中比目标索引大的行键对应的数据则为未迁移的数据(读线程未读取的数据)。基于此,通过则可将目标索引作为扫描的起始位置,读取第一数据库中比目标索引大的行键所对应的数据作为未迁移数据,将未迁移数据按照上述步骤S10至步骤S30的方式写入目标数据库或直接写入目标数据库。
而在其他实施例中,索引信息不为最后读取到的数据的行键时,也可基于数据片段的生成规则、数据片段对应的索引信息的提取规则等,根据目标索引所表征的数据片段确定第一数据库中的未迁移数据。
在本实施例中,将数据迁移中断前最后写入的索引信息作为目标索引,并基于目标索引继续对第一数据库中的数据进行读取并写入到目标数据库,从而无需基于每个数据片段的索引信息对第一数据库中的数据进行分析,只需基于一个索引信息便可快速区分出第一数据库中的已迁移数据和未迁移数据,从而缩短数据迁移中断后继续执行数据迁移的时长,进一步提高发生中断的数据迁移过程的整体效率。
进一步的,基于上述任一实施例,提出本申请数据迁移方法又一实施例。在本实施例中,参照图5,所述步骤S40包括:
步骤S41,当数据写入操作中断后再次启动时,获取未完成数据写入操作的数据文件作为目标数据文件;
在本实施例中,写线程每完成一个数据文件的数据写入操作,便在设定的缓存区域中相应的数据文件删除,基于此,当前缓存区域中所存在的数据文件则可作为目标数据文件。
此外,在其他实施例中,数据文件中的数据全部写入目标数据库后,该数据文件也可保留在缓存区域内。基于此,可基于数据写入操作中断时正在执行数据写入操作的数据文件的数量获取目标数据文件,例如用于执行数据写入操作的写线程的数量为5个时,则可将缓存区域中最后写入数据的5个数据文件作为目标数据文件。此外,也可基于写线程对应的等待队列中的文件数量在缓存区域中获取对应的文件作为目标数据文件,例如写线程对应的等待队列中的文件数量为10个时,则可将缓存区域中最后写入数据的10个数据文件作为目标数据文件。
步骤S42,执行数据写入操作将所述目标数据文件中的数据写入所述目标数据库;
步骤S43,当所述目标数据文件中的所有数据均写入所述目标数据库时,根据所述索引文件中的索引信息,读取所述第一数据库中未迁移的数据并写入所述目标数据库。
其中,在步骤S40包括当上述的步骤S401和步骤S402的基础上,当所述目标数据文件中的所有数据均写入所述目标数据库时,这里的根据所述索引文件中的索引信息,读取所述第一数据库中未迁移的数据并写入所述目标数据库按照上述的步骤S401和步骤S402执行。
需要说明的是,当执行步骤S42的过程中,目标数据文件包括图片数据时,也可类比参照步骤S31、步骤S32和步骤S33将图片数据替换后写入目标数据库,在此不作赘述。
在本实施例中,在基于索引文件中的索引信息从第一数据库中读取未迁移的数据并写入目标数据库之前,先将已从第一数据库读取到的、但未写入目标数据库的数据片段全都写入目标数据库后,再从第一数据库中继续区域数据写入目标数据库,从而有效避免重复从第一数据库读取数据,进一步提高数据迁移中断后数据续传的效率。
进一步的,基于上述实施例,提出本申请数据迁移方法再一实施例。在本实施例中,每个所述数据文件包括多于一条数据,当步骤S10中将读取到的数据片段写入数据文件的步骤包括将每个数据片段分别写入对应的数据文件时,参照图6,所述步骤S30包括:
步骤S301,将所述数据文件中每条数据依次作为第一目标数据;
步骤S302,获取所述数据文件的第一文件标识信息、以及所述第一目标数据的第一数据标识信息;
在本实施例中,第一文件标识信息具体为数据文件的文件名(如上述的uuid),第一数据标识信息具体为数据录入第一数据库时的时间戳。例如,当数据为人脸数据时,第一数据标识信息具体为采集到该人脸数据后将人脸数据写入第一数据库的时间。
步骤S303,根据所述第一文件标识信息和所述第一数据标识信息,生成所述第一目标数据对应的第一标识字段;
将第一文件标识信息(uuid)和第一数据标识信息(enter)拼接形成每条目标数据对应的标识字段。
步骤S304,将携带有第一标识字段的第一目标数据写入所述目标数据库。
第一标识字段可作为第一目标数据在目标数据库中的标识信息。
通过上述步骤S301至步骤S304,基于上述方式生成每条写入目标数据库中的数据的标识字段,将携带有标识字段的目标数据写入到目标数据库,从而使标识字段可作为目标数据的唯一标识,以便于后续对目标数据库中是否存在重复写入的数据进行识别。
基于此,进一步的,参照图6,步骤S42具体包括:
步骤S421,将所述目标数据文件中每条数据依次作为第二目标数据;
步骤S422,获取所述目标数据文件的第二文件标识信息、以及所述第二目标数据的第二数据标识信息;
步骤S423,根据所述第二文件标识信息和所述第二数据标识信息,生成所述第二目标数据对应的第二标识字段;
这里,第二标识字段的生成所需的数据以及生成方式与上述第一标识字段的生成过程相同,在此不作赘述。
步骤S424,判断所述目标数据库中是否存在与所述第二标识字段一致的标识字段;
当所述目标数据库中存在与所述第二标识字段一致的标识字段时,执行步骤S425;当所述目标数据库中不存在与所述第二标识字段一致的标识字段时,执行步骤S426。
步骤S425,将所述第二目标数据覆盖所述第二标识字段在所述目标数据库中对应的数据;
步骤S426,将所述第二目标数据以添加的方式写入所述目标数据库。
这里,由于在数据写入操作中断前,每个写入到目标数据库中的第一目标数据均携带有第一标识字段作为数据的唯一标识,因此,在数据写入操作中断后再次启动后将目标数据文件中的数据写入目标数据库的过程中,按照与第一标识字段同样的方式获取所需写入到目标数据库中的第二目标数据的第二标识字段,将第二标识字段与目标数据库中当前所存在的标识字段进行比对,若存在与第二标识字段相同的标识字段,则表明第二标识字段所对应的第二目标数据在数据写入操作中断前已写入到目标数据库中,因此采用覆盖的方式将第二标识字段对应的第二目标数据写入到目标数据库;若目标数据库中不存在与第二标识字段相同的标识字段,则表明第二标识字段所对应的第二目标数据在数据写入操作中断前未写入到目标数据库中,因此采用添加的方式将第二标识字段对应的第二目标数据写入到目标数据库。
在本实施例中,由于文件标识信息为数据文件的唯一标识,数据标识信息为每条数据的唯一标识,基于此所生成的标识字段可作为每条从数据文件中读取并写到目标数据库中的数据的唯一标识,通过上述标识字段的生成以及在数据写入操作发生中断后将目标数据文件的数据写入目标数据库前基于标识字段的比对,从而使写入的目标数据库的数据中不会出现重复的数据,保证目标数据库中数据的唯一性,以保证写入的目标数据库中的数据在应用时不会出现冲突。
其中,需要说明的是当数据文件或目标数据文件中的数据包括图片数据时,可将图片数据替换为对应的地址信息后得到的数据作为这里的第一目标数据或第二目标数据。
此外,本发明实施例还提出一种可读存储介质,所述可读存储介质上存储有数据迁移程序,所述数据迁移程序被处理器执行时实现如上数据迁移方法任一实施例的相关步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种数据迁移方法,其特征在于,所述数据迁移方法包括以下步骤:
读取第一数据库中的数据片段,将读取到的数据片段写入数据文件;
获取所述数据片段在所述第一数据库中对应的索引信息,并将所述索引信息写入索引文件;
执行数据写入操作将所述数据文件中的数据写入目标数据库;
当数据写入操作中断后再次启动时,根据所述索引文件中的索引信息,读取所述第一数据库中未迁移的数据并写入所述目标数据库。
2.如权利要求1所述的数据迁移方法,其特征在于,所述读取第一数据库中的数据片段,将读取到的数据片段写入数据文件的步骤包括:
读取所述第一数据库中的数据;
以设定数据量对读取到的数据进行分片,得到多于一个数据片段;
将每个数据片段分别写入对应的数据文件;其中,不同的数据片段对应不同的数据文件。
3.如权利要求2所述的数据迁移方法,其特征在于,所述读取第一数据库中的数据片段,将读取到的数据片段写入数据文件的步骤包括:
通过单线程读取第一数据库中的数据片段,将读取到的数据片段以多线程的方式写入数据文件;
所述执行数据写入操作将所述数据文件中的数据写入目标数据库的步骤包括:
通过多于一个线程并行执行所述数据写入操作,将多于一个所述数据文件的数据写入所述目标数据库;其中,每个所述线程执行一个所述数据文件的数据写入操作。
4.如权利要求2所述的数据迁移方法,其特征在于,所述获取所述数据片段在所述第一数据库中对应的索引信息的步骤包括:
获取每个所述数据片段中最后读取的一条数据在所述第一数据库中的数据索引,作为每个数据片段对应的索引信息;且/或,
所述根据所述索引文件中的索引信息,读取所述第一数据库中未迁移的数据并写入所述目标数据库的步骤包括:
在所述索引文件中,将在数据写入操作中断之前最后写入的数据片段的索引信息作为目标索引;
以所述目标索引读取所述第一数据库中未迁移的数据并写入所述目标数据库。
5.如权利要求2至4中任一项所述的数据迁移方法,其特征在于,所述执行数据写入操作将所述数据文件中的数据写入目标数据库的步骤之后,还包括:
当数据写入操作中断后再次启动时,获取未完成数据写入操作的数据文件作为目标数据文件;
执行数据写入操作将所述目标数据文件中的数据写入所述目标数据库;
当所述目标数据文件中的所有数据均写入所述目标数据库时,执行所述根据所述索引文件中的索引信息,读取所述第一数据库中未迁移的数据并写入所述目标数据库的步骤。
6.如权利要求5所述的数据迁移方法,其特征在于,每个所述数据文件包括多于一条数据,所述执行数据写入操作将所述数据文件中的数据写入目标数据库的步骤包括:
将所述数据文件中每条数据依次作为第一目标数据;
获取所述数据文件的第一文件标识信息、以及所述第一目标数据的第一数据标识信息;
根据所述第一文件标识信息和所述第一数据标识信息,生成所述第一目标数据对应的第一标识字段;
将携带有第一标识字段的第一目标数据写入所述目标数据库。
7.如权利要求6所述的数据迁移方法,其特征在于,所述目标数据文件包括多于一条数据,所述执行数据写入操作将所述目标数据文件中的数据写入所述目标数据库的步骤包括:
将所述目标数据文件中每条数据依次作为第二目标数据;
获取所述目标数据文件的第二文件标识信息、以及所述第二目标数据的第二数据标识信息;
根据所述第二文件标识信息和所述第二数据标识信息,生成所述第二目标数据对应的第二标识字段;
当所述目标数据库中存在与所述第二标识字段一致的标识字段时,将所述第二目标数据覆盖所述第二标识字段在所述目标数据库中对应的数据;
当所述目标数据库中不存在与所述第二标识字段一致的标识字段时,将所述第二目标数据以添加的方式写入所述目标数据库。
8.如权利要求1至4中任一项所述的数据迁移方法,其特征在于,所述数据文件中的数据包括图片数据,所述目标数据库为分布式搜索服务器,所述执行数据写入操作将所述数据文件中的数据写入目标数据库的步骤包括:
将所述图片数据发送至分布式文件系统服务器;
接收所述分布式文件系统服务器基于所述图片数据返回的地址信息;
将所述数据文件中的图片数据替换为对应的地址信息;
将替换后的数据写入所述分布式搜索服务器;且/或,
所述执行数据写入操作将所述数据文件中的数据写入目标数据库的步骤之后,还包括:
当所述数据文件中的数据已全部写入所述目标数据库时,删除所述数据文件。
9.一种数据迁移装置,其特征在于,所述数据迁移装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的数据迁移程序,所述数据迁移程序被所述处理器执行时实现如权利要求1至8中任一项所述的数据迁移方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有数据迁移程序,所述数据迁移程序被处理器执行时实现如权利要求1至8中任一项所述的数据迁移方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010676183.4A CN111831625B (zh) | 2020-07-14 | 2020-07-14 | 数据迁移方法、数据迁移装置和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010676183.4A CN111831625B (zh) | 2020-07-14 | 2020-07-14 | 数据迁移方法、数据迁移装置和可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111831625A true CN111831625A (zh) | 2020-10-27 |
CN111831625B CN111831625B (zh) | 2024-03-12 |
Family
ID=72924188
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010676183.4A Active CN111831625B (zh) | 2020-07-14 | 2020-07-14 | 数据迁移方法、数据迁移装置和可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111831625B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113485980A (zh) * | 2021-07-27 | 2021-10-08 | 拉扎斯网络科技(上海)有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN113806575A (zh) * | 2021-08-05 | 2021-12-17 | 北京房江湖科技有限公司 | 仓库拆分中图片信息获取方法及装置 |
CN113992938A (zh) * | 2021-10-22 | 2022-01-28 | 兰州乐智教育科技有限责任公司 | 视频上传方法、装置、电子设备及计算机可读存储介质 |
CN114840474A (zh) * | 2022-07-06 | 2022-08-02 | 中汽信息科技(天津)有限公司 | 专利索引数据库的数据迁移方法和系统 |
CN116628068A (zh) * | 2023-07-25 | 2023-08-22 | 杭州衡泰技术股份有限公司 | 一种基于动态窗口的数据搬运方法、系统及可读存储介质 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101478472A (zh) * | 2008-10-21 | 2009-07-08 | 北京闪联讯通数码科技有限公司 | 一种Socket数据传输处理方法及装置 |
CN103312732A (zh) * | 2012-03-07 | 2013-09-18 | 腾讯科技(深圳)有限公司 | 数据文件的传输方法及装置 |
CN103701907A (zh) * | 2013-12-27 | 2014-04-02 | 乐视网信息技术(北京)股份有限公司 | 服务器中的数据续传的处理方法及系统 |
CN106326397A (zh) * | 2016-08-19 | 2017-01-11 | 东软集团股份有限公司 | 生成索引文件的方法及装置 |
CN106412033A (zh) * | 2016-09-14 | 2017-02-15 | 广东欧珀移动通信有限公司 | 一种数据迁移的方法及终端 |
CN106453571A (zh) * | 2016-10-19 | 2017-02-22 | 广东欧珀移动通信有限公司 | 一种数据迁移的方法及终端 |
WO2017107984A1 (zh) * | 2015-12-25 | 2017-06-29 | 中兴通讯股份有限公司 | 一种数据恢复方法及装置 |
CN107231415A (zh) * | 2017-05-25 | 2017-10-03 | 腾讯科技(深圳)有限公司 | 图片的网络存储方法和装置 |
CN108280148A (zh) * | 2018-01-02 | 2018-07-13 | 中国民生银行股份有限公司 | 一种数据迁移方法和数据迁移服务器 |
US20180285398A1 (en) * | 2017-03-31 | 2018-10-04 | Omron Corporation | Controller |
CN109189756A (zh) * | 2018-06-29 | 2019-01-11 | 平安科技(深圳)有限公司 | 电子装置、数据迁移的方法及存储介质 |
CN110569308A (zh) * | 2019-09-10 | 2019-12-13 | 深圳乐信软件技术有限公司 | 一种数据文件组装方法、装置、设备及储存介质 |
CN111290973A (zh) * | 2020-05-11 | 2020-06-16 | 深圳市科信通信技术股份有限公司 | 数据写入方法、装置、计算机设备及存储介质 |
-
2020
- 2020-07-14 CN CN202010676183.4A patent/CN111831625B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101478472A (zh) * | 2008-10-21 | 2009-07-08 | 北京闪联讯通数码科技有限公司 | 一种Socket数据传输处理方法及装置 |
CN103312732A (zh) * | 2012-03-07 | 2013-09-18 | 腾讯科技(深圳)有限公司 | 数据文件的传输方法及装置 |
CN103701907A (zh) * | 2013-12-27 | 2014-04-02 | 乐视网信息技术(北京)股份有限公司 | 服务器中的数据续传的处理方法及系统 |
WO2017107984A1 (zh) * | 2015-12-25 | 2017-06-29 | 中兴通讯股份有限公司 | 一种数据恢复方法及装置 |
CN106326397A (zh) * | 2016-08-19 | 2017-01-11 | 东软集团股份有限公司 | 生成索引文件的方法及装置 |
CN106412033A (zh) * | 2016-09-14 | 2017-02-15 | 广东欧珀移动通信有限公司 | 一种数据迁移的方法及终端 |
CN106453571A (zh) * | 2016-10-19 | 2017-02-22 | 广东欧珀移动通信有限公司 | 一种数据迁移的方法及终端 |
US20180285398A1 (en) * | 2017-03-31 | 2018-10-04 | Omron Corporation | Controller |
CN107231415A (zh) * | 2017-05-25 | 2017-10-03 | 腾讯科技(深圳)有限公司 | 图片的网络存储方法和装置 |
CN108280148A (zh) * | 2018-01-02 | 2018-07-13 | 中国民生银行股份有限公司 | 一种数据迁移方法和数据迁移服务器 |
CN109189756A (zh) * | 2018-06-29 | 2019-01-11 | 平安科技(深圳)有限公司 | 电子装置、数据迁移的方法及存储介质 |
CN110569308A (zh) * | 2019-09-10 | 2019-12-13 | 深圳乐信软件技术有限公司 | 一种数据文件组装方法、装置、设备及储存介质 |
CN111290973A (zh) * | 2020-05-11 | 2020-06-16 | 深圳市科信通信技术股份有限公司 | 数据写入方法、装置、计算机设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
孟令伍: "面向Spark的MemSql数据分区策略的研究及应用", 《中国优秀硕士学位论文全文数据库 (信息科技辑)》, no. 05, 15 May 2019 (2019-05-15), pages 138 - 1052 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113485980A (zh) * | 2021-07-27 | 2021-10-08 | 拉扎斯网络科技(上海)有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN113806575A (zh) * | 2021-08-05 | 2021-12-17 | 北京房江湖科技有限公司 | 仓库拆分中图片信息获取方法及装置 |
CN113806575B (zh) * | 2021-08-05 | 2024-02-20 | 贝壳找房(北京)科技有限公司 | 仓库拆分中图片信息获取方法及装置 |
CN113992938A (zh) * | 2021-10-22 | 2022-01-28 | 兰州乐智教育科技有限责任公司 | 视频上传方法、装置、电子设备及计算机可读存储介质 |
CN113992938B (zh) * | 2021-10-22 | 2024-04-19 | 兰州乐智教育科技有限责任公司 | 视频上传方法、装置、电子设备及计算机可读存储介质 |
CN114840474A (zh) * | 2022-07-06 | 2022-08-02 | 中汽信息科技(天津)有限公司 | 专利索引数据库的数据迁移方法和系统 |
CN114840474B (zh) * | 2022-07-06 | 2022-09-20 | 中汽信息科技(天津)有限公司 | 专利索引数据库的数据迁移方法和系统 |
CN116628068A (zh) * | 2023-07-25 | 2023-08-22 | 杭州衡泰技术股份有限公司 | 一种基于动态窗口的数据搬运方法、系统及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111831625B (zh) | 2024-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111831625A (zh) | 数据迁移方法、数据迁移装置和可读存储介质 | |
US9846645B1 (en) | Managing objects stored in memory | |
US10599337B2 (en) | Method and device for writing data and acquiring data in a distributed storage system | |
EP3438845A1 (en) | Data updating method and device for a distributed database system | |
CN108205560B (zh) | 一种数据同步方法以及装置 | |
CN111198856B (zh) | 文件管理方法、装置、计算机设备和存储介质 | |
CN110019873B (zh) | 人脸数据处理方法、装置及设备 | |
US20190188090A1 (en) | Snapshot Deletion In A Distributed Storage System | |
US7818749B2 (en) | Data processing method, data processing apparatus, and data processing program | |
CN104965835A (zh) | 一种分布式文件系统的文件读写方法及装置 | |
US20140320498A1 (en) | Terminal device, information processing method, and computer program product | |
US10430110B2 (en) | Implementing a hybrid storage node in a distributed storage system | |
CN107943921B (zh) | 页面分享信息生成方法、装置、计算机设备和存储介质 | |
CN111309799A (zh) | 数据合并的实现方法、装置、系统及存储介质 | |
CN113407376A (zh) | 一种数据恢复方法、装置及电子设备 | |
CN117093579A (zh) | 数据查询、数据存储方法、装置、设备及存储介质 | |
Pieterse et al. | Playing hide-and-seek: Detecting the manipulation of Android timestamps | |
CN114282048B (zh) | 一种播放记录入库方法及装置、存储介质及电子设备 | |
CN107450859B (zh) | 一种读取文件数据的方法和装置 | |
CN111625500B (zh) | 文件快照方法及装置、电子设备和存储介质 | |
CN111597149B (zh) | 一种数据库的数据清理方法及装置 | |
CN113986471A (zh) | 虚拟机镜像文件安全删除方法、装置、设备及存储介质 | |
CN107656868B (zh) | 一种利用线程私有数据获取线程名字的调试方法及系统 | |
US8166018B2 (en) | Browsing a list of data items | |
CN111078139A (zh) | 一种实现s3标准对象存储接口的方法及装置 |
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 |