一种数据存储格式的转换方法及装置与流程

文档序号:17195906发布日期:2019-03-27 09:29阅读:196来源:国知局
一种数据存储格式的转换方法及装置与流程

本发明涉及数据库系统技术领域,尤其涉及一种数据存储格式的转换方法及装置。



背景技术:

随着社会信息化程度的不断加深,数据库系统的使用越来越广泛,不断累积的海量数据和不断增长的数据膨胀对数据库系统提出了新的要求。

在数据库中存储的数据具有一定的存储格式,不同的存储格式能够影响数据库系统的性能。行存储结构能够快速完成数据加载,对动态负载的适应较高,但行存储结构不能支持快速查询处理,同时空间利用率也不易大幅提高。尽管通过熵编码和利用列相关性能够获得一个较好的压缩比,但是复杂数据存储实现会导致解压开销增大。列存储结构则将同一个记录的不同域分散存储而这些记录的重构将带来较大开销,但是列存储能够避免读不必要的列,并且压缩一个列中的相似数据能够达到较高的压缩比。

目前,综合行存储、列存储的优缺点,产生了各种行列组合存储方式,如PAX或者行列混合存储(RCFile,Record Columnar File)这些存储方式通过对底层存储格式的优化,使系统性能更加优化。

然而,现有的数据库的行、列或者行列混合存储格式都是完全依赖于数据库初始化时的初始设定,即用户在创建数据库时所指定的数据库底层存储格式。当用户需要更改数据库存储格式时,需要数据库管理员(DBA,Database Administrator)手动离线修改。



技术实现要素:

本发明的实施例提供一种数据存储格式的转换方法及装置,能够使得数据库系统根据负载情况,动态确定数据库底层存储格式,实现了系统自动调节优化功能,降低查询语句的吞吐量,同时提升系统的存储空间和利用率。

为达到上述目的,本发明的实施例采用如下技术方案:

第一方面,本发明实施例提供一种控制器,包括:

决策单元,用于若以第一存储格式存储数据的数据库的系统性能指标满足用户设定的转换条件,则确定所述数据库中存储数据所需的第二存储格式;

存储格式转换单元,用于将所述数据库中的数据的存储格式从所述第一存储格式转换为所述第二存储格式;

反馈单元,用于判断存储格式转换后的数据库的压缩比是否满足第一预设条件,并对所述存储格式转换后的数据库中的数据进行排序,测试排序时间是否满足第二预设条件;若所述压缩比满足第一预设条件,且所述排序时间满足第二预设条件,则进行对外服务,或者,若所述压缩比不满足第一预设条件,和/或所述排序时间不满足第二预设条件,则发送反馈信息至所述决策单元,以使得所述决策单元根据所述反馈信息中的用户待设定的核心指标阈值重新确定所述数据库中存储数据所需的第二存储格式。

在第一方面的第一种可能实现方式中,所述方法还包括:

所述决策单元,还用于在确定所述数据库中存储数据所需的第二存储格式之前,判断所述系统性能指标是否满足用户设定的核心指标阈值;若所述系统性能指标满足所述核心指标阈值,则判断所述系统性能指标是否满足所述转换条件。

结合第一方面的第一种可能实现方式,在第一方面的第二种可能的实现方式中,所述决策单元,还用于若所述系统性能指标不满足所述转换条件,则保持所述数据库中存储数据的格式为所述第一存储格式。

结合前述的第一方面或第一方面的第一种可能的实现方式至第一方面的第二种可能的实现方式中的任一种可能实现方式,在第一方面的第三种可能的实现方式中,所述控制器还包括数据采集单元;

所述数据采集单元,用于采集所述系统性能指标。

结合前述的第一方面或第一方面的第一种可能的实现方式至第一方面的第三种可能的实现方式中的任一种可能实现方式,在第一方面的第四种可能的实现方式中,所述决策单元,还用于在确定所述数据库中存储数据所需的第二存储格式之后,根据用户配置信息,确定将所述数据库中的数据的存储格式从所述第一存储格式转换为所述第二存储格式的转换时刻。

结合第一方面的第四种可能实现方式,在第一方面的第五种可能的实现方式中,所述存储格式转换单元,具体用于根据所述第二存储格式和所述转换时刻,在缓冲区中将所述数据库中的数据重组,若所述缓冲区中的数据量达到磁盘写阈值,则将所述缓冲区中的数据写入磁盘。

结合第一方面的第五种可能实现方式,在第一方面的第六种可能的实现方式中,所述存储格式转换单元,具体用于若所述缓冲区中的数据的所述第二存储格式为单列存储,则将所述缓冲区中的数据的存储格式从所述第一存储格式转换为所述单列存储,以及压缩并存储所述缓冲区中的数据;或者,若所述缓冲区中的数据的所述第二存储格式为行列混合存储或行存储,则将所述缓冲区中的数据的存储格式从所述第一存储格式转换为所述行列混合存储或所述行存储,并存储所述缓冲区中的数据。

结合第一方面的第五种可能实现方式,在第一方面的第七种可能的实现方式中,所述控制器还包括读取单元;

所述读取单元,用于在所述存储格式转换单元根据所述第二存储格式和所述转换时刻,在缓冲区中将所述数据库中的数据重组之前,若所述第一存储格式为行存储,则按行读取所述数据库中的数据。

结合前述的第一方面或第一方面的第一种可能实现方式至第一方面的第七种可能实现方式中的任一种实现方式,在第一方面的第八种可能实现方式中,

