CN112035461A - 数据库的表数据文件的迁移方法和系统 - Google Patents
数据库的表数据文件的迁移方法和系统 Download PDFInfo
- Publication number
- CN112035461A CN112035461A CN202010554112.7A CN202010554112A CN112035461A CN 112035461 A CN112035461 A CN 112035461A CN 202010554112 A CN202010554112 A CN 202010554112A CN 112035461 A CN112035461 A CN 112035461A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- table data
- target database
- file
- 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
- 238000013508 migration Methods 0.000 title claims abstract description 56
- 230000005012 migration Effects 0.000 title claims abstract description 56
- 238000000034 method Methods 0.000 title claims abstract description 37
- 238000013507 mapping Methods 0.000 claims abstract description 44
- 238000006243 chemical reaction Methods 0.000 claims description 20
- 238000004458 analytical method Methods 0.000 claims description 15
- 239000012634 fragment Substances 0.000 claims description 15
- 238000001514 detection method Methods 0.000 claims description 6
- 238000005070 sampling Methods 0.000 claims description 6
- 238000012795 verification Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 abstract description 11
- 238000012360 testing method Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 238000007726 management method Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 3
- 238000000605 extraction Methods 0.000 description 3
- 238000011068 loading method Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013524 data verification Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000004141 dimensional analysis Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 230000001131 transforming 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/119—Details of migration of file systems
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (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
技术领域
本发明涉及数据处理领域,尤其涉及一种数据库的表数据文件的迁移方法 和系统。
背景技术
目前,最主要的数据库迁移方式是通过商用、开源ETL工具或自行编码的 方式来进行数据库迁移,这些方法虽然简化了用户操作,且支持多平台的各种 数据源,但仍存在:1)性能瓶颈;2)迁移链路长,过程易中断,数据易丢失; 3)停机时间较长;4)对存储空间的消耗大;5)运维成本高等缺点。
数据库文件是二进制文件,而且,数据库的表结构、表数据、索引等都 是在逻辑上相对独立的数据块,但在物理存储的数据库文件中,它们是按照 特定的存储规则来保存的,且对于针对不同类型的数据库,存储规则也不尽 相同。传统方式的数据库迁移的本质是对表结构、表数据,表索引等分别进 行迁移,即,通过对数据的抽取、转换、加载方式对数据进行迁移,这是一 种逻辑形式的数据迁移。在数据库迁移过程中,对表数据的迁移是制约数据 库迁移效率和成功与否的关键因素,目前传统数据迁移方式的迁移效率最高 为当前数据库的吞吐极限。
发明内容
本发明要解决的技术问题在于,针对现有技术存在的上述缺陷,提供一 种数据库的表数据文件的迁移方法和系统。
本发明解决其技术问题所采用的技术方案是:构造一种数据库的表数据 文件的迁移方法,包括:
定位步骤:分别对源数据库和目标数据库中的表数据文件进行定位;
解析步骤:分别对所述源数据库和所述目标数据库中的表数据文件进行解 析,以分别获取所述源数据库和所述目标数据库的表数据文件的存储结构,并 根据所述源数据库和所述目标数据库的表数据文件的存储结构确定所述源数 据库和所述目标数据库的表数据文件的映射关系;
读取转换写入步骤:读取所述源数据库的表数据文件,并根据所述映射关 系,将所述源数据库的表数据文件的文件内容转换为所述目标数据库的表数据 文件的数据内容,且根据所述目标数据库的存储结构,将转换后的表数据文件 的数据内容写入到目标数据库的表数据文件中;
校验步骤:对目标数据库及源数据库中的数据进行一致性校验。
优选地,所述读取转换写入步骤包括:
步骤S311.在所述源数据库的表数据文件中,顺序读取N个数据单元,其 中,N为大于1的自然数;
步骤S312.判断是否读取到数据,若是,则执行步骤S313;若否,则结束;
步骤S313.形成数据块组,并根据所述映射关系,对所述数据块组进行转 换;
步骤S314.根据所述目标数据库的存储结构,将转换后的数据块组写入所 述目标数据库的表数据文件中,然后执行步骤S311。
优选地,所述读取转换写入步骤包括:
步骤S321.开启T个线程,并根据每个线程读取的数据大小,对所述源数 据库的表数据文件进行一次拆分,以获取循环次数及T个线程在每次循环时所 读取的开始位置和结束位置,其中,T为大于1的自然数;
步骤S322.T个线程分别根据每次循环所对应的开始位置和相应的结束位 置,读取文件片段;
步骤S323.对T个线程分别所读取的文件片段进行二次拆分,以获取头部 数据块、中间数据块和尾部数据块;
步骤S324.根据所述映射关系,对所述中间数据块进行转换;
步骤S325.当耗时最长的线程运行完后,根据每个线程的索引编号,将前 一线程的尾部数据块与后一线程的头部数据块进行组合,以形成完整的数据单 元;
步骤S326.根据所述映射关系,对组合后的完整的数据单元进行转换;
步骤S327.根据每个线程的索引编号,将转换后的数据进行组合,以形成 目标数据库的表数据文件的数据内容;
步骤S328.根据所述目标数据库的存储结构,将转换后的数据内容写入所 述目标数据库的表数据文件中。
优选地,所述校验步骤包括:
比较目标数据库与源数据库中表数据的总条数是否一致;和/或,
从目标数据库及源数据库中分别抽样检测样本数据,并校验所述检测样本 数据的内容是否一致。
优选地,所述解析步骤包括:
分别获取所述源数据库和所述目标数据库中的表数据文件的存储模式,其 中,所述存储模块包括不同类型的数据块的混合存储模式及独立存储模式;
分别获取所述源数据库和所述目标数据库中的表数据文件的数据块间的 存储结构,其中,所述存储结构包括:各个数据块的排列顺序、分隔符,以及 每行数据之间的分隔符;
创建所述源数据库和所述目标数据库的映射关系。
本发明还构造一种数据库的表数据文件的迁移系统,包括:
定位模块,用于分别对源数据库和目标数据库中的表数据文件进行定位;
解析模块,用于分别对所述源数据库和所述目标数据库中的表数据文件进 行解析,以分别获取所述源数据库和所述目标数据库的表数据文件的存储结 构,并根据所述源数据库和所述目标数据库的表数据文件的存储结构确定所述 源数据库和所述目标数据库的表数据文件的映射关系;
读取转换写入模块,用于读取所述源数据库的表数据文件,并根据所述映 射关系,将所述源数据库的表数据文件的文件内容转换为所述目标数据库的表 数据文件的数据内容,且根据所述目标数据库的存储结构,将转换后的表数据 文件的数据内容写入到目标数据库的表数据文件中;
校验模块,用于对目标数据库及源数据库中的数据进行一致性校验。
优选地,所述读取转换写入模块包括:
单线程读取单元,用于在所述源数据库的表数据文件中,顺序读取N个 数据单元,并判断是否读取到数据;其中,N为大于1的自然数;
单线程转换单元,用于在读取到数据时形成数据块组,并根据所述映射关 系,对所述数据块组进行转换;
第一写入单元,用于根据所述目标数据库的存储结构,将转换后的数据块 组写入所述目标数据库的表数据文件中。
优选地,所述读取转换写入模块包括:
一次拆分单元,用于开启T个线程,并根据每个线程读取的数据大小,对 所述源数据库的表数据文件进行一次拆分,以获取循环次数及T个线程在每次 循环时所读取的开始位置和结束位置,其中,T为大于1的自然数;
多线程读取单元,用于T个线程分别根据每次循环所对应的开始位置和相 应的结束位置,读取文件片段;
二次拆分单元,用于对T个线程分别所读取的文件片段进行二次拆分,以 获取头部数据块、中间数据块和尾部数据块;
中间转换单元,用于根据所述映射关系,对所述中间数据块进行转换;
头尾转换单元,用于在耗时最长的线程运行完后,根据每个线程的索引编 号,将前一线程的尾部数据块与后一线程的头部数据块进行组合,以形成完整 的数据单元,并根据所述映射关系,对组合后的完整的数据单元进行转换;
组合单元,用于根据每个线程的索引编号,将转换后的数据进行组合,以 形成目标数据库的表数据文件的数据内容;
第二写入单元,用于根据所述目标数据库的存储结构,将转换后的数据内 容写入所述目标数据库的表数据文件中。
优选地,所述校验模块包括:
条数比较单元,用于比较目标数据库与源数据库中表数据的总条数是否一 致;和/或,
样本检查单元,用于从目标数据库及源数据库中分别抽样检测样本数据, 并校验所述检测样本数据的内容是否一致。
优选地,所述解析模块包括:
模式解析单元,用于分别获取所述源数据库和所述目标数据库中的表数据 文件的存储模式,其中,所述存储模块包括不同类型的数据块的混合存储模式 及独立存储模式;
结构解析单元,用于分别获取所述源数据库和所述目标数据库中的表数据 文件的数据块间的存储结构,其中,所述存储结构包括:各个数据块的排列顺 序、分隔符,以及每行数据之间的分隔符;
映射创建单元,用于创建所述源数据库和所述目标数据库的映射关系。
本发明所提供的技术方案,由于其打破了传统数据迁移中对数据的抽取、 转换、加载方式,采用了解析、转换的新方式,从而能保证在数据无损的前提 下从根本上提高数据迁移的效率,大大缩短了停机窗口,降低了迁移成本,且 可以在相对稳定的过程中实现数据的无损迁移,可应用于各大公司、企业的海 量数据迁移场景中。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例描述中所需要使用的 附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实 施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可 以根据这些附图获得其他的附图。附图中:
图1是本发明数据库的表数据文件的迁移方法实施例一的流程图;
图2是数据库文件的混合存储模式的数据结构图;
图3是本发明数据库的表数据文件的迁移方法中读取转换写入步骤实施 例一的流程图;
图4是本发明数据库的表数据文件的迁移方法中读取转换写入步骤实施 例二的流程图;
图5是本发明数据库的表数据文件的迁移系统实施例一的逻辑结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清 楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是 全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造 性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供一种数据库迁移过程中表数据迁移的新方法,目的是提高数据 库迁移过程中表数据的迁移效率,其过程分为四个环节:定位表数据所在的数 据库文件;解析表数据所在的数据库文件,获取文件的存储结构(规则);读 取源数据库文件,转换、写入至目标数据库文件中;一致性校验。该过程是一 种物理形式的从源数据库文件转换到目标数据库文件的数据迁移过程,从而形 成一套高效、稳定的数据库迁移方案。这种直接将数据从源数据库文件转换到 目标数据库文件的模式,大大提高了数据的迁移效率,最高可达到文件IO的 极限值,目前传统数据迁移方式的迁移效率最高为当前数据库的吞吐极限,两者相比,本发明的迁移效率会有会有长足的提升。同时,由于操作对象是数据 库文件,省去了传统数据迁移中的中间库处理环节,大大节约了存储空间,降 低了迁移成本。这种方案适用于各种不同类型的数据库之间的迁移,大大降低 了迁移成本,从根本上提高了迁移效率,尤其适用于大规模海量数据的迁移场 景,可以推广到拥有大规模数据且需要迁移至国产化数据库的各大型公司、企 业中。
图1是本发明数据库的表数据文件的迁移方法实施例一的流程图,该实施 例的迁移方法包括以下步骤:
定位步骤S10:分别对源数据库和目标数据库中的表数据文件进行定位;
在该步骤中,需说明的是,每个数据库均包含了多种类型的存储文件,如 数据文件、日志文件、控制文件、备份文件和重做日志等。针对本专利的研究 对象,不同类型的数据库也可能包含了一个或多个表数据文件,可以通过查阅 官方资料、数据库社区等方式来获取不同类型数据库的表数据文件信息。
解析步骤S20:分别对所述源数据库和所述目标数据库中的表数据文件进 行解析,以分别获取所述源数据库和所述目标数据库的表数据文件的存储结 构,并根据所述源数据库和所述目标数据库的表数据文件的存储结构确定所述 源数据库和所述目标数据库的表数据文件的映射关系;
在该步骤中,需说明的是,数据库文件是二进制文件,而数据库文件的表 结构、表数据、表索引等都是在逻辑上相对独立的数据块,但在物理存储的数 据库文件中,它们是按照特定的存储规则来保存的。而且,针对不同类型的数 据库,存储规则也不尽相同。
读取转换写入步骤S30:根据所述映射关系,将所述源数据库的表数据文 件的文件内容转换为所述目标数据库的表数据文件的数据内容,并根据所述目 标数据库的存储结构,将转换后的表数据文件的数据内容写入到目标数据库的 表数据文件中;
校验步骤S40:对目标数据库及源数据库中的数据进行一致性校验。
在该步骤中,在进行一致性校验时,可借助第三方工具(例如数据库管理 工具),对源数据库和目标数据库中的数据记录进行完整性、一致性校验,也 可在自身系统中增加校验功能。
通过该实施例的技术方案来进行数据迁移时,由于其打破了传统数据迁移 中对数据的抽取、转换、加载方式,采用了解析源数据库文件转换为目标数据 库文件的新方式,从而能保证在数据无损的前提下从根本上提高数据迁移的效 率,未获得数据库文件迁移授权的用户,则不能使用。利用本发明的数据库文 件迁移方案来进行数据迁移,大大缩短了停机窗口,降低了迁移成本,且可以 在相对稳定的过程中实现数据的无损迁移,可应用于各大公司、企业的海量数 据迁移场景中。
进一步地,解析步骤S20包括:
步骤S21.分别获取所述源数据库和所述目标数据库中的表数据文件的存 储模式,其中,所述存储模块包括不同类型的数据块的混合存储模式及独立存 储模式;
在该步骤中,从数据存储结构的维度分析,数据库文件的结构可分为两大 类:混合存储和独立存储,其中,混合存储是指表数据内容与表结构、表索引 等以任意组合存储的方式保存在数据库文件中,如图2所示;独立存储指表数 据内容独立存放在数据库文件中。无论哪种存储方式,都需要识别出不同数据 块之间的分隔符,以及表数据中每行数据之间的分隔符。
步骤S22.分别获取所述源数据库和所述目标数据库中的表数据文件的数 据块间的存储结构,其中,所述存储结构包括:各个数据块的排列顺序、分隔 符,以及每行数据之间的分隔符;
步骤S23.创建所述源数据库和所述目标数据库的映射关系。
在该步骤中,映射关系是指源数据库文件和目标数据库文件中表数据内容 的转换规则。
在一个可选实施例中,该实施例为单线程读写表数据文件,结合图3,读 取转换写入步骤S30具体包括:
步骤S311.在所述源数据库的表数据文件中,顺序读取N个数据单元,N 为大于1的自然数;
在该步骤中,需说明的是,两个相邻分隔符内的数据为1个数据单元,而 且,N可预先设定。在读取数据单元时,可设置计数器来对所读取的数据单元 的数量进行累加。
步骤S312.判断是否读取到数据,若是,则执行步骤S313;若否,则结束; 其中,N为大于1的自然数;
在该步骤中,通过判断能否读取到数据来确定是否读完了源数据库的表数 据文件的全部数据,如果全部数据都读完了,便读取不到数据,此时,可结束 操作。
步骤S313.形成数据块组,并根据所述映射关系,对所述数据块组进行转 换;
在该步骤中,如果读取到了数据,则将N个数据单元组成一数据块组, 然后根据映射关系,批量转换该数据块组。
步骤S314.根据所述目标数据库的存储结构,将转换后的数据块组写入所 述目标数据库的表数据文件中,然后执行步骤S311。
在该步骤中,在将转换后的数据块组写入值目标数据库的表数据文件中 后,计数器从0清零,然后循环执行上述步骤,直至读完源数据库的表数据文 件。
在一个具体实施例中,单线程读写的伪代码:
separatorCounter;//分隔符计数
dataBlock;//包含N个分隔符的源数据库的数据单元组(N为自 定义的数字)
While读取源数据库文件do
计数器累加;
dataBlock<-包含N个分隔符的数据单元组;
//分隔符计数器达到一定数量N后,批量转换数据块,并将转换后的数据 写入目标文件
If separatorCounter等于N do
根据目标数据库的存储结构,转换数据块dataBlock;
根据目标数据库的存储规则,将转换后的数据块写入到目标数据库中;
separatorCounter计数器从0开始计算;
dataBlock设置为空;
end if;
end;
//最后一个数据块的分隔符数量可能小于N
If separatorCounter不等于0do
根据目标数据库的存储结构,转换数据块dataBlock;
根据目标数据库的存储规则,将转换后的数据块写入到目标数据库中;
end if。
在一个可选实施例中,该实施例为多线程读写表数据文件,结合图4,读 取转换写入步骤S30具体包括:
步骤S321.开启T个线程,并根据每个线程读取的数据大小,对所述源数 据库的表数据文件进行一次拆分,以获取循环次数及T个线程在每次循环时所 读取的开始位置和结束位置,其中,T为大于1的自然数;
在该步骤中,假设每个线程读取S KB大小的数据,那么,当源数据库的 表数据文件大小大于T*S时,T个线程每次读取T*S大小的数据,此时, 可计算T个线程每次读取的开始位置和结束位置,依次顺序处理T*S大小的 文件,至最后读取的文件小于T*S截至。另外,定义threadIndex为线程索引 数,可从1开始,每个线程读取的开始位置为(threadIndex-1)*S,结束位置 为:threadIndex*S。
步骤S322.每个线程根据相应的开始位置和相应的结束位置,读取文件片 段;
步骤S323.对每个线程所读取的文件片段进行二次拆分,以获取头部数据 块、中间数据块和尾部数据块;
在该步骤中,需说明的是,表数据是按照一定的规则有序地保存在表数据 文件中的。定义每两相邻的分隔符内的数据为一个数据单元,每个线程的文件 片段的尾部几乎都会存在不完整的数据单元,所以,为了还原分割开的数据单 元,需要对线程所读取的文件片段进行二次拆分。从逻辑上来看,每个线程中 的文件片段可以被再次拆分为三部分:头部数据块、中间数据组、尾部数据块, 其中,头部数据块及尾部数据块为数据单元不完整的数据块。为确保拆分后的 数据块可以进行有序的组合和还原,可用线程索引编号来标识不同线程的数据 块。
步骤S324.根据所述映射关系,对所述中间数据块进行转换;
在该步骤中,当进行二次拆分后,中间数据块由于为数据单元完整的数据 块,所以可以按照转换规则先对其进行转换。
步骤S325.当耗时最长的线程运行完后,根据每个线程的索引编号,将前 一线程的尾部数据块与后一线程的头部数据块进行组合,以形成完整的数据单 元;
在该步骤中,数据单元不完整的数据块间的组合规则为:线程索引编号为threadIndex的头部数据块与编号为(threadIndex-1)的尾部数据块进行组合, 成为一个完整的数据单元;threadIndex编号的尾部数据块与(threadIndex+1) 编号的头部数据块进行组合,成为一个完整的数据单元。
步骤S326.根据所述映射关系,对组合后的完整的数据单元进行转换;
步骤S327.根据每个线程的索引编号,将转换后的数据进行组合,以形成 目标数据库的表数据文件的数据内容;
在该步骤中,根据线程索引编号,将步骤S324转换后的数据单元组及步 骤S326中转换后的数据单元进行有序地组合,形成目标数据库的文件数据。
步骤S328.根据所述目标数据库的存储结构,将转换后的数据内容写入所 述目标数据库的表数据文件中。
在一个具体实施例中,多线程读写的伪代码:
程序主体:
threadNum;//线程数量
sourceFileSize;//源文件大小
perBlockSize;//每个线程读取的文件大小
loopTimes<-sourceFileSize/threadNum;(如果有余数则+1)
for i=0to loopTimes do
List<Block>blockList;//存储数据库文件片段的数据块集合
Byte[]targetDBData;//存储目标数据库文件数据
根据perBlockSize和循环次数,确定读取的起始位置和结束位置;
for t=1to threadNum//开启threadNum个线程
开启threadNum个线程,读取、转换、分割源数据库文件,将分割后的 三个数据块存入BLOCK类中,并写入到block[List集合中,相关处理逻辑参考“线 程类”;
end;
threadNum个线程均执行完成后;
按照线程索引block.index,对blockList进行排序;
//循环blockList,组合、转换不完整的数据单元块,有序地组合目标数据 库的数据
for循环blockList do
按照索引编号block.index将block.tailData与紧跟其后地 block.headData进行组合,并转换为目标数据库的数据块;
targetDBData<-中间完整的数据块block.middleData+组合、转换后的 数据块;
end;
按照已解析出来的存储结构和规则,将targetDBData写入到目标数据库文 件的指定位置中;
end;
线程类方法体:
While读取源数据库文件片段do
if第一个分隔符
do Block.headData<-第一个分隔符前的数据单元块;
end if;
Block.middleData<-转换后的完整数据单元组;
if最后一个分隔符
do Block.tailData<-最后一个分隔符后的数据块;
end if;
将Block对象添加到blockList集合中;
end;
数据块类Block包含的字段:
index;//索引顺序
headData;//头部不完整的数据单元块(可能是空的)
middleData;//中间完整的数据单元组
tailData;//尾部不完整的数据单元块(可能是空的)。
针对上述两个实施例,单线程读写和多线程读写是表数据文件迁移的两种 方式,不同方式所需要的资源空间和消耗的时间也是不同的。从执行效率维度 分析,时间复杂度和空间复杂度是评价效率高低的两个重要标准。下面将具体 说明:
1.时间复杂度
在进行时间复杂度的计算时,一及其环境因素,并且假设每 次执行时的硬件条件和环境条件都是一致的,每条语句执行一次所需的时间都 是单位时间。一般情况下,算法中基本操作重复执行的次数是问题规模n的某 个函数,用T(n)表示,存在辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n) 的极限值为不等于零的常数,即(C为常数),称为f(n)是T(n) 的同数量级函数。记作T(n)=O(f(n)),O(f(n))为渐进时间复杂度。
在此基础上,定义单个数据库文件片段读取的时间为t1,单个数据库文 件片段的转换时间为t2,单个数据库文件片段的写入时间为t3。则:
单线程读写所消耗的时间为:t1+t2+t3;
多线程读写所需要的时间为:MAX(t1+t2+t3);
多线程读写数据库文件时,MAX(t1+t2+t3)是一个与规模n无关的“常 数”,即使有更多的线程,执行时间也是一个较大的“常数”时间,所以多线 程读取的时间复杂度为常数阶,T(n)=O(1)。
2.空间复杂度
空间复杂度是对算法/程序在运行过程中临时占用存储空间大小的度量, 记作S(n)=O(f(n))。单线程读取时,单位时间内所占用的空间不会随着规模n 的增大而发生变化,所以空间复杂度为O(1);多线程读取数据库文件时,单位 时间内占用的内存空间,会随着规模n的改变成线性比例关系,空间复杂度为 O(n)。
3.执行效率分析
时间复杂度和空间复杂度往往是相互影响的。当追求较好的时间复杂度 时,可能会使空间复杂度的性能变差,即可能占用较多的存储空间;反之,当 追求较好的空间复杂度时,可能会使时间复杂度的性能变差,即可能导致占用 较长的运行时间。
线程的执行,通常需要三个资源:CPU、内存和磁盘I/O。内存存取数据 的速度是硬盘存取速度的2个数量级(甚至更多),CPU的速度比内存速度快 了1到2个数量级(甚至更多)。所以,多线程读写数据库文件最大限度地利 用了CPU资源,提高了程序的运行效率。在这种I/O密集型模式中,多线程的 系统性能=线程数目/响应时间,响应时间包含了线程上下文切换时间、内存 的存取速度、磁盘I/O等,机器配置直接决定了线程的数量与性能。最佳线程 数量有一个公式供参考:最佳线程数目=((线程等待时间+线程CPU时间) /线程CPU时间)*CPU数目,从该公式可得出,如果线程的等待时间越大, 即磁盘I/O速度、内存存取速度与CPU速度相差越大,线程数也应该设置越大, 反之亦然。回归到实际的业务场景中,需要根据迁移的数据量和相关的机器配 置去做相关的测试,来获取一个合理的数值。
进一步地,校验步骤S40包括:
比较目标数据库与源数据库中表数据的总条数是否一致,例如,通过借助 数据库管理工具来比较目标数据库和源数据库中数据记录的总条数是否一致; 和/或,
从目标数据库及源数据库中分别抽样检测样本数据,并校验所述检测样本 数据的内容,例如,通过借助数据库管理工具,来校验检测样本数据记录是否 一致。
另外,还需说明的是,对迁移后数据库的数据校验,还可对表结构、索引、 主键等进行检查,以及对应用系统进行功能测试、应用测试、压力测试等过程。 数据校验是检验数据库成功迁移与否的重要手段,其过程也是要严格把控的。
图5是本发明数据库的表数据文件的迁移系统实施例一的逻辑结构图,该 实施例的迁移系统包括:定位模块10、解析模块20、读取转换写入模块30 和校验模块40,其中,定位模块10用于分别对源数据库和目标数据库中的表 数据文件进行定位;解析模块20用于分别对所述源数据库和所述目标数据库 中的表数据文件进行解析,以分别获取所述源数据库和所述目标数据库的表数 据文件的存储结构,并根据所述源数据库和所述目标数据库的表数据文件的存 储结构确定所述源数据库和所述目标数据库的表数据文件的映射关系;读取转 换写入模块30用于读取所述源数据库的表数据文件,并根据所述映射关系, 将所述源数据库的表数据文件的文件内容转换为所述目标数据库的表数据文 件的数据内容,且根据所述目标数据库的存储结构,将转换后的表数据文件的 数据内容写入到目标数据库的表数据文件中;校验模块40用于对目标数据库 及源数据库中的数据进行一致性校验,而且,在进行一致性校验时,可借助第 三方工具(例如数据库管理工具),对源数据库和目标数据库中的数据记录进 行完整性、一致性校验,也可在自身系统中增加校验功能。
在一个可选实施例中,读取转换写入模块30进一步包括:单线程读取单 元、单线程转换单元和第一写入单元,其中,单线程读取单元用于在源数据库 的表数据文件中,顺序读取N个数据单元,并判断是否读取到数据;其中,N 为大于1的自然数;单线程转换单元,用于在读取到数据时形成数据块组,并 根据映射关系,对数据块组进行转换;第一写入单元用于根据目标数据库的存 储结构,将转换后的数据块组写入目标数据库的表数据文件中。
在一个可选实施例中,读取转换写入模块30进一步包括:一次拆分单元、 多线程读取单元、二次拆分单元、中间转换单元、头尾转换单元、组合单元和 第二写入单元。其中,一次拆分单元用于开启T个线程,并根据每个线程读取 的数据大小,对所述源数据库的表数据文件进行一次拆分,以获取循环次数及 T个线程在每次循环时所读取的开始位置和结束位置,其中,T为大于1的自 然数;多线程读取单元用于T个线程分别根据每次循环所对应的开始位置和相 应的结束位置,读取文件片段;二次拆分单元用于对T个线程分别所读取的文 件片段进行二次拆分,以获取头部数据块、中间数据块和尾部数据块;中间转 换单元,用于根据所述映射关系,对所述中间数据块进行转换;头尾转换单元 用于在耗时最长的线程运行完后,根据每个线程的索引编号,将各个线程中的 头部数据块、尾部数据块进行组合,以形成完整的数据单元,并根据所述映射 关系,对组合后的完整的数据单元进行转换;组合单元用于根据每个线程的索 引编号,将转换后的数据进行组合,以形成目标数据库的表数据文件的数据内 容;第二写入单元,用于根据所述目标数据库的存储结构,将转换后的数据内 容写入所述目标数据库的表数据文件中。
在一个可选实施例中,校验模块40进一步包括:条数比较单元和/或样本 检查单元,其中,条数比较单元用于比较目标数据库与源数据库中表数据的总 条数是否一致,例如,条数比较单元通过借助数据库管理工具来比较目标数据 库和源数据库中数据记录的总条数是否一致;样本检查单元用于从目标数据库 及源数据库中分别抽样检测样本数据,并校验所述检测样本数据的内容是否一 致,例如,样本检查单元通过借助数据库管理工具,对检测样本数据进行一致 性校验。
在一个可选实施例中,解析模块20进一步包括:模式解析单元、结构解 析单元和映射创建单元,其中,模式解析单元用于分别获取源数据库和目标数 据库中的表数据文件的存储模式,其中,存储模块包括不同类型的数据块的混 合存储模式及独立存储模式;结构解析单元用于分别获取源数据库和目标数据 库中的表数据文件的数据块间的存储结构,其中,存储结构包括:各个数据块 的排列顺序、分隔符,以及每行数据之间的分隔符;映射创建单元,用于创建 源数据库和目标数据库的映射关系。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本 领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和 原则之内,所作的任何纂改、等同替换、改进等,均应包含在本发明的权利 要求范围之内。
Claims (10)
1.一种数据库的表数据文件的迁移方法,其特征在于,包括:
定位步骤:分别对源数据库和目标数据库中的表数据文件进行定位;
解析步骤:分别对所述源数据库和所述目标数据库中的表数据文件进行解析,以分别获取所述源数据库和所述目标数据库的表数据文件的存储结构,并根据所述源数据库和所述目标数据库的表数据文件的存储结构确定所述源数据库和所述目标数据库的表数据文件的映射关系;
读取转换写入步骤:读取所述源数据库的表数据文件,并根据所述映射关系,将所述源数据库的表数据文件的文件内容转换为所述目标数据库的表数据文件的数据内容,且根据所述目标数据库的存储结构,将转换后的表数据文件的数据内容写入到目标数据库的表数据文件中;
校验步骤:对目标数据库及源数据库中的数据进行一致性校验。
2.根据权利要求1所述的数据库的表数据文件的迁移方法,其特征在于,所述读取转换写入步骤包括:
步骤S311.在所述源数据库的表数据文件中,顺序读取N个数据单元,其中,N为大于1的自然数;
步骤S312.判断是否读取到数据,若是,则执行步骤S313;若否,则结束;
步骤S313.形成数据块组,并根据所述映射关系,对所述数据块组进行转换;
步骤S314.根据所述目标数据库的存储结构,将转换后的数据块组写入所述目标数据库的表数据文件中,然后执行步骤S311。
3.根据权利要求1所述的数据库的表数据文件的迁移方法,其特征在于,所述读取转换写入步骤包括:
步骤S321.开启T个线程,并根据每个线程读取的数据大小,对所述源数据库的表数据文件进行一次拆分,以获取循环次数及T个线程在每次循环时所读取的开始位置和结束位置,其中,T为大于1的自然数;
步骤S322.T个线程分别根据每次循环所对应的开始位置和相应的结束位置,读取文件片段;
步骤S323.对T个线程分别所读取的文件片段进行二次拆分,以获取头部数据块、中间数据块和尾部数据块;
步骤S324.根据所述映射关系,对所述中间数据块进行转换;
步骤S325.当耗时最长的线程运行完后,根据每个线程的索引编号,将前一线程的尾部数据块与后一线程的头部数据块进行组合,以形成完整的数据单元;
步骤S326.根据所述映射关系,对组合后的完整的数据单元进行转换;
步骤S327.根据每个线程的索引编号,将转换后的数据进行组合,以形成目标数据库的表数据文件的数据内容;
步骤S328.根据所述目标数据库的存储结构,将转换后的数据内容写入所述目标数据库的表数据文件中。
4.根据权利要求1所述的数据库的表数据文件的迁移方法,其特征在于,所述校验步骤包括:
比较目标数据库与源数据库中表数据的总条数是否一致;和/或,
从目标数据库及源数据库中分别抽样检测样本数据,并校验所述检测样本数据的内容是否一致。
5.根据权利要求1所述的数据库的表数据文件的迁移方法,其特征在于,所述解析步骤包括:
分别获取所述源数据库和所述目标数据库中的表数据文件的存储模式,其中,所述存储模块包括不同类型的数据块的混合存储模式及独立存储模式;
分别获取所述源数据库和所述目标数据库中的表数据文件的数据块间的存储结构,其中,所述存储结构包括:各个数据块的排列顺序、分隔符,以及每行数据之间的分隔符;
创建所述源数据库和所述目标数据库的映射关系。
6.一种数据库的表数据文件的迁移系统,其特征在于,包括:
定位模块,用于分别对源数据库和目标数据库中的表数据文件进行定位;
解析模块,用于分别对所述源数据库和所述目标数据库中的表数据文件进行解析,以分别获取所述源数据库和所述目标数据库的表数据文件的存储结构,并根据所述源数据库和所述目标数据库的表数据文件的存储结构确定所述源数据库和所述目标数据库的表数据文件的映射关系;
读取转换写入模块,用于读取所述源数据库的表数据文件,并根据所述映射关系,将所述源数据库的表数据文件的文件内容转换为所述目标数据库的表数据文件的数据内容,且根据所述目标数据库的存储结构,将转换后的表数据文件的数据内容写入到目标数据库的表数据文件中;
校验模块,用于对目标数据库及源数据库中的数据进行一致性校验。
7.根据权利要求6所述的数据库的表数据文件的迁移系统,其特征在于,所述读取转换写入模块包括:
单线程读取单元,用于在所述源数据库的表数据文件中,顺序读取N个数据单元,并判断是否读取到数据;其中,N为大于1的自然数;
单线程转换单元,用于在读取到数据时形成数据块组,并根据所述映射关系,对所述数据块组进行转换;
第一写入单元,用于根据所述目标数据库的存储结构,将转换后的数据块组写入所述目标数据库的表数据文件中。
8.根据权利要求6所述的数据库的表数据文件的迁移系统,其特征在于,所述读取转换写入模块包括:
一次拆分单元,用于开启T个线程,并根据每个线程读取的数据大小,对所述源数据库的表数据文件进行一次拆分,以获取循环次数及T个线程在每次循环时所读取的开始位置和结束位置,其中,T为大于1的自然数;
多线程读取单元,用于T个线程分别根据每次循环所对应的开始位置和相应的结束位置,读取文件片段;
二次拆分单元,用于对T个线程分别所读取的文件片段进行二次拆分,以获取头部数据块、中间数据块和尾部数据块;
中间转换单元,用于根据所述映射关系,对所述中间数据块进行转换;
头尾转换单元,用于在耗时最长的线程运行完后,根据每个线程的索引编号,将前一线程的尾部数据块与后一线程的头部数据块进行组合,以形成完整的数据单元,并根据所述映射关系,对组合后的完整的数据单元进行转换;
组合单元,用于根据每个线程的索引编号,将转换后的数据进行组合,以形成目标数据库的表数据文件的数据内容;
第二写入单元,用于根据所述目标数据库的存储结构,将转换后的数据内容写入所述目标数据库的表数据文件中。
9.根据权利要求6所述的数据库的表数据文件的迁移系统,其特征在于,所述校验模块包括:
条数比较单元,用于比较目标数据库与源数据库中表数据的总条数是否一致;和/或,
样本检查单元,用于从目标数据库及源数据库中分别抽样检测样本数据,并校验所述检测样本数据的内容是否一致。
10.根据权利要求6所述的数据库的表数据文件的迁移系统,其特征在于,所述解析模块包括:
模式解析单元,用于分别获取所述源数据库和所述目标数据库中的表数据文件的存储模式,其中,所述存储模块包括不同类型的数据块的混合存储模式及独立存储模式;
结构解析单元,用于分别获取所述源数据库和所述目标数据库中的表数据文件的数据块间的存储结构,其中,所述存储结构包括:各个数据块的排列顺序、分隔符,以及每行数据之间的分隔符;
映射创建单元,用于创建所述源数据库和所述目标数据库的映射关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010554112.7A CN112035461B (zh) | 2020-06-17 | 2020-06-17 | 数据库的表数据文件的迁移方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010554112.7A CN112035461B (zh) | 2020-06-17 | 2020-06-17 | 数据库的表数据文件的迁移方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112035461A true CN112035461A (zh) | 2020-12-04 |
CN112035461B CN112035461B (zh) | 2024-05-10 |
Family
ID=73579636
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010554112.7A Active CN112035461B (zh) | 2020-06-17 | 2020-06-17 | 数据库的表数据文件的迁移方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112035461B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114546942A (zh) * | 2022-01-28 | 2022-05-27 | 苏州浪潮智能科技有限公司 | 一种数据库数据读取方法、装置、终端及存储介质 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004077215A2 (en) * | 2003-01-30 | 2004-09-10 | Vaman Technologies (R & D) Limited | System and method for data migration and conversion |
CA2437008A1 (en) * | 2003-08-12 | 2005-02-12 | Ibm Canada Limited-Ibm Canada Limitee | Method and apparatus for data migration between databases |
US20060184561A1 (en) * | 2005-02-11 | 2006-08-17 | Sybase, Inc. | System and Methodology for Database Migration between Platforms |
US20060212746A1 (en) * | 2005-03-21 | 2006-09-21 | Augustine Amegadzie | Selection of migration methods including partial read restore in distributed storage management |
CN101789021A (zh) * | 2010-02-24 | 2010-07-28 | 浪潮通信信息系统有限公司 | 一种通用可配置的数据库数据迁移方法 |
US20120124081A1 (en) * | 2010-11-17 | 2012-05-17 | Verizon Patent And Licensing Inc. | Method and system for providing data migration |
US20130173546A1 (en) * | 2011-12-30 | 2013-07-04 | Bmc Software, Inc. | Systems and methods for migrating database data |
CN103440273A (zh) * | 2013-08-06 | 2013-12-11 | 北京航空航天大学 | 一种数据跨平台迁移方法及装置 |
CN105354314A (zh) * | 2015-11-10 | 2016-02-24 | 中国建设银行股份有限公司 | 数据迁移方法及装置 |
US20160210064A1 (en) * | 2015-01-21 | 2016-07-21 | Commvault Systems, Inc. | Database protection using block-level mapping |
CN105824879A (zh) * | 2015-12-17 | 2016-08-03 | 深圳市华讯方舟软件技术有限公司 | 一种基于PostgreSQL块存储设备的迁移方法 |
CN109284293A (zh) * | 2018-10-08 | 2019-01-29 | 湖南工学院 | 用于水务公司营业收费系统升级的数据迁移方法 |
CN109299072A (zh) * | 2018-10-16 | 2019-02-01 | 郑州云海信息技术有限公司 | 一种数据库在线迁移的方法及装置 |
US20200089776A1 (en) * | 2018-09-14 | 2020-03-19 | International Business Machines Corporation | Method for migrating data records from a source database to a target database |
-
2020
- 2020-06-17 CN CN202010554112.7A patent/CN112035461B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004077215A2 (en) * | 2003-01-30 | 2004-09-10 | Vaman Technologies (R & D) Limited | System and method for data migration and conversion |
CA2437008A1 (en) * | 2003-08-12 | 2005-02-12 | Ibm Canada Limited-Ibm Canada Limitee | Method and apparatus for data migration between databases |
US20060184561A1 (en) * | 2005-02-11 | 2006-08-17 | Sybase, Inc. | System and Methodology for Database Migration between Platforms |
US20060212746A1 (en) * | 2005-03-21 | 2006-09-21 | Augustine Amegadzie | Selection of migration methods including partial read restore in distributed storage management |
CN101789021A (zh) * | 2010-02-24 | 2010-07-28 | 浪潮通信信息系统有限公司 | 一种通用可配置的数据库数据迁移方法 |
US20120124081A1 (en) * | 2010-11-17 | 2012-05-17 | Verizon Patent And Licensing Inc. | Method and system for providing data migration |
US20130173546A1 (en) * | 2011-12-30 | 2013-07-04 | Bmc Software, Inc. | Systems and methods for migrating database data |
CN103440273A (zh) * | 2013-08-06 | 2013-12-11 | 北京航空航天大学 | 一种数据跨平台迁移方法及装置 |
US20160210064A1 (en) * | 2015-01-21 | 2016-07-21 | Commvault Systems, Inc. | Database protection using block-level mapping |
CN105354314A (zh) * | 2015-11-10 | 2016-02-24 | 中国建设银行股份有限公司 | 数据迁移方法及装置 |
CN105824879A (zh) * | 2015-12-17 | 2016-08-03 | 深圳市华讯方舟软件技术有限公司 | 一种基于PostgreSQL块存储设备的迁移方法 |
US20200089776A1 (en) * | 2018-09-14 | 2020-03-19 | International Business Machines Corporation | Method for migrating data records from a source database to a target database |
CN109284293A (zh) * | 2018-10-08 | 2019-01-29 | 湖南工学院 | 用于水务公司营业收费系统升级的数据迁移方法 |
CN109299072A (zh) * | 2018-10-16 | 2019-02-01 | 郑州云海信息技术有限公司 | 一种数据库在线迁移的方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114546942A (zh) * | 2022-01-28 | 2022-05-27 | 苏州浪潮智能科技有限公司 | 一种数据库数据读取方法、装置、终端及存储介质 |
CN114546942B (zh) * | 2022-01-28 | 2024-01-19 | 苏州浪潮智能科技有限公司 | 一种数据库数据读取方法、装置、终端及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112035461B (zh) | 2024-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20130227194A1 (en) | Active non-volatile memory post-processing | |
CN101329638B (zh) | 程序代码的并行性的分析方法和系统 | |
CN1230740C (zh) | 数字信号处理装置 | |
CN100440163C (zh) | 对计算机程序进行运行时分析的方法和系统 | |
US20100223269A1 (en) | System and method for an efficient query sort of a data stream with duplicate key values | |
CN102591940B (zh) | 一种基于Map/Reduce的快速支持向量数据描述方法及系统 | |
CN109522428A (zh) | 一种基于索引定位的图计算系统的外存访问方法 | |
CN102708029B (zh) | 性能瓶颈诊断方法和设备 | |
CN103729291A (zh) | 一种基于同步关系的并行动态数据竞争检测系统 | |
US8245084B2 (en) | Two-level representative workload phase detection | |
Dede et al. | Benchmarking MapReduce implementations under different application scenarios | |
CN113366452A (zh) | 存储器子系统的事件日志信息的管理 | |
CN111176831B (zh) | 基于多线程共享内存通信的动态线程映射优化方法及装置 | |
KR101990329B1 (ko) | 로그 데이터 분석을 이용한 데이터베이스 복구 속도 향상 기법 및 장치 | |
Johnston et al. | In situ data analytics and indexing of protein trajectories | |
CN112035461B (zh) | 数据库的表数据文件的迁移方法和系统 | |
CN110262753A (zh) | 一种加快命令响应的方法、系统以及ssd | |
Yang et al. | Redis automatic performance tuning based on eBPF | |
Cui et al. | Flowwalker: a fast and precise off-line taint analysis framework | |
Ouyang et al. | Mitigate data skew caused stragglers through ImKP partition in MapReduce | |
CN112069006B (zh) | 一种检测分析gpu速率状态的方法、装置及计算机可读介质 | |
CN105718223B (zh) | 管理工作负载存储器分配的方法和设备 | |
CN112559641A (zh) | 拉链表的处理方法及装置、可读存储介质及电子设备 | |
KR20190067147A (ko) | 로그 데이터 분석을 이용한 데이터베이스 복구 속도 향상 기법 및 장치 | |
Sanyal et al. | Building Simulation Modelers–Are we big data ready? |
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 |