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

文档序号:9810549阅读:491来源:国知局
一种数据库的数据压缩方法和装置的制造方法
【技术领域】
[0001] 本发明涉及计算机领域,特别是涉及一种数据库的数据压缩方法和装置。
【背景技术】
[0002] HBase (Hadoop Database,Hadoop数据库)是一个高可靠性、高性能、面向列、可伸 缩的分布式存储系统,利用HBase技术可以在廉价的个人电脑上搭建起大规模结构化存储 集群。然而根据HBase (Hadoop Database, Hadoop数据库)的文件结构机制,为了精确定位 查询数据位置,导致每个单元都会重复存储行键RowKey。
[0003] 对于键值对形式存储的非关系型的数据库或者缓存数据库来讲,键key的长度成 倍影响存储数据所占的存储容量。因此,Hbase数据库在提升查询效率的同时,其存储机制 会产生两个副作用:
[0004] 首先,RowKey的重复存储会导致数据容量暴增,一般会有3-7倍的膨胀,再加上 HBase集群的高可靠性的特点,会将数据存储3份以应对节点故障,这样整体上数据存储会 膨胀9-21倍。
[0005] 其次,由于数据膨胀导致入库和数据同步效率低下,并且膨胀的数据对网络带宽 的要求也很高。
[0006] 综上所述,现有的键值对形式存储的非关系型的数据库,由于数据冗余存在需要 占用大量额外的内存的问题。

【发明内容】

[0007] 本发明提供了一种数据库的数据压缩方法和装置,本发明提供的技术方案能够解 决现有的键值对形式存储的非关系型的数据库,,由于数据冗余存在需要占用大量额外的 内存的问题。
[0008] 本发明公开了一种数据库的数据压缩方法,该方法包括:
[0009] 当有源数据要存入数据库中时,判断所述源数据的数据类型是否属于数字类型;
[0010] 若所述源数据属于数字类型,将所述源数据转换成数字型字符串,根据第一映射 表对所述数字型字符串进行映射,得到缩位字符串;其中,所述第一映射表中保存有〇〇~ 99十进制的二位数字与一位字符的对应关系;
[0011] 若所述源数据属于非数字类型,先根据第二映射表对非数字类型的源数据进行映 射,得到数字型字符串,然后再根据所述第一映射表对得到的所述数字型字符串进行映射, 得到缩位字符串;其中所述第二映射表中保存有非数字类型的数据与数字型字符串的一一 对应关系;
[0012] 将得到的缩位字符串保存到数据库中。
[0013] 可选的,该方法还包括:设置映射二维表;所述映射二维表中设置了源数据的数 据类型以及所述数据类型对应的映射方式;
[0014] 所述当有源数据要存入数据库中时,判断所述源数据的数据类型之后包括:
[0015] 根据所述源数据的数据类型从所述映射二维表中获取对应的映射方式。
[0016] 可选的,所述根据第一映射表对所述数字型字符串进行映射包括:
[0017] 将数字型字符串从低位开始,按照两位一组进行分组,其中当所述数字型字符串 的位数不是偶数位时,对最高位进行补零;
[0018] 根据所述第一映射表,依次将每组中的二位数字字符替换为一位字符。
[0019] 可选的,所述若所述源数据属于非数字类型,先根据第二映射表对非数字类型的 源数据进行映射,得到数字型字符串,然后再根据所述第一映射表对得到的所述数字型字 符串进行映射,得到缩位字符串包括:
[0020] 根据所述第二映射表,将源数据转换为对应的数字型字符串;
[0021] 将所述数字型字符串从低位开始,按照两位一组进行分组,其中当所述数字型字 符串的位数不是偶数位时,对最高位进行补零;
[0022] 根据所述第一映射表,依次将每组中的二位数字字符替换为一位字符。
[0023] 可选的,若所述源数据为时间类型,所述将源数据转换成数字型字符串包括:将时 间类型的源数据转化为秒值;
[0024] 将所述时间类型的源数据所在年份的1月1日作为基准值,将所述基准值转化为 基准秒值;
[0025] 将所述秒值减去所述基准秒值得到的秒值差作为所述时间类型的源数据的数字 型字符串。
[0026] 可选的,该方法还包括:当从数据库中读取数据时,根据查询条件对应的数据类 型,对所述查询条件进行对应的映射,得到查询映射结果;
[0027] 根据所述查询映射结果在所述数据库中进行匹配查询;
[0028] 如果匹配,则将返回的数据进行相应的逆映射,将得到的源数据输出。
[0029] 依据本发明的另一面,本发明公开了一种数据库的数据压缩装置,该装置包括:输 入输出单元、处理单元和存储单元;其中,存储单元中保存有第一映射表和第二映射表,所 述第一映射表中保存有〇〇~99十进制的二位数字与一位字符的对应关系;所述第二映射 表中保存有非数字类型的数据与数字型字符串的一一对应关系;
[0030] 所述输入输出单元,用于接收输入的源数据,将所述源数据发送给处理单元;
[0031] 所述处理单元,用于接收输入输出单元发送的源数据,判断所述源数据的数据类 型是否属于数字类型;若所述源数据属于数字类型,将所述源数据转换成数字型字符串后, 根据第一映射表对所述数字型字符串进行映射,得到缩位字符串;若所述源数据属于非数 字类型,先根据第二映射表对非数字类型的源数据进行映射,得到数字型字符串,然后再根 据所述第一映射表对得到的所述数字型字符串进行映射,得到缩位字符串;将得到的缩位 字符串保存到所述存储单元中。
[0032] 可选的,存储单元中还保存有映射二维表;所述映射二维表中设置了源数据的数 据类型以及所述数据类型对应的映射方式;
[0033] 所述处理单元,用于根据源数据的数据类型从所述映射二维表中获取对应的映射 方式;
[0034] 和 / 或,
[0035] 所述处理单元,用于在从存储单元中读取数据时,根据查询条件对应的数据类型, 对所述查询条件进行对应的映射得到查询映射结果;根据所述查询映射结果在所述数据库 中进行匹配查询;如果匹配,则将返回的数据进行相应的逆映射,将得到的源数据发送给输 入输出单兀。
[0036] 可选的,所述处理单元,用于将数字型字符串从低位开始,按照两位一组进行分 组,其中当所述数字型字符串的位数不是偶数位时,对最高位进行补零;根据所述第一映射 表,依次将每组中的二位数字字符替换为一位字符;
[0037] 和 / 或,
[0038] 所述处理单元,用于根据所述第二映射表,将源数据转换为对应的数字型字符串; 将所述数字型字符串从低位开始,按照两位一组进行分组,其中当所述数字型字符串的位 数不是偶数位时,对最高位进行补零;根据所述第一映射表,依次将每组中的二位数字字符 替换为一位字符。
[0039] 可选的,所述处理单元,用于将时间类型的源数据转化为秒值;将所述时间类型的 源数据所在年份的1月1日作为基准值,将所述基准值转化为基准秒值;将所述秒值减去所 述基准秒值得到的秒值差作为所述时间类型的数据的数字型字符串。
[0040] 由此可见,在本发明提供的技术方案中,当有源数据要存入数据库时,先根据待存 入的源数据的数据类型,将该源数据转化为数字型字符串,再根据第一映射表,依次将数字 型字符串中二位数字字符替换为一位字符后存入所述数据库中。即在本发明中,通过将数 字型字符串中二位数字字符替换为一位字符后实现对数字型字符串的缩位处理。进而有
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1