所述数据采集单元,还用于在若所述压缩比满足第一预设条件,且所述排序时间满足第二预设条件,则进行对外服务之后,采集所述存储格式转换后的数据库的数据吞吐量及查询语句响应时间。

结合前述的第一方面或第一方面的第一种可能实现方式至第一方面的第八种可能实现方式中的任一种实现方式,在第一方面的第九种可能实现方式中,所述系统性能指标至少包括数据量、查询平均访问数据量、处理行数占读取行数比例、查询平均访问的列比、以及查询语句所占比例。

第二方面,本发明实施例提供一种控制器,包括:

处理器,用于若以第一存储格式存储数据的数据库的系统性能指标满足用户设定的转换条件,则确定所述数据库中存储数据所需的第二存储格式;在格式转换器将所述数据库中的数据的存储格式从所述第一存储格式转换为所述第二存储格式后,判断存储格式转换后的数据库的压缩比是否满足第一预设条件,并对所述存储格式转换后的数据库中的数据进行排序,测试排序时间是否满足第二预设条件;若所述压缩比满足第一预设条件,且所述排序时间满足第二预设条件,则进行对外服务,或者,若所述压缩比不满足第一预设条件,和/或所述排序时间不满足第二预设条件,则根据用户待设定的核心指标阈值重新确定所述数据库中存储数据所需的第二存储格式;

格式转换器,用于将所述数据库中的数据的存储格式从所述第一存储格式转换为所述处理器确定的所述第二存储格式。

在第二方面的第一种可能的实现方式中,所述处理器,还用于在确定所述数据库中存储数据所需的第二存储格式之前,判断所述系统性能指标是否满足用户设定的核心指标阈值;若所述系统性能指标满足所述核心指标阈值,则判断所述系统性能指标是否满足所述转换条件。

结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述处理器,还用于若所述系统性能指标不满足所述转换条件,则保持所述数据库中存储数据的格式为所述第一存储格式。

结合前述的第二方面或第二方面的第一种可能的实现方式至第二方面的第二种可能的实现方式中的任一种实现方式,在第二方面的第三种可能的实现方式中,所述控制器还包括数据采集器;

所述数据采集器,用于采集所述系统性能指标。

结合前述的第二方面或第二方面的第一种可能的实现方式至第二方面的第三种可能的实现方式中的任一种实现方式中,在第二方面的第四种可能的实现方式中,所述处理器,还用于在确定所述数据库中存储数据所需的第二存储格式之后,根据用户配置信息,确定将所述数据库中的数据的存储格式从所述第一存储格式转换为所述第二存储格式的转换时刻。

结合第二方面的第四种可能的实现方式,在第二方面的第五种可能的实现方式中,所述格式转换器,具体用于根据所述第二存储格式和所述转换时刻,在缓冲区中将所述数据库中的数据重组,若所述缓冲区中的数据量达到磁盘写阈值,则将所述缓冲区中的数据写入磁盘。

结合第二方面的第五种可能的实现方式,在第二方面的第六种可能的实现方式中,所述格式转换器,具体用于若所述缓冲区中的数据的所述第二存储格式为单列存储,则将所述缓冲区中的数据的存储格式从所述第一存储格式转换为所述单列存储,以及压缩并存储所述缓冲区中的数据;或者,若所述缓冲区中的数据的所述第二存储格式为行列混合存储或行存储,则将所述缓冲区中的数据的存储格式从所述第一存储格式转换为所述行列混合存储或所述行存储,并存储所述缓冲区中的数据。

结合第二方面的第五种可能的实现方式,在第二方面的第七种可能的实现方式中,所述处理器,还用于在所述存储格式转换器根据所述第二存储格式和所述转换时刻,在缓冲区中将所述数据库中的数据重组之前,若所述第一存储格式为行存储,则按行读取所述数据库中的数据。

结合前述的第二方面或第二方面的第一种可能的实现方式至第二方面的第七种可能的实现方式中的任一种实现方式,在第二方面的第八种可能的实现方式中,

所述数据采集器,还用于在若所述压缩比满足第一预设条件,且所述排序时间满足第二预设条件,则进行对外服务之后,采集所述存储格式转换后的数据库的数据吞吐量及查询语句响应时间。

结合前述的第二方面或第二方面的第一种可能的实现方式至第二方面的第八种可能的实现方式中的任一种实现方式,在第二方面的第九种可能的实现方式中,所述系统性能指标至少包括数据量、查询平均访问数据量、处理行数占读取行数比例、查询平均访问的列比、以及查询语句所占比例。

第三方面,本发明实施例提供一种数据存储格式的转换方法,包括:

步骤a:若以第一存储格式存储数据的数据库的系统性能指标满足用户设定的转换条件,则确定所述数据库中存储数据所需的第二存储格式;

步骤b:将所述数据库中的数据的存储格式从所述第一存储格式转换为所述第二存储格式;

步骤c:判断存储格式转换后的数据库的压缩比是否满足第一预设条件,并对所述存储格式转换后的数据库中的数据进行排序,测试排序时间是否满足第二预设条件;

步骤d:若所述压缩比满足第一预设条件,且所述排序时间满足第二预设条件,则进行对外服务;或者,若所述压缩比不满足第一预设条件,和/或所述排序时间不满足第二预设条件,则根据用户待设定的核心指标阈值重新执行上述步骤。

