一种压缩存储方法和装置与流程

文档序号:12802424阅读:401来源:国知局
一种压缩存储方法和装置与流程

本发明涉及计算机技术领域,特别是涉及一种压缩存储方法和装置。



背景技术:

随着信息技术的发展,特别是internet技术的发展,各领域的信息量都呈爆炸性增长趋势,高于1012字节的海量数据层出不穷。为了有效地管理海量数据,目前提出了压缩数据库技术,压缩数据库技术可以提高海量数据的存储效率,而且可以提高数据库的吞吐量等性能。

现有方案通常采用innodb内部提供的zlib压缩算法进行海量数据的压缩存储;其中,innodb是mysql数据库中应用最广的存储引擎,zlib可以提供数据压缩用的函数库,由此可以节省大约25%—50%左右的存储空间,且能够降低io(输入输出,inputoutput)消耗,及提升数据库的吞吐量。

然而,在使用现有方案的过程中,有时会遇到这样的问题:在数据量基数较大的情况下、继续频繁的insert(插入)或者update(更新)操作时,innodb所使用b-tree(b-树)索引本身的特性容易导致数据库性能的显著下降,例如,可能导致数据库的吞吐量下降。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种压缩存储方法和装置。

依据本发明的一个方面,提供了一种压缩存储方法,包括:

获取待存储数据的压缩参数,和/或,获取与待存储数据对应的存储设备的设备参数;

依据所述压缩参数和/或设备参数,选择与所述待存储数据对应的目标压缩方案;

利用所述目标压缩方案对所述待存储数据进行压缩存储。

可选地,所述压缩参数包括应用场景参数和/或数据库架构参数,则所 述依据所述压缩参数和/或设备参数,选择与所述待存储数据对应的目标压缩方案的步骤,进一步包括:

从数据库的至少一种存储引擎中选择与所述应用场景参数和/或数据库架构参数对应的目标存储引擎;

从所述目标存储引擎的至少一种压缩算法中选择对应的目标压缩算法,所述目标存储引擎及其对应的目标压缩算法组成所述目标压缩方案。

可选地,所述从数据库的至少一种存储引擎中选择与所述应用场景参数对应的目标存储引擎的步骤,进一步包括:

所述应用场景参数为第一应用场景参数,则选择对应的第一存储引擎为目标存储引擎;或者,

所述应用场景参数为第二应用场景参数,则选择对应的第二存储引擎为目标存储引擎;

其中,所述第一应用场景参数包括:联机事务处理场景参数、以及读密集场景参数中的至少一种;

其中,所述第二应用场景参数包括:联机分析处理场景参数、以及批量装载和读密集场景参数中的至少一种。

可选地,所述从数据库的至少一种存储引擎中选择与所述数据库架构参数对应的目标存储引擎的步骤,进一步包括:

所述数据库架构参数为第一数据库架构参数,则选择对应的第三存储引擎为目标存储引擎;或者,

所述数据库架构参数为第二数据库架构参数,则选择对应的第四存储引擎为目标存储引擎;

其中,所述第一数据库架构参数包括:主从架构参数;或者,所述第二数据库架构参数包括:非主从架构参数。

可选地,所述压缩参数包括压缩指标参数,则所述依据所述压缩参数和/或设备参数,选择所述待存储数据对应的目标压缩方案的步骤,进一步包括:

从目标存储引擎的至少一种压缩算法中选择契合所述压缩指标参数和/ 或所述设备参数的目标压缩算法,所述目标存储引擎及其对应的目标压缩算法组成所述目标压缩方案。

可选地,所述设备参数包括如下参数中的至少一种:cpu参数、磁盘参数和内存参数。

可选地,所述压缩指标参数包括如下参数中的至少一种:压缩时间参数和压缩比参数。

可选地,所述契合所述压缩指标参数和/或所述设备参数的目标压缩算法包括:

契合第一级压缩指标参数的第一目标压缩算法;或者

契合第二级压缩指标参数的第二目标压缩算法;或者

契合第三级压缩指标参数的第三目标压缩算法;其中,所述第一级压缩指标参数、第二级压缩指标参数和第三级压缩指标参数对应的压缩指标递减;或者

契合第一级设备参数的第一目标压缩算法;或者

契合第二级设备参数的第二目标压缩算法;或者

契合第三级设备参数的第三目标压缩算法;其中,所述第一级设备参数、第二级设备参数和第三级设备参数对应的设备性能递减。

