一种针对数据库文件的存储空间优化方法及系统与流程

文档序号:30242458发布日期:2022-06-02 00:06阅读:158来源:国知局
一种针对数据库文件的存储空间优化方法及系统与流程

1.本发明涉及数据库压缩存储技术领域,具体而言,涉及一种针对数据库文件的存储空间优化方法及系统。


背景技术:

2.随着智能手机、可穿戴设备、自动驾驶和其他连接设备的广泛应用,这些物联网设备的数据都存储在云平台的数据库中,数据规模出现了4v特征。国际数据公司idc表明,到2025年将有41.6亿的物联网设备与我们的生活息息相关,这些数据将会产生更多的信息需求。传统的单节点数据处理架构以及存储容量已经不能满足于这些数据的存储访问需求,云平台可以为应用程序提供灵活且经济高效的环境。越来越多的应用和系统迁移到云中进行存储处理,但随之而来的是各种复杂的数据存储问题。现有的新型存储设备不断出现,越来越多的云服务提供商对其进行采购使用,但是其高昂的成本削弱了云服务提供商的市场竞争力。如何提供高可用、低成本的数据库服务成为了云服务提供商的难题。
3.相关技术中,托管在云平台中的数据库基础架构通常为“读写分离”模式,只读实例存储数据请求,并将其同步至只写实例。然而,只读实例中的数据只做存储和同步使用,占据了一定的存储空间,存储空间利用率低。只写实例处理频繁的数据写入请求,真实场景中的数据写入大小大部分小于1kb,这种频繁的不足1kb的数据写入请求会损耗新型的nvme ssd硬盘寿命。
4.云服务提供商为了保障其提供的服务的高可靠性,通常会对节点数据存储文件进行备份传输至数据存储空间存储,当数据节点进行扩容或者恢复数据等操作时,需将节点的数据备份文件传输至目标节点进行恢复。数据库备份往往是为了容灾而准备的,其还可以服务于数据回滚、应用测试、内部审计等业务场景。对于小型数据库,可以用逻辑备份,但是真实场景下的数据库往往数十gb甚至数百gb,如果使用逻辑备份会极大的降低业务处理速度,而且出错频率高,因此云服务提供商往往使用物理备份对云平台的提供的数据库服务进行数据备份。云服务提供商提供的数据库服务不会因数据库备份进行短暂的关闭,往往使用热备份进行备份数据,即不影响数据库服务的数据备份。大多数业务场景下的数据库备份文件不直接存储在本地服务器,往往需要传输至其他服务器进行存储。
5.然而,目前并没有针对数据库中的字段存储特性进行深入研究,无法有效降低数据备份的存储空间,如果备份时不对数据文件进行任何处理,那么数据备份传输将会消耗大量的网络带宽,且备份时间较长,影响数据库上层业务的进行。


技术实现要素:

6.本发明旨在至少解决现有技术或相关技术中存在的技术问题之一。
7.为此,本发明的目的在于提供一种针对数据库文件的存储空间优化方法及系统,通过对只写实例中的数据进行压缩处理,提高存储空间利用率,降低数据总拥有成本,利用数据库数据字段的存储特性减少数据传输大小,优化数据库数据文件备份模型,降低数据
存储与备份传输成本。
8.为了实现上述目的,本发明的第一方面的技术方案提供了一种针对数据库文件的存储空间优化方法,包括以下步骤:
9.基于读写分离数据库基础架构,设置时间窗口使用数据处理线程模型积累由代理实例分流向只写实例的数据写请求;
10.当时间窗口内数据积累满足时间窗口数据落盘条件后,采样探测时间窗口内的数据,确定对应数据是否适合进行压缩;
11.若确定时间窗口内的数据适合进行压缩,则获取当前系统的工作负载信息,所述工作负载信息包括但不限于cpu和内存,构建基于工作负载的动态压缩策略,选择数据压缩算法对时间窗口内积累的数据文件进行压缩处理存储,所述动态压缩策略公式为:
[0012][0013]
其中,所述d表征为数据大小,所述表征为选择数据压缩算法x的平均压缩率,表征为选择数据压缩算法x的预测压缩时值,和分别表征为选择压缩算法x带来cpu和内存变化的影响值,α和β分别表征为cpu和内存的权重系数。
[0014]
在该技术方案中,从读写分离只写实例落盘io路径入手,基于读写分离数据库基础架构,设置时间窗口使用数据处理线程模型积累由代理实例分流向只写实例的数据写请求,在满足时间窗口数据落盘条件后,对时间窗口内的数据进行采样检测,确定时间窗口内的数据是否适合压缩,采用哪一种压缩算法更适合当前工作负载,构建基于工作负载的动态压缩策略,选择数据压缩算法对时间窗口积攒的数据文件进行压缩处理存储,实现高关联度模式访问数据压缩策略,在不盲目抢夺系统资源的情况下,结合系统资源使用情况对数据存储进行压缩处理,可以更有效地减少只读实例中的数据文件存储成本,提高服务的可用性。不同的压缩算法处理数据时的工作负载不同,会造成一定的系统延时,本发明基于工作负载构建动态压缩策略,有效避免了系统资源使用不均,出现尖刺等情况的发生。
[0015]
在上述技术方案中,优选地,在对时间窗口内积累的数据文件进行压缩处理存储的同时,通过并行复制的方法对binlog日志进行同步。
[0016]
在该技术方案中,在对时间窗口内积累的数据文件进行压缩处理存储的同时,通过并行复制的方法对binlog日志进行同步,能够有效降低复制延迟。
[0017]
需要说明的是,由于云平台中读写分离数据库基础架构的特点,数据写请求只写入只写实例,而不立刻写入只读实例,只写实例和只读实例实现数据同步只能依托只写实例进行,容易出现复制延迟。而采用并行复制的方法对binlog日志进行同步,能够有效降低复制延迟。
[0018]
在上述任一项技术方案中,优选地,针对数据库文件的存储空间优化方法还包括以下步骤:对数据库文件进行备份存储时,基于dynamic compress的动态压缩编码技术,根据数据类型使用多线程异步处理模型进行数据压缩操作,所述多线程异步处理模型具体包括:
[0019]
使用数据复制文件线程对数据库文件存储目录中的多个数据文件进行同时复制,每个数据复制文件线程处理一个数据文件且对应一个压缩前buffer队列进行存储拷贝;
[0020]
基于dynamic compress的动态压缩编码技术,根据数据类型采用多线程对每一压缩前buffer队列中的数据进行压缩处理;
[0021]
压缩处理结束后写入压缩后buffer队列,由数据存储文件线程将其写入目标备份存储空间。
[0022]
在该技术方案中,对数据库文件进行备份存储时使用多线程异步处理模型,根据数据类型基于dynamic compress的动态压缩编码技术进行数据压缩操作,使用数据复制文件线程对多个文件进行同时复制,每个线程处理一个数据文件,使用一个数据buffer存储拷贝的数据文件,然后开启多线程对buffer中的数据进行处理。按照固定数据长度进行动态数据压缩处理,最后处理结束后,写入buffer队列,由另外一个数据存储文件线程将其写入目标文件,从而能够有效减少线程排队写入时间,降低数据总拥有成本。
[0023]
需要说明的是,由于对数据进行压缩处理往往是密集型计算的操作,如果复制数据时同步对数据进行压缩,会对数据复制带来极高的延迟,采用上述方法可以有效降低该延迟。
[0024]
在上述任一项技术方案中,优选地,基于dynamic compress的动态压缩编码技术,根据数据类型采用多线程对每一压缩前buffer队列中的数据进行压缩处理具体包括以下步骤:
[0025]
若待处理的数据类型为long数字类型,按照7位数字为一组对其进行分段,每一组的最后一位设为标志位,标志位为0则表示当前数字不是最后一组,标志位为1则表示当前数字为最后一组;
[0026]
基于dynamic compress的动态压缩编码技术,依次对每一组数据中的前导零进行压缩,直到压缩完标志位为1的最后一组后停止。
[0027]
在该技术方案中,针对数据库中不同数据类型的字段进行动态压缩编码,long类型,其由8个字节,64个0或1组成。按照7位数字为一组对其进行分段,每一组的最后一位为标志位,代表当前数字是否为最后一组数据。如果一组的最后一位为1,则代表这个组为待处理数字的最后一组,编码结束,否则需要继续向后处理。按照上述分段规则,每一组的数据会更好处理,而多出来的一位可以判断这个数字是正数还是负数。针对数据类型为long数字类型的数据,进行数据分段处理,之后进行压缩,不但提高了数据压缩效果,而且也大大提高了数据压缩效率。
[0028]
需要说明的是,为更好地应对不同的生产环境,目前的关系型数据库为用户提供了许多不同类型的字段以进行数据存储,如int,long等。这些字段类型的数据会在创建时预占字段所需要的字节。例如,一个int数值类型的整型数需要占用4个字节,由32个的0或1组成表示。但是往往储存在数据库中int类型的字段值实际很小,这时这些字段数据会有很多前导零,而对于负数来说可能没有前导零。这些前导零可以使用通用的压缩方式进行压缩,但是其需要寻找连续的零。压缩后在这个数字的前面,写入数据的元信息。如果数据库中存储数据中含有大量的int类型的数据,这些数据本身表示的数字较小,通用的数据压缩方法对此类数据处理会变得极其耗时。而采用本发明提出的上述方法则大大简化了数据处理过程,不但提高了数据压缩效果,而且也大大提高了数据压缩效率。
[0029]
int数字类型可以转化为long数字类型之后采用上述方法进行压缩处理。
[0030]
在上述任一项技术方案中,优选地,若待处理的数据类型为long数字类型,在按照
7位数字为一组对其进行分段之前,还包括:
[0031]
根据首位符号位判断其是否为负数;
[0032]
若确定为负数,则进行移位操作,将符号位放置最后一位,并对其他位的数字取反。
[0033]
在该技术方案中,针对负数的二进制用补码表示的情况,进行移位操作,将符号位放置最后一位,然后对其他位的数字取反,增加了数据中前导零个数,有效解决了数据库中的数字类型的变量因数值小而占据较多的存储空间问题,数字类型的数值越小,采用上述方法可以节省的数据存储空间越多。
[0034]
在上述任一项技术方案中,优选地,基于dynamic compress的动态压缩编码技术,根据数据类型采用多线程对每一压缩前buffer队列中的数据进行压缩处理具体包括以下步骤:
[0035]
若待处理的数据类型为字符类型,则依据字符前缀,对具有共同前缀编码的字符进行分桶操作;
[0036]
合并具有相同前缀编码的数据,生成较大数据块;
[0037]
使用通用压缩编码zstd算法对所述较大数据块进行压缩。
[0038]
在该技术方案中,针对数据类型为字符类型的变量,根据字符前缀,对具有共同前缀编码的字符进行分桶操作,然后合并具有相同前缀编码的数据,产生一个较大的数据块,然后对这个数据使用通用压缩编码zstd算法进行压缩,进一步提高了压缩效果,进而降低了数据总拥有成本。
[0039]
需要说明的是,在真实场景下,数据存储字段内容往往存在着相同的字符前缀,比如device_id列的数据内容由23hfd8sdfs-和业务相关的数据组成,operating_platform列中的数据内容由4tfs1dd6f-和平台编号组成,采用上述方法可以有效节约数据存储空间。
[0040]
在上述任一项技术方案中,优选地,预先设定时间窗口阈值time
th
和时间窗口内的期望数据长度阈值size
th