在第三方面的第一种可能的实现方式中,所述确定所述数据库中存储数据所需的第二存储格式之前,所述方法还包括:

判断所述系统性能指标是否满足用户设定的核心指标阈值;

若所述系统性能指标满足所述核心指标阈值,则判断所述系统性能指标是否满足所述转换条件。

结合第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,若所述系统性能指标不满足所述转换条件,则保持所述数据库中存储数据的格式为所述第一存储格式。

结合前述的第三方面或第三方面的第一种可能的实现方式至第二种可能的实现方式的任一种实现方式,在第三方面的第三种可能的实现方式中,所述方法还包括:

采集所述系统性能指标。

结合前述的第三方面或第三方面的第一种可能的实现方式至第三种可能的实现方式的任一种实现方式,在第三方面的第四种可能的实现方式中,在确定所述数据库中存储数据所需的第二存储格式之后,所述方法还包括:

根据用户配置信息,确定将所述数据库中的数据的存储格式从所述第一存储格式转换为所述第二存储格式的转换时刻。

结合第三方面的第四种可能的实现方式,在第三方面的第五种可能的实现方式中,所述将所述数据库中的数据的存储格式从所述第一存储格式转换为所述第二存储格式,具体包括:

根据所述第二存储格式和所述转换时刻,在缓冲区中将所述数据库中的数据重组;

若所述缓冲区中的数据量达到磁盘写阈值,则将所述缓冲区中的数据写入磁盘。

结合第三方面的第五种可能的实现方式,在第三方面的第六种可能的实现方式中,所述将所述缓冲区中的数据写入磁盘,具体包括:

若所述缓冲区中的数据的所述第二存储格式为单列存储,则将所述缓冲区中的数据的存储格式从所述第一存储格式转换为所述单列存储,以及压缩并存储所述缓冲区中的数据;或者,

若所述缓冲区中的数据的所述第二存储格式为行列混合存储或行存储,则将所述缓冲区中的数据的存储格式从所述第一存储格式转换为所述行列混合存储或所述行存储,并存储所述缓冲区中的数据。

结合第三方面的第五种可能的实现方式,在第三方面的第七种可能的实现方式中,所述根据所述第二存储格式和所述转换时刻,在缓冲区中将所述数据库中的数据重组之前,所述方法还包括:

若所述第一存储格式为行存储,则按行读取所述数据库中的数据。

结合前述的第三方面或第三方面的第一种可能的实现方式至第七种可能的实现方式中的任一种实现方式,在第三方面的第八种可能的实现方式中,所述若所述压缩比满足第一预设条件,且所述排序时间满足第二预设条件,则进行对外服务之后,所述方法还包括:

采集所述存储格式转换后的数据库的数据吞吐量及查询语句响应时间。

结合前述的第三方面或第三方面的第一种可能实现方式至第八种可能的实现方式中的任一种实现方式,在第三方面的第九种可能的实现方式中,所述系统性能指标至少包括数据量、查询平均访问数据量、处理行数占读取行数比例、查询平均访问的列比、以及查询语句所占比例。

本发明实施例提供一种数据存储格式的转换方法及装置,若以第一存储格式存储数据的数据库的系统性能指标满足用户设定的转换条件,控制器则确定数据库中存储数据所需的第二存储格式,并将数据库中的数据的存储格式从第一存储格式转换为第二存储格式,然后,控制器判断存储格式转换后的数据库的压缩比是否满足第一预设条件,并对存储格式转换后的数据库中的数据进行排序,测试排序时间是否满足第二预设条件,若压缩比满足第一预设条件,且排序时间满足第二预设条件,则进行对外服务;或者,若压缩比不满足第一预设条件,和/或排序时间不满足第二预设条件,则根据用户待设定的核心指标阈值重新执行确定数据库中存储数据所需的第二存储格式。通过该方案,控制器通过对系统实际运行数据的监测,不断确定数据库系统中数据的最优存储格式,即控制器能够使数据库系统根据负载情况动态确定数据库系统中数据的存储格式,解决了目前在改变数据库存储格式时,需要数据库管理员手动离线修改,系统存储空间和利用率低的问题,通过自决策数据存储格式,降低了查询语句的吞吐量,同时提升系统的存储空间和利用率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例的控制器的结构示意图一;

图2为本发明实施例的控制器的结构示意图二;

图3为本发明实施例的控制器的结构示意图三;

图4为本发明实施例的控制器的结构示意图四;

图5为本发明实施例的数据存储格式的转换方法流程示意图一;

图6为本发明实施例的数据存储格式的转换方法流程示意图二。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本文描述的各种技术适用于数据库领域,例如:数据库底层数据存储格式的动态优化、数据库集群中数据分布、数据库物化策略、数据库索引策略等。

目前,基于数据库的应用主要分为OLTP(On-Line Transaction Processing,联机事务处理)和OLAP(On-Line Analytical Processing,联机分析处理)两类,前者需要处理涉及频繁“写”操作的事物性查询,后者侧重于处理涉及大量“读”操作的分析型查询。列存储在读操作上有着较大的优势,非常适用于OLAP查询,但对写操作的支持并不理想,因此并不适合OLTP查询。行存储对OLTP查询支持的非常好。