依据本发明的另一方面,提供了一种压缩存储装置,包括:

获取模块,用于获取待存储数据的压缩参数,和/或,获取与待存储数据对应的存储设备的设备参数;

选择模块,用于依据所述压缩参数和/或设备参数,选择与所述待存储数据对应的目标压缩方案;以及

压缩存储模块,用于利用所述目标压缩方案对所述待存储数据进行压缩存储。

可选地,所述压缩参数包括应用场景参数和/或数据库架构参数,则所述选择模块,进一步包括:

第一选择子模块,用于从数据库的至少一种存储引擎中选择与所述应 用场景参数和/或数据库架构参数对应的目标存储引擎;及

第二选择子模块,用于从所述目标存储引擎的至少一种压缩算法中选择对应的目标压缩算法,所述目标存储引擎及其对应的目标压缩算法组成所述目标压缩方案。

可选地,所述第一选择子模块,进一步包括:

第一选择单元,用于在所述应用场景参数为第一应用场景参数时,选择对应的第一存储引擎为目标存储引擎;或者,

第二选择单元,用于在所述应用场景参数为第二应用场景参数时,选择对应的第二存储引擎为目标存储引擎;

其中,所述第一应用场景参数包括:联机事务处理场景参数、以及读密集场景参数中的至少一种;

其中,所述第二应用场景参数包括:联机分析处理场景参数、以及批量装载和读密集场景参数中的至少一种。

可选地,所述第一选择子模块,进一步包括:

第三选择单元,用于在所述数据库架构参数为第一数据库架构参数时,选择对应的第三存储引擎为目标存储引擎;或者,

第四选择单元,用于在所述数据库架构参数为第二数据库架构参数时,选择对应的第四存储引擎为目标存储引擎;

其中,所述第一数据库架构参数包括:主从架构参数;或者,所述第二数据库架构参数包括:非主从架构参数。

可选地,所述压缩参数包括压缩指标参数,则所述选择模块,进一步包括:

第三选择子模块,用于从目标存储引擎的至少一种压缩算法中选择契合所述压缩指标参数和/或所述设备参数的目标压缩算法,所述目标存储引擎及其对应的目标压缩算法组成所述目标压缩方案。

可选地,所述设备参数包括如下参数中的至少一种:cpu参数、磁盘参数和内存参数。

可选地,所述压缩指标参数包括如下参数中的至少一种:压缩时间参数 和压缩比参数。

可选地,所述契合所述压缩指标参数和/或所述设备参数的目标压缩算法包括:

契合第一级压缩指标参数的第一目标压缩算法;或者

契合第二级压缩指标参数的第二目标压缩算法;或者

契合第三级压缩指标参数的第三目标压缩算法;其中,所述第一级压缩指标参数、第二级压缩指标参数和第三级压缩指标参数对应的压缩指标递减;或者

契合第一级设备参数的第一目标压缩算法;或者

契合第二级设备参数的第二目标压缩算法;或者

契合第三级设备参数的第三目标压缩算法;其中,所述第一级设备参数、第二级设备参数和第三级设备参数对应的设备性能递减。

根据本发明实施例的一种压缩存储方法和装置,可以依据待压缩数据对应的压缩参数和/或设备参数,选择与所述待存储数据对应的目标压缩方案;由于上述压缩参数可用于表示与待压缩数据的特性相关的参数,或者,上述压缩参数也可用于表示与待压缩数据的压缩需求相关的参数,或者,上述压缩参数也可用于表示与待压缩数据的存储环境相关的参数,故本发明实施例能够依据压缩参数选择得到最契合待压缩数据的特性、压缩需求、存储环境的目标压缩方案,因此,利用所述目标压缩方案对所述待存储数据进行压缩存储,能够最大化地发挥所述目标压缩方案的优势,从而能够大大提高数据库的吞吐量等性能。

并且,由于上述设备参数可用于表征待存储数据对应的存储设备的性能,故本发明实施例可以选择最契合当前cpu核数的目标压缩算法,从而可以在保证数据库性能的同时,能够增加压缩存储的稳定性,且能够尽可能地节省数据库集群中存储设备的资源。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和 其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文可选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出可选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了根据本发明一个实施例的一种压缩存储方法的步骤流程示意图;

图2示出了根据本发明一个实施例的一种压缩存储方法的步骤流程示意图;

图3示出了根据本发明一个实施例的一种压缩存储方法的步骤流程示意图;以及

图4示出了根据本发明一个实施例的一种压缩存储装置的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

