CN110688361A - 数据迁移方法、电子装置及计算机设备 - Google Patents

数据迁移方法、电子装置及计算机设备 Download PDF

Info

Publication number
CN110688361A
CN110688361A CN201910756233.7A CN201910756233A CN110688361A CN 110688361 A CN110688361 A CN 110688361A CN 201910756233 A CN201910756233 A CN 201910756233A CN 110688361 A CN110688361 A CN 110688361A
Authority
CN
China
Prior art keywords
data
migration
hfile
task
database
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
CN201910756233.7A
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.)
Ping An Puhui Enterprise Management Co Ltd
Original Assignee
Ping An Puhui Enterprise Management 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 Ping An Puhui Enterprise Management Co Ltd filed Critical Ping An Puhui Enterprise Management Co Ltd
Priority to CN201910756233.7A priority Critical patent/CN110688361A/zh
Publication of CN110688361A publication Critical patent/CN110688361A/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
    • 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/2228Indexing structures
    • G06F16/2264Multidimensional index structures
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

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)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种数据迁移方法。通过多主机多线程的方式从MongoDB数据库获取迁移数据,将所述迁移数据组装成HFile格式以产生HFile迁移数据,及将所述HFile迁移数据存储到HBase数据库。本发明提供的数据迁移方法与电子装置提供亿级数据迁移效率以节约时间成本,成本低且主机可同时支持其他业务,并提供自动化定时任务,操作简单且管理方便。

Description