行存储结构的优点在于快速数据加载和动态负载的高适应能力,这是因为行存储保证了相同记录的所有域都在同一个节点。但是,行存储的缺点也是显而易见的,例如,它不能支持快速查询处理,因为当查询仅仅针对多列表中的少数几列时,它不能跳过不必要的列读取;此外,由于混合着不同数据值的列,行存储不易获得一个极高的压缩比,即空间利用率不易大幅提高。尽管通过熵编码和利用列相关性能够获得一个较好的压缩比,但是复杂数据存储实现会导致解压开销增大。

列存储将同一个记录的不同域分散存储,而这些记录的重构将带来较大开销。但是列存储能够避免读不必要的列,并且压缩一个列中的相似数据能够达到较高的压缩比。

目前,综合行存储、列存储的优缺点,产生了各种行列组合存储方式,如PAX或者RCFile这些存储方式通过对底层存储格式的优化,使系统性能更加优化。但是,现有的数据库的行、列或者行列混合存储格式都是完全依赖于数据库初始化时的初始设定,即用户在创建数据库时所指定的数据库底层存储格式。当用户需要更改数据库存储格式时,需要数据库管理员(DBA,Database Administrator)手动离线修改,缺少了系统自动调节优化功能。

本发明提供一种数据存储格式的转换方法及装置,能够使得数据库系统根据负载情况,动态确定数据库底层存储格式,实现了系统自动调节优化功能,降低查询语句的吞吐量,同时提升系统的存储空间和利用率。

实施例一

本发明实施例提供一种控制器,如图1所示,包括:

决策单元10,用于若以第一存储格式存储数据的数据库的系统性能指标满足用户设定的转换条件,则确定所述数据库中存储数据所需的第二存储格式;

存储格式转换单元11,用于将所述数据库中的数据的存储格式从所述第一存储格式转换为所述决策单元10确定的所述第二存储格式;

反馈单元12,用于判断存储格式转换后的数据库的压缩比是否满足第一预设条件,并对所述存储格式转换后的数据库中的数据进行排序,测试排序时间是否满足第二预设条件;若所述压缩比满足第一预设条件,且所述排序时间满足第二预设条件,则进行对外服务,或者,若所述压缩比不满足第一预设条件,和/或所述排序时间不满足第二预设条件,则发送反馈信息至所述决策单元10,以使得所述决策单元根据所述反馈信息中的用户待设定的核心指标阈值重新确定所述数据库中存储数据所需的第二存储格式。

进一步地,所述决策单元10,还用于在确定所述数据库中存储数据所需的第二存储格式之前,判断所述系统性能指标是否满足用户设定的核心指标阈值;若所述系统性能指标满足所述核心指标阈值,则判断所述系统性能指标是否满足所述转换条件。

进一步地,所述决策单元10,还用于若所述系统性能指标不满足所述转换条件,则保持所述数据库中存储数据的格式为所述第一存储格式。

进一步地,如图2所示,所述控制器还包括数据采集单元13;

所述数据采集单元13,还用于采集所述系统性能指标。

进一步地,所述决策单元10,还用于在确定所述数据库中存储数据所需的第二存储格式之后,根据用户配置信息,确定将所述数据库中的数据的存储格式从所述第一存储格式转换为所述第二存储格式的转换时刻。

进一步地,所述存储格式转换单元11,具体用于根据所述决策单元10确定的所述第二存储格式和所述转换时刻,在缓冲区中将所述数据库中的数据重组,若所述缓冲区中的数据量达到磁盘写阈值,则将所述缓冲区中的数据写入磁盘。

进一步地,所述存储格式转换单元11,具体用于若所述缓冲区中的数据的所述第二存储格式为单列存储,则将所述缓冲区中的数据的存储格式从所述第一存储格式转换为所述单列存储,以及压缩并存储所述缓冲区中的数据;或者,若所述缓冲区中的数据的所述第二存储格式为行列混合存储或行存储,则将所述缓冲区中的数据的存储格式从所述第一存储格式转换为所述行列混合存储或所述行存储,并存储所述缓冲区中的数据。

进一步地,如图2所示,所述控制器还包括读取单元14,

所述读取单元14,用于在所述存储格式转换单元11根据所述第二存储格式和所述转换时刻,在缓冲区中将所述数据库中的数据重组之前,若所述第一存储格式为行存储,则按行读取所述数据库中的数据。

进一步地,所述数据采集单元13,还用于在若所述压缩比满足第一预设条件,且所述排序时间满足第二预设条件,则进行对外服务之后,采集所述存储格式转换后的数据库的数据吞吐量及查询语句响应时间。

进一步地,所述系统性能指标至少包括数据量、查询平均访问数据量、处理行数占读取行数比例、查询平均访问的列比、以及查询语句所占比例。

本发明提供了一种控制器,主要包括决策单元、存储格式转换单元和反馈单元。若以第一存储格式存储数据的数据库的系统性能指标满足用户设定的转换条件,决策单元则确定数据库中存储数据所需的第二存储格式,然后,存储格式转换单元将数据库中的数据的存储格式从第一存储格式转换为第二存储格式,最后,反馈单元判断存储格式转换后的数据库的压缩比是否满足第一预设条件,并对存储格式转换后的数据库中的数据进行排序,测试排序时间是否满足第二预设条件,若压缩比满足第一预设条件,且排序时间满足第二预设条件,则进行对外服务;或者,若压缩比不满足第一预设条件,和/或排序时间不满足第二预设条件,则发送反馈信息至决策单元,以使得决策单元根据反馈信息中的用户待设定的核心指标阈值重新确定数据库中存储数据所需的第二存储格式。通过该方案,控制器通过对系统实际运行数据的监测,不断确定数据库系统中数据的最优存储格式,即控制器能够使数据库系统根据负载情况动态确定数据库系统中数据的存储格式,解决了目前在改变数据库存储格式时,需要数据库管理员手动离线修改,系统存储空间和利用率低的问题,通过自决策数据存储格式,降低了查询语句的吞吐量,同时提升系统的存储空间和利用率。