参照图1,示出了根据本发明一个实施例的一种压缩存储方法的步骤流程示意图,具体可以包括如下步骤:

步骤101、获取待存储数据的压缩参数,和/或,获取与待存储数据对应的存储设备的设备参数;

步骤102、依据所述压缩参数和/或设备参数,选择与所述待存储数据对应的目标压缩方案;

步骤103、利用所述目标压缩方案对所述待存储数据进行压缩存储。

本发明实施例可适用于数据库中海量数据的压缩存储,其中,所述数据库可以包括oracle(甲骨文)、db2、mysql等类型的数据库等,可以理解,本发明实施例对于数据库的具体类型不加以限制。为了便于说明,本发明实施例均以mysql为例进行描述,其它类型的数据库相互参照即可。

本发明实施例中,上述压缩参数可用于表示与待压缩数据的特性相关的参数,如用于衡量待压缩数据的数据量大小的参数;或者,上述压缩参数也可用于表示与待压缩数据的压缩需求相关的参数,例如,用于衡量待压缩数据的应用场景的应用场景参数,又如,用于衡量待压缩数据的压缩指标的压缩指标参数等;或者,上述压缩参数也可用于表示与待压缩数据的存储环境相关的参数,如用于衡量待压缩数据的数据库环境的数据库架构参数等。由于本发明实施例能够依据压缩参数选择得到最契合上述压缩参数的目标压缩方案,因此,利用所述目标压缩方案对所述待存储数据进行压缩存储,能够最大化地发挥所述目标压缩方案的优势,从而能够大大提高数据库的吞吐量等性能。

本发明实施例中,上述目标压缩方案具体可以包括:目标存储引擎和所述目标引擎对应的目标压缩算法。其中,上述目标存储引擎可以为用户指定的存储引擎,也可以为通过本发明实施例选择得到的存储引擎。其中,上述存储引擎可用于负责数据库中数据的存储、为存储的数据建立索引、数据的查询等更新等一系列事务的功能系统。

在本发明的一种可选实施例中,mysql数据库的存储引擎具体可以包括:isam、myisam、heap、innodb和tokudb等,则本发明实施例可以依据压缩参数选择得到最契合上述压缩参数的目标存储引擎。

在本发明的一种应用示例1中,相对于现有方案在数据量基数较大的情况下、继续频繁的insert或者update操作、所导致的数据库性能的显著下降的问题,本发明实施例可以依据数据量基数较大的情况,得到对应的大数据量参数或者联机分析处理场景参数,或者,可以依据数据量基数较大的 情况和继续频繁的insert或者update操作的特性,得到对应的批量装载和读密集场景参数,并选择契合上述大数据量参数或者联机分析处理场景参数或者批量装载和读密集场景参数的tokudb作为目标存储引擎;由于tokudb的索引结构是fractaltree,而fractaltree相对于b-tree具有insert性能更强、不易产生“碎片”的优势,故tokudb具有压缩比更高、批量装载性能更好的优势,因此,本发明实施例选择得到的tokudb能够对上述应用示例1对应的待压缩数据进行有效地压缩存储,从而可以尽可能地提高数据库的吞吐量等性能。

本发明实施例中,上述设备参数可用于表征待存储数据对应的存储设备的性能。在本发明的一种可选实施例中,所述设备参数具体可以包括如下参数中的至少一种:cpu参数、磁盘参数和内存参数。

在本发明的一种可选实施例中,不同压缩算法所产生的cpu消耗是不同的,因此可以针对各压缩算法获取对应的目标cpu参数,并依据与待存储数据对应的存储设备的当前cpu参数选择对应的压缩算法。例如,存储设备的当前cpu核(core)数为6核,而第一目标压缩算法要求cpu核数在8核以上,第二目标压缩算法要求cpu核数在4核-8核之间,第三目标压缩算法要求cpu核数在4核以下,因此可以选择最契合当前cpu核数的目标压缩算法,从而可以在保证数据库性能的同时,尽可能地节省存储设备的资源。

需要说明的是,本发明实施例的压缩存储流程可由压缩存储装置来执行。则在本发明的一种可选实施例中,本领域技术人员可以依据待压缩数据的特性、压缩需求、存储环境等因素参数确定待压缩数据的压缩参数,并通过第一预置接口向上述压缩存储装置输入确定的压缩参数。或者,本领域技术人员可以首先确定待存储数据对应的存储设备,然后获取存储设备的设备参数,并通过第二预置接口向上述压缩存储装置输入获取的设备参数。

