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

文档序号:9810549阅读:来源:国知局
基准秒值求差值的方式所得到的该时间类 型的数据所对应的数字型字符串的长度最短,至少缩短了 4位年(如2014)对应的字符串 位数,因此将该数字型字符串再通过第一映射表进行映射,所得到的数据库压缩效果最好。
[0081] 在本发明的其他实施例中,还可以采用其他方式,将时间类型的源数据转换为数 字型字符串。在此不一一赘述。
[0082] 步骤205,根据所述第一映射表,依次将每组中的二位数字字符替换为一位字符, 将得到的替换后的字符串存入数据库中。
[0083] 在上述实施例中,对于得到的数字型字符串15350117划分得到[15]、[35]、[01]、 [17]四组两位数字字符串,根据第一映射表依次进行替换。其中第一映射表可以为ASCII 码表,可知[35]在ASCII码表对应的字符为"#",即用"#"这一个字符替换[35]两位数,其 他以此类推,如此就形成了 4位字符"SI" "SOH" "DC1",用于表示原先的"15350117" 这8位数字字符串。
[0084] 在上述实施例中,由于保存在数据库中的rowkey的位数是固定的,对于省份类型 的源数据,在不进行缩位的情况下,即直接存储各省份的缩写,则对应的rowkey的位数为3 位。所存入的省份类型的源数据必须占3位,不够3位的高位补零。然而,在进行缩位的情 况下,通过第二映射表,将对应的省份类型的源数据映射为二位数字型字符串,再根据第一 映射表将该两位的数字型字符串映射为一个字符。举例为:对于省份类型数据:北京。在 未缩位之前rowkey需要3位才能存储0b j,然而在缩位之后,只需要"S0H" 一个字符就能 表示。因此,在缩位之后,对于在数据库中保存省份类型数据,只需要设定rowkey为1位即 可。
[0085] 由上述可知,对于时间类型的数据,根据第一映射表可以将原来14位的时间类型 数据2014-06-2715:55:17缩短到4位的字符串,不仅可以节约10/14 = 72%的存储空间, 并且大大提升了将源数据存入数据库的效率,还能降低对数据库中的数据进行处理带来的 网络拥塞。可见本发明提供的技术方案不仅在节约存储空间的同时,提还升了数据处理能 力。解决了现有技术中,尤其是针对基于内存的key/value缓存的数据库,需要占用额外的 内存,以及拖延各存储节点间同步的效率,导致无法实现实时数据同步的问题。还能防止在 某个存储节点发生故障的情况下,容易导致存储的数据的不一致性,进行影响集群的可靠 性的问题。
[0086] 图3是本发明中读取数据库中压缩数据的方法流程图,参见图3所示,该方法包括 如下步骤。
[0087] 步骤301,根据查询条件对应的数据类型,对所述查询条件进行对应的映射,得到 查询映射结果。
[0088] 在步骤301中,对于需要查询的数据,根据查询条件中数据类型,通过二维映射表 获取对应的映射方式,将该查询条件根据对应的映射方式进行映射,得到对应的查询映射 结果。
[0089] 在本发明的具体实施例中,如果要查询2014-06-2715:55:17这个时期的 数据,则将该"2014-06-2715:55:17"根据第一映射表转换为对应的4个字符串 "SI" "SOH" "DC1",即得到的对应的查询映射结果。
[0090] 步骤302,根据所述查询映射结果在所述数据库中进行匹配查询。
[0091] 在步骤302中,根据对应的查询映射结果"SI" "SOH" "DC1"在数据库中进行 匹配查询。如果能匹配,则说明存在相应的数据。如果不匹配,则说明不存在相应的数据。
[0092] 步骤303,如果匹配,则将返回的数据进行相应的逆映射,将得到的源数据输出。
[0093] 在步骤303中,查找到匹配数据的情况下,判断返回的数据的数据类型,根据二维 映射表,获取对应的映射方式。再将返回的数据根据该映射方式进行相应的逆映射,将得到 的源数据输出。在本发明的具体实施例中,返回的数据为"S0H",并且返回的数据类型为省 份数据。根据二维映射表获取到的映射方式为先根据第二映射表,再根据第一映射表。则 在对返回的数据进行逆映射时,先跟第一映射表表进行逆映射得到数字字符串"01",再根 据第二映射表进行逆映射得到"〇Bj"。则返回的源数据为表示北京市的bj。
[0094] 在本发明的一种具体实施例中,还可以将源数据写入数据库中,以及从数据库中 读取源数据的过程封装到SDK,使得可以通过直接加载SDK实现直接读写HBase数据库中的 源数据。
[0095] 由此可见,在本发明提供的技术方案中,通过设置的二维映射表,分别根据第一映 射表和第二映射表将存入的源数据的数据类型将源数据压缩后保存到Hbase中。解决了现 有的HBase NoSQL分布式数据库的rowkey的长度,会导致实际存储数据会有极大的膨胀的 问题。并且,在HBase NoSQL分布式数据库中大量存储着时间类型的数据,根据本发明的技 术方案,可以将时间类型的数据的位数有原来的14位缩短到4位,可以节省高达72%的存 储空间。并且由于缩短了时间类型的数据的位置,使得数据量变小,进而使得分布式处理时 所要经过网络交换的流量就会变小,从而能够提高数据处理的效率。
[0096] 依据本发明的另一面,还公开了一种数据库的数据压缩装置,图4是本发明中一 种数据库的数据压缩装置的结构示意图。参见图4所示,该装置包括:该装置包括:输入输 出单元401、处理单元402和存储单元403 ;
[0097] 存储单元403中保存有第一映射表和第二映射表,所述第一映射表中保存有00~ 99十进制的二位数字与一位字符的对应关系;所述第二映射表中保存有非数字类型的数 据与数字型字符串的一一对应关系。
[0098] 输入输出单元401,用于接收输入的源数据,将所述源数据发送给处理单元402 ;
[0099] 处理单元402,于接收输入输出单元401发送的源数据,判断所述源数据的数据类 型是否属于数字类型;若所述源数据属于数字类型,将所述源数据转换成数字型字符串后, 根据第一映射表对所述数字型字符串进行映射,得到缩位字符串;若所述源数据属于非数 字类型,先根据第二映射表对非数字类型的源数据进行映射,得到数字型字符串,然后再根 据所述第一映射表对得到的所述数字型字符串进行映射,得到缩位字符串;将得到的缩位 字符串保存到所述存储单元403中。
[0100] 在本发明的一种实施例中,存储单元403中还保存有映射二维表;映射二维表中 设置了源数据的数据类型以及所述数据类型对应的映射方式;
[0101] 处理单元402,用于根据源数据的数据类型从所述映射二维表中获取对应的映射 方式;
[0102] 在本发明的一种实施例中,处理单元402,用于从存储单元403中读取数据时,根 据查询条件对应的数据类型,对所述查询条件进行对应的映射得到查询映射结果;根据所 述查询映射结果在所述数据库中进行匹配查询;如果匹配,则将返回的数据进行相应的逆 映射,将得到的源数据发送给输入输出单元401。
[0103] 在本发明的一种实施例中,处理单元402,用于将数字型字符串从低位开始,按照 两位一组进行分组,其中当所述数字型字符串的位数不是偶数位时,对最高位进行补零;根 据所述第一映射表,依次将每组中的二位数字字符替换为一位字符。
[0104] 在本发明的一种实施例中,当源数据属于非数字类型时,处理单元402,根据第二 映射表,将所述源数据转换为对应的数字型字符串;将所述数
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1