实施例二

本发明实施例实施例提供一种控制器,如图3所示,包括:

处理器20,用于若以第一存储格式存储数据的数据库的系统性能指标满足用户设定的转换条件,则确定所述数据库中存储数据所需的第二存储格式;在格式转换器21将所述数据库中的数据的存储格式从所述第一存储格式转换为所述第二存储格式后,判断存储格式转换后的数据库的压缩比是否满足第一预设条件,并对所述存储格式转换后的数据库中的数据进行排序,测试排序时间是否满足第二预设条件;若所述压缩比满足第一预设条件,且所述排序时间满足第二预设条件,则进行对外服务,或者,若所述压缩比不满足第一预设条件,和/或所述排序时间不满足第二预设条件,则根据用户待设定的核心指标阈值重新确定所述数据库中存储数据所需的第二存储格式;

格式转换器21,用于将所述数据库中的数据的存储格式从所述第一存储格式转换为所述处理器20确定的所述第二存储格式。

进一步地,所述处理器20,还用于在确定所述数据库中存储数据所需的第二存储格式之前,判断所述系统性能指标是否满足用户设定的核心指标阈值;若所述系统性能指标满足所述核心指标阈值,则判断所述系统性能指标是否满足所述转换条件。

进一步地,所述处理器20,还用于若所述系统性能指标不满足所述转换条件,则保持所述数据库中存储数据的格式为所述第一存储格式。

进一步地,如图4所示,所述控制器还包括数据采集器22;

所述数据采集器22,用于采集所述系统性能指标。

进一步地,所述处理器20,还用于在确定所述数据库中存储数据所需的第二存储格式之后,根据用户配置信息,确定将所述数据库中的数据的存储格式从所述第一存储格式转换为所述第二存储格式的转换时刻。

进一步地,所述格式转换器21,具体用于根据所述第二存储格式和所述转换时刻,在缓冲区中将所述数据库中的数据重组,若所述缓冲区中的数据量达到磁盘写阈值,则将所述缓冲区中的数据写入磁盘。

进一步地,所述格式转换器21,具体用于若所述缓冲区中的数据的所述第二存储格式为单列存储,则将所述缓冲区中的数据的存储格式从所述第一存储格式转换为所述单列存储,以及压缩并存储所述缓冲区中的数据;或者,若所述缓冲区中的数据的所述第二存储格式为行列混合存储或行存储,则将所述缓冲区中的数据的存储格式从所述第一存储格式转换为所述行列混合存储或所述行存储,并存储所述缓冲区中的数据。

进一步地,所述处理器20,还用于在所述存储格式转换器根据所述第二存储格式和所述转换时刻,在缓冲区中将所述数据库中的数据重组之前,若所述第一存储格式为行存储,则按行读取所述数据库中的数据。

进一步地,所述数据采集器22,用于在若所述压缩比满足第一预设条件,且所述排序时间满足第二预设条件,则进行对外服务之后,采集所述存储格式转换后的数据库的数据吞吐量及查询语句响应时间。

进一步地,所述系统性能指标至少包括数据量、查询平均访问数据量、处理行数占读取行数比例、查询平均访问的列比、以及查询语句所占比例。

本发明实施例提供一种控制器,主要包括处理器和格式转换器。若以第一存储格式存储数据的数据库的系统性能指标满足用户设定的转换条件,控制器则确定数据库中存储数据所需的第二存储格式,并将数据库中的数据的存储格式从第一存储格式转换为第二存储格式,然后,控制器判断存储格式转换后的数据库的压缩比是否满足第一预设条件,并对存储格式转换后的数据库中的数据进行排序,测试排序时间是否满足第二预设条件,若压缩比满足第一预设条件,且排序时间满足第二预设条件,则进行对外服务;或者,若压缩比不满足第一预设条件,和/或排序时间不满足第二预设条件,则根据用户待设定的核心指标阈值重新执行确定数据库中存储数据所需的第二存储格式。通过该方案,控制器通过对系统实际运行数据的监测,不断确定数据库系统中数据的最优存储格式,即控制器能够使数据库系统根据负载情况动态确定数据库系统中数据的存储格式,解决了目前在改变数据库存储格式时,需要数据库管理员手动离线修改,系统存储空间和利用率低的问题,通过自决策数据存储格式,降低了查询语句的吞吐量,同时提升系统的存储空间和利用率。

实施例三

本发明实施例提供一种数据存储格式的转换方法,如图5所示,该方法包括:

S101、若以第一存储格式存储数据的数据库的系统性能指标满足用户设定的转换条件,控制器则确定数据库中存储数据所需的第二存储格式。

现有的数据库的行、列或者行列混合存储格式都是完全依赖于数据库初始化时的初始设定,即用户在创建数据库时所指定的数据库底层存储格式。当用户需要更改数据库存储格式时,需要DBA手动离线修改,缺少了系统自动调节优化功能。

为了解决系统不能自动调节优化数据库中数据的存储格式的问题,本发明提供一种数据存储格式的转换方法,能够使得数据库系统根据负载情况,动态确定数据库底层存储格式,实现了系统自动调节优化功能。