在本发明的另一种可选实施例中,上述压缩存储装置还可以首先获取待压缩数据的特性、压缩需求、存储环境等因素参数,然后依据上述因素 参数确定待压缩数据的压缩参数,其中,上述因素参数可通过第三预置接口采集得到,也可由上述压缩存储装置通过访问数据库得到,本发明实施例对于上述因素参数的具体获取方式不加以限制。或者,上述压缩存储装置还可以通过访问待存储数据对应的存储设备,获取存储设备的设备参数。可以理解,本发明实施例对于上述压缩参数和上述设备参数的具体获取过程不加以限制。

综上,本发明实施例依据待压缩数据对应的压缩参数和/或设备参数,选择与所述待存储数据对应的目标压缩方案;由于上述压缩参数可用于表示与待压缩数据的特性相关的参数,或者,上述压缩参数也可用于表示与待压缩数据的压缩需求相关的参数,或者,上述压缩参数也可用于表示与待压缩数据的存储环境相关的参数,故本发明实施例能够依据压缩参数选择得到最契合待压缩数据的特性、压缩需求、存储环境的目标压缩方案,因此,利用所述目标压缩方案对所述待存储数据进行压缩存储,能够最大化地发挥所述目标压缩方案的优势,从而能够大大提高数据库的吞吐量等性能。

并且,由于上述设备参数可用于表征待存储数据对应的存储设备的性能,故本发明实施例可以选择最契合当前cpu核数的目标压缩算法,从而可以在保证数据库性能的同时,能够增加压缩存储的稳定性,且能够尽可能地节省数据库集群中存储设备的资源。

参照图2,示出了根据本发明一个实施例的一种压缩存储方法的步骤流程示意图,具体可以包括如下步骤:

步骤201、获取待存储数据的压缩参数,和/或,获取与待存储数据对应的存储设备的设备参数;

步骤202、依据所述压缩参数和/或设备参数,选择与所述待存储数据对应的目标压缩方案;

步骤203、利用所述目标压缩方案对所述待存储数据进行压缩存储;

相对于图1所示实施例,本实施例中的压缩参数具体可以包括应用场景 参数和/或数据库架构参数,则上述步骤202可以进一步包括:

步骤221、从数据库的至少一种存储引擎中选择与所述应用场景参数和/或数据库架构参数对应的目标存储引擎;

步骤222、从所述目标存储引擎的至少一种压缩算法中选择对应的目标压缩算法,所述目标存储引擎及其对应的目标压缩算法可组成所述目标压缩方案。

本实施例从数据库的至少一种存储引擎中,选择最契合所述应用场景参数和/或数据库架构参数的目标存储引擎,并通过上述目标存储引擎进行压缩存储,因此,能够在尽可能发挥上述目标存储引擎的优势的情况下、对待压缩数据进行有效地压缩存储,从而可以尽可能地提高数据库的吞吐量等性能。

在本发明的一种可选实施例中,可以通过互联网抓取数据库的每个存储引擎的资源信息,并对上述资源信息进行分析以得到每个存储引擎对应的优势关键词和劣势关键词,这样,在实施步骤221的过程中,可以将所述应用场景参数和/或数据库架构参数与上述优势关键词或者劣势关键词进行匹配,若与劣势关键词匹配成功,则可以排除对应的存储引擎,若与优势关键词匹配成功,则可以将对应的存储引擎作为备选存储引擎。其中,在备选存储引擎的数目大于1时,可以依据匹配成功的优势关键词的数目等方式从备选存储引擎中选择一个作为目标存储引擎,或者,可以将所有备选存储引擎输出以使用户从中选择一个目标存储引擎。在备选存储引擎的数目等于1时,可以直接将该备选存储引擎作为目标存储引擎。

可以理解,上述优势关键词和劣势关键词的获取过程只是作为可选实施例,实际上,本领域技术人员还可以根据实际应用需求采用目标存储引擎的其他选择过程,如通过第五预置接口接收用户输入的优势关键词和劣势关键词,或者,可以通过分析存储引擎的历史使用记录、或者用户对于存储引擎的评论数据,以得到每个存储引擎对应的优势关键词和劣势关键词等,本发明实施例对于每个存储引擎对应的优势关键词和劣势关键词的获取过程不加以限制。

本发明实施例可以提供从数据库的至少一种存储引擎中选择与所述应用场景参数和/或数据库架构参数对应的目标存储引擎的如下选择方案:

选择方案1

选择方案1中,所述从数据库的至少一种存储引擎中选择与所述应用场景参数对应的目标存储引擎的步骤,可以进一步包括:

步骤a1、所述应用场景参数为第一应用场景参数,则选择对应的第一存储引擎为目标存储引擎;或者,

步骤a2、所述应用场景参数为第二应用场景参数,则选择对应的第二存储引擎为目标存储引擎;

其中,所述第一应用场景参数具体可以包括:联机事务处理场景参数、以及读密集场景参数中的至少一种;

其中,所述第二应用场景参数具体可以包括:联机分析处理场景参数、以及批量装载和读密集场景参数中的至少一种。

本发明实施例中,oltp(联机事务处理,on-linetransactionprocessing)是传统的关系型数据库的主要应用,主要用于基本的、日常的事务处理,例如银行交易。由于oltp场景通常涉及单条或者少数数据库记录的insert、update、删除、查询等操作;而innodb可以充分利用cpu多核/高频的优势,同时降低io消耗,提升了吞吐量,特别适合读密集型应用,因此,在本发明的一种可选实施例中,上述第一存储引擎具体可以包括:innodb。可以理解,契合联机事务处理场景参数和/或读密集场景参数的任意存储引擎均可以作为上述第一存储引擎,本发明实施例对于具体的第一存储引擎不加以限制。

olap(联机分析处理,onlineanalyticalprocessing)是数据仓库系统的主要应用,其支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。由于oltp场景通常涉及批量数据库记录的装载,而tokudb具有批量装载性能更好、插入性能更优的优势,因此,在本发明的一种可选实施例中,上述第二存储引擎具体可以包括:tokudb。可以理解,契合联机分析处理场景参数和/或批量装载和读密集场景参数的任意存储引擎均可 以作为上述第二存储引擎,本发明实施例对于具体的第二存储引擎不加以限制。

选择方案2

选择方案2中,所述从数据库的至少一种存储引擎中选择与所述数据库架构参数对应的目标存储引擎的步骤,可以进一步包括:

步骤b1、所述数据库架构参数为第一数据库架构参数,则选择对应的第三存储引擎为目标存储引擎;或者,

步骤b2、所述数据库架构参数为第二数据库架构参数,则选择对应的第四存储引擎为目标存储引擎;

其中,所述第一数据库架构参数具体可以包括:主从架构参数;或者,所述第二数据库架构参数具体可以包括:非主从架构参数。

本发明实施例中,上述主从架构参数可用于表征数据库架构支持主从复制的架构。采用主从架构,在主服务器发生故障,可以使用从服务器来提供服务,因此可以提供数据库的稳定性。并且,在主从服务器上分开处理用户的请求,可以提升数据处理效率。另外将主服务器上的数据复制到从服务器上,保护数据免受意外的损失。

本发明实施例经研究发现,tokudb目前在主从架构支持上存在缺陷,也即,tokudb与主从结构的兼容性存在问题,而innodb可以较好地支持主从架构。故在本发明的一种可选实施例中,上述第一存储引擎具体可以包括:innodb,上述第二存储引擎具体可以包括:tokudb。可以理解,契合主从架构参数的任意存储引擎均可以作为上述第一存储引擎,契合非主从架构参数的任意存储引擎均可以作为上述第二存储引擎;本发明实施例对于具体的第一存储引擎和第二存储引擎不加以限制。

参照图3,示出了根据本发明一个实施例的一种压缩存储方法的步骤流程示意图,具体可以包括如下步骤:

步骤301、获取待存储数据的压缩参数,和/或,获取与待存储数据对应的存储设备的设备参数;

步骤302、依据所述压缩参数和/或设备参数,选择与所述待存储数据对应的目标压缩方案;

步骤303、利用所述目标压缩方案对所述待存储数据进行压缩存储;

相对于图1所示实施例,本实施例中的压缩参数具体可以包括压缩指标参数,则上述步骤302可以进一步包括:

步骤321、从目标存储引擎的至少一种压缩算法中选择契合所述压缩指标参数和/或所述设备参数的目标压缩算法,所述目标存储引擎及其对应的目标压缩算法可组成所述目标压缩方案。

压缩指标参数可用于表征待存储数据的压缩指标,例如,压缩指标参数具体可以包括如下参数中的至少一种:压缩时间参数和压缩比参数。上述压缩时间参数可用于表征压缩存储所花费的时间,压缩比参数可用于表征压缩后数据相对于待存储数据的空间占比。本实施例从目标存储引擎的至少一种压缩算法中选择契合所述压缩指标参数和/或所述设备参数的目标压缩算法,能够在保证压缩存储的稳定性、及节省数据库集群中存储设备的资源的同时,尽可能实现最优的压缩指标。

