背景:通过sql语句和配置表的手段进行历史表的数据迁移过程。

指标:扩展性,高性能。

核心类/接口说明:
HistoryProductDirector:指挥者,负责安排已有模块的顺序,然后通知Builder开始建造
HistoryProductBuild:抽象Builder类,规范产品的组建
HistoryProduct:产品,迁移核心操作都包含在这个产品里面
HistorySelect:迁移查询类型(产品组件),负责查询原表记录
HistoryInsert:迁移插入类(产品组件),负责插入历史表
HistoryDelete:迁移删除类(产品组件),负责删除原表记录

iecs数据库表:

CREATE TABLE `history_transfer_assembly` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`source_table_name` varchar(100) NOT NULL COMMENT '原表表名',
`target_table_name` varchar(100) NOT NULL COMMENT '历史表表名',
`query_criteria` varchar(100) NOT NULL COMMENT '查询条件',
`business_type` tinyint(4) NOT NULL COMMENT '业务类型0:ruserver 1:IECS',
`creater` varchar(100) DEFAULT NULL COMMENT '创建人',
`create_by` datetime DEFAULT NULL COMMENT '创建时间',
`modify_by` varchar(100) DEFAULT NULL COMMENT '修改人',
`modify_time` datetime DEFAULT NULL COMMENT '修改时间',
`status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态:0:待处理1:处理中2:完成',
`is_enable` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否启用0:启用1:停用',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='数据迁移历史配置表'

 

组件设计时序图:

在数据库链接url后面加上:rewriteBatchedStatements=true,使用批处理,用debug走一下源码,加了这个参数后,确实是走了jdbc的批处理 

 插入1000条,耗时12毫秒。

 部分代码:

 

 

 

 

 

 

 

 

 

 

 

posted on   路飞_lufei  阅读(209)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术



点击右上角即可分享
微信分享提示