在实际应用中,数据库的OLTP应用和OLAP应用分别在写操作和读操作上体现优势。为了综合行存储、列存储的优缺点,产生了各种行列组合存储方式,即OLTP和OLAP融合。在面向OLTP和OLAP融合的应用环境中,数据库初始化以行方式存在。

完成数据库系统中数据存储格式的转换,控制器需要首先确定数据库中存储数据所需的存储格式,即确定数据库中存储的数据需要以哪一种格式进行存储。

具体的,若以第一存储格式存储数据的数据库的系统性能指标满足用户设定的转换条件,控制器则确定数据库中存储数据所需的第二存储格式。

其中,系统性能指标为控制器在一定的时间周期内采集到的,至少包括数据量、查询平均访问数据量、处理行数占读取行数比例、查询平均访问的列比、以及查询语句所占比例。

进一步地,控制器在确定数据库中存储数据所需的第二存储格式之前,需要判断数据库的系统性能指标是否满足用户设定的转换条件,若该系统性能指标不满足用户设定的转换条件,则控制器不做任何处理,数据库中的数据依旧以第一存储格式存储。

示例性的,若用户设定的转换条件为任意一列访问频度(访问此列次数/访问此表次数)达到80%即可将该列转换为列存储,当控制器采集到数据库中第n列的访问频度达到80%,控制器则确定该第n列数据采用列存储格式进行存储。

相应的,控制器确定数据库中存储数据所需的第二存储格式的同时,控制器需要计算出该数据库中需要进行行列转换的表,确定数据库中需要聚合存储的列和数据库中需要单独存储的列。例如,单独访问列频率最高的列按列方式单独存储。

进一步地,在控制器确定数据库中存储数据所需的第二存储格式后,控制器还需要根据用户配置信息,确定将数据库中数据的存储格式从第一存储格式转换为第二存储格式的转换时刻。

具体的,控制器可以根据系统性能指标,在负载空闲时刻进行存储格式的转换,也可以为在确定数据库中存储数据所需的第二存储格式后,提示用户可进行转换并将第二存储格式显示给用户,当用户输入命令后控制器进行存储格式的转换。

S102、控制器将数据库中的数据的存储格式从第一存储格式转换为第二存储格式。

在控制器确定数据库存储数据所需的第二存储格式后,控制器将数据库中的数据的存储格式从第一存储格式转换为第二存储格式。

具体的,控制器确定第二存储格式和存储格式的转换时刻后,控制器在缓冲区中将数据库中的数据按照第二存储格式重组,当缓冲区中的数据量达到磁盘写阈值时,控制器则将该缓冲区中的数据写入磁盘。

进一步地,控制器根据缓冲区中的数据的第二存储格式,对缓冲区中的数据进行不同处理。若缓冲区中的数据的所述第二存储格式为单列存储,则将缓冲区中的数据的存储格式从第一存储格式转换为单列存储,以及压缩并存储缓冲区中的数据;或者,若缓冲区中的数据的第二存储格式为行列混合存储或行存储,则将缓冲区中的数据的存储格式从第一存储格式转换为行列混合存储或行存储,并存储缓冲区中的数据。

S103、控制器判断存储格式转换后的数据库的压缩比是否满足第一预设条件,并对存储格式转换后的数据库中的数据进行排序,测试排序时间是否满足第二预设条件。

在控制器将数据库中的数据的存储格式从第一存储格式转换为第二存储格式后,控制器需要检测存储格式的转换是否合理,是否能够优化数据库。

具体的,控制器通过对数据库中已经转换为列的表进行大小变化的判断,并通过简单的排序测试排序时间。由于,表的大小直接体现了数据库的压缩比,压缩比越高空间利用率越高;排序时间的长短体现了消耗CPU内存资源的多少,列存储能够提高排序效率。因此,控制器检测存储格式的转换是否合理,需要判断存储格式转换后的数据库的压缩比是否满足第一预设条件,并对存储格式转换后的数据库中的数据进行排序,测试排序时间是否满足第二预设条件。

其中,第一预设条件为存储格式转换后的数据库的压缩比小于或等于第一预设阈值,第二预设条件为排序时间小于或等于第二预设阈值。

S104、若压缩比满足第一预设条件,且排序时间满足第二预设条件,控制器则进行对外服务。

具体的,若压缩比满足第一预设条件,且排序时间满足第二预设条件,则说明当前存储格式的转换能够使得数据库系统的性能得到提升,控制器则进行对外服务。

进一步地,进行对外服务后,控制器需要进一步观察采集相应指标,判断数据库系统性能是否优化,即数据库系统中是否需要进一步分拆成列,或者避免无需分割的列被分割。

其中,控制器采集的指标包括数据吞吐量和查询语句响应时间。数据吞吐量体现了是否减少了冗余数据读取,若数据吞吐量的变化不明显则说明有可能需要进一步分拆成列;查询语句响应时间为判断列存储是否有效的直接指标。

S105、若压缩比不满足第一预设条件,和/或排序时间不满足第二预设条件,控制器则根据用户待设定的核心指标阈值重新执行下一次数据存储格式的转换。

若压缩比不满足第一预设条件,和/或排序时间不满足第二预设条件,则说明控制器确定的第二存储格式不能使得数据库系统的性能得到有效提升,控制器需要根据用户待设定的核心指标阈值重新执行下一次数据存储格式的转换重新确定数据的第二存储格式。