在本发明的一种可选实施例中,假设上述目标存储引擎具有三种或者三种以上的目标压缩算法,则所述契合所述压缩指标参数和/或所述设备参数的目标压缩算法具体可以包括:

契合第一级压缩指标参数的第一目标压缩算法;或者

契合第二级压缩指标参数的第二目标压缩算法;或者

契合第三级压缩指标参数的第三目标压缩算法;其中,所述第一级压缩指标参数、第二级压缩指标参数和第三级压缩指标参数对应的压缩指标递减;或者

契合第一级设备参数的第一目标压缩算法;或者

契合第二级设备参数的第二目标压缩算法;或者

契合第三级设备参数的第三目标压缩算法;其中,所述第一级设备参数、第二级设备参数和第三级设备参数对应的设备性能递减。

在本发明的一种应用示例中,假设上述目标存储引擎为tokudb, tokudb具有lzma算法、zlib算法和quicklz算法,其中,lzma算法、zlib算法和quicklz算法对应的压缩比参数分别为:2.626857、2.285948和1.700141;则可以根据上述压缩比参数设置lzma算法、zlib算法和quicklz算法对应的所述第一级压缩指标参数、第二级压缩指标参数和第三级压缩指标参数,例如,针对lzma算法设置第一级压缩指标参数的第一区间为[2.3,2.7],针对zlib算法设置第二级压缩指标参数的第二区间为[1.8,2.29],针对quicklz算法设置第三级压缩指标参数的第三区间为[2,2.28],则可以将当前压缩指标参数与上述第一区间、第二区间和第三区间进行匹配,将匹配成功所对应的算法作为当前目标压缩算法。例如,当前压缩指标参数为2.4,则当前目标压缩算法可以为lzma算法。

在本发明的另一种应用示例中,假设lzma算法、zlib算法和quicklz算法对应的cpu核数分别为:8核以上、4核-8核之间和4核以下;则可以将当前压缩指标参数与上述3种cpu核数进行匹配,将匹配成功所对应的算法作为当前目标压缩算法。例如,存储设备的当前cpu核数为6核,则可以选择最契合当前cpu核数的zlib算法。

可以理解,上述压缩比参数和cpu核数可以组合使用,具体地,可以对两种压缩指标参数的匹配结果进行加权平均,并选择最高的加权平均结果所对应的压缩算法作为目标压缩算法等,可以理解,本发明实施例对于组合使用压缩比参数和cpu核数的具体过程不加以限制。

需要说明的是,上述cpu核数只是作为设备参数的可选实施例,实际上,上述设备参数还可以包括:用于表征磁盘性能的磁盘参数和用于表征内存性能的内存参数等,本发明实施例对于具体的设备参数不加以限制。

另外,需要说明的是,本实施例中的目标存储引擎可以为利用图2所示实施例选择的目标存储引擎,也可以为用户指定的存储引擎,本发明实施例对于上述目标存储引擎的具体获取过程不加以限制。

对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时 进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作并不一定是本发明实施例所必须的。

参照图4,示出了根据本发明一个实施例的一种压缩存储装置的结构示意图,具体可以包括如下模块:

获取模块401,用于获取待存储数据的压缩参数,和/或,获取与待存储数据对应的存储设备的设备参数;

选择模块402,用于依据所述压缩参数和/或设备参数,选择与所述待存储数据对应的目标压缩方案;以及

压缩存储模块403,用于利用所述目标压缩方案对所述待存储数据进行压缩存储。

在本发明的一种可选实施例中,所述压缩参数具体可以包括应用场景参数和/或数据库架构参数,则所述选择模块402,可以进一步包括:

第一选择子模块,用于从数据库的至少一种存储引擎中选择与所述应用场景参数和/或数据库架构参数对应的目标存储引擎;及

第二选择子模块,用于从所述目标存储引擎的至少一种压缩算法中选择对应的目标压缩算法,所述目标存储引擎及其对应的目标压缩算法可组成所述目标压缩方案。

在本发明的另一种可选实施例中,所述第一选择子模块,可以进一步包括:

第一选择单元,用于在所述应用场景参数为第一应用场景参数时,选择对应的第一存储引擎为目标存储引擎;或者,

