一种数据查询方法及系统技术方案

技术编号:19593273 阅读:18 留言:0更新日期:2018-11-28 04:50
本发明专利技术实施例提出的一种数据查询方法,通过确定目标数据表,并对目标数据表进行分组,使查询目标更明确,避免了要到每个数据表中进行查询所造成的人力与时间的浪费,且实现了同时查询多个数据表,大大缩减了查询时间。

【技术实现步骤摘要】
一种数据查询方法及系统
本专利技术实施例涉及数据查询
,具体涉及一种数据查询方法及系统。
技术介绍
随着互联网用户的越来越普及,各个手机厂商都有自己的账号中心,存储用户数据,一般的手机厂商都会使用关系型数据库存储,随着用户量的增长,一般账号中心都不将用户数据存储在一张表中,都会采用多个库和多个表进行存储,也就是所谓的分库分表。这也是互联网公司的通用做法,不管是MySQL这类的关系型数据库或者是MongoDB这类的NoSQL数据库也不可能把所有的用户都放在一张表中,因为用户通常都是上千万甚至达到好几个亿。分库分表存储避免了单个库或者单个表承受过大的并发,导致运行缓慢。但是由于做了分表分库后,要想查询用户信息就不能在一个表中一次性查出,而需要到每个表中去查询,但是这对运营人员的查询提出了很大的麻烦,例如游戏运营人员需要去查询某次活动的中奖用户就需反复的查询,影响运营效率。上述对问题的发现过程的描述,仅用于辅助理解本专利技术的技术方案,并不代表承认上述内容是现有技术。
技术实现思路
为了解决上述技术问题或者至少部分地解决上述技术问题,本专利技术实施例提供了一种数据查询方法及系统。有鉴于此,第一方面,本专利技术实施例提供一种数据查询方法,用于对以分库分表方式存储的数据进行查询,包括:获取待查询用户的已知信息;根据用户的已知信息确定与所述待查询用户相关的数据所在的n个目标数据表,n≥1;对n个目标数据表进行分组;同时对每组目标数据表进行查询,提取与待查询用户相关的数据。获取待查询用户的已知信息,包括:接收包含有至少一个字段的查询模板,所述查询模板中的字段内容已填写;将已填写的字段内容确定为所述待查询用户的已知信息。根据用户的已知信息确定与所述待查询用户相关的数据所在的目标数据表,包括:将所述已知信息转化成用户编码UID;从已有的多个数据表中,根据所述用户编码UID确定与所述待查询用户相关的数据所在的目标数据表。将所述已知信息转换成用户编码UID,包括:根据预先建立的用户已知信息与用户编码UID的key-value映射关系将所述已知信息转换成用户编码UID。根据所述用户编码UID确定与所述待查询用户相关的数据所在的目标数据表,包括:采用与数据存储时所用的分库分表规则一致的分库分表规则对由所述已知信息转化成的用户编码UID进行分表计算;根据计算结果,确定用户编码UID对应的与所述待查询用户相关的数据所在的目标数据表。对n个目标数据表进行分组,包括:获取CPU的线程数;在每个线程中创建一个查询队列;以每一个目标数据表为一个子任务,将所有的子任务平均分配到查询队列中。同时对每组目标数据表进行查询,提取与待查询用户相关的数据,包括:同时开启全部线程,执行查询队列中的子任务,提取与待查询用户相关的数据;执行过程中,判断第一查询队列中的子任务是否执行完毕;当第一查询队列的子任务执行完毕时,判断第二队列中的任务是否执行完毕;当第二查询队列未执行完毕时,判断第二查询队列的子任务是否由1个线程执行;当第二查询队列的子任务由1个线程执行时,确定第二查询队列中预设线程的执行方向;控制所述第一查询队列对应的线程,从所述第二查询队列中与所述执行方向相反的端部,对所述第二查询队列中的子任务依次执行。提取出与待查询用户相关的数据。第二方面,本专利技术实施例还提供一种数据查询系统,用于对以分库分表方式存储的数据进行查询,包括:采集模块,用于获取待查询用户的已知信息;定位模块,用于根据用户的已知信息确定与所述待查询用户相关的数据所在的n个目标数据表,n≥1;拆分模块,用于对n个目标数据表进行分组;提取模块,用于同时对每组目标数据表进行查询,提取与待查询用户相关的数据。所述定位模块包括:转化子模块,用于将所述已知信息转化成用户编码UID;定位子模块,用于从已有的多个数据表中,根据所述用户编码UID确定与所述待查询用户相关的数据所在的目标数据表。所述转化子模块包括:映射单元,用于存储预先建立的用户已知信息与用户编码UID的key-value映射关系转化单元,用于将所述已知信息转换成用户编码UID。所述定位子模块包括:计算单元,用于采用与数据存储时所用的分库分表规则一致的分库分表规则对由所述已知信息转化成的用户编码UID进行分表计算;定位单元,用于根据计算结果,确定用户编码UID对应的与所述待查询用户相关的数据所在的目标数据表。所述拆分模块包括:采集子模块,用于获取CPU的线程数;队列创建子模块,用于在每个线程中创建一个查询队列;分组子模块,用于以每一个目标数据表为一个子任务,将所有的子任务平均分配到查询队列中。所述提取模块包括:执行子模块,用于同时开启全部线程,执行查询队列中的子任务,提取与待查询用户相关的数据;所述执行子模块包括:第一判断单元,用于在查询过程中,判断第一查询队列中的子任务是否执行完毕;第二判断单元,用于当第一查询队列的子任务执行完毕时,判断第二队列中的任务是否执行完毕;第三判断单元,用于当第二查询队列未执行完毕时,判断第二查询队列的子任务是否由1个线程执行;方向确定单元,用于当第二查询队列的子任务由1个线程执行时,确定第二查询队列中预设线程的执行方向;控制单元,用于控制所述第一查询队列对应的线程,从所述第二查询队列中与所述执行方向相反的端部,对所述第二查询队列中的子任务依次执行。第三方面,本专利技术实施例还提出一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如第一方面所述方法的步骤。相比现有技术,本专利技术实施例提出的一种数据查询方法,通过确定目标数据表,并对目标数据表进行分组,使查询目标更明确,避免了要到每个数据表中进行查询所造成的人力与时间的浪费,且实现了同时查询多个数据表,大大缩减了查询时间。附图说明为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为实现本专利技术各个实施例一个可选的移动终端的硬件结构示意;图2为图1中移动终端的通信系统示意图;图3为本专利技术一个实施例提供的一种数据查询方法的流程图;图4为本专利技术一个实施例提供的一种数据查询系统的框图;图5为本专利技术一个实施例提供的一种移动终端的框图。具体实施方式为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术的一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本专利技术保护的范围。现在将参考附图描述实现本专利技术各个实施例的移动终端。在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本专利技术的说明,其本身并没有特定的意义。因此,“模块”与“部件”可以混合地使用。移动终端可以以各种形式来实施。例如,本专利技术中描述的终端可以包括诸如移动电话、智能电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒本文档来自技高网...