本发明实施例提供一种数据存储格式的转换方法,若以第一存储格式存储数据的数据库的系统性能指标满足用户设定的转换条件,控制器则确定数据库中存储数据所需的第二存储格式,并将数据库中的数据的存储格式从第一存储格式转换为第二存储格式,然后,控制器判断存储格式转换后的数据库的压缩比是否满足第一预设条件,并对存储格式转换后的数据库中的数据进行排序,测试排序时间是否满足第二预设条件,若压缩比满足第一预设条件,且排序时间满足第二预设条件,则进行对外服务;或者,若压缩比不满足第一预设条件,和/或排序时间不满足第二预设条件,则根据用户待设定的核心指标阈值重新执行确定数据库中存储数据所需的第二存储格式。通过该方案,控制器通过对系统实际运行数据的监测,不断确定数据库系统中数据的最优存储格式,即控制器能够使数据库系统根据负载情况动态确定数据库系统中数据的存储格式,解决了目前在改变数据库存储格式时,需要数据库管理员手动离线修改,系统存储空间和利用率低的问题,通过自决策数据存储格式,降低了查询语句的吞吐量,同时提升系统的存储空间和利用率。

实施例四

S201、控制器采集以第一存储格式存储数据的数据库的系统性能指标。

现有的数据库的行、列或者行列混合存储格式都是完全依赖于数据库初始化时的初始设定,即用户在创建数据库时所指定的数据库底层存储格式。当用户需要更改数据库存储格式时,需要DBA手动离线修改,缺少了系统自动调节优化功能。

为了解决系统不能自动调节优化数据库中数据的存储格式的问题,本发明提供一种数据存储格式的转换方法,能够使得数据库系统根据负载情况,动态确定数据库底层存储格式,实现了系统自动调节优化功能。

在实际应用中,数据库的OLTP应用和OLAP应用分别在写操作和读操作上体现优势。为了综合行存储、列存储的优缺点,产生了各种行列组合存储方式,即OLTP和OLAP融合。在面向OLTP和OLAP融合的应用环境中,数据库初始化以行方式存在。

具体的,为了实现能够动态确定数据库底层存储格式,控制器首先采集以第一存储格式存储数据的数据库的系统性能指标,以使得控制器根据采集到的性能指标来确定数据库存储数据所需的存储格式。

其中,系统性能指标至少包括数据量、查询平均访问数据量、处理行数占读取行数比例、查询平均访问的列比、以及查询语句所占比例。具体的,

数据量为是否使用列存的重要指标,数据量越大查询越多越适合使用列存,数据量大小为整个数据库数据量大小;

查询平均访问数据量为数据库每次查询平均使用的数据行数,平均访问数据量很大的场景适合列存;

处理行数占读取行数比例指平均每次操作实际使用的数据行数占全部读取行数的比例,在读取分析数据库中的数据时,有些数据虽然被从磁盘读入,但是实际上系统并未进行相关分析操作,我们期望的是读入的所有行数都能被系统所处理,所以比值越高越适合列存;

查询平均访问的列比指平均查询语句访问的列占总列数的比例,该比值越小越适合列存;

查询语句所占比例指查询操作在所有数据库操作中所占比例,比值越接近100%越适合列存。

S202、控制器判断系统性能指标是否满足用户设定的核心指标阈值。

在控制器采集到以第一存储格式存储数据的数据库的系统性能指标后,控制器对该系统性能指标进行分析。

具体的,控制器判断系统性能指标是否满足用户设定的核心指标阈值,即控制器根据用户设定的核心指标阈值和决策算法对系统性能指标进行决策分析。

可选的,若用户设定的核心指标阈值包括:查询平均访问的列比阈值Ta,查询语句所占比例阈值Tq和处理行数占读取行数比例阈值Tp,则用户设定的决策算法可以为(查询平均访问的列比<Ta)和/或(查询语句所占比例>Tq)和/或(处理行数占读取行数比例>Tp)。

S203、若系统性能指标满足核心指标阈值,控制器则判断系统性能指标是否满足用户设定的转换条件。

若控制器确定系统性能指标满足核心阈值,即系统性能指标满足用户设定的决策算法,控制器则判断该性能指标是否满足用户设定的转换条件。只有性能指标满足用户设定的转换条件,控制器才能确定数据库中存储数据所需的存储格式。

示例性的,若用户设定的转换条件为任意一列访问频度(访问此列次数/访问此表次数)达到80%即可将该列转换为列存储,当控制器采集到数据库中第n列的访问频度达到80%,控制器才可确定该第n列数据采用列存储格式进行存储。

S204、若系统性能指标满足转换条件,控制器则确定数据库中存储数据所需的第二存储格式。

具体的,若以第一存储格式存储数据的数据库的系统性能指标满足用户设定的转换条件,则说明数据库中的数据的存储格式可以转换,控制器可确定数据库中存储数据所需的第二存储格式。

相应的,控制器确定数据库中存储数据所需的第二存储格式的同时,控制器需要计算出该数据库中需要进行行列转换的表,确定数据库中需要聚合存储的列和数据库中需要单独存储的列。例如,单独访问列频率最高的列按列方式单独存储。

S205、控制器根据用户配置信息,确定将数据库中的数据的存储格式从第一存储格式转换为第二存储格式的转换时刻。

