数据存储的方法和装置的制造方法

文档序号:9929543阅读:436来源:国知局
数据存储的方法和装置的制造方法
【技术领域】
[0001]本申请涉及通信技术领域,具体涉及一种数据存储的方法和装置。
【背景技术】
[0002]Cassandra是一个混合型的非关系的数据库,以Amazon(亚马逊)专有的完全分布式的Dynamo为基础,结合了 Google Big Table基于列族(Column Family)的数据模型、采用去中心化的存储架构。Cassandra是依赖DHT (Distributed Hash Table,分布式哈希表)技术实现的一种典型的无中心节点(每个节点都既作为接入节点,又作为数据节点而存在)的环形结构的分布式存储系统。Cassandra数据存储空间可以抽象为一个环形结构,数据就是通过Hash分散在这个环形存储空间上。Cassandra的每个节点负责管理这个环形存储空间上的某一块连续的范围(也叫Range),落在此Range空间上的数据就存储在这个节点上。
[0003]现有Cassandra中数据存储的方法是,当数据被发送到数据节点进行存储时,首先调用gzip(压缩程序)压缩算法对预存储的数据进行压缩,然后将压缩后的数据存储到磁盘文件中。
[0004]现有数据存储的方法,对每个预存储的数据都执行压缩,当数据类型是文本文件类型时具有较大的压缩比,但当数据类型是二进制文件类型时压缩比很小。当需要存储大量的二进制文件类型的数据时,会导致压缩率极低,甚至产生严重的压缩膨胀,使得在产生大量的CPU开销的同时,却并未节省大量的存储空间,浪费CPU和存储空间的资源。

【发明内容】