数据迁移方法、电子装置及计算机设备
技术领域
本发明涉及虚拟化存储的技术领域,尤其涉及一种数据迁移方法、电子装置、计算机设备及存储介质。
背景技术
目前市面上的暂无商用的高效率的从MongoDB迁移大批量数据的实现方案。MongoDB是一个基于分布式文件存储的数据库,可存储较为复杂的数据结构。常规迁移方案:1、使用Mongo自带备份指令生成数据备份文件,然后传输备份文件;直接备份生成的文件无法进行加密,文件安全女月性不足,传输过程中被截取后可直接查看文件内容;若进行加密传输,相当于增加了对文件的解析,会增加耗时;2、服务器上使用命令代码进行迁移,需要人员工手动执行。
普通的数据迁移方案效率极其低下,小数据量的迁移方案虽然效率可观,但是数据量级上升后效率直线下降。现有方法迁移过程若发生异常则会中断,严重影响流程和使用。
发明内容
有鉴于此,本发明提出一种数据迁移方法提供亿级数据迁移效率以节约时间成本,成本低且主机可同时支持其他业务,并提供自动化定时任务,操作简单且管理方便。
为实现上述目的,本发明提出一种数据迁移方法,应用于电子装置中,该方法包括步骤:通过多主机多线程的方式从MongoDB数据库获取迁移数据;将所述迁移数据组装成HFile格式以产生HFile迁移数据;及将所述HFile迁移数据存储到HBase数据库。
进一步地,通过定时任务扫描到待处理任务,触发多个数据迁移任务;及基于每一个所述多个数据迁移任务创建多个任务队列,通过多台主机处理每一个所述多个数据迁移任务的多个任务队列。
进一步地,对所述多个数据迁移任务的时间段进行分段以产生多个所述任务队列;及将每个任务队列分配给对应的主机进行处理。
进一步地,创建文件字符输出流,用于访问物理存储路径和准备生成文件,并设置文件的路径,以及所述HBase数据库的用户名和密码;通过所述文件字符输出流创建所述HFile迁移数据,并设置所述HFile迁移数据的命名和容纳数据上限,然后将所述迁移数据包含的每个字段一一对应写入HFile迁移数据,同时添加索引字段;及当所述HFile迁移数据写入的数据量达到上限,重新创建一个HFile迁移数据并继续写入数据,直到迁移数据全部组装成HFile迁移数据。
进一步地,当所述迁移数据存放过程中发生异常,将异常任务记录在Oracle数据库中,设定一个定时触发时间来重新处理异常任务;及存放所述迁移数据时,先将所述迁移数据转换成字节型,然后进行写入操作。所述字节型是数据传输的最小类型。
进一步地,将所述HFile迁移数据导入所述HBase数据库,数据组装时是按照日期创建的路径;及通过多维度的查询方式,根据索引查询所述HBase数据库中的所述HFile迁移数据,从极大量的数据中精确查询和模糊查询对应的数据。
为实现上述目的,本发明还提出一种电子装置,包括数据获取模块、数据产生模块与数据存储模块。所述数据获取模块用于通过多主机多线程的方式从MongoDB数据库获取迁移数据。所述数据产生模块,用于将所述迁移数据组装成HFile格式以产生HFile迁移数据。所述数据存储模块,用于将所述HFile迁移数据存储到HBase数据库。
为实现上述目的,本发明还提供一种计算机设备,包括存储器、处理器以及存储在存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述数据迁移方法的步骤。
为实现上述目的,本发明还提供计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述数据迁移方法的步骤。
相较于现有技术,本发明之数据迁移方法提供亿级数据迁移效率以节约时间成本,成本低且主机可同时支持其他业务,并提供自动化定时任务,操作简单且管理方便。
附图说明
图1系显示本发明实施例之电子装置的硬件架构示意图;
图2系显示本发明实施例之电子装置的功能方块图;
图3系显示本发明实施例之数据迁移方法的步骤流程图;
图4系显示本发明实施例之图3中步骤31的具体实施流程图;
图5系显示本发明实施例之图3中步骤32的具体实施流程图;及
图6系显示本发明实施例之图3中步骤33的具体实施流程图。
附图标记:
电子装置 10
存储器 110
处理器 120
数据迁移系统 130
数据获取模块 210
数据产生模块 220
数据存储模块 230
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
图1系显示本发明实施例之电子装置的硬件架构示意图。电子装置10,但不仅限于,可通过系统总线相互通信连接存储器110、处理器120以及数据迁移系统130,图1仅示出了具有组件110-130的电子装置10,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
所述存储器110至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器110可以是所述电子装置10的内部存储单元,例如该电子装置10的硬盘或内存。在另一些实施例中,所述存储器也可以是所述电子装置10的外部存储设备,例如该电子装置10上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,所述存储器110还可以既包括所述电子装置100的内部存储单元也包括其外部存储设备。本实施例中,所述存储器110通常用于存储安装于所述电子装置10的操作系统和各类应用软件,例如数据迁移系统130的程序代码等。此外,所述存储器110还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器120在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器120通常用于控制所述电子装置10的总体操作。本实施例中,所述处理器120用于运行所述存储器110中存储的程序代码或者处理数据,例如,运行所述数据迁移系统130等。
图2系显示本发明实施例之电子装置的功能方块图。本发明实施例之电子装置10包括数据获取模块210、数据产生模块220与数据存储模块230。
数据获取模块210通过多主机多线程的方式从MongoDB数据库获取迁移数据。数据获取模块210还包括:通过定时任务扫描到待处理任务,触发多个数据迁移任务;基于所述定时任务扫描Oracle数据库中的任务配置表,当扫描到有待处理的任务,则触发数据迁移流程而产生所述多个数据迁移任务;及基于所述数据迁移任务创建任务队列(Queue),通过多台主机处理所述数据迁移任务的多个任务队列。
Oracle数据库配置一些任务触发的信息,是系统的基础配置。数据是从MongoDB数据库迁移到HBase数据库,Oracle数据库与迁移的数据无关,是控制迁移任务使用的。Oracle数据库是配置了迁移系统的基础配置信息,里面的数据控制迁移任务的触发和需要迁移的数据MongDB数据库是数据的源头,HBase数据库是数据的存储的地方。系统读取到Oracle数据库的配置后,开始从MongoDB获取数据,迁移到Hase当中。
用户将要迁移的任务写成一条Oracle数据库中数据。“扫描“是一个定时任务,检测不到待处理任务,定时任务中止,就不会执行后续程序,也就是不会执行数据迁移流程;检测到待处理任务后,定时任务就不会中止,会开始任务后续流程,也就是数据迁移流程。
对所述多个数据迁移任务的时间段进行分段以产生多个所述任务队列。将每个任务队列分配给对应的主机进行处理(防止迁移数据被多台主机重复搬迁),每台主机处理各自的队列里的任务。通过任务分配,可以避免多台主机同时处理同一个任务的问题。
创建线程池,开启多个线程处理任务以处理所述多个任务队列以提高流程效率。每个线程处理任务循环从任务队列里读取数据迁移任务,然后通过拆分组装MONGO数据库的主键索引,高效率的从MONGO数据库中读取数据迁移任务对应的迁移数据。
MongoDB是一种非关系型数据库,可以支持存储较为复杂的数据类型,同时支持的查询方式比较强大。从MongoDB数据库读取迁移数据的方式有许多样,本发明创新一种高效的索引读取方式,即拆分MongoDB自带的主键索引,即可高效率的对迁移数据进行排序和查询。采用多线程方式,每台主机分成少量线程来处理迁移。
MongoDB的主键是有一定格式的,固定长度24位,数据库一张表会保存同一个月的数据,所以可以通过对数据的创建时间进行16进制转换,转换成8位长度,并解析和拼接剩余16位数据,得到数据迁移任务需要的主键,通过主键索引即可高效读取MongoDB数据。主键格式:8位+6位+4位+6位,8位是UNIX时间戳,6位是机器Machine,4位是PID;6位是计数器。
本发明当前以每台主机开五个线程来实现。每个线程循环实现从MongoDB读取到迁移数据生成HFile的流程。首先通过ThreadPoolTaskExecutor类(JAVA语言的一个内含基本程序类)创建一个线程池ThreadPool,然后实例化改线程池来开启线程,线程数量可自行控制。每个线程根据自己的任务队列内的任务,开始循环从MONGO数据库取迁移数据来执行流程。
数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。数据库表中一列或列组合(字段)的值唯一标识表中的每一行。该列称为表的主键。主键索引表示数据库中这一列的数据都是唯一的不重复的且不为空值。也就是数据的唯一标识。
数据迁移系统,系统本身没有待迁移的数据的任何字段,所以直接查询数据无法通过索引获取数据。发现MongoDB数据库的主键是按固定格式生成,前8位为UNIX时间戳,所以通过对常规时间(例如20190614 17:20:20)进行转换和范围切割,并配置剩余16位,这时系统就拥有了待迁移数据的主键范围,即可通过主键素引高效获取数据。
线程数少,则对主机资源消耗较低,主机可同时承受其他任务,降低数据迁移的资源成本。若主机仅用来做数据迁移操作,则可加大线程数,提高效率。本发明独创迁移任务队列和任务分配系统,将任务细化拆分,提高处理效率。队列(Queue)是一种特殊的线性表,是一种先进先出(FIFO)的数据结构。它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。
任务分配:配置迁移的机器数量,每台机器负责一个时间段的数据。
迁移任务队列:每台机器独立创建自己负责的时间段的数据时间段队列,然后从队列中循环取时间段来进行迁移。
通过迁移任务队列与任务分配将一个完整的迁移的数据时间段拆分为细小的任务。任务处理情况在数据库进行记录,用于异常情况对迁移失败的数据进行重新迁移,也就是本发明的异常处理。异常情况是指比如数据写入失败/文件创建失败/HBase数据库无法连接。对于这些异常情况,会进行记录并定时重新执行迁移程序。
数据产生模块220将迁移数据组装成HFile格式以产生HFile迁移数据。
数据产生模块220还包括:创建文件字符输出流,用于访问物理存储路径和准备生成文件,并设置文件的路径,以及HBase数据库的用户名和密码。通过所述文件字符输出流创建所述HFile迁移数据,并设置所述HFile迁移数据的命名和容纳数据上限,然后将迁移数据包含的每个字段一一对应写入HFile迁移数据,同时添加索引字段,用于后续的数据查询;当HFile迁移数据写入的数据量达到HFile迁移数据的上限,则重新创建一个HFile迁移数据并继续写入数据,直到迁移数据全部组装成HFile迁移数据,则结束本次任务;按日期创建文件路径,方便数据导入HBase数据库;当迁移数据存放过程中发生异常,则将异常任务记录在Oracle数据库中,设定一个定时触发时间来重新处理异常任务;及迁移数据存放时,先将迁移数据转换成字节型,然后进行写入操作,其中字节型是数据传输的最小类型,提高了迁移数据的传输效率。
HFile是HBase数据库中实际存数据的文件,为HBase数据库提供高效快速的数据访问。Hadoop应用程序有1个抽象的文件系统概念,该抽象文件系统由抽象类org.apache.hadoop.fs.FileSystem定义,Filesystem函数允许使用者访问和操作文件系统。通过Filesystem和HBase数据库的StoreFile.Writer方法创建HFile迁移数据,以固定数据为限去循环创建文件,并通过输入输出流写入从MongoDB取出的迁移数据。
HFile是HBase迁移中存储迁移数据的文件,HFile迁移数据由6部分组成:datablock,meta block(可选),file info,data block index,meta block index,trailer。data block存储了表数据,meta block存储了布隆过滤器索引数据,file info存储了本文件的相关信息,index存储了datablock和metablock的索引数据,trailer存储了本文件的相关信息。
以下以一个实际例子说明如何将迁移数据封装成HFile格式。
1、首先实例化FileSystem类用以访问HBase存储路径,实例化时需设置文件存储的路径和HBase数据库用户名。
2、使用StoreFile.Writer生成文件,并设置文件的名称、大小等配置。
3、通过循环来将从MONGO数据库中读取出来的迁移数据放入该文件,并设置列簇和索引。当文件数量达到上一步骤设置的大小上限后,即关闭该Writer流,存储到所述HBase存储路径上。
4、线程开启下一次循环,重新执行前述流程。
数据存储模块230将HFile迁移数据存储到HBase数据库。
数据存储模块230还包括:将HFile迁移数据导入HBase数据库,数据组装时是按照日期创建的路径;及通过多维度的查询方式,根据索引查询HBase数据库中的HFile迁移数据,从极大量的数据中精确查询和模糊查询对应的数据。
图3系显示本发明实施例之数据迁移方法的步骤流程图。
步骤31,通过多主机多线程的方式从MongoDB数据库获取迁移数据。
图4系显示本发明实施例之图3中步骤31的具体实施流程图。
步骤311,通过定时任务扫描到待处理任务,触发多个数据迁移任务。
基于所述定时任务扫描Oracle数据库中的任务配置表,当扫描到有待处理的任务,则触发数据迁移流程而产生所述多个数据迁移任务。
步骤312,基于所述数据迁移任务创建任务队列(Queue),通过多台主机处理所述数据迁移任务的多个任务队列。
对所述多个数据迁移任务的时间段进行分段以产生多个所述任务队列。将每个任务队列分配给对应的主机进行处理(防止迁移数据被多台主机重复搬迁),每台主机处理各自的队列里的任务。通过任务分配,可以避免多台主机同时处理同一个任务的问题。
创建线程池,开启多个线程处理任务以处理所述多个任务队列以提高流程效率。每个线程处理任务循环从任务队列里读取数据迁移任务,然后通过拆分组装MONGO数据库的主键索引,高效率的从MONGO数据库中读取数据迁移任务对应的迁移数据。
MongoDB是一种非关系型数据库,可以支持存储较为复杂的数据类型,同时支持的查询方式比较强大。从MongoDB数据库读取迁移数据的方式有许多样,本发明创新一种高效的索引读取方式,即拆分MongoDB自带的主键索引,即可高效率的对迁移数据进行排序和查询。采用多线程方式,每台主机分成少量线程来处理迁移。
本发明当前以每台主机开五个线程来实现。每个线程循环实现从MongoDB读取到迁移数据生成HFile的流程。首先通过ThreadPoolTaskExecutor类(JAVA语言的一个内含基本程序类)创建一个线程池ThreadPool,然后实例化改线程池来开启线程,线程数量可自行控制。每个线程根据自己的任务队列内的任务,开始循环从MONGO数据库取迁移数据来执行流程。
数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。数据库表中一列或列组合(字段)的值唯一标识表中的每一行。该列称为表的主键。主键索引表示数据库中这一列的数据都是唯一的不重复的且不为空值。也就是数据的唯一标识。
线程数少,则对主机资源消耗较低,主机可同时承受其他任务,降低数据迁移的资源成本。若主机仅用来做数据迁移操作,则可加大线程数,提高效率。本发明独创迁移任务队列和任务分配系统,将任务细化拆分,提高处理效率。队列(Queue)是一种特殊的线性表,是一种先进先出(FIFO)的数据结构。它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。
任务分配:配置迁移的机器数量,每台机器负责一个时间段的数据。
迁移任务队列:每台机器独立创建自己负责的时间段的数据时间段队列,然后从队列中循环取时间段来进行迁移。
通过迁移任务队列与任务分配将一个完整的迁移的数据时间段拆分为细小的任务。任务处理情况在数据库进行记录,用于异常情况对迁移失败的数据进行重新迁移,也就是本发明的异常处理。异常情况是指比如数据写入失败/文件创建失败/HBase数据库无法连接。对于这些异常情况,会进行记录并定时重新执行迁移程序。
数据产生模块220
步骤32,将迁移数据组装成HFile格式以产生HFile迁移数据。
图5系显示本发明实施例之图3中步骤32的具体实施流程图。
步骤321,创建文件字符输出流,用于访问物理存储路径和准备生成文件,并设置文件的路径,以及HBase数据库的用户名和密码。
步骤322,通过所述文件字符输出流创建所述HFile迁移数据,并设置所述HFile迁移数据的命名和容纳数据上限,然后将迁移数据包含的每个字段一一对应写入HFile迁移数据,同时添加索引字段,用于后续的数据查询。
步骤323,当HFile迁移数据写入的数据量达到HFile迁移数据的上限,则重新创建一个HFile迁移数据并继续写入数据,直到迁移数据全部组装成HFile迁移数据,则结束本次任务。按日期创建文件路径,方便数据导入HBase数据库。
步骤324,当迁移数据存放过程中发生异常,则将异常任务记录在Oracle数据库中,设定一个定时触发时间来重新处理异常任务。
步骤325,迁移数据存放时,先将迁移数据转换成字节型,然后进行写入操作。字节型是数据传输的最小类型,提高了迁移数据的传输效率。
HFile是HBase数据库中实际存数据的文件,为HBase数据库提供高效快速的数据访问。Hadoop应用程序有1个抽象的文件系统概念,该抽象文件系统由抽象类org.apache.hadoop.fs.FileSystem定义,Filesystem函数允许使用者访问和操作文件系统。通过Filesystem和HBase数据库的StoreFile.Writer方法创建HFile迁移数据,以固定数据为限去循环创建文件,并通过输入输出流写入从MongoDB取出的迁移数据。
HFile是HBase迁移中存储迁移数据的文件,HFile迁移数据由6部分组成:datablock,meta block(可选),file info,data block index,meta block index,trailer。data block存储了表数据,meta block存储了布隆过滤器索引数据,file info存储了本文件的相关信息,index存储了datablock和metablock的索引数据,trailer存储了本文件的相关信息。
以下以一个实际例子说明如何将迁移数据封装成HFile格式。
1、首先实例化FileSystem类用以访问HBase存储路径,实例化时需设置文件存储的路径和HBase数据库用户名。
2、使用StoreFile.Writer生成文件,并设置文件的名称、大小等配置。
3、通过循环来将从MONGO数据库中读取出来的迁移数据放入该文件,并设置列簇和索引。当文件数量达到上一步骤设置的大小上限后,即关闭该Writer流,存储到所述HBase存储路径上。
4、线程开启下一次循环,重新执行前述流程。
数据存储模块230
步骤33,将HFile迁移数据存储到HBase数据库。
图6系显示本发明实施例之图3中步骤33的具体实施流程图。
步骤331,将HFile迁移数据导入HBase数据库,数据组装时是按照日期创建的路径。
步骤332,通过多维度的查询方式,根据索引查询HBase数据库中的HFile迁移数据,从极大量的数据中精确查询和模糊查询对应的数据。
HBase数据库是一个开源的、高可靠性、高性能、面向列、可伸缩的分布式存储系统,是一个适合于非结构化存储的数据库。利用HBase技术可在廉价服务器上搭建起大规模结构化存储集群。
MongoDB数据库查询速度快,HBase数据库写入速度快。HBase数据库占用两台机器能完成的事情,MongoDB数据库要占用更多的机器,减少机器量可以极为有效的节约成本。同时迁移的数据是数月之前的,查询频次低,可接受查询速度的降低。
以下以一个实际例子说明如何利用队列来进行任务分配与数据迁移。
假设现在有一个仓库X(MONGO库内数据),有三名搬运人员A、B、C(三个线程),三人需负责将仓库X内的物资搬运到运输车内(形成HFile迁移数据),运到另一个更大的仓库Y(HBase数据库)。
首先将仓库X内的物资划分为三块,每个员工负责一块(任务划分)。对每一块物资按照清单进行排序,每次员工搬取距离自己最近的一个物资(排序后的清单列表就是任务队列Queue,每次员工取走最前面的一个任务),然后将物资装到运输车内,装满(形成HFile)则该车自行开走运到仓库Y(HBase),员工继续装下一车。
本发明之数据迁移系统的优点如下:系统启动初始化配置:配置系统关联数据库的账户,通常的系统会将账户等保密数据写入配置文件中,本系统更进一步经账户配置在了Redis数据库当中,提高了系统的安全性。(Redis数据库是键值对型的数据库,根据唯一的键,可以查到唯一的值)
Mongo数据获取实例的创建:通过MongoTemplate创建Mongo数据获取的实例,本系统在实例的创建中添加了密码的隐藏,非开发人员无法直接获取密码,防止其他人员通过此处获取到Mongo的账户。
任务主机的配置:任务通过Oracle数据库(常规数据库)内的一条数据即可触发,该触发的数据可任意扩展,只要添加主机的IP和序号即可。
MONGO数据的读取方式(创新):本系统通过对MONGO数据库数据自带的主键进行了解析,最终创新出了一种高效率的数据获取方式。也就是本系统与其他数据迁移系统的最大差别:针对大数据量的高效率迁移。通过创新的MONGO数据获取方式和创新的文件配置,已验证可在2个小时左右迁移2T(1T=1024G,1G=1024M)数据,效率极为可观。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种数据迁移方法,应用于电子装置中,其特征在于,所述方法包括步骤:
通过多主机多线程的方式从MongoDB数据库获取迁移数据;
将所述迁移数据组装成HFile格式以产生HFile迁移数据;及
将所述HFile迁移数据存储到HBase数据库。
2.如权利要求1所述之数据迁移方法,其特征在于,所述方法还包括:
通过定时任务扫描到待处理任务,触发多个数据迁移任务;及
基于每一个所述多个数据迁移任务创建多个任务队列,通过多台主机处理每一个所述多个数据迁移任务的多个任务队列。
3.如权利要求2所述之数据迁移方法,其特征在于,所述方法还包括:
对所述多个数据迁移任务的时间段进行分段以产生多个所述任务队列;及
将每个任务队列分配给对应的主机进行处理。
4.如权利要求1所述之数据迁移方法,其特征在于,所述方法还包括:
创建文件字符输出流,用于访问物理存储路径和准备生成文件,并设置文件的路径,以及所述HBase数据库的用户名和密码;
通过所述文件字符输出流创建所述HFile迁移数据,并设置所述HFile迁移数据的命名和容纳数据上限,然后将所述迁移数据包含的每个字段一一对应写入HFile迁移数据,同时添加索引字段;及
当所述HFile迁移数据写入的数据量达到上限,重新创建一个HFile迁移数据并继续写入数据,直到迁移数据全部组装成HFile迁移数据。
5.如权利要求1所述之数据迁移方法,其特征在于,所述方法还包括:
当所述迁移数据存放过程中发生异常,将异常任务记录在Oracle数据库中,设定一个定时触发时间来重新处理异常任务;及
存放所述迁移数据时,先将所述迁移数据转换成字节型,然后进行写入操作。
6.如权利要求5所述之数据迁移方法,其特征在于,所述字节型是数据传输的最小类型。
7.如权利要求1所述之数据迁移方法,其特征在于,所述方法还包括:
将所述HFile迁移数据导入所述HBase数据库,数据组装时是按照日期创建的路径;及
通过多维度的查询方式,根据索引查询所述HBase数据库中的所述HFile迁移数据,从极大量的数据中精确查询和模糊查询对应的数据。
8.一种电子装置,其特征在于,包括:
数据获取模块,用于通过多主机多线程的方式从MongoDB数据库获取迁移数据;
数据产生模块,用于将所述迁移数据组装成HFile格式以产生HFile迁移数据;及
数据存储模块,用于将所述HFile迁移数据存储到HBase数据库。
9.一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7任一项之数据迁移方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现权利要求1至7任一项之数据迁移方法的步骤。
CN201910756233.7A 2019-08-16 2019-08-16 数据迁移方法、电子装置及计算机设备 Pending CN110688361A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910756233.7A CN110688361A (zh) 2019-08-16 2019-08-16 数据迁移方法、电子装置及计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910756233.7A CN110688361A (zh) 2019-08-16 2019-08-16 数据迁移方法、电子装置及计算机设备