在控制器确定数据库中存储数据所需的第二存储格式后,控制器还需要根据用户配置信息,确定将数据库中数据的存储格式从第一存储格式转换为第二存储格式的转换时刻。

具体的,控制器可以根据系统性能指标,在负载空闲时刻进行存储格式的转换,也可以为在确定数据库中存储数据所需的第二存储格式后,提示用户可进行转换并将第二存储格式显示给用户,当用户输入命令后控制器进行存储格式的转换。

S206、控制器将数据库中的数据的存储格式从第一存储格式转换为第二存储格式。

在控制器确定数据库存储数据所需的第二存储格式后,控制器将数据库中的数据的存储格式从第一存储格式转换为第二存储格式。

具体的,控制器确定第二存储格式和存储格式的转换时刻后,控制器在缓冲区中将数据库中的数据按照第二存储格式重组,当缓冲区中的数据量达到磁盘写阈值时,控制器则将该缓冲区中的数据写入磁盘,其中,若第一存储格式为行存储,则控制器首先按行读取数据库中的数据,然后才在红冲区中将数据库中的数据按照第二存储格式重组。

进一步地,控制器根据缓冲区中的数据的第二存储格式,对缓冲区中的数据进行不同处理。若缓冲区中的数据的所述第二存储格式为单列存储,则将缓冲区中的数据的存储格式从第一存储格式转换为单列存储,以及压缩并存储缓冲区中的数据;或者,若缓冲区中的数据的第二存储格式为行列混合存储或行存储,则将缓冲区中的数据的存储格式从第一存储格式转换为行列混合存储或行存储,并存储缓冲区中的数据。

S207、控制器判断存储格式转换后的数据库的压缩比是否满足第一预设条件,并对存储格式转换后的数据库中的数据进行排序,测试排序时间是否满足第二预设条件。

在控制器将数据库中的数据的存储格式从第一存储格式转换为第二存储格式后,控制器需要检测存储格式的转换是否合理,是否能够优化数据库。

具体的,控制器通过对数据库中已经转换为列的表进行大小变化的判断,并通过简单的排序测试排序时间。由于,表的大小直接体现了数据库的压缩比,压缩比越高空间利用率越高;排序时间的长短体现了消耗CPU内存资源的多少,列存储能够提高排序效率。因此,控制器检测存储格式的转换是否合理,需要判断存储格式转换后的数据库的压缩比是否满足第一预设条件,并对存储格式转换后的数据库中的数据进行排序,测试排序时间是否满足第二预设条件。

其中,第一预设条件为存储格式转换后的数据库的压缩比小于或等于第一预设阈值,第二预设条件为排序时间小于或等于第二预设阈值。

S208、若压缩比满足第一预设条件,且排序时间满足第二预设条件,控制器则进行对外服务。

具体的,若压缩比满足第一预设条件,且排序时间满足第二预设条件,则说明当前存储格式的转换能够使得数据库系统的性能得到提升,控制器则进行对外服务。

进一步地,进行对外服务后,控制器需要进一步观察采集相应指标,判断数据库系统性能是否优化,即数据库系统中是否需要进一步分拆成列,或者避免无需分割的列被分割。

其中,控制器采集的指标包括数据吞吐量和查询语句响应时间。数据吞吐量体现了是否减少了冗余数据读取,若数据吞吐量的变化不明显则说明有可能需要进一步分拆成列;查询语句响应时间为判断列存储是否有效的直接指标。

S209、若压缩比不满足第一预设条件,和/或排序时间不满足第二预设条件,控制器则根据用户待设定的核心指标阈值重新执行下一次数据存储格式的转换。

若压缩比不满足第一预设条件,和/或排序时间不满足第二预设条件,则说明控制器确定的第二存储格式不能使得数据库系统的性能得到有效提升,控制器需要根据用户待设定的核心指标阈值重新执行下一次数据存储格式的转换重新确定数据的第二存储格式。

示例性的,若系统初始化时,列访问比为90%时,控制器将该列转换为单独列存储,但是,在转换后发现系统性能无提升,控制器则反馈将列访问比由90%提高至91%,用户根据该反馈信息重新设定列访问比的值,且控制器根据用户新设定的列访问比重新确定第二存储格式。

S210、若系统性能指标不满足转换条件,控制器则保持数据库中存储数据的格式为第一存储格式。

本发明实施例提供一种数据存储格式的转换方法,若以第一存储格式存储数据的数据库的系统性能指标满足用户设定的转换条件,控制器则确定数据库中存储数据所需的第二存储格式,并将数据库中的数据的存储格式从第一存储格式转换为第二存储格式,然后,控制器判断存储格式转换后的数据库的压缩比是否满足第一预设条件,并对存储格式转换后的数据库中的数据进行排序,测试排序时间是否满足第二预设条件,若压缩比满足第一预设条件,且排序时间满足第二预设条件,则进行对外服务;或者,若压缩比不满足第一预设条件,和/或排序时间不满足第二预设条件,则重新根据所述反馈信息中的用户待设定的核心指标阈值执行确定数据库中存储数据所需的第二存储格式。通过该方案,控制器通过对系统实际运行数据的监测,不断确定数据库系统中数据的最优存储格式,即控制器能够使数据库系统根据负载情况动态确定数据库系统中数据的存储格式,解决了目前在改变数据库存储格式时,需要数据库管理员手动离线修改,系统存储空间和利用率低的问题,通过自决策数据存储格式,降低了查询语句的吞吐量,同时提升系统的存储空间和利用率。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1