【技术保护点】
1.一种数据查询方法,用于对以分库分表方式存储的数据进行查询,其特征在于,包括:获取待查询用户的已知信息;根据用户的已知信息确定与所述待查询用户相关的数据所在的n个目标数据表,n≥1;对n个目标数据表进行分组;同时对每组目标数据表进行查询,提取与待查询用户相关的数据。

【技术特征摘要】
1.一种数据查询方法,用于对以分库分表方式存储的数据进行查询,其特征在于,包括:获取待查询用户的已知信息;根据用户的已知信息确定与所述待查询用户相关的数据所在的n个目标数据表,n≥1;对n个目标数据表进行分组;同时对每组目标数据表进行查询,提取与待查询用户相关的数据。2.根据权利要求1所述的数据查询方法,其特征在于,获取待查询用户的已知信息,包括:接收包含有至少一个字段的查询模板,所述查询模板中的字段内容已填写;将已填写的字段内容确定为所述待查询用户的已知信息。3.根据权利要求1所述的数据查询方法,其特征在于,根据用户的已知信息确定与所述待查询用户相关的数据所在的目标数据表,包括:将所述已知信息转化成用户编码UID;从已有的多个数据表中,根据所述用户编码UID确定与所述待查询用户相关的数据所在的目标数据表。4.根据权利要求3所述的数据查询方法,其特征在于,将所述已知信息转换成用户编码UID,包括:根据预先建立的用户已知信息与用户编码UID的key-value映射关系将所述已知信息转换成用户编码UID。5.根据权利要求3所述的数据查询方法,其特征在于,根据所述用户编码UID确定与所述待查询用户相关的数据所在的目标数据表,包括:采用与数据存储时所用的分库分表规则一致的分库分表规则对由所述已知信息转化成的用户编码UID进行分表计算;根据计算结果,确定用户编码UID对应的与所述待查询用户相关的数据所在的目标数据表。6.根据权利要求1所述的数据查询方法,其特征在于,对n个目标数据表进行分组,包括:获取CPU的线程数;在每个线程中创建一个查询队列;以每一个目标数据表为一个子任务,将所有的子任务平均分配到查询队列中。7.根据权利要求6所述的数据查询方法,其特征在于,同时对每组目标数据表进行查询,提取与待查询用户相关的数据,包括:同时开启全部线程,执行查询队列中的子任务,提取与待查询用户相关的数据;执行过程中,判断第一查询队列中的子任务是否执行完毕;当第一查询队列的子任务执行完毕时,判断第二队列中的任务是否执行完毕;当第二查询队列未执行完毕时,判断第二查询队列的子任务是否由1个线程执行;当第二查询队列的子任务由1个线程执行时,确定第二查询队列中预设线程的执行方向;控制所述第一查询队列对应的线程,从所述第二查询队列中与所述执行方向相反的端部,对所述第二查询队列中的...

【专利技术属性】
技术研发人员:王秀琳
申请(专利权)人:努比亚技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1