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

文档序号:8339634阅读:263来源:国知局
一种数据查询方法及装置的制造方法
【技术领域】
[0001]本发明涉及数据处理技术领域,特别是涉及一种数据查询方法及装置。
【背景技术】
[0002]随着IT技术和互联网的快速发展,许多应用均伴随着大量数据的产生,如股票交易、电子商务、社交网络等。这些应用逐渐采用NoSQL来保存数据,该数据保存方法的特征是大多采用追加的方式保存数据,数据的更新和删除操作比较少,删除一般也是追加一条带删除标签的新记录,且每条记录都有一个记录时间,即时间戳。
[0003]基于上述数据保存方法,现有技术中,在针对云环境下大数据进行数据查询时,为了提高查询效率,需要预先定义查询请求,并根据预先定义的查询请求及数据库中的原始数据计算建立物化视图,在接收到查询请求时,若该查询请求为预先定义的查询请求,则物化视图根据预先规则进行计算,直接输出查询结果,对于未预先定义的查询请求,再在原始数据上进行完全扫描,然后输出查询结果。然而,该方法中若要保障查询效率就需要实时维护物化视图,例如,每当有新数据插入时,均需要重新计算更新物化视图,物化视图的维护过程较复杂,代价高。

【发明内容】

[0004]本发明实施例中提供了一种数据查询方法及装置,能够保障数据查询效率的同时无需维护物化视图。
[0005]为了解决上述技术问题,本发明实施例公开了如下技术方案:
[0006]第一方面,提供一种数据查询方法,预先存储多个历史查询请求及其时间戳,以及与所述历史查询请求一一对应的历史查询结果,所述查询方法包括:
[0007]接收数据查询请求;
[0008]将所述数据查询请求与所述多个历史查询请求进行匹配;
[0009]根据匹配结果将所述数据查询请求划分为至少一个子查询请求;
[0010]根据所述子查询请求进行数据查询;
[0011]合并所述至少一个子查询请求的查询结果,并将合并后的查询结果作为所述数据查询请求的结果。
[0012]结合上述第一方面,在第一种可能的实现方式中,所述根据匹配结果将所述数据查询请求分解为至少一个子查询请求,包括:
[0013]当所述数据查询请求与所述历史查询请求中的第一历史查询请求完全匹配时,将所述数据查询请求分解为历史数据子查询请求和增量数据子查询请求;
[0014]所述根据所述子查询请求进行数据查询,包括:
[0015]根据所述历史数据子查询请求在所述历史查询结果中查询所述第一历史查询请求对应的第一历史查询结果;
[0016]根据所述增量数据子查询请求在时间戳位于所述第一历史查询请求的时间戳之后的原始数据中对所述数据查询请求所请求查询的数据进行查询。
[0017]结合上述第一方面,和/或第一种可能的实现方式,在第二种可能的实现方式中,还包括:
[0018]将所述第一历史查询结果更新为所述合并后的查询结果,并将所述第一历史查询请求的时间戳更新为根据所述增量数据子查询请求所查询数据的最新记录时间。
[0019]结合上述第一方面,和/或第一种可能的实现方式,和/或第二种可能的实现方式,在第三种可能的实现方式中,所述根据匹配结果将所述数据查询请求分解为至少一个子查询请求,包括:
[0020]当所述数据查询请求与所述多个历史查询请求完全不匹配时,将所述数据查询请求分解为全新子查询请求;
[0021]所述根据所述子查询请求进行数据查询,包括:
[0022]根据所述全新子查询请求在所有原始数据中对所述数据查询请求所请求查询的数据进行查询。
[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]更新单元,用于将所述数据查询请求作为第二历史查询请求增添至所述多个历史查询请求中,将根据所述全新子查询所查询数据的最新记录时间作为所述第二历史查询请求的时间戳,并将所述合并后的查询结果作为与所述第二历史查询请求对应的历史查询结果O
[0052]结合上述第二方面,和/或第一种可能的实现方式,和/或第二种可能的实现方式,和/或第三种可能的实现方式,和/或第四种可能的实现方式,在第五种可能的实现方式中,所述分解单元,具体用于当所述数据查询请求与所述多个历史查询请求中的第一历史查询请求部分匹配时,将所述数据查询请求分解为历史数据子查询请求、增量数据子查询请求和
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1