首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

应用于关系型数据库数据装载的方法 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:杭州美创科技股份有限公司

摘要:本发明公开了一种应用于关系型数据库数据装载的方法,包括如下步骤:数据文件读取线程读取需要装载到目标数据库的数据文件,数据文件分为存量数据文件和增量数据文件;存量数据装载线程将读取的数据文件,通过数据处理生成sql语句,批量执行至目标数据库中,并保存为ckpt数据;当存量装载线程手动退出或异常终止,重新启动存量数据装载线程后,数据文件读取线程在上一次读取的位置继续读取数据。本发明具有能够实现数据库的存量和增量的数据装载;能够根据配置解决异构数据库的DDL转换的特点。

主权项:1.一种应用于关系型数据库数据装载的方法,其特征是,包括如下步骤:1-1数据读取数据文件读取线程读取需要装载到目标数据库的数据文件,数据文件分为存量数据文件和增量数据文件;1-2数据装载存量数据装载线程将读取的数据文件,通过数据处理生成sql语句,批量执行至目标数据库中,并保存为ckpt数据;1-3断点续传当存量装载线程手动退出或异常终止,重新启动存量数据装载线程后,数据文件读取线程在上一次读取的位置继续读取数据;当增量装载线程手动退出或异常终止,重新启动增量数据装载线程后,数据文件读取线程在上一次读取的位置继续读取数据;1-1包括如下步骤:启动数据文件读取线程,数据文件读取线程获取存量数据文件,以数据段的方式读取,将读取的数据以Json格式序列化到数据文件中,通过Json反序列化解析后得到数据对象;数据对象的属性包括scn值和源数据库库类型;源数据库类型包括Oracle,MySql和Postgresql;根据数据对象得到源数据库类型,如果源数据库类型为oracle数据库,并且当前读取到的数据是存量数据,则将读取到的数据中的scn值存放到持久化的容器中,利用scn值建立存量数据与增量数据的衔接;如果源数据库类型为oracle数据库,并且当前读取到的数据是增量数据,先对oracle数据库的行进行回滚操作;然后,将当前读取到的数据放入内存中,并将数据中的事务号放入待装载的数据队列中;1-2包括如下步骤:每个存量装载线程获取待装载的数据队列中的事务号,根据事务号,在数据缓存中获取该事务号所对应的所有数据行;每个增量装载线程获取待装载的数据队列中的事务号,根据事务号,在数据缓存中获取该事务号所对应的数据行,遍历所有的数据行,根据每个数据行的数据库类型,如果源库为Oracle数据库,那么对rowld字段值进行hash,得到hash值A11;如果源库为非Oracle数据库,那么通过schemaName、tableName和所有primarys值进行拼接后进行hash,得到hash值A12;再利用当前的装载线程数B1,将A11或A12为被除数,B1为除数做取模运算,得到模值C1;将每个数据行放到模值C1对应的装载线程中进行装载;利用scn值建立存量数据与增量数据的衔接包括如下步骤:数据文件读取线程中保存有每张表A的存量scn值,增量装载线程读取表A的scn值,如果存量的scn值≥增量的scn值,则丢弃掉增量的scn值对应的数据行,如果存量的scn值<增量的scn值,则将增量的scn值对应的数据行装载到目标数据库中,并移除保存的scn值所对应的数据行;1-2还包括ddl装载处理过程:根据源数据的数据库类型和备库的数据库类型,通过sql语句的语法和词法解析,自动转换备库的ddl语句;如果ddl为与表操作相关的语句,重载数据字典;数据文件读取线程在上一次读取的位置继续读取数据包括存量数据续传过程和增量数据续传过程;存量数据续传过程包括如下步骤:读取目标数据库ckpt表中所有的存量装载线程的数据,取得所有的正在装载的事务号和最后提交的事务号,如果正在装载事务号和最后提交的事务号相同,则该事务号对应的事务不必恢复;如果正在装载的事务号和最后提交的事务号不相同,则将该事务号对应的事务恢复;通过比较获取装载线程ckpt中最小的文件偏移位置和最大的文件偏移位置,数据文件读取线程从最小的文件偏移位置开始读取文件,判断数据行中的事务号是否对应需要恢复的事务;如果数据行中的事务号对应需要恢复的事务,则将该事务放入待提交数据队列;数据文件读取线程读取到最大文件偏移位置时,则存量数据断点续传完成;增量数据续传过程包括如下步骤:当每个增量装载线程启动时,根据当前的增量装载线程的线程名到目标数据库中查询出当前增量装载线程上次装载的增量装载线程,并在最小的文件偏移位置和最大的文件偏移位置进行数据恢复;增量装载线程根据每个数据行的数据库类型,如果源库为Oracle数据库,那么对rowld字段值进行hash,得到hash值A21;如果源库为非Oracle数据库,那么通过schemaName、tableName和所有primarys值进行拼接后进行hash,得到hash值A22;再利用当前的装载线程数B2,将A21或A22做为被除数,B2为除数做取模运算,得到模值C2;将每个数据行放到模值C2对应的装载线程中进行装载;判断所述数据行是否属于增量装载线程,如果所述数据行属于增量装载线程,则将该数据行放入数据队列,当数据文件读取线程读取到最大文件偏移位置时,则增量数据断点续传完成。

全文数据:

权利要求:

百度查询: 杭州美创科技股份有限公司 应用于关系型数据库数据装载的方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。