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

文档序号:9750944阅读:215来源:国知局
一种数据查询方法及装置的制造方法
【技术领域】
[0001 ]本申请涉及计算机存储技术领域,尤其涉及一种数据查询方法及装置。
【背景技术】
[0002]现有数据库大多提供了分区技术,分区表通过对分区列的判断,把分区列中不同的记录放到不同的分区中,分区表的类型包括范围(range)分区、哈希(hash)分区、列表(list)分区等,range分区表是以数据记录中列值的范围作为分区的划分条件,将数据记录存放到其列值所在的分区中。
[0003]分区表虽然支持海量数据存储,可以进行并行查询并降低节点故障的损失,但对关系查询的操作并不能很好地支持。例如:进行连接、聚集等操作时,数据涉及多个数据表,而分区表数据被切分在多个数据库中。
[0004]目前,对于多个range分区表的连接查询和聚集操作生成查询计划,常规的处理方法为,先对不同range分区表在各个节点中进行除连接之外的操作,并将结果汇总到某个节点,然后对中间结果进行连接操作。采用这种方式查询过于简单,未充分利用不同分区表存在分布重合的情况,造成数据迀移量和查询工作量较大,占用大量的网络及1资源,查询效率较低。
[0005]现有技术不足在于:
[0006]range分区表的关系查询操作造成数据迀移量和查询工作量较大,查询效率低下。

【发明内容】