Publications (1)

Publication Number Publication Date
CN110688361A true CN110688361A (zh) 2020-01-14

Family

ID=69108291

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910756233.7A Pending CN110688361A (zh) 2019-08-16 2019-08-16 数据迁移方法、电子装置及计算机设备

Country Status (1)

Country Link
CN (1) CN110688361A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111813739A (zh) * 2020-09-11 2020-10-23 平安国际智慧城市科技股份有限公司 数据迁移方法、装置、计算机设备及存储介质
CN113051251A (zh) * 2021-03-29 2021-06-29 福建星瑞格软件有限公司 基于bloom filter的基线数据迁移的方法及装置
CN113672556A (zh) * 2021-08-19 2021-11-19 工银科技有限公司 一种批量文件的迁移方法及装置
CN115422165A (zh) * 2022-09-22 2022-12-02 北京奥星贝斯科技有限公司 数据库数据迁移方法和数据库

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104679898A (zh) * 2015-03-18 2015-06-03 成都汇智远景科技有限公司 一种大数据访问方法
CN105205154A (zh) * 2015-09-24 2015-12-30 浙江宇视科技有限公司 数据迁移方法以及装置
US20170255663A1 (en) * 2016-03-07 2017-09-07 Researchgate Gmbh Propagation of data changes in a distributed system
CN109189756A (zh) * 2018-06-29 2019-01-11 平安科技(深圳)有限公司 电子装置、数据迁移的方法及存储介质
CN109697139A (zh) * 2018-10-31 2019-04-30 武汉艺果互动科技股份有限公司 一种基于MongoDB的数据库自动备份方法、设备及存储设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104679898A (zh) * 2015-03-18 2015-06-03 成都汇智远景科技有限公司 一种大数据访问方法
CN105205154A (zh) * 2015-09-24 2015-12-30 浙江宇视科技有限公司 数据迁移方法以及装置
US20170255663A1 (en) * 2016-03-07 2017-09-07 Researchgate Gmbh Propagation of data changes in a distributed system
CN109189756A (zh) * 2018-06-29 2019-01-11 平安科技(深圳)有限公司 电子装置、数据迁移的方法及存储介质
CN109697139A (zh) * 2018-10-31 2019-04-30 武汉艺果互动科技股份有限公司 一种基于MongoDB的数据库自动备份方法、设备及存储设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
邹贵金著 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111813739A (zh) * 2020-09-11 2020-10-23 平安国际智慧城市科技股份有限公司 数据迁移方法、装置、计算机设备及存储介质
CN113051251A (zh) * 2021-03-29 2021-06-29 福建星瑞格软件有限公司 基于bloom filter的基线数据迁移的方法及装置
CN113672556A (zh) * 2021-08-19 2021-11-19 工银科技有限公司 一种批量文件的迁移方法及装置
CN115422165A (zh) * 2022-09-22 2022-12-02 北京奥星贝斯科技有限公司 数据库数据迁移方法和数据库