[0005]本申请所要解决的技术问题在于现有技术在产生大量的CPU开销的同时,却并未节省大量的存储空间,浪费CPU和存储空间的资源。为了解决该技术问题,本发明提供了一种数据存储的方法和装置,可以避免对一些数据类型进行存储时,导致压缩率极低,甚至产生严重的压缩膨胀,避免在产生大量的CPU开销的同时,却并未节省大量的存储空间,避免浪费CPU和存储空间的资源。
[0006]为了解决上述问题,本申请公开了一种数据存储的方法,所述方法包括:
[0007]Cassandra系统的存储节点接收预存储的数据,识别所述预存储的数据的数据类型;
[0008]所述Cassandra系统的存储节点根据所述预存储的数据的数据类型,判定对所述预存储的数据进行压缩后存储。
[0009]为了解决上述问题,本申请还公开了一种数据存储的方法,所述方法包括:
[0010]Cassandra系统的存储节点接收预存储的数据,获取所述预存储的数据中携带的存储方式信息;
[0011]所述Cassandra系统的存储节点根据所述存储方式信息选定压缩算法,根据选定的压缩算法对所述预存储的数据进行压缩后存储。
[0012]为了解决上述问题,本申请公开了一种数据存储的装置,所述装置包括:
[0013]第一接收模块,用于接收预存储的数据;
[0014]识别模块,用于识别所述预存储的数据的数据类型;
[0015]第一存储模块,用于根据所述预存储的数据的数据类型,判定对所述预存储的数据进行压缩后存储。
[0016]为了解决上述问题,本申请还公开了一种数据存储的装置,所述装置包括:
[0017]第二接收模块,用于接收预存储的数据;
[0018]获取模块,用于获取所述预存储的数据中携带的存储方式信息;
[0019]验证模块,用于根据所述存储方式信息选定压缩算法;
[0020]第三存储模块,用于根据选定的压缩算法对所述预存储的数据进行压缩后存储。
[0021]与现有技术相比,本申请可以获得包括以下技术效果:
[0022]可以避免对一些数据类型进行存储时,导致压缩率极低,甚至产生严重的压缩膨胀,避免在产生大量的CPU开销的同时,却并未节省大量的存储空间,避免浪费CPU和存储空间的资源。例如,当数据类型是文本文件类型时具有较大的压缩比,对预存储的数据进行压缩,将压缩后的数据存储到磁盘文件中,可以节省大量的存储空间。当数据类型是二进制文件类型时压缩比很小,不对预存储的数据进行压缩,将预存储的数据直接存储到磁盘文件中,避免导致压缩率极低,甚至产生严重的压缩膨胀,不会在产生大量的CPU开销的同时,却并未节省大量的存储空间,避免浪费CPU和存储空间的资源。
[0023]当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有技术效果。
【附图说明】
[0024]此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0025]图1是本申请实施例一提供的一种数据存储的方法流程图;
[0026]图2是本申请实施例一提供的一种数据存储的过程示意图;
[0027]图3是本申请实施例二提供的一种数据存储的方法流程图;
[0028]图4是本申请实施例二提供的一种数据存储的过程示意图;
[0029]图5是本申请实施例三提供的第一种数据存储的装置结构示意图;
[0030]图6是本申请实施例三提供的第二种数据存储的装置结构示意图;
[0031]图7是本申请实施例三提供的第三种数据存储的装置结构示意图;
[0032]图8是本申请实施例三提供的第四种数据存储的装置结构示意图;
[0033]图9是本申请实施例四提供的第一种数据存储的装置结构示意图;
[0034]图10是本申请实施例四提供的第二种数据存储的装置结构示意图;
[0035]图11是本申请实施例四提供的第三种数据存储的装置结构示意图;
[0036]图12是本申请实施例四提供的第四种数据存储的装置结构示意图;
[0037]图13是本申请实施例四提供的第五种数据存储的装置结构示意图;
[0038]图14是本申请实施例四提供的第六种数据存储的装置结构示意图。
【具体实施方式】
[0039]以下将配合附图及实施例来详细说明本申请的实施方式,藉此对本申请如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。
[0040]实施例一
[0041]参见图1,本申请实施例提供了一种数据存储的方法,该方法包括:
[0042]步骤SlOl =Cassandra系统的存储节点接收预存储的数据。
[0043]示例性地,用户使用分布式存储平台后,需要将预存储的数据上传到自己专属的存储区域;具体地,对于Cassandra方式,当数据被发送到Cassandra的存储节点进行存储时,Cassandra系统的存储节点,即存储服务器接收到预存储的数据。
[0044]步骤S102 =Cassandra系统的存储节点识别预存储的数据的数据类型。
[0045]如果预存储的数据中未携带数据类型信息,则需要分析所述预存储的数据的头文件的编码格式和/或编解码信息,根据编码格式和/或编解码信息识别出所述预存储的数据的数据类型。
[0046]如果预存储的数据中携带了数据类型信息,则获取所述预存储的数据中携带的数据类型信息,直接就可以识别所述预存储的数据的数据类型。
[0047]步骤S103 =Cassandra系统的存储节点根据预存储的数据的数据类型,判定对、预存储的数据进行压缩后存储,或判定对预存储的数据直接存储。
[0048]具体地,Cassandra系统的存储节点根据所述预存储的数据的数据类型,判定对所述预存储的数据进行压缩后存储,包括:
[0049]Cassandra系统的存储节点根据所述预存储的数据的数据类型,在数据压缩映射表中进行遍历,找到与所述预存储的数据的数据类型对应的压缩算法,对所述预存储的数据进行压缩后存储;其中,所述数据压缩映射表中保存有预先收集的数据类型及其支持的压缩算法的对应关系。
[0050]具体地,Cassandra系统的存储节点根据所述预存储的数据的数据类型,判定对所述预存储的数据直接存储,包括:
[0051]Cassandra系统的存储节点根据所述预存储的数据的数据类型,在数据压缩映射表中进行遍历,找到与所述预存储的数据的数据类型对应的压缩算法为空值,直接存储所述预存储的数据;其中,所述数据压缩映射表中保存有预先收集的数据类型及其支持的压缩算法的对应关系。
[0052]具体地,需要维护一数据压缩映射表。数据压缩映射表中保存有预先收集的数据类型及其支持的压缩算法的对应关系。根据数据压缩映射表判断对所述预存储的数据的数据类型是否进行压缩存储。
[0053]这种对应关系是事先设置好的。比如预先模拟通过各压缩算法对所述任一数据类型进行压缩,根据各压缩算法的压缩率和压缩开销的加权对各压缩算法分别设置权重。对于任一数据类型,适用的压缩算法必然有很多,这些压缩算法也都计算出了权重,从中选取权重大于一门限且权重最高的压缩算法,从而建立数据类型和压缩算法对应关系。
[0054]需要说明的是,对于任一数据类型,如果支持的压缩算法的权重都未大于所述门限,说明这些压缩算法对于所述任一数据类型的压缩收益较低或者会造成压缩膨胀,因此对于所述任一数据类型,对应的压缩算法为空值(即没有对应的压缩算法)。另外,对于任一数据类型,权重大于一门限且权重最高可能并列的有多个压缩算法,对于这种就将这符合情况的多个压缩算法都列上;之后根据数据类型遍历时将对应的多个压缩算法全部给出,至于选用哪个可以提示给用户选择,也可以根据系统自身具备的压缩引擎的情况选取,或者随机选取,本申请并不限于此。
[0055]根据预存储的数据的数据类型,在数据压缩映射表中找出了对应的压缩算法,进而做出决策选择合适的压缩算法后压缩存储(Compressed Wr
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1