一种查询数据的方法和装置的制造方法

文档序号:8361551阅读:185来源:国知局
一种查询数据的方法和装置的制造方法
【技术领域】
[0001]本发明涉及数据库领域,尤其涉及一种查询数据的方法和装置。
【背景技术】
[0002]随着生活和生产的发展,大量的数据需要存储和归档。由于当前数据库可以存储几十到几百TB的数据量,因此数据库在存储和管理数据方面扮演着十分重要的角色。
[0003]数据库中存储了大量数据,因此为了方便存储,且在查询时减小查询量,现有技术中,数据库往往会按照时间、数值范围或哈希值来将数据分区存储。
[0004]但是,用户查询数据时,有时候可能根据不同的目的而希望获得不同精度的数据。例如用户为了分析出数据的变化趋势,那么其实并不需要每一个数据。而用户更希望查询获得的是哪些变化剧烈的数据,或者低精度数据。对于变化缓慢甚至没有变化的数据,对于趋势分析并没有很明显的意义。而若用户查询数据的目的是为了计算或统计,则用户希望查询获得的尽可能全面的数据,并且数据的精度高,以保证最终的计算或统计结果误差小。
[0005]然而,现有技术中的数据库,由于仅仅按照时间、数值范围或哈希值来分区存储,造成数据库难以满足不同精度的查询需求。

【发明内容】

