技术新讯 > 电子电路装置的制造及其应用技术 > 一种基于openGauss数据库的自适应编码压缩方法与流程  >  正文

一种基于openGauss数据库的自适应编码压缩方法与流程

  • 国知局
  • 2024-08-02 15:06:06

本发明属于编码压缩方法,尤其涉及一种基于opengauss数据库的自适应编码压缩方法。背景技术:::1、在olap领域,为了提升大数据量下的压缩比,提高查询速度,许多数据库产品都会提供对业务数据进行压缩编码的功能,但操作人员选择哪一类算法会直接影响到数据的最终压缩比。由于字段的数据特征多种多样,因此各类字段究竟适用于哪类压缩算法也无任何现成的规则可循,编码的情况同样如此。2、opengauss数据库面对上述问题,在数据导入时,先针对前几批数据进行采样操作,确认在采样数据上哪类算法压缩比更出色,然后在整个字段上应用本采样结果,即可以实现部分场景的自适应压缩。但是,opengauss数据库将压缩和编码两个概念统一融合到compresstype中,所提供的自适应压缩实际上就是自适应编码方法,该方法受数据类型影响较大,且不受用户控制,这就导致了此种自适应编码压缩方法的效果在很多应用场景中仍显不足,其性能和功能难以满足用户多样化的使用需求。技术实现思路1、为了克服opengauss数据库现有自适应编码压缩方法存在的上述缺陷,本发明提出了一种新的基于opengauss数据库的自适应编码压缩方法,本方法可满足用户多样化的数据压缩编码需求。2、opengauss数据库现有的列存表仅支持在ddl时指定compression级别,而不支持指定compresstype及compresslevel。本发明设计并实现了一种新的数据导入编码压缩方式,通过引入compresstype及compresslevel,大大扩展了数据编码压缩时的适用场景及性能。3、本方法的技术特点及优势如下:4、(1)本方法支持在ddl中对每列指定编码方式。5、(2)本方法支持在ddl中对列存表指定压缩算法及压缩算法级别。6、(3)本方法支持基于用户的ddl指定内容(hint_mode)进行自适应编码压缩。7、本发明首先进行用户ddl设计:8、opengauss目前支持的create table语法如图1所示。9、本发明主要针对ddl层表级别的存储参数(compression、compresstype、compresslevel)以及列字段级别的压缩选项compress_mode进行了改进,具体修改方式如下:10、(1)compression11、指定表数据的压缩级别,它决定了表数据的压缩比以及压缩时间。一般而言,压缩级别越高,压缩比越大,压缩时间也越长;反之亦然。实际压缩比取决于加载的表数据的分布特征。12、取值范围:列存表的有效值为yes/no/low/middle/high,默认值为low。13、(2)compresstype14、原为行存表参数,设置行存表压缩算法,在本发明中将该参数支持范围扩大到列存表。15、1代表pglz算法(不推荐使用),2代表zstd算法,默认不压缩。该参数允许修改,修改对已有数据、变更数据、新增数据同时生效。该参数仅支持astore和ustore下的普通表和分区表。取值范围:0~2,默认值为0。本发明中将其扩展到支持指定lz4、zlib等通用算法,即取值范围变为0~4。16、(3)compresslevel17、原为行存表参数,设置行存表压缩算法级别,在本发明中将该参数支持范围扩大到列存表。18、仅当compresstype为2时生效。压缩级别越高,表的压缩效果越好,表的访问速度越慢。该参数允许修改,修改对已有数据、变更数据、新增数据同时生效。取值范围:-31~31,默认值为0。19、(4)compress_mode20、表字段的压缩选项。该选项指定表字段优先使用的压缩算法。21、取值范围:delta、prefix、dictionary、numstr、nocompressdelta压缩仅支持长度为1-8字节的数据类型(0<pg_type.typlen<=8)。22、prefix、numstr压缩仅支持变长数据类型(pg_type.typlen=-1)和null结尾的c字符串(pg_type.typlen=-2)。23、本发明中,将该参数与列存表的导入压缩流程相结合,将参数下推,优化编码压缩流程。24、具体地,本发明提供了一种基于opengauss数据库的自适应编码压缩方法,如图6所示,本方法包括:25、s1.在opengauss数据库中建立业务数据列存表时,通过指定compression、compresstype、compresslevel参数以及compress_mode,直接在ddl中指定压缩算法及压缩算法级别;26、s2.解析ddl语句对应的列字段压缩信息并将其放入createstmt结构中,经由definerelation逻辑写入系统表。27、进一步地,本发明基于opengauss数据库的自适应编码压缩方法步骤s1中所述的在ddl中指定的压缩算法及压缩算法级别为该业务数据经历史验证压缩效果最佳的压缩算法及压缩算法级别。28、进一步地,本发明基于opengauss数据库的自适应编码压缩方法步骤s1中所述的compression用于指定表数据的压缩级别,其取值范围为yes、no、low、middle、high,默认值为low。29、进一步地,本发明基于opengauss数据库的自适应编码压缩方法步骤s1中所述的compresstype用于设置表对象采用的压缩算法,所述表对象包括行存表和列存表;30、所述的compresstype支持astore和ustore下的普通表和分区表;31、所述的compresstype支持指定lz4、zlib、zstd通用算法,其取值范围为0~4,默认值为0。32、进一步地,本发明基于opengauss数据库的自适应编码压缩方法步骤s1中所述的compresslevel用于设置表对象在压缩时采用的压缩算法级别,所述表对象包括行存表和列存表;33、所述的compresslevel的取值范围为-31~31,默认值为0。34、进一步地,本发明基于opengauss数据库的自适应编码压缩方法步骤s1中所述的compresstype及compresslevel参数允许修改,修改对已有数据、变更数据、新增数据同时生效。35、进一步地,本发明基于opengauss数据库的自适应编码压缩方法步骤s1中所述的compress_mode为表字段的压缩选项,用于指定表字段优先使用的压缩算法,其取值范围包括:delta、prefix、dictionary、numstr、nocompress。36、进一步地,本发明基于opengauss数据库的自适应编码压缩方法中所述的delta压缩仅支持长度为1-8字节的数据类型(0<pg_type.typlen<=8);37、所述的prefix、numstr压缩仅支持变长数据类型(pg_type.typlen=-1)和null结尾的c字符串(pg_type.typlen=-2)。38、进一步地,本发明基于opengauss数据库的自适应编码压缩方法,通过本方法用户或dba可根据实际业务场景对表的数据压缩比要求,在ddl中针对列存表指定相应的压缩算法及压缩算法级别,并在每一个字段上根据列的数据特征指定适合的hint_mode,以支持不同类型的应用场景对压缩编码的需求。39、另外,本发明还提供了一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述程序被处理器执行时实现上述的基于opengauss数据库的自适应编码压缩方法的步骤。40、综上,本发明基于opengauss数据库的自适应编码压缩方法设计并实现了一种新的数据导入编码压缩方式,通过引入compresstype及compresslevel,大大扩展了数据编码压缩时的适用场景及性能。本方法支持在ddl中对每列指定编码方式,支持在ddl中对列存表指定压缩算法及压缩算法级别,支持基于用户的ddl指定内容(hint_mode)进行自适应编码压缩,从而可以很好地满足用户多样化的数据压缩编码需求。当前第1页12当前第1页12

本文地址:https://www.jishuxx.com/zhuanli/20240801/244869.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。