[0007]本申请实施例提出了一种数据查询方法及装置,以解决现有技术中range分区表的关系查询操作造成数据迀移量和查询工作量较大,查询效率低下的技术问题。
[0008]本申请实施例提供了一种数据查询方法,包括如下步骤:
[0009 ]接收数据查询请求,确定待查询的分区表;
[0010]根据所述分区表的分区信息将待查询的分区表取并集,计算并集后区间的移动代价;
[0011 ]根据所述移动代价为所述区间重新确定数据节点;
[0012]在数据节点中进行数据查询。
[0013]本申请实施例提供了一种数据查询装置,包括:
[0014]接收模块,用于接收数据查询请求,确定待查询的分区表;
[0015]计算模块,用于根据所述分区表的分区信息将待查询的分区表取并集,计算并集后区间的移动代价;
[0016]重划分模块,用于根据所述移动代价为所述区间重新确定数据节点;
[0017]查询模块,用于在数据节点中进行数据查询。
[0018]有益效果如下:
[0019]本申请实施例所提供的数据查询方法及装置,在接收到数据查询请求、确定待查询的分区表后,根据所述分区表的分区信息将待查询的分区表取并集,计算并集后区间的移动代价,根据所述移动代价为所述区间重新确定数据节点,在数据节点中进行数据查询。由于本申请实施例所提供的技术方案,在接收到数据查询请求后,并不是直接在待查询的分区表中进行查询,而是根据分区表的分区信息取并集计算每个区间的移动代价,并根据移动代价为每个区间重新确定数据节点,即重新划分了区间,从而可以极大地减少数据迀移量,节约网络带宽和输入输出1资源,提高分区表查询效率。
【附图说明】
[0020]下面将参照附图描述本申请的具体实施例,其中:
[0021]图1示出了本申请实施例中数据查询方法实施的流程示意图;
[0022]图2示出了本申请实施例中状态树的结构示意图;
[0023]图3示出了本申请实施例中range分区表的重划分方法实施的流程示意图;
[0024]图4示出了本申请实施例中分区表区间示意图;
[0025]图5示出了本申请实施例中表A与表B并集状态树的结构示意图;
[0026]图6示出了本申请实施例中数据查询装置的结构示意图。
【具体实施方式】
[0027]为了使本申请的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。并且在不冲突的情况下,本说明中的实施例及实施例中的特征可以互相结合。
[0028]针对现有技术的不足,本申请实施例提出了一种数据查询方法及装置,下面进行说明。
[0029]图1示出了本申请实施例中数据查询方法实施的流程示意图,如图所示,所述数据查询方法可以包括如下步骤:
[0030]步骤101、接收数据查询请求,确定待查询的分区表;
[0031]步骤102、根据所述分区表的分区信息将待查询的分区表取并集,计算并集后区间的移动代价;
[0032]步骤103、根据所述移动代价为所述区间重新确定数据节点;
[0033]步骤104、在数据节点中进行数据查询。
[0034]具体实施中,用户可以输入查询条件进行数据查询,系统接收到用户发送的数据查询请求之后,可以根据数据查询请求中所要查询的数据确定待查询的分区表,涉及的待查询的分区表可能为多个,查询结果可能为多个分区表中相应数据的并集。
[0035]本申请实施例中,可以根据各个分区表的分区信息将待查询的分区表取并集,分区信息可以包括区间和区间对应的数据节点,计算取并集之后的所有区间的移动代价,根据计算出的移动代价重新确定每个区间存储的数据节点,将该区间的数据迀移至重新确定的数据节点上,最终数据查询时即可在重新分区后的数据节点中进行查询。
[0036]本申请实施例所提供的数据查询方法及装置,在接收到数据查询请求、确定待查询的分区表后,根据所述分区表的分区信息将待查询的分区表取并集,计算并集后区间的移动代价,根据所述移动代价为所述区间确定数据节点,在所述数据节点中进行数据查询。
[0037]由于本申请实施例所提供的技术方案,在接收到数据查询请求后,并不是直接在待查询的分区表中进行查询,而是根据分区表的分区信息取并集计算每个区间的移动代价,并根据移动代价为每个区间重新确定数据节点,即重新划分了数据节点上的区间,从而可以极大地减少数据迀移量,节约网络带宽和输入输出(10,lnput Output)资源,提高分区表查询效率。
[0038]实施中,所述根据所述移动代价为所述区间重新确定数据节点,具体可以为:
[0039]从并集后的区间中选出预设数量的移动代价最大的区间;
[0040]为所述预设数量的移动代价最大的区间重新确定数据节点;
[0041 ]将剩余的区间合并至已确定数据节点的区间。
[0042]具体实施中,根据移动代价为每个区间确定其对应的数据节点,可以首先从并集后的所有区间中选出一定数量的移动代价最大的区间,并为这些区间重新确定数据节点,然后将剩余的区间合并至这些区间中。
[0043]本申请实施例中,首先为那些移动代价最大的区间重新确定数据节点,再将剩余的区间与那些移动代价最大的区间合并,从而可以最大限度地降低数据迀移量,提高数据查询效率。
[0044]实施中,所述从并集后的区间中选出预设数量移动代价最大的区间,为所述预设数量的移动代价最大的区间确定数据节点,具体可以为:
[0045]将所述并集后的区间按照移动代价从大到小排序;
[0046]依次以待确定数据节点的区间作为节点,每个节点以所述区间在分区表中的数据节点作为分枝,构建状态树;
[0047]如果所述数据节点不可用,执行剪枝操作;
[0048]深度优先遍历(DFS,Depth-First-Search)所述状态树,确定所述预设数量的移动代价最大的区间及其数据节点。
[0049]本申请实施例中,为那些移动代价最大的区间确定数据节点时可以利用状态树的方式确定,具体实施时,可以首先以第一个被选择的区间作为根节点,以该区间在各分区表中的数据节点作为分枝,该区间有几个数据节点就可以有几个分枝;然后以第二个被选择的区间作为子节点,...以此类推,最终构建出一颗完整的状态树。
[0050]在构建状态树的过程中,如果某个区间的数据节点不可用,则将该分枝剪去,即剪枝操作。具体实施中,数据节点不可用可能是该数据节点故障、数据已满等。
[0051 ]本申请实施例中,从N个区间中选取M个与数据节点一一对应的区间,区间选取方法可以如下:
[0052]range分区表两侧分区包括的数据区域较广(无穷大和无穷小),可以优先为其选择单独的数据节点;
[0053]剩余区间可以根据移动代价cost进行从大到小排序;
[0054]将区间选择过程构建一颗状态树,第一个选择节点的区间可以作为树的根节点,每次选择都可以生成两个叶子节点;通过深度优先遍历(DFS)和剪枝,得到M个区间的节点的最优选择策略,使得节点间的数据迀移最小。
[0055]图2示出了本申请实施例中状态树的结构示意图,如图所示,
[0056]区间I对应节点a、d;
[0057]区间2对应节点b、d;
[0058]……
[0059]构成的状态树可以为:
[0060]区间I有两个叶子节点a、d,到区间2;
[0061 ]区间2有两个叶子节点b、d,到区间3;
[0062]……
[0063]区间2选择数据节点时,由于区间I已经占用数据节点d,贝IJd节点不可用,因此,进行剪枝。
[0064]在构建完状态树之后,可以通过深度优先遍历所述状态树,确定所述状态树的叶子节点(区间)的数据节点,即,根据最深的那条路径确定该路径上的节点为选出的区间,该节点的分枝为该区间的数据节点。
[0065]实施中,所述将剩余的区间合并至已确定数据节点的区间,具体可以为:将所述剩余的区间合并至与所述区间最近且数据量最小的区间。
[0066]具体实施中,将剩余的区间合
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1