[发明专利]基于ORACLE数据库的海量数据脱敏方法有效
申请号: | 201911375004.7 | 申请日: | 2019-12-27 |
公开(公告)号: | CN111125769B | 公开(公告)日: | 2023-09-19 |
发明(设计)人: | 程永新;宋辉;郭振宇 | 申请(专利权)人: | 上海轻维软件有限公司 |
主分类号: | G06F21/62 | 分类号: | G06F21/62;G06F16/22;G06F16/25 |
代理公司: | 上海科律专利代理事务所(特殊普通合伙) 31290 | 代理人: | 袁亚军 |
地址: | 200333 上海市普陀区*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 oracle 数据库 海量 数据 方法 | ||
1.一种基于ORACLE数据库的海量数据脱敏方法,其特征在于,包括如下步骤:
S1:根据数据库中需要脱敏的表的数据量,对每个表进行数据分片;
S2:根据表的数据量分配定义线程管道组数和线程数量;
S3:执行表的所有线程管道的线程从数据库的原表中抽取数据分片脱敏后加载到目标表中,完成数据脱敏;
所述步骤S2具体包括:
S21:根据表的数据量将表分为四类:分类一:数据量为0MB-10MB;分类二:数据量为10MB-1GB;分类三:数据量1GB-10GB;分类四,数据量大于10GB;
S22:根据表的数据量的分类给每个表分配合适的线程管道组数:分类一分配1组线程管道;分类二分配4组线程管道;分类三分配16组线程管道;分类四分配32组线程管道;
S23:分配的线程数量为线程管道的组数的3倍,所述线程分为抽取线程、脱敏线程和加载线程,每一组线程管道由对应设置的抽取线程、脱敏线程和加载线程组成,对应设置的抽取线程、脱敏线程和加载线程通过队列进行数据传递,组成一条串行的线程管道,所述抽取线程和脱敏线程通过管道队列一进行数据传递,所述脱敏线程和加载线程通过管道队列二进行数据传递。
2.如权利要求1所述的基于ORACLE数据库的海量数据脱敏方法,其特征在于,所述表的数据分片为均匀分片,具体包括:每个表单独使用ORACLE的sample()函数均匀取出表的N个物理存储地址ROWID,物理存储地址的数量根据ORACLE的表大小动态修改,直到抽取到合适的ROWID数量,然后将ROWID排序后两两为一区间划分成多个分片,分片完成后,表的所有分片SQL都放入该表的分片队列;如果表为普通表,则对表进行一次分片,如果是分区表,则对表的每个分区都进行一次分片。
3.如权利要求2所述的基于ORACLE数据库的海量数据脱敏方法,其特征在于,所述表数据进行分区切片后,对分片进行重新排序,把不同的分区映射到不同磁盘进行I/O平衡,使多个线程能轮询获取到不同分区的分片,多个线程同时操作不同的磁盘。
4.如权利要求1所述的基于ORACLE数据库的海量数据脱敏方法,其特征在于,所述步骤S3中执行线程管道的线程具体包括:
S311:线程管道的抽取线程去分片队列里轮询取出分片SQL来连接ORACLE数据库读取数据,将数据发送到管道队列一;
S312:线程管道的脱敏线程从管道队列一拉取数据,进行数据脱敏,将脱敏后数据传递到管道队列二;
S313:线程管道的加载线程从管道队列二拉取数据,再加载到目标数据表。
5.如权利要求4所述的基于ORACLE数据库的海量数据脱敏方法,其特征在于,所述步骤S313中数据加载是通过直通路径加载到目标数据表,插入的数据通过ORACLE程序全局区直接把数据格式化成ORACLE块,然后由普通的ORACLE服务器进程把数据块写入目标数据表,把数据直接插入到段的高水位以上;数据加载到目标数据表的过程中禁用日志,生成最少量的REDO和UNDO,减少目标数据库的I/O。
6.如权利要求4所述的基于ORACLE数据库的海量数据脱敏方法,其特征在于,进行单表的脱敏时,所述步骤S3中直接执行该表分配定义的每个线程管道的线程进行数据的抽取、脱敏和加载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海轻维软件有限公司,未经上海轻维软件有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911375004.7/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种月饼自动化生产的成型装置
- 下一篇:一种基于人工智能的交通道路监控装置