随笔分类 - Java与数据迁移脱敏
摘要:做了将近五个月的脱敏,之后又浏览了各大厂商的脱敏产品,终于得出这个结论。 真正的脱敏系统,是让用户使用URL/USER/PSWD就能连上系统,传递sql就能获得结果,如果有敏感列就调用算法进行遮盖,没有敏感列就把数据返回,使用户感觉不到脱敏的存在。系统实现后,对用户来说,是和JDBC连到任何一个数据
阅读全文
摘要:【当前效率】 21字段表(1id+20varchar2/nvarchar2),10字段脱敏,10字段保持,数据量1300万,在来源端和去向端都是Oracle12c以上数据库的情况下,在虚拟机上能在600s-700s内传输完,约2万条每秒,在服务器上能在300-400秒内传输完,约4万条每秒。 【提速
阅读全文
摘要:在笔者一段程序中有这样的代码: final int BATCH_SIZE=10000; final String sql=buildSql(...); try(Connection conn=DbUtil.getConn(); PreparedStatement pstmt=conn.prepare
阅读全文
摘要:【代码下载地址】 https://files.cnblogs.com/files/heyang78/newcpmgrt_20220714ev.rar?t=1657805048 【前作】 https://www.cnblogs.com/heyang78/p/16410831.html 【图解】 【开发
阅读全文
摘要:在近期从事的数据库表迁移脱敏工作中,我逐渐归纳出两种迁移方式: 一.BlockMigrater:这种模式是一行行读取ResultSet的内容,凑足一万行后向目标库提交,提交完毕后再继续读取,再提交,直到处理完所有数据; 二.UnblockMigrater:这种模式读取时还是一行行读取ResultSe
阅读全文
摘要:在一次表迁移测试中,我遇到了如下异常: Java.sql.SQLException,关闭的ResultSet;findColumn,at oracle.jdbc.driver.InsentiveScrollableResultSet.ensureOpen...... 这个异常字面意思是Results
阅读全文
摘要:迁移脱敏程序的核心之一--迁移部分。
阅读全文
摘要:有效手段:
1.将写操作交给线程;2.LRU缓存;3.判别代码属性化;4.频繁访问的数据结构固定大小;
不见效手段:
1.成员变量本地化;2.循环内变量定义移出。
阅读全文
摘要:原先的做法是在用户触发添加任务/作业时直接启动脱敏线程,这造成两个问题:一是线程运行状态不便控制,二是线程之间争抢连接资源。多了就容易乱。 采用以下方式后,流程清晰可控,每个环节代码不容易交织,可控性高于流放式线程执行。 PS:上图用免费软件draw.io绘制完成,https://www.diagr
阅读全文
摘要:接触数据迁移工作已经有两周时间了,踩过坑趟过路,今天趁上班前的一个多小时总结一下。 【名词】 数据迁移Data Migration:指将from数据库中的某表数据拷贝到to数据库中的某表。 数据脱敏:在数据迁移过程中,将表中敏感字段进行遮挡或加密,脱敏手段有可逆的和不可逆的,不可逆的如MD5摘要算法
阅读全文
摘要:Draft1: { "from":{ "db":{ "driver":"oracle.jdbc.driver.OracleDriver", "name":"luna", "pswd":"1234", "url":"jdbc:oracle:thin:@127.0.0.1:1521:orcl" }, "
阅读全文
摘要:注意以下操作在dos窗口里进行,不是sqlplus。 【单表导出】 命令: exp luna/1234@orcl file=c:\temp\123.dump tables=(test05); 其中luna是用户名,1234是密码,orcl是服务名,test05是表名 执行情况: C:\WINDOWS
阅读全文
摘要:一.【遮盖脱敏方式】 需求:将十位数字遮盖中间四位 实现一:substr方法(不可逆,脱敏前后等长) 代码: select substr('1234567890',1,3)||'****'||substr('1234567890',-3) as masked from dual 效果: 123456
阅读全文