[发明专利]一种ROWID对应关系数据的压缩和解压方法有效
申请号: | 201910485933.7 | 申请日: | 2019-06-05 |
公开(公告)号: | CN110399372B | 公开(公告)日: | 2020-03-27 |
发明(设计)人: | 高志会;李天伟;林广生 | 申请(专利权)人: | 上海英方软件股份有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22;H03M7/30 |
代理公司: | 北京君尚知识产权代理有限公司 11200 | 代理人: | 邱晓锋 |
地址: | 201114 上海市闵行区*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 rowid 对应 关系 数据 压缩 解压 方法 | ||
1.一种ROWID对应关系数据的压缩方法,ROWID包括由ORACLE数据库给每个表、表的分区或者子分区分配的唯一编号OBJD、存储ORACLE数据库的记录的数据块编号DBA以及记录在数据块内的编号SLOT,其特征在于,该方法包括以下步骤:
对于ROWID对应关系数据,从源SLOT 0开始,判断当前源SLOT有没有记录,如果没有,则统计后面连续没有记录的SLOT的个数,输出标记字节FLG;如果有,则生成新的标记字节FLG,输出目标SLOT,并根据SLOT是否小于256更新FLG;
判断当前目标DBA是否与前面的DBA有重复,如果没有,则输出新的DBA并记录;如果有,则输出DBA的索引,并根据DBA的索引号是否小于256更新FLG;
判断当前目标OBJD是否与前面的OBJD有重复,如果没有,则输出新的OBJD并记录;如果有,则输出OBJD的索引,并根据OBJD的索引号是否小于256更新FLG;
判断后续是否有目标ROWID和当前连续,如果有,则输出连续个数,并根据连续个数是否小于256更新FLG;
执行上述步骤直到没有ROWID记录时,完成压缩。
2.如权利要求1所述的压缩方法,其特征在于,统计后面连续没有记录的SLOT的个数不超过127个。
3.如权利要求1所述的压缩方法,其特征在于,判断后续是否有目标ROWID和当前连续的标准是OBJD和DBA是否与当前目标ROWID相同,且目标SLOT连续递增。
4.如权利要求1所述的压缩方法,其特征在于,如果还有ROWID记录,则进一步判断当前源SLOT有没有记录,并执行后续操作。
5.如权利要求1所述的压缩方法,其特征在于,每一段压缩数据均以一个FLG开始,该FLG含有如下8个比特位:
比特7:源SLOT无记录标记位,置此位,则另外7位代表连续多少个SLOT没有记录;
比特6:目标SLOT占1字节还是2字节;
比特5:新目标DBA标记,置此位,代表着遇到了新DBA,压缩数据包含4字节的DBA;反之,代表遇到了使用过的DBA,压缩数据包含DBA的索引;
比特4:DBA索引占1字节还是2字节;
比特3:新目标OBJD标记,置此位,代表着遇到了新OBJD,压缩数据包含4字节的OBJD;反之,代表遇到了使用过的OBJD,压缩数据包含OBJD的索引;
比特2:OBJD索引占1字节还是2字节;
比特1:表示目标ROWID是连续的,压缩数据包含连续ROWID的个数;
比特0:连续的ROWID个数占1字节还是2字节。
6.如权利要求5所述的压缩方法,其特征在于,所述根据SLOT是否小于256更新FLG,是指如果SLOT小于256,输出1字节,否则输出2字节,更新FLG比特6。
7.如权利要求5所述的压缩方法,其特征在于,所述根据DBA的索引号是否小于256更新FLG,是指如果DBA的索引号小于256,输出1字节,否则输出2字节,更新FLG比特5和4。
8.如权利要求5所述的压缩方法,其特征在于,所述根据OBJD的索引号是否小于256更新FLG,是指如果OBJD的索引号小于256,则输出1字节,否则输出2字节,更新FLG比特3和2。
9.如权利要求5所述的压缩方法,其特征在于,所述根据连续个数是否小于256更新FLG,是指如果连续个数小于256,则输出1字节,否则输出2字节,更新FLG比特1和0。
10.一种ROWID对应关系数据的解压方法,ROWID包括由ORACLE数据库给每个表、表的分区或者子分区分配的唯一编号OBJD、存储ORACLE数据库的记录的数据块编号DBA以及记录在数据块内的编号SLOT,其特征在于,该方法包括以下步骤:
对于ROWID对应关系数据的数据包,取当前标记字节FLG,如果比特7置位,则取出其另7个比特的数值N,并将连续N个源SLOT标记为无记录,然后重复该步骤;
如果比特7未置位,则按比特6的指示取出1或2字节的目标SLOT;
如果FLG的比特5置位,则取出4字节的目标DBA并记录,否则按照比特4的指示取出1或2字节的DBA索引号,然后用该索引在DBA记录中取出目标DBA;
如果FLG的比特3置位,则取出4字节的目标OBJD并记录,否则按照比特4的指示取出1或2字节的OBJD索引号,然后用该索引在OBJD记录中取出目标OBJD;
如果FLG的比特1置位,则按照比特0指示取出1或2字节作为连续ROWID的数量,并生成相应数量的连续ROWID;
执行上述步骤直到没有未解压数据,完成解压。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海英方软件股份有限公司,未经上海英方软件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910485933.7/1.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置