[0006]本发明实施例提供了一种查询数据的方法和装置,实现了根据用户对数据精度的需求,查询满足精度需求的数据的目的。
[0007]本申请第一方面提供了一种查询数据的方法,包括:
[0008]接收包括查询条件和查询精度的查询指令;
[0009]确定满足所述查询条件的数据分区;
[0010]在所述数据分区中确定出与所述查询精度对应的数据子分区;
[0011 ] 查询所述数据子分区中的数据,获得查询结果。
[0012]结合第一方面,在第一方面的第一种可能的实现方式中,所述数据子分区包括高精度子分区、低精度子分区,在所述数据分区中确定出与所述查询精度对应的数据子分区,具体包括:
[0013]当所述查询精度低于或等于所述低精度子分区的精度时,确定所述低精度子分区为所述数据子分区;或
[0014]当所述查询精度高于所述低精度子分区的精度时,确定所述高精度子分区为所述数据子分区;或
[0015]当所述查询精度高于所述低精度子分区的精度时,确定所述低精度子分区和所述高精度子分区为所述数据子分区。
[0016]结合第一方面,或第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,在接收包括查询条件和查询精度的查询指令之前,还包括:
[0017]接收多个原始数据;
[0018]根据所述多个原始数据的统计参数,确定每个原始数据对应的分区,所述分区包括所述数据分区;
[0019]将每个分区的原始数据分为低精度数据和高精度数据;
[0020]将所述每个分区的低精度数据存储在对应分区的低精度子分区中,所述每个分区的高精度数据存储在对应分区的高精度子分区中。
[0021]结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,将每个分区的原始数据分为低精度数据和高精度数据,具体包括:
[0022]对所述每个分区的原始数据执行旋转门SDT压缩算法,获得不可被压缩的原始数据;
[0023]将所述不可被压缩的原始数据作为所述低精度数据;
[0024]将所述多个原始数据作为高精度数据;或
[0025]在各个不可被压缩的原始数据之间进行线性插值;
[0026]获得各个线性插值与对应的原始数据之间的偏差数据;
[0027]将所述偏差数据作为所述高精度数据。
[0028]结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,当将所述偏差数据作为所述高精度数据,且所述低精度子分区和所述高精度子分区为所述数据子分区时,查询所述数据子分区中的数据,获得查询结果,具体包括:
[0029]读取所述低精度子分区中的所述不可被压缩的原始数据;
[0030]在各个所述不可被压缩的原始数据之间的进行线性插值;
[0031]读取所述高精度子分区中的所述偏差数据;
[0032]根据各个线性插值与所述偏差数据,获得所述数据分区对应的原始数据;
[0033]将所述数据分区对应的原始数据作为所述查询结果。
[0034]结合第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,在根据各个线性插值与所述偏差数据,获得所述多个原始数据之后,所述方法还包括:
[0035]根据所述查询指令中还包括的筛选条件和所述数据分区对应的原始数据的统计参数,确定出符合所述筛选条件的最终数据;
[0036]将所述数据分区对应的原始数据作为所述查询结果,具体为:
[0037]将所述最终数据作为所述查询结果。
[0038]结合第一方面的第三种可能的实现方式,在第一方面的第六种可能的实现方式中,当将所述偏差数据作为所述高精度数据,且所述低精度子分区和所述高精度子分区为所述数据子分区时,查询所述数据子分区中的数据,获得查询结果,具体包括:
[0039]读取所述低精度子分区中的所述不可被压缩的原始数据;
[0040]在各个所述不可被压缩的原始数据之间的进行线性插值;
[0041]根据所述查询指令中还包括的筛选条件和线性插值所对应的统计参数,确定出符合所述筛选条件的合格线性插值;
[0042]读取所述高精度子分区中的与所述合格线性插值对应的所述偏差数据;
[0043]根据各个所述合格线性插值与所述偏差数据,获得原始数据;
[0044]将所述原始数据作为所述查询结果。
[0045]结合第一方面的第六种可能的实现方式,在第一方面的第七种可能的实现方式中,在根据各个线性插值与所述偏差数据,获得原始数据之后,所述方法还包括:
[0046]根据所述筛选条件和所述原始数据的统计参数,确定出符合所述筛选条件的最终数据;
[0047]将所述原始数据作为所述查询结果,具体为:
[0048]将所述最终数据作为所述查询结果。
[0049]本申请第二方面提供了一种查询数据的装置,包括:
[0050]第一接收单元,用于接收包括查询条件和查询精度的查询指令;
[0051]第一确定单元,用于确定满足所述查询条件的数据分区;
[0052]第二确定单元,用于在所述数据分区中确定出与所述查询精度对应的数据子分区;
[0053]查询单元,用于查询所述数据子分区中的数据,获得查询结果。
[0054]结合第二方面,在第二方面的第一种可能的实现方式中,所述数据子分区包括高精度子分区、低精度子分区,所述第二确定单元具体用于:
[0055]当所述查询精度低于或等于所述低精度子分区的精度时,确定所述低精度子分区为所述数据子分区;或
[0056]当所述查询精度高于所述低精度子分区的精度时,确定所述高精度子分区为所述数据子分区;或
[0057]当所述查询精度高于所述低精度子分区的精度时,确定所述低精度子分区和所述高精度子分区为所述数据子分区。
[0058]结合第二方面,或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述装置还包括:
[0059]第二接收单元,用于在接收包括查询条件和查询精度的查询指令之前,接收多个原始数据;
[0060]第三确定单元,用于根据所述多个原始数据的统计参数,确定每个原始数据对应的分区,所述分区包括所述数据分区;
[0061]数据处理单元,用于将每个分区的原始数据分为低精度数据和高精度数据;并将所述每个分区的低精度数据存储在对应分区的低精度子分区中,所述每个分区的高精度数据存储在对应分区的高精度子分区中。
[0062]结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述数据处理单元具体用于:
[0063]对所述每个分区的原始数据执行旋转门SDT压缩算法,获得不可被压缩的原始数据;
[0064]将所述不可被压缩的原始数据作为所述低精度数据;
[0065]将所述多个原始数据作为高精度数据;或
[0066]在各个不可被压缩的原始数据之间进行线性插值;
[0067]获得各个线性插值与对应的原始数据之间的偏差数据;
[0068]将所述偏差数据作为所述高精度数据。
[0069]结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,当将所述偏差数据作为所述高精度数据,且所述低精度子分区和所述高精度子分区为所述数据子分区时,所述查询单元具体用于:
[0070]读取所述低精度子分区中的所述不可被压缩的原始数据;
[0071]在各个所述不可被压缩的原始数据之间的进行线性插值;
[0072]读取所述高精度子分区中的所述偏差数据;
[0073]根据各个线性插值与所述偏差数据,获得所述数据分区对应的原始数据;
[0074]将所述数据分区对应的原始数据作为所述查询结果。
[0075]结合第二方面的第四种可能的实现方式,在第二方面的第五种可能的实现方式中,所述查询单元还用于:
[0076]在根据各个线性插值与所述偏差数据,获得所述数据分区对应的原始数据之后,根据所述查询指令中还包括的筛选条件和所述数据分区对应的原始数据的统计参数,确定出符合所述筛选条件的最终数据;
[0077]将所述最终数据作为所述查询结果。
[0078]结合第二方面的第三种可能的实现方式,在第二方面的第六种可能的实现方式中,当将所述偏差数据作为所述高精度数据,且所述低精度子分区和所述高精度子分区为所述数据子分区时,所述查询单元具体用于:
[0079]读取所述低精度子分区中的所述不可被压缩的原始数据;
[0080]在各个所述不可被压缩的原始数据之间的进行线性插值;
[0081]根据所述查询指令中还包括的筛选条件和线性插值所对应的统计参数,确定出符合所述筛选条件的合格线性插值;
[0082]读取所述高精度子分区中的与所述合格线性插值对应的所述偏差数据;
[0083]根据各个所述合格线性插值与所述偏差数据,获得原始数据;
[0084]将所述原始数据作为所述查询结果。
[0085]结合第二方面的第六种可能的实现方式,在第二方面的第七种可能的实现方式中,所述查询单元还用于:
[0086]根据所述筛选条件和所述原始数据的统计参数,确定出符合所述筛选条件的最终数据;
[0087]将所述最终数据作为所述查询结果。
[0088]本申请第三方面提供了一种查询数据的设备,包括:
[0089]接收器,用于接收包括查询条件和查询精度的查询指令;
[0090]处理器,用于确定满足所述查询条件的数据分区;并在所述数据分区中确定出与所述查询精度对应的数据子分区;以及查询所述数据子分区中的数据,获得查询结果。
[0091]结合第三方面,在第三方面的第一种可能的实现方式中,所述数据子分区包括高精度子分区、低精度子分区,所述处理器具体用于:
[0092]当所述查询精度低于或等于所述低精度子分区的精度时,确定所述低精度子分区为所述数据子分区;或当所述查询精度高于所述低精度子分区的精度时,确定所述高精度子分区为所述数据子分区;或当所述查询精度高于所述低精度子分区的精度时,确定所述低
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1