一种数据库的数据压缩方法和装置的制造方法_2

文档序号:9810549阅读:来源:国知局
效 减少了分布式数据库中,存储源数据的所占用的内存的容量。
【附图说明】
[0041] 图1是本发明中一种数据库的数据压缩方法的流程图;
[0042] 图2是本发明中一种数据库的数据压缩方法的详细流程图;
[0043] 图3是本发明中读取数据库中压缩数据的方法流程图;
[0044] 图4是本发明中一种数据库的数据压缩装置的结构示意图。
【具体实施方式】
[0045] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方 式作进一步地详细描述。
[0046] 图1是本发明中一种数据库的数据压缩方法的流程图;本发明提供的方法适用于 分布式数据库中,能够解决现有的基于内存的分布式键值对缓存数据库,由于数据冗余存 在需要占用大量额外的内存的问题。如图1所示,该方法包括如下步骤:
[0047] 步骤101,当有源数据要存入数据库中时,判断所述源数据的数据类型是否属于数 字类型,如果是,执行步骤102 ;如果否,执行步骤S103。
[0048] 步骤102,将所述源数据转换成数字型字符串,根据第一映射表对所述数字型字符 串进行映射,得到缩位字符串;其中,所述第一映射表中保存有〇〇~99十进制的二位数字 字符与一位字符的对应关系。其中,所述一位字符可以为任意字符。
[0049] 在步骤102中,根据第一映射表将数字型字符串每二位替换为对应的一位字符, 得到对应的缩位字符串。
[0050] 步骤103,根据第二映射表对非数字类型的源数据进行映射,得到数字型字符串, 然后再根据所述第一映射表对得到的所述数字型字符串进行映射,得到缩位字符串;其中 所述第二映射表中保存有非数字类型的数据与数字型字符串的一一对应关系。
[0051] 在步骤103中,根据第二映射表将非数字类型的数据映射为对应的数字型字符 串。
[0052] 步骤104,将得到的缩位字符串保存到数据库中。
[0053] 由此可见,在本发明提供的技术方案中,当有源数据要存入数据库时,先将该源数 据转化为数字型字符串,再根据第一映射表,依次将数字型字符串中二位数字字符替换为 一位字符后存入所述数据库中。即在本发明中,通过将数字型字符串中二位数字字符替换 为一位字符后实现对数字型字符串的缩位处理。进而有效减少了分布式数据库中,存储源 数据的所占用的内存的容量。
[0054] 图2是本发明一种数据库的数据压缩方法的详细流程图。为了更加有效的压缩数 据库中的数据。通过设置映射二维表,针对不同类型的源数据,设置对应的映射方式,进而 能够有效地降低分布式数据库中的源数据占用的存储容量。参见图2所示,该方法包括如 下步骤。
[0055] 步骤201,设置映射二维表、第一映射表和第二映射表。其中,所述映射二维表中设 置了源数据的数据类型对应的映射方式。第一映射表中保存有〇〇~99十进制的二位数字 与一位字符的对应关系。第二映射表中保存有非数字类型的数据与数字型字符串的一一对 应关系。
[0056] 在本发明的一种实施例中,在步骤201中,在设置的映射二维表中,根据实际情 况,分别设置不同数据类型的源数据所对应的映射方式。参见表1,表1是本实施例中的一 种映射二维表。
[0057]
[0058] 表 1
[0059] 参见表1可知,在Hbase数据库中,所存储的源数据类型包括:日期类型数据、时 间类型、省份类型数据、厂商类型数据以及制式类型数据等等。其中,属于数字型的数据,例 如:日期类型数据。属于非数字型的数据如:省份类型数据、厂商类型数据、制式类型数据 等。
[0060] 在本发明的一种实施例中,在步骤201中,所设置的第一映射表可以为ASCII码表 的部分,即从ASCII码表中取00~99十进制的二位数字与一位字符的对应关系。表2为 本实施例中的第一映射表的一部分示例。
[0061]
[0062] 表 2
[0063] 在本发明的一种实施例中,在步骤201中,所设置的第二映射表中保存了非数字 类型的源数据与数字型字符串的一一对应关系。表3是本实施例中的第二映射表的部分示 例。
[0064]
[0065] 表 3
[0066] 在上述实施例中,由于省份维度个数不超过100,所以采用二位数的数字做映射, 每个省份对应一个数字型字符串。例如,数据库中的〇Bj可以通过第二映射表映射为01。 此外,对于非数字类型的数据,例如厂商类型数据中的huawei也可以做相同方式的映射, 映射为二位数的数字型字符串,在此不一一赘述。
[0067] 步骤202,当有源数据要存入数据库中时,根据所述源数据的数据类型从所述映射 二维表中获取所对应的映射方式。
[0068] 在步骤202中,当有源数据要存入数据库中时,根据所述源数据的数据类型从所 述映射二维表中获取所对应的映射方式。在本发明中,由于属于数字类型的源数据与属于 非数字类型的源数据所要进行映射的方式并不相同,对于数字类型的源数据,仅仅需要根 据第一映射表进行映射即可。对于非数字类型的源数据,需要先根据第二映射表将非数字 类型的源数据转换为数字类型的字符串,再将转换得到的数字型字符串根据第一映射表进 行映射。举例为:当存入的数据类型为日期类型数据时,根据获取的对应的映射方式为1, 表示将该存入的源数据根据第一映射表进行映射。
[0069] 步骤203,根据所述第二映射表,将所述非数字类型的数据转换为对应的数字型字 符串。
[0070] 在步骤203中,对于非数字类型的源数据,根据第二映射表中保存的非数字类型 的数据与数字型字符串的一一对应关系,将该非数字类型的源数据转换为数字型字符串。 举例为:将非数字型字符串OBj根据第二映射表替换为数字型字符串01。
[0071] 步骤204,将数字型字符串从低位开始,按照两位一组进行分组,其中当所述数字 型字符串的位数不是偶数位时,对最高位进行补零。
[0072] 在步骤204中,若源数据为日期类型的数据时,在本发明的一种实施例中,将源数 据转换成数字型字符串具体包括:
[0073] 步骤A :将时间类型的源数据转化为秒值。
[0074] 在本发明的具体实施例中,在步骤A中,对于时间类型的数据 2014-06-2715:55:17,将该时间类型的源数据转成秒值的long值为1403855717。
[0075] 步骤B :将所述时间类型的数据所在年份的1月1日作为基准值,将所述基准值转 化为基准秒值;
[0076] 在步骤B中,对应的基准值是2014-01-01,将该基准值转成基准秒值的long值为 1388505600。
[0077] 步骤C :将所述秒值减去所述基准秒值得到的秒值差作为所述时间类型的数据的 数字型字符串。
[0078] 在步骤C中二者之差为15350117,将该差值作为对应的数字型字符串。
[0079] U,在步骤205中,对于时间类型的源数据2014-06-2715:55:17转换得到对应的 数字型字符串为15350117。将该数字型字符串从低位开始,按照两位一组进行分组,可以组 成[15]、[35]、[01]、[17]四组。在本实施例中,由于得到的差值为偶数位,因此不需要进 行高位补零。反之,如果得到的差值为奇数位,则需要对高位进行补零,以便能完成分组操 作。
[0080] 在本实施例中,先通过转换秒值,再与
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1