[0041]
所述时间窗口数据落盘条件:时间窗口内数据积累时间大于时间窗口阈值time
th
或者时间窗口内积累的数据长度大于期望数据长度阈值size
th

[0042]
在该技术方案中,设定时间窗口阈值time
th
和时间窗口内的期望数据长度阈值size
th
,当窗口积累时间没有超过阈值时间time
th
且窗口积累数据长度不满足期望数据长度阈值size
th
时,时间窗口内的数据请求不会进行持久化存储,而是会被积累为一个数据文件。只有当时间窗口内数据积累时间大于时间窗口阈值time
th
或者时间窗口内积累的数据长度大于期望数据长度阈值size
th
时,才会对当前时间窗口内积累的数据请求进行后续压缩以及持久化处理,从而有效减少了频繁的不足1kb的数据写入请求损耗新型的nvme ssd硬盘寿命现象的发生。
[0043]
在上述任一项技术方案中,优选地,所述数据处理线程模型具体包括:
[0044]
当目前活跃的工作线程数超过预设阈值时,则将空闲的线程放入线程等待队列中进行等待,线程等待队列中线程入队采用的方法为头插法,若线程的等待时间超时,则将其销毁;
[0045]
当监听到代理实例分配到只写实例的数据写请求时,从请求队列中获取数据,并尝试从线程等待队列中唤醒线程来处理该数据;
[0046]
若唤醒失败,则通过创造新的工作线程来进行数据请求处理;
[0047]
若唤醒成功,则直接使用刚唤醒的线程处理数据请求队列中出队的数据。
[0048]
在该技术方案中,利用上述数据处理线程模型处理只写实例请求队列中的请求,降低了线程之间频繁切换的成本,提高了线程操作效率。线程等待队列线程入队采用的方法为头插法,这样可以保证使用的线程一定是最后完成工作的线程。
[0049]
在上述任一项技术方案中,优选地,还包括:对数据库文件进行备份存储时,预估数据总拥有成本,所述数据总拥有成本的衡量公式为:
[0050][0051]
其中,所述size
comp
表征为备份文件压缩后的体积大小,α表征为压缩后的备份文件在数据总拥有成本所占的权重,表征为压缩后的备份文件和带宽的平均传输率,β表征为数据平均传输率在数据总拥有成本中占的权重,x和y是根据业务场景设定的参数,time
comp
和time
decomp
分别是数据文件压缩时间和解压缩时间。
[0052]
在该技术方案中,通过对数据总拥有成本进行衡量预估,有利于确定压缩的必要性,在有必要进行压缩时进行压缩,有效降低数据总拥有成本,该数据总拥有成本衡量公式的可靠性和准确性较高。使用本发明提出的方法在各业务场景下可以有效降低数据总拥有成本。
[0053]
本发明的第二方面的技术方案提出了一种针对数据库文件的存储空间优化系统,包括:监听器,用于监听代理实例分配到只写实例的数据写请求;
[0054]
数据请求接收器,用于在监听器监听到代理实例分配到只写实例的数据写请求时,从请求队列中获取数据,并尝试从线程等待队列中唤醒线程来处理该数据,若唤醒失败,则通过创造新的工作线程来进行数据请求处理,若唤醒成功,则直接使用刚唤醒的线程处理数据请求队列中出队的数据;
[0055]
采样器,用于在时间窗口内数据积累满足时间窗口数据落盘条件后,采样探测时间窗口内的数据,确定对应数据是否适合进行压缩;
[0056]
系统监视器,用于在确定时间窗口内的数据适合进行压缩,则获取当前系统的工作负载信息,所述工作负载信息包括但不限于cpu和内存;
[0057]
压缩模块,用于构建基于工作负载的动态压缩策略,选择数据压缩算法对时间窗口内积累的数据文件进行压缩处理存储,所述动态压缩策略公式为:
[0058][0059]
其中,所述d表征为数据大小,所述表征为选择数据压缩算法x的平均压缩率,表征为选择数据压缩算法x的预测压缩时值,和分别表征为选择压缩算法x带来cpu和内存变化的影响值,α和β分别表征为cpu和内存的权重系数;
[0060]
数据库文件备份模块,用于基于dynamic compress的动态压缩编码技术,根据数据类型使用多线程异步处理模型进行数据压缩操作之后进行备份存储。
[0061]
在该技术方案中,从实例存储空间以及备份传输带宽方面考虑,从读写分离只写
实例落盘以及数据库文件备份两条io路径入手,在不同的io路径上根据不同的数据访问特征以及数据存储特性动态的选择出该场景下更为合适的压缩方式,使用高关联度模式访问数据压缩策略,在不盲目抢夺系统资源的情况下,结合系统资源使用情况对数据存储进行压缩处理,有效地有效地减少只读实例中的数据文件存储成本。对数据库文件备份进行深入分析,利用数据库数据字段的存储特性减少数据传输大小,优化数据库数据文件备份模型,从而降低数据存储与备份传输成本。
[0062]
本发明的第三方面的技术方案提出了一种计算机设备,计算机设备包括处理器,处理器用于执行存储器中存储的计算机程序时实现如上述本发明的第一方面的技术方案提出的任一项的针对数据库文件的存储空间优化方法的步骤。
[0063]
在该技术方案中,计算机设备包括处理器,处理器用于执行存储器中存储的计算机程序时实现如上述本发明的第一方面的技术方案提出的任一项的针对数据库文件的存储空间优化方法的步骤,因此具有上述本发明的第一方面的技术方案提出的任一项的针对数据库文件的存储空间优化方法的全部有益效果,在此不再赘述。
[0064]
本发明的第四方面的技术方案提出了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现本发明的第一方面的技术方案提出的任一项的针对数据库文件的存储空间优化方法的步骤。
[0065]
在该技术方案中,计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现本发明的第一方面的技术方案提出的任一项的针对数据库文件的存储空间优化方法的步骤,因此具有上述本发明的第一方面的技术方案提出的任一项的针对数据库文件的存储空间优化方法的全部有益效果,在此不再赘述。
[0066]
本发明提出的一种针对数据库文件的存储空间优化方法及系统具有以下有益技术效果:
[0067]
(1)本发明提出的一种针对数据库文件的存储空间优化方法及系统从实例存储空间以及备份传输带宽方面考虑,从读写分离只写实例落盘以及数据库文件备份两条io路径入手,在不同的io路径上根据不同的数据访问特征以及数据存储特性动态的选择出该场景下更为合适的压缩方式,明显提升了数据存储利用率,数据库文件备份大小比现有的方法均有一定的提升,并且备份数据的(解)压缩速度也维持在较好的水平。
[0068]
(2)本发明提出的一种针对数据库文件的存储空间优化方法及系统针对数据库基础架构中实例数据存储空间浪费的问题,使用高关联度模式访问数据压缩策略,在不盲目抢夺系统资源的情况下,结合系统资源使用情况对数据存储进行压缩处理,有效地有效地减少只读实例中的数据文件存储成本,提高了数据文件存储效率。
[0069]
(3)本发明提出的一种针对数据库文件的存储空间优化方法及系统针对数据库文件备份时间长、数据传输速率低、备份数据占据过多的存储空间等问题,利用数据库数据字段的存储特性减少数据传输大小,优化数据库数据文件备份模型,降低了数据存储与备份传输成本,提高了备份效率,并使用dynamic compress动态压缩编码方法对数据库文件进行压缩处理,降低了数据总拥有成本。
[0070]
本发明的附加方面和优点将在下面的描述部分中给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
[0071]
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
[0072]
图1示出了根据本发明的实施例的一种针对数据库文件的存储空间优化方法的示意流程图;
[0073]
图2示出了根据本发明的实施例的一种针对数据库文件的存储空间优化方法中数据压缩策略设计原理图;
[0074]
图3示出了根据本发明的实施例的一种针对数据库文件的存储空间优化方法中数据处理线程模型示意图;
[0075]
图4示出了根据本发明的实施例的一种针对数据库文件的存储空间优化方法中多线程异步处理模型框架图;
[0076]
图5示出了根据本发明的实施例的一种针对数据库文件的存储空间优化方法中弹性编码示意图;
[0077]
图6示出了数据库字段内容示意图;
[0078]
图7示出了根据本发明的实施例的一种针对数据库文件的存储空间优化方法中前缀编码示意图;
[0079]
图8示出了根据本发明的实施例的一种针对数据库文件的存储空间优化系统的示意框图。
具体实施方式
[0080]
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本技术的实施例及实施例中的特征可以相互组合。
[0081]
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
[0082]
下面结合图1至图8对根据本发明的实施例的一种针对数据库文件的存储空间优化方法及系统进行具体说明。
[0083]
如图1所示,根据本发明的实施例的一种针对数据库文件的存储空间优化方法包括以下步骤:
[0084]
s102,基于读写分离数据库基础架构,设置时间窗口使用数据处理线程模型积累由代理实例分流向只写实例的数据写请求;
[0085]
s104,当时间窗口内数据积累满足时间窗口数据落盘条件后,采样探测时间窗口内的数据,确定对应数据是否适合进行压缩;
[0086]
s106,若确定时间窗口内的数据适合进行压缩,则获取当前系统的工作负载信息,工作负载信息包括但不限于cpu和内存,构建基于工作负载的动态压缩策略,选择数据压缩算法对时间窗口内积累的数据文件进行压缩处理存储,动态压缩策略公式为:
[0087]
[0088]
其中,d表征为数据大小,表征为选择数据压缩算法x的平均压缩率,表征为选择数据压缩算法x的预测压缩时值,和分别表征为选择压缩算法x带来cpu和内存变化的影响值,α和β分别表征为cpu和内存的权重系数。
[0089]
数据压缩策略设计原理图如图2所示。从读写分离只写实例落盘io路径入手,基于读写分离数据库基础架构,设置时间窗口使用数据处理线程模型积累由代理实例分流向只写实例的数据写请求,在满足时间窗口数据落盘条件后,对时间窗口内的数据进行采样检测,确定时间窗口内的数据是否适合压缩,采用哪一种压缩算法更适合当前工作负载,构建基于工作负载的动态压缩策略,选择数据压缩算法对时间窗口积攒的数据文件进行压缩处理存储,实现高关联度模式访问数据压缩策略,在不盲目抢夺系统资源的情况下,结合系统资源使用情况对数据存储进行压缩处理,可以更有效地减少只读实例中的数据文件存储成本,提高服务的可用性。不同的压缩算法处理数据时的工作负载不同,会造成一定的系统延时,本发明基于工作负载构建动态压缩策略,有效避免了系统资源使用不均,出现尖刺等情况的发生。
[0090]
进一步地,在对时间窗口内积累的数据文件进行压缩处理存储的同时,通过并行复制的方法对binlog日志进行同步。从而,能够有效降低复制延迟。
[0091]
进一步地,预先设定时间窗口阈值time
th
和时间窗口内的期望数据长度阈值size
th
;时间窗口数据落盘条件:时间窗口内数据积累时间大于时间窗口阈值time
th
或者时间窗口内积累的数据长度大于期望数据长度阈值size
th
。从而,只有当时间窗口内数据积累时间大于时间窗口阈值time
th
或者时间窗口内积累的数据长度大于期望数据长度阈值size
th
时,才会对当前时间窗口内积累的数据请求进行后续压缩以及持久化处理,从而有效减少了频繁的不足1kb的数据写入请求损耗新型的nvme ssd硬盘寿命现象的发生。
[0092]
进一步地,数据处理线程模型具体包括:当目前活跃的工作线程数超过预设阈值时,则将空闲的线程放入线程等待队列中进行等待,线程等待队列中线程入队采用的方法为头插法,若线程的等待时间超时,则将其销毁;当监听到代理实例分配到只写实例的数据写请求时,从请求队列中获取数据,并尝试从线程等待队列中唤醒线程来处理该数据;若唤醒失败,则通过创造新的工作线程来进行数据请求处理;若唤醒成功,则直接使用刚唤醒的线程处理数据请求队列中出队的数据。数据处理线程模型示意图如图3所示。利用该数据处理线程模型处理只写实例请求队列中的请求,降低了线程之间频繁切换的成本,提高了线程操作效率。线程等待队列线程入队采用的方法为头插法,这样可以保证使用的线程一定是最后完成工作的线程。
[0093]
进一步地,根据本发明的实施例的一种针对数据库文件的存储空间优化方法还包括以下步骤:对数据库文件进行备份存储时,基于dynamic compress的动态压缩编码技术,根据数据类型使用多线程异步处理模型进行数据压缩操作,多线程异步处理模型具体包括:使用数据复制文件线程对数据库文件存储目录中的多个数据文件进行同时复制,每个数据复制文件线程处理一个数据文件且对应一个压缩前buffer队列进行存储拷贝;基于dynamic compress的动态压缩编码技术,根据数据类型采用多线程对每一压缩前buffer队列中的数据进行压缩处理;压缩处理结束后写入压缩后buffer队列,由数据存储文件线程将其写入目标备份存储空间。多线程异步处理模型框架图如图4所示。从而,能够有效减少
线程排队写入时间,降低数据总拥有成本。
[0094]
进一步地,基于dynamic compress的动态压缩编码技术,根据数据类型采用多线程对每一压缩前buffer队列中的数据进行压缩处理具体包括以下步骤:
[0095]
若待处理的数据类型为long数字类型,根据首位符号位判断其是否为负数;
[0096]
若确定为负数,则进行移位操作,将符号位放置最后一位,并对其他位的数字取反;
[0097]
按照7位数字为一组对其进行分段,每一组的最后一位设为标志位,标志位为0则表示当前数字不是最后一组,标志位为1则表示当前数字为最后一组;
[0098]
基于dynamic compress的动态压缩编码技术,依次对每一组数据中的前导零进行压缩,直到压缩完标志位为1的最后一组后停止。
[0099]
具体地,弹性编码示意图如图5所示。long类型,其由8个字节,64个0或1组成。按照7位数字为一组对其进行分段,每一组的最后一位为标志位,代表当前数字是否为最后一组数据。如果一组的最后一位为1,则代表这个组为待处理数字的最后一组,编码结束,否则需要继续向后处理。按照上述分段规则,每一组的数据会更好处理,而多出来的一位可以判断这个数字是正数还是负数。针对数据类型为long数字类型的数据,进行数据分段处理,之后进行压缩,不但提高了数据压缩效果,而且也大大提高了数据压缩效率。针对负数的二进制用补码表示的情况,进行移位操作,将符号位放置最后一位,然后对其他位的数字取反,增加了数据中前导零个数,有效解决了数据库中的数字类型的变量因数值小而占据较多的存储空间问题,数字类型的数值越小,采用上述方法可以节省的数据存储空间越多。
[0100]
如图6所示,在真实场景下,数据存储字段内容往往存在着相同的字符前缀,比如device_id列的数据内容由23hfd8sdfs-和业务相关的数据组成,operating_platform列中的数据内容由4tfs1dd6f-和平台编号组成。
[0101]
进一步地,基于dynamic compress的动态压缩编码技术,根据数据类型采用多线程对每一压缩前buffer队列中的数据进行压缩处理具体包括以下步骤:若待处理的数据类型为字符类型,则依据字符前缀,对具有共同前缀编码的字符进行分桶操作;合并具有相同前缀编码的数据,生成较大数据块;使用通用压缩编码zstd算法对较大数据块进行压缩。前缀编码示意图如图7所示。针对数据类型为字符类型的变量,根据字符前缀,对具有共同前缀编码的字符进行分桶操作,然后合并具有相同前缀编码的数据,产生一个较大的数据块,然后对这个数据使用通用压缩编码zstd算法进行压缩,进一步提高了压缩效果,进而降低了数据总拥有成本。
[0102]
进一步地,根据本发明的实施例的一种针对数据库文件的存储空间优化方法还包括以下步骤:对数据库文件进行备份存储时,预估数据总拥有成本,数据总拥有成本的衡量公式为:
[0103][0104]
其中,size
comp
表征为备份文件压缩后的体积大小,α表征为压缩后的备份文件在数据总拥有成本所占的权重,表征为压缩后的备份文件和带宽的平均传输率,β表征为数据平均传输率在数据总拥有成本中占的权重,x和y是根据业务场景设定的参数,
disc read-only memory,cd-rom)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。
[0113]
在本说明书的描述中,术语“一个实施例”、“一些实施例”、“具体实施例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或实例。而且,描述的具体特征、结构、材料或特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0114]
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1