著录项信息
专利名称 | 基于数据库行列混合存储的多规则复合压缩方法 |
申请号 | CN201210209362.2 | 申请日期 | 2012-06-25 |
法律状态 | 撤回 | 申报国家 | 中国 |
公开/公告日 | 2012-10-17 | 公开/公告号 | CN102737132A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F17/30 | IPC分类号 | G06F17/30查看分类表>
|
申请人 | 天津神舟通用数据技术有限公司 | 申请人地址 | 天津市天津华苑产业区海泰发展六道6号海泰绿色产业基***
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 天津神舟通用数据技术有限公司 | 当前权利人 | 天津神舟通用数据技术有限公司 |
发明人 | 曹晖;冯柯;毛云青;何清法;周丽霞;蒋志勇;赵殿奎;关刚;王效忠;李海峰 |
代理机构 | 暂无 | 代理人 | 暂无 |
摘要
本发明公开了一种基于数据库行列混合存储的多规则复合压缩方法。结合当前软硬件发展趋势以及数据库业界所面临的严重性能瓶颈,提出了将数据库内数据按元组行组织、按属性列压缩的混合存储压缩模式,既具备了列存储高压缩率的特性同时兼具行存储便于随机定位访问的优点。同时针对不同的数据分布特点提出了多种属性列内的规则编码方法,尤其针对数据库单表内各属性列间可能存在的关系提出了列间压缩规则,结合后端的通用压缩算法,能够高效的为上层数据库应用提供多级别的复合压缩功能,并保证在指定压缩率条件下最大化编解码速度。
1.一种基于数据库行列混合存储的多规则复合压缩方法,其特征在于采用以下步骤实现::
1)接收用户导入数据,并将所有数据按照用户表属性模式重组分割为多个属性列;
2)对当前数据包内每个属性列数据利用字典规则压缩方法构建字典结构及权重表;
3)针对每个属性列利用构建好的字典和权重信息预估该列使用各种列内压缩规则编码后的大小,根据对比为每个属性列选取空间占用最小的压缩规则;
4)根据各个属性列的字典信息进行列间压缩规则发现,发现合适规则后将预估编码后大小与对应列的列内压缩规则比较,选取空间最优方案;
5)根据最优压缩规则选择方案对数据包内每个属性列数据进行规则压缩编码;
6)根据目标要求压缩级别,利用通用压缩方法对规则编码后的列数据进行复合压缩,达到预期压缩率后即完成该数据包压缩。
2.根据权利要求1所述的一种基于数据库行列混合存储的多规则复合压缩方法,其特征在于:步骤1)中需要使用压缩缓冲区缓冲外部导入数据,采用行列混合的方式存储导入数据,每当缓冲区接收一定数量行数据即作为一个整体独立的数据包,然后在数据包内结合数据库对应表的模式定义将数据按属性列模式抽取分割并按列存放。
3.根据权利要求1所述的一种基于数据库行列混合存储的多规则复合压缩方法,其特征在于:步骤2)使用字典编码的目的是为数据包内各列数据分别建立一个与压缩相关的统计信息以供后续规则选择,字典编码与数据导入及属性列分割过程紧密结合实现对数据的动态编码,当压缩缓冲区接收完一个独立数据包的同时其内部数据也将整体以字典编码结构方式存放,方法的具体实施包含以下内容:
1)为数据包内每个属性列上的字典编码建立辅助数据结构并进行相关内容初始化,字典表采用静态哈希结构,初始设置条目数为数据包行数的两倍以保证较少的冲突率;
2)当新数据元组导入到压缩缓冲区后,将该数据行中每个属性元素分配到对应属性列的字典编码结构中,且获取每一个元素的属性值和长度,以此累积记录每个属性列在不使用压缩规则的情况下的原始数据大小;
3)每个属性列对于新加入的属性元素根据其属性值计算针对字典表的哈希值,然后通过哈希索引找到该属性值在字典表中所对应条目项并更新条目项对应的权重值。如果由于哈希索引的原因发生冲突,条目项已经为其它属性值元素所占据,则采用平方探测法继续寻找下一个对应的条目项,并重复之前的判断和操作。在为属性元素找到对应字典表条目后,压缩缓冲区即可将属性值替换为其对应字典表条目项的编号存储在当前属性列的引用表中;
4)在字典表维护过程中,每插入一定数量属性元素过后,需要对当前字典编码总体大小进行评估。首先得到当前属性列所有属性值在无压缩情况的下的原始大小,同时根据字典表所有存在条目项以及引用表大小预估经过字典编码后的存储大小;
5)当压缩缓冲区接收数据元组总数达到数据包行数上限后,每个属性列字典编码结构也对应建立完成。此时需要将每个属性列的字典表使用针对该属性数据类型的快速排序算法将字典表所有存在条目项进行升序排序,并重新填入字典表中,同时同步更新属性列对座的引用表。
4.根据权利要求1所述的一种基于数据库行列混合存储的多规则复合压缩方法,其特征在于:步骤3)针对每个属性列在之前建立的字典编码结构上,利用基本的字典统计信息进行全面的列内压缩规则评估,具体实施过程包含以下内容:
1)对属性列进行常量编码规则评估,扫描整个字典表寻找权重最大的条目项做为最有可能的常量默认值,同时根据该默认值的权重以及数据包总体行数可估算出异常表的条目数,同时结合属性占用长度可预估出常量编码压缩后大小;
2)对属性列进行游程编码规则评估,扫描属性列上与字典表对座的引用表,在顺序遍历的过程中对连续出现的项进行去重得到游程编码对应的条目项,并最终结合每个条目对应的字典条目项可得到最后游程编码的总体压缩后大小;
3)对属性列进行序列编码规则评估,按行顺序遍历属性列,以首行属性值作为基准计算各行相对差值,然后通过合计各个不同差值的字节长度即可得到最后序列编码规则的压缩大小。
5.根据权利要求1所述的一种基于数据库行列混合存储的多规则复合压缩方法,其特征在于:步骤4)提出的列间压缩规需要在列内压缩规则基础上进一步执行深度压缩,通过发掘属性列间的数据联系达到更大粒度上的压缩,具体实施方式如下:
1)将所有属性列按照各自字典表的条目项综述进行升序排序,然后顺序遍历按照冒泡排序方式对属性列进行两两规则比较判断,顺序遍历过程中依次为属性列建立列间规则发掘辅助结构;
2)进行列间相等规则编码条件判断,以当前属性列作为被压缩列并依次遍历后续所有属性列,判断是否可能存在与当前列存在相等规则的列,并预估相等规则压缩后大小;
3)进行列间推导规则编码条件判断,当前属性列作为推导列并依次遍历后续所有属性列,判断是否可能存在能够被当前列使用相等规则的目标列,并预估目标列使用推导规则压缩后大小。
6.根据权利要求1所述的一种基于数据库行列混合存储的多规则复合压缩方法,其特征在于:在完成对所有属性列的列内和列间规则发现和编码评估后,步骤5)将对当前数据包内所有属性列逐个进行遍历,并选取预估压缩率最高的压缩规则对当前属性列进行规则编码。
7.根据权利要求1所述的一种基于数据库行列混合存储的多规则复合压缩方法,其特征在于:步骤6)继续使用后端的通用压缩算法在当前压缩缓冲区已有的规则编码压缩数据基础上进行深度的复合压缩,这样可以进一步降低整体数据的存储空间,并能够按照用户设计压缩级别控制最后数据的压缩率,在保证压缩达到数据库实际应用的需求下,将最终编解码所需时间和处理器资源降到最低。具体实施步骤如下:
1)将所有规则编码后的属性列数据按照编码后大小降序排列;
2)对每个属性列使用LZOP方法进行压缩,如果压缩后空间增大则继续使用规则编码存储,如果总体压缩率达到上层应用设置压缩级别要求,则停止压缩流程;
3)对每个属性列尝试改用LZMA方法进行压缩,一旦总体压缩率达到压缩级别设置要求,则停止压缩流程;
4)如果剩余属性列大小总和小于之前属性列经过压缩后大小和的十分之一,则停止压缩流程。
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2011-06-29
|
2009-07-31
| | |
2
| |
2006-05-10
|
2004-11-03
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 1 | | 2015-01-22 | 2015-01-22 | | |
2 | | 2013-08-30 | 2013-08-30 | | |
3 | | 2013-08-26 | 2013-08-26 | | |
4 | | 2015-01-22 | 2015-01-22 | | |
5 | | 2014-12-03 | 2014-12-03 | | |
6 | | 2014-12-24 | 2014-12-24 | | |
7 | | 2015-03-13 | 2015-03-13 | | |
8 | | 2014-12-24 | 2014-12-24 | | |
9 | | 2015-12-23 | 2015-12-23 | | |
10 | | 2015-10-12 | 2015-10-12 | | |
11 | | 2013-12-26 | 2013-12-26 | | |
12 | | 2013-08-26 | 2013-08-26 | | |