第二选择单元,用于在所述应用场景参数为第二应用场景参数时,选择对应的第二存储引擎为目标存储引擎;

其中,所述第一应用场景参数具体可以包括:联机事务处理场景参数、以及读密集场景参数中的至少一种;

其中,所述第二应用场景参数具体可以包括:联机分析处理场景参数、以及批量装载和读密集场景参数中的至少一种。

在本发明的再一种可选实施例中,所述第一选择子模块,可以进一步包括:

第三选择单元,用于在所述数据库架构参数为第一数据库架构参数时,选择对应的第三存储引擎为目标存储引擎;或者,

第四选择单元,用于在所述数据库架构参数为第二数据库架构参数时,选择对应的第四存储引擎为目标存储引擎;

其中,所述第一数据库架构参数具体可以包括:主从架构参数;或者,所述第二数据库架构参数具体可以包括:非主从架构参数。

在本发明的又一种可选实施例中,所述压缩参数具体可以包括压缩指标参数,则所述选择模块402,可以进一步包括:

第三选择子模块,用于从目标存储引擎的至少一种压缩算法中选择契合所述压缩指标参数和/或所述设备参数的目标压缩算法,所述目标存储引擎及其对应的目标压缩算法可组成所述目标压缩方案。

在本发明的一种可选实施例中,所述设备参数具体可以包括如下参数中的至少一种:cpu参数、磁盘参数和内存参数。

在本发明的另一种可选实施例中,所述压缩指标参数具体可以包括如下参数中的至少一种:压缩时间参数和压缩比参数。

在本发明的再一种可选实施例中,所述契合所述压缩指标参数和/或所述设备参数的目标压缩算法具体可以包括:

契合第一级压缩指标参数的第一目标压缩算法;或者

契合第二级压缩指标参数的第二目标压缩算法;或者

契合第三级压缩指标参数的第三目标压缩算法;其中,所述第一级压缩指标参数、第二级压缩指标参数和第三级压缩指标参数对应的压缩指标递减;或者

契合第一级设备参数的第一目标压缩算法;或者

契合第二级设备参数的第二目标压缩算法;或者

契合第三级设备参数的第三目标压缩算法;其中,所述第一级设备参数、第二级设备参数和第三级设备参数对应的设备性能递减。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相 同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本发明实施例的压缩存储方法和装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网平台上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包括”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

本发明公开了a1、一种压缩存储方法,包括:

获取待存储数据的压缩参数,和/或,获取与待存储数据对应的存储设备的设备参数;

依据所述压缩参数和/或设备参数,选择与所述待存储数据对应的目标压缩方案;

利用所述目标压缩方案对所述待存储数据进行压缩存储。

a2、如a1所述的方法,所述压缩参数包括应用场景参数和/或数据库架构参数,则所述依据所述压缩参数和/或设备参数,选择与所述待存储数据对应的目标压缩方案的步骤,进一步包括:

从数据库的至少一种存储引擎中选择与所述应用场景参数和/或数据库架构参数对应的目标存储引擎;

从所述目标存储引擎的至少一种压缩算法中选择对应的目标压缩算法,所述目标存储引擎及其对应的目标压缩算法组成所述目标压缩方案。

a3、如a2所述的方法,所述从数据库的至少一种存储引擎中选择与所述应用场景参数对应的目标存储引擎的步骤,进一步包括:

所述应用场景参数为第一应用场景参数,则选择对应的第一存储引擎为目标存储引擎;或者,

所述应用场景参数为第二应用场景参数,则选择对应的第二存储引擎为目标存储引擎;

其中,所述第一应用场景参数包括:联机事务处理场景参数、以及读密集场景参数中的至少一种;

其中,所述第二应用场景参数包括:联机分析处理场景参数、以及批量装载和读密集场景参数中的至少一种。

a4、如a2所述的方法,所述从数据库的至少一种存储引擎中选择与所述数据库架构参数对应的目标存储引擎的步骤,进一步包括:

所述数据库架构参数为第一数据库架构参数,则选择对应的第三存储引擎为目标存储引擎;或者,

所述数据库架构参数为第二数据库架构参数,则选择对应的第四存储引擎为目标存储引擎;

其中,所述第一数据库架构参数包括:主从架构参数;或者,所述第二数据库架构参数包括:非主从架构参数。

a5、如a1所述的方法,所述压缩参数包括压缩指标参数,则所述依据所述压缩参数和/或设备参数,选择所述待存储数据对应的目标压缩方案的步骤,进一步包括:

从目标存储引擎的至少一种压缩算法中选择契合所述压缩指标参数和/或所述设备参数的目标压缩算法,所述目标存储引擎及其对应的目标压缩算法组成所述目标压缩方案。

a6、如a5所述的方法,所述设备参数包括如下参数中的至少一种:cpu参数、磁盘参数和内存参数。

a7、如a5所述的方法,所述压缩指标参数包括如下参数中的至少一种:压缩时间参数和压缩比参数。

a8、如a5至a7中任一所述的方法,所述契合所述压缩指标参数和/或所述设备参数的目标压缩算法包括:

契合第一级压缩指标参数的第一目标压缩算法;或者

契合第二级压缩指标参数的第二目标压缩算法;或者

契合第三级压缩指标参数的第三目标压缩算法;其中,所述第一级压缩指标参数、第二级压缩指标参数和第三级压缩指标参数对应的压缩指标递减;或者

契合第一级设备参数的第一目标压缩算法;或者

契合第二级设备参数的第二目标压缩算法;或者

契合第三级设备参数的第三目标压缩算法;其中,所述第一级设备参数、第二级设备参数和第三级设备参数对应的设备性能递减。

本发明公开了b9、一种压缩存储装置,包括:

获取模块,用于获取待存储数据的压缩参数,和/或,获取与待存储数据对应的存储设备的设备参数;

选择模块,用于依据所述压缩参数和/或设备参数,选择与所述待存储数据对应的目标压缩方案;以及

压缩存储模块,用于利用所述目标压缩方案对所述待存储数据进行压 缩存储。

b10、如b9所述的装置,所述压缩参数包括应用场景参数和/或数据库架构参数,则所述选择模块,进一步包括:

第一选择子模块,用于从数据库的至少一种存储引擎中选择与所述应用场景参数和/或数据库架构参数对应的目标存储引擎;及

第二选择子模块,用于从所述目标存储引擎的至少一种压缩算法中选择对应的目标压缩算法,所述目标存储引擎及其对应的目标压缩算法组成所述目标压缩方案。

b11、如b10所述的装置,所述第一选择子模块,进一步包括:

第一选择单元,用于在所述应用场景参数为第一应用场景参数时,选择对应的第一存储引擎为目标存储引擎;或者,

第二选择单元,用于在所述应用场景参数为第二应用场景参数时,选择对应的第二存储引擎为目标存储引擎;

其中,所述第一应用场景参数包括:联机事务处理场景参数、以及读密集场景参数中的至少一种;

其中,所述第二应用场景参数包括:联机分析处理场景参数、以及批量装载和读密集场景参数中的至少一种。

b12、如b10所述的装置,所述第一选择子模块,进一步包括:

第三选择单元,用于在所述数据库架构参数为第一数据库架构参数时,选择对应的第三存储引擎为目标存储引擎;或者,

第四选择单元,用于在所述数据库架构参数为第二数据库架构参数时,选择对应的第四存储引擎为目标存储引擎;

其中,所述第一数据库架构参数包括:主从架构参数;或者,所述第二数据库架构参数包括:非主从架构参数。

b13、如b9所述的装置,所述压缩参数包括压缩指标参数,则所述选择模块,进一步包括:

第三选择子模块,用于从目标存储引擎的至少一种压缩算法中选择契合所述压缩指标参数和/或所述设备参数的目标压缩算法,所述目标存储引 擎及其对应的目标压缩算法组成所述目标压缩方案。

b14、如b13所述的装置,所述设备参数包括如下参数中的至少一种:cpu参数、磁盘参数和内存参数。

b15、如b13所述的装置,所述压缩指标参数包括如下参数中的至少一种:压缩时间参数和压缩比参数。

b16、如b13至b15中任一所述的装置,所述契合所述压缩指标参数和/或所述设备参数的目标压缩算法包括:

契合第一级压缩指标参数的第一目标压缩算法;或者

契合第二级压缩指标参数的第二目标压缩算法;或者

契合第三级压缩指标参数的第三目标压缩算法;其中,所述第一级压缩指标参数、第二级压缩指标参数和第三级压缩指标参数对应的压缩指标递减;或者

契合第一级设备参数的第一目标压缩算法;或者

契合第二级设备参数的第二目标压缩算法;或者

契合第三级设备参数的第三目标压缩算法;其中,所述第一级设备参数、第二级设备参数和第三级设备参数对应的设备性能递减。

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