Similar Documents

Publication Publication Date Title
CN110688361A (zh) 数据迁移方法、电子装置及计算机设备
US9787706B1 (en) Modular architecture for analysis database
JP5298117B2 (ja) 分散コンピューティングにおけるデータマージング
JP3207438B2 (ja) コンポーネント・ベースの並列アプリケーションでチェックポイントの頻度を増加させるための過分割システムおよび方法
WO2020000725A1 (zh) 电子装置、数据迁移的方法及存储介质
CN107608773A (zh) 任务并发处理方法、装置及计算设备
CN111400408A (zh) 数据同步方法、装置、设备及存储介质
US10095699B2 (en) Computer-readable recording medium, execution control method, and information processing apparatus
CN106354817B (zh) 一种日志的处理方法及装置
CN104881466A (zh) 数据分片的处理以及垃圾文件的删除方法和装置
US20140059000A1 (en) Computer system and parallel distributed processing method
CN106919697B (zh) 一种将数据同时导入多个Hadoop组件的方法
CN102033948A (zh) 一种数据更新方法和装置
CN113177090A (zh) 数据处理方法及装置
CN112035230A (zh) 一种任务调度文件生成方法、装置及存储介质
CN107103035A (zh) 本地表数据更新方法及装置
CN104615490A (zh) 一种数据转换的方法及装置
CN103077192A (zh) 一种数据处理方法及其系统
CN112965939A (zh) 一种文件合并方法、装置和设备
US7127446B1 (en) File system based task queue management
US5995960A (en) Method and system for improving efficiency of programs utilizing databases by exeuting scenarios based on recalled processed information
US8347299B2 (en) Association and scheduling of jobs using job classes and resource subsets
CN116308848A (zh) 信息处理方法、装置、计算机设备和存储介质
CN106802922B (zh) 一种基于对象的溯源存储系统及方法
CN113485693B (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
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20200114