1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 数据查询方法 装置 计算机设备和可读存储介质与流程

数据查询方法 装置 计算机设备和可读存储介质与流程

时间:2022-06-30 03:50:18

相关推荐

数据查询方法 装置 计算机设备和可读存储介质与流程

本发明涉及电子与信息技术领域,特别是涉及一种数据查询方法、装置、计算机设备和可读存储介质。

背景技术:

mongo数据库是一个高性能、开源、无模式的文档型数据库,它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型;mongo数据库最大的特点是它支持的查询语言非常强大,可以实现类似关系数据库单表查询的绝大部分功能。

在进行数据的存储时,通常是将所有数据存储在一个mongo数据库集群中,而一个mongo数据库集群会包含多个节点,且节点之间存在主备关系,例如,一个主节点关联的两个从节点即为一个主备节点,进行数据存储时通过hash分片将数据均匀分布在mongo数据库集群中的不同主节点,随着数据量增长会导致数据插入和查询性能大幅下降,此时需要增加一组主备节点提高mongo数据库集群的读写、查询性能,但是在增加主备节点时需要将现有主节点上的部分数据量迁移到新增加的主备节点上,使数据达到一个平衡状态,而该过程会严重影响到业务的操作时间,使时长增加2-5倍,这种影响对于业务来说是致命的,会影响到大量的用户体验;另外对于新增的主备节点配置,必须不低于现有节点,否则可能因为新增节点的性能而拖慢整个业务。因此,即便是定时增加主备节点也很难保证随着数据量的增加对数据进行合理的存储,由于数据不能进行合理的存储,这样也会对查询的速度造成影响,影响查询效率。

因此,传统的mongo数据库数据存储方法当存储的数据量过大时,存在数据查询缓慢的问题。

技术实现要素:

基于此,有必要针对传统的mongo数据库数据存储方法当存储的数据量过大时,存在数据查询缓慢的问题,提供一种数据查询方法、装置、计算机设备和可读存储介质。

第一方面,本发明实施例提供一种数据查询方法,所述方法包括:

确定待查询业务的业务优先权重;

确定所述待查询业务针对mongo数据库中的目标数据集合;所述目标数据集合包括所述mongo数据库中的冷库数据集合;

根据所述业务优先权重和所述目标数据集合的数量,确定所述待查询业务对应的执行线程数;所述执行线程数小于或等于所述目标数据集合的数量;

根据所述执行线程数,为所述待查询业务分配对应数量的执行线程;

调用所述分配的对应数量的执行线程,以查询所述目标数据集合中的部分集合或者全部集合。

在其中一个实施例中,所述根据所述执行线程数,为所述待查询业务分配对应数量的执行线程,包括:

若所述执行线程数大于线程池中空闲执行线程的总数,则将所述空闲执行线程分配给所述待查询业务,并在所述线程池中存在新的空闲线程时,将所述新的空闲线程分配给等待中的所述待查询业务;

若所述执行线程数小于或等于所述空闲执行线程的总数,则从所述空闲执行线程中选择与所述执行线程数相匹配的空闲线程,并分配给所述待查询业务。

在其中一个实施例中,所述根据所述业务优先权重和所述目标数据集合的数量,确定所述待查询业务对应的执行线程数,包括:

获取所述业务优先权重对应的权重系数;

获取所述业务优先权重对应的权重系数与所述目标数据集合的数量的乘积值,将所述乘积值确定为所述待查询业务对应的执行线程数。

在其中一个实施例中,所述mongo数据库还包括热库数据集合;所述冷库数据集合中的数据包括所述热库数据集合中的数据;所述冷库数据集合包括不同时间段所对应的多个数据集合。

在其中一个实施例中,所述方法还包括:

定时检测所述热库中的数据是否符合所述热库的时间要求,将不符合所述时间要求的数据从所述热库中移出。

在其中一个实施例中,所述方法还包括:

实时监听所述热库的数据操作日志,从所述数据操作日志中读取所述热库中的更新数据,根据所述更新数据的日期字段值,确定所述更新数据在所述冷库中对应的数据集合,并将所述更新数据写入所述对应的数据集合。

在其中一个实施例中,所述方法还包括:

若所述冷库中不存在所述更新数据对应的数据集合,则根据所述更新数据的日期字段值,在所述冷库中创建新的数据集合,并将所述更新数据写入所述新的数据集合中。

第二方面,本发明实施例提供一种数据查询装置,所述装置包括:

第一确定模块,用于确定待查询业务的业务优先权重;

第二确定模块,用于确定所述待查询业务针对mongo数据库中的目标数据集合;所述目标数据集合包括所述mongo数据库中的冷库数据集合;

第三确定模块,用于根据所述业务优先权重和所述目标数据集合的数量,确定所述待查询业务对应的执行线程数;所述执行线程数小于或等于所述目标数据集合的数量;

分配模块,用于根据所述执行线程数,为所述待查询业务分配对应数量的执行线程;

查询模块,用于调用所述分配的对应数量的执行线程,以查询所述目标数据集合中的部分集合或者全部集合。

第三方面,本发明实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:

确定待查询业务的业务优先权重;

确定所述待查询业务针对mongo数据库中的目标数据集合;所述目标数据集合包括所述mongo数据库中的冷库数据集合;

根据所述业务优先权重和所述目标数据集合的数量,确定所述待查询业务对应的执行线程数;所述执行线程数小于或等于所述目标数据集合的数量;

根据所述执行线程数,为所述待查询业务分配对应数量的执行线程;

调用所述分配的对应数量的执行线程,以查询所述目标数据集合中的部分集合或者全部集合。

第四方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:

确定待查询业务的业务优先权重;

确定所述待查询业务针对mongo数据库中的目标数据集合;所述目标数据集合包括所述mongo数据库中的冷库数据集合;

根据所述业务优先权重和所述目标数据集合的数量,确定所述待查询业务对应的执行线程数;所述执行线程数小于或等于所述目标数据集合的数量;

根据所述执行线程数,为所述待查询业务分配对应数量的执行线程;

调用所述分配的对应数量的执行线程,以查询所述目标数据集合中的部分集合或者全部集合。

上述实施例提供的数据查询方法、装置、计算机设备和可读存储介质中,计算机设备确定待查询业务的业务优先权重;确定待查询业务针对mongo数据库中的目标数据集合;目标数据集合包括mongo数据库中的冷库数据集合;根据业务优先权重和目标数据集合的数量,确定待查询业务对应的执行线程数;执行线程数小于或等于所述目标数据集合的数量;根据执行线程数,为待查询业务分配对应数量的执行线程;调用分配的对应数量的执行线程,以查询目标数据集合中的部分集合或者全部集合。在该方法中,由于不同的待查询业务对应有不同的业务优先权重,而不同权重的业务分配的执行线程数是有限的,这样根据待查询业务的业务优先权重和目标数据集合的数量,确定的待查询业务对应的执行线程数是比较准确的,所确定的执行线程数就能够完成对待查询业务的查询,避免了资源的浪费,提高了确定的待查询业务对应的执行线程数的准确度;进而根据确定的执行线程数,为待查询业务分配对应数量的执行线程,调用分配的执行线程,查询目标数据集合中的部分集合或者全部集合,由于执行线程数是确定的,这样会为待查询业务分配合理的执行线程数,在进行待查询业务的查询时只会调用待查询业务所对应的执行线程,不会同时占用过多的线程执行待查询业务的查询,使得线程的执行效率得到了提高,进而提高了对待查询业务的数据查询效率;另外,该方法中待查询业务针对mongo数据库中的目标数据集合包括的是mongo数据库中的冷库数据集合,通过将数据存储在冷库数据集合中,相比于传统技术中将所有数据存储在一个mongo数据库集群中,通过在mongo数据库集群中增加主备节点对新增数据进行存储的方法,这样便于对数据进行管理,提高了对数据的管理效率,进而在确定了待查询业务针对的目标数据集合和确定的执行线程后,就可以迅速地调用确定的执行线程,以查询目标数据集合中的部分集合或者全部集合,提高了对待查询业务的数据查询效率。

附图说明

图1为一个实施例提供的计算机设备的内部结构示意图;

图2为一个实施例提供的数据查询方法的流程示意图;

图3为另一个实施例提供的数据查询方法的流程示意图;

图4为一个实施例提供的数据存储的示意图;

图5为一个实施例提供的数据查询装置结构示意图;

图6为一个实施例提供的数据查询装置结构示意图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请实施例提供的数据查询方法,可以适用于如图1所示的计算机设备。该计算机设备包括通过系统总线连接的处理器、存储器,该存储器中存储有计算机程序,处理器执行该计算机程序时可以执行下述方法实施例的步骤。可选的,该计算机设备还可以包括网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器,该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。可选的,该计算机设备可以是服务器,可以是个人计算机,还可以是个人数字助理,还可以是其他的终端设备,例如平板电脑、手机等等,还可以是云端或者远程服务器,本申请实施例对计算机设备的具体形式并不做限定。

需要说明的是,本申请实施例提供的数据查询方法,其执行主体可以是上述计算机设备,具体地,还可以是上述计算机设备中处理器、存储在存储器中的软件程序或者是处理器和软件程序两者的结合。下述方法实施例中,均以执行主体是计算机设备为例来进行说明。

下面以具体的实施例对本发明的技术方案以及本发明的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。

图2为一个实施例提供的数据查询方法的流程示意图。本实施例涉及的是计算机设备为待查询业务分配对应数量的执行线程,调用分配的执行线程,查询待查询业务针对的目标数据集合中的部分集合或者全部集合的具体实现过程。如图2所示,该方法可以包括:

s201,确定待查询业务的业务优先权重。

具体的,计算机设备确定待查询业务的业务优先权重。可选的,计算机设备可以根据待查询业务的业务标识,确定待查询业务的业务优先权重。可以理解的是,不同的业务对应有不同的业务标识,各业务标识对应有不同的业务优先权重。示例性地,若某待查询业务的业务标识为紧急业务,则计算机设备可以将该待查询业务的业务优先权重确定为高;若某待查询业务的业务标识为正常业务,则计算机设备可以将该待查询业务的业务优先权重确定为中;若某待查询业务的业务标识为一般业务,则计算机设备可以将该待查询业务的业务优先权重确定为低。

s202,确定待查询业务针对mongo数据库中的目标数据集合;目标数据集合包括所述mongo数据库中的冷库数据集合。

具体的,计算机设备确定待查询业务针对mongo数据库中的目标数据集合。其中,目标数据集合包括mongo数据库中的冷库数据集合。可选的,计算机设备可以根据待查询业务的业务类型确定该待查询业务针对mongo数据库中的目标数据集合。例如,某待查询业务的业务类型为查询近三个月的数据,则计算机设备可以根据该业务类型确定近三个月的数据针对mongo数据库中的冷库数据集合。

s203,根据业务优先权重和目标数据集合的数量,确定待查询业务对应的执行线程数;执行线程数小于或等于目标数据集合的数量。

具体的,计算机设备根据上述确定的待查询业务的业务优先权重和确定的待查询业务针对的目标数据集合的数量,确定该待查询业务对应的执行线程数;其中,执行线程数小于或等于目标数据集合的数量,也就是说,执行线程数可以与目标数据集合的数量相等,一个执行线程对应一个目标数据集合,也可以是执行线程数小于目标数据集合的数量,即确定的执行线程查询目标数据集合中的部分集合。

s204,根据执行线程数,为待查询业务分配对应数量的执行线程。

具体的,计算机设备根据上述确定的待查询业务对应的执行线程数,为上述待查询业务分配对应数量的执行线程。可选的,计算机设备可以根据确定的执行线程数和线程池中空闲线程的数量,为待查询业务分配对应数量的执行线程。可选的,计算机设备为待查询业务分配的执行线程的数量可以小于执行线程数,也可以等于执行线程数。

s205,调用分配的对应数量的执行线程,以查询目标数据集合中的部分集合或者全部集合。

具体的,计算机设备调用上述分配的对应数量的执行线程,以查询目标数据集合中的部分集合或者全部集合。可以理解的是,若计算机设备为待查询业务分配的执行线程的数量小于执行线程数时,则计算机设备调用分配的对应数量的执行线程,查询的是目标数据集合中的部分集合;若计算机设备为待查询业务分配的执行线程的数量等于执行线程数时,则计算机设备调用分配的对应数量的执行线程,查询的是目标数据集合中的全部集合。可以理解的是,计算机设备在进行待查询业务的查询时只会调用待查询业务所对应的执行线程,不会同时占用过多的线程执行待查询业务的查询,使得线程的执行效率得到了提高,进而提高了对待查询业务的数据查询效率。

在本实施例中,由于不同的待查询业务对应有不同的业务优先权重,而不同权重的业务分配的执行线程数是有限的,这样根据待查询业务的业务优先权重和目标数据集合的数量,确定的待查询业务对应的执行线程数是比较准确的,所确定的执行线程数就能够完成对待查询业务的查询,避免了资源的浪费,提高了确定的待查询业务对应的执行线程数的准确度;进而根据确定的执行线程数,为待查询业务分配对应数量的执行线程,调用分配的执行线程,查询目标数据集合中的部分集合或者全部集合,由于执行线程数是确定的,这样会为待查询业务分配合理的执行线程数,在进行待查询业务的查询时只会调用待查询业务所对应的执行线程,不会同时占用过多的线程执行待查询业务的查询,使得线程的执行效率得到了提高,进而提高了对待查询业务的数据查询效率;另外,待查询业务针对mongo数据库中的目标数据集合包括的是mongo数据库中的冷库数据集合,通过将数据存储在冷库数据集合中,相比于传统技术中将所有数据存储在一个mongo数据库集群中,通过在mongo数据库集群中增加主备节点对新增数据进行存储的方法,这样便于对数据进行管理,提高了对数据的管理效率,进而在确定了待查询业务针对的目标数据集合和确定的执行线程后,就可以迅速地调用确定的执行线程,以查询目标数据集合中的部分集合或者全部集合,提高了对待查询业务的数据查询效率。

在一个实施例中,上述s204,包括:若执行线程数大于线程池中空闲执行线程的总数,则将空闲执行线程分配给待查询业务,并在线程池中存在新的空闲线程时,将新的空闲线程分配给等待中的待查询业务;若执行线程数小于或等于空闲执行线程的总数,则从空闲执行线程中选择与执行线程数相匹配的空闲线程,并分配给待查询业务。

具体的,若计算机设备确定的待查询业务对应的执行线程数大于线程池中空闲执行线程的总数,则计算机设备将空闲执行线程分配给待查询业务,此时,计算机设备为待查询业务分配的执行线程的数量小于待查询业务对应的执行线数,查询的是目标数据集合中的部分集合,并在线程池中存在新的空闲线程时,将新的空闲线程分配给待查询业务,将继续查询目标数据集合中等待被查询的部分集合,直至分配的线程数与确定的待查询业务对应的执行线程数相匹配;若计算机设备确定的待查询业务对应的执行线程数小于线程池中空闲执行线程的总数,则计算机设备从线程池中空闲执行线程中选择与执行线程数相匹配的空闲线程,并分配给待查询业务,计算机设备为待查询业务分配的执行线程的数量等于待查询业务对应的执行线数,查询的是目标数据集合中的全部集合。例如,确定的待查询业务对应的执行线程数为5,若线程池中空闲执行线程的总数为2,则计算机设备将该空闲的2条执行线程分配给待查询业务,并在线程池中存在新的空闲线程时,将新的空闲线程分配给待查询业务,直至为待查询业务分配了5条线程为止;若线程池中空闲执行线程的总数为7,则计算机设备从该7条空闲执行线程选择5条空闲的执行线程分配给待查询业务。

在本实施例中,计算机设备根据确定的执行线程数与线程池中空闲执行线程的总数,为待查询业务分配对应数量的执行线程,这样会为待查询业务分配合理的执行线程,在进行待查询业务的查询时只会调用待查询业务所对应的执行线程,不会同时占用过多的线程执行待查询业务的查询,使得线程的执行效率得到了提高,进而提高了对待查询业务的数据查询效率。

图3为另一个实施例提供的数据查询方法的流程示意图。本实施例涉及的是计算机设备根据待查询业务的业务优先权重和确定的待查询业务针对的目标数据集合的数量,确定待查询业务对应的执行线程数的具体实现过程。如图3所示,在上述实施例的基础上,作为一种可选的实施方式,上述s203,包括:

s301,获取业务优先权重对应的权重系数。

具体的,计算机设备在确定了待查询业务的业务优先权重后,获取业务优先权重对应的权重系数。可选的,计算机设备可以根据预设的业务优先权重与权重系数的对应关系,获取确定的业务优先权重对应的权重系数。例如,预设的业务优先权重与权重系数的对应关系可以为:业务优先权重为高,则对应的权重系数为1,业务优先权重为中,则对应的权重系数为1/2,业务优先权重为低,则对应的权重系数为1/5。

s302,获取业务优先权重对应的权重系数与目标数据集合的数量的乘积值,将乘积值确定为待查询业务对应的执行线程数。

具体的,计算机设备获取到业务优先权重对应的权重系数后,获取上述待查询业务的业务优先权重对应的权重系数与上述确定的待查询业务针对的目标数据集合的数量的乘积值,将获取的乘积值确定为待查询业务对应的执行线程数。可以理解的是,若待查询业务的业务优先权重对应的权重系数与确定的待查询业务针对的目标数据集合的数量的乘积值为非整数,则对乘积值取整加1得到待查询业务对应的执行线程数。例如,获取的业务优先权重对应的权重系数为1/2,确定的待查询业务针对的目标数据集合的数量为8,则得到的待查询业务的业务优先权重对应的权重系数与待查询业务针对的目标数据集合的数量的乘积值为4,则计算机设备将该乘积值4确定为待查询业务对应的执行线程数,也就是确定的待查询业务对应的执行线程数为4;若确定的待查询业务针对的目标数据集合的数量为9,得到的待查询业务的业务优先权重对应的权重系数与待查询业务针对的目标数据集合的数量的乘积值为4.5,则计算机设备确定待查询业务对应的执行线程数为5。

在本实施例中,计算机设备获取待查询业务优先权重对应的权重系数,获取业务优先权重对应的权重系数与目标数据集合的数量的乘积值的过程十分简单,提高了得到待查询业务的业务优先权重对应的权重系数与目标数据集合的数量的乘积值的效率,即提高了确定待查询业务对应的执行线程数的效率。

图4为一个实施例提供的数据存储的示意图。在上述实施例的基础上,作为一种可选的实施方式,上述mongo数据库还包括热库数据集合;冷库数据集合中的数据包括热库数据集合中的数据;冷库数据集合包括不同时间段所对应的多个数据集合。

具体的,上述mongo数据库还包括热库数据集合;其中,冷库数据集合中的数据包括热库数据集合中的数据,且冷库数据集合包括不同时间段所对应的多个数据集合。。可以理解的是,热库中存储的数据为活跃度比较高的一些数据,也就是查询频率较高、与当前查询时间最接近的数据;冷库中存储的数据为与当前查询时间相隔较远、查询频率较低的数据。如图4所示,图4左边部分为传统技术中对数据的存储方式,所有的数据都存储在一个表中,表中包含全部的数据,且存储的数据是不分日期进行的存储,若要对表进行扩容是通过增加分片节点的方式扩容该存储数据的表。图4右边部分为本申请提供的数据存储方式,将数据分为冷热数据,热库仅保留最近n个月的数据,用于实时查询业务;冷库中存储的数据按照时间划分为多个mongo集群,每个mongo集群中的数据按照月份划分为多张表,每个月一张表,用于非实时查询业务。可以理解的是,本申请中提供的数据存储方式,热库仅存储最近n个月的数据,所以随着业务时间的增长,热库的数据量并不会急剧增加,所以对扩容的需求相对来说少很多(扩容引起增加存储量(磁盘)、增加查询性能(cpu、内存)、增加插入性能(内存、磁盘),而热库因为数据量少很多则可以节省存储量,查询时因过滤数据要少很多则可以节省cpu及内存,插入需要维护索引信息,在数据量少的情况下同样可以节省cpu和内存),同时每次扩容需要增加较多节点(正常增加时会增加主备节点),这些节点的硬件配置都很高,如此会相应占用更多的资源,所以,本申请提供的热库可以节省较多硬件资源。因此热库可使用较高的硬件配置以便于数据的存储和查询,同时,由于冷库存储数据量相较大,这部分数据的硬件成本是增加的,所以冷库可以使用较低的硬件配置来满足业务查询,以此降低存储的成本,可选的,热库的存储器可以采用固态硬盘,冷库的存储器可以采用机械硬盘,相比现有仅采用一个高配置的数据集合存储和查询数据的方式相比,能够节约存储的成本。

在本实施例中,mongo数据库还包括热库数据集合,冷库数据集合中的数据包括热库数据集合中的数据,通过将数据划分为冷热数据,分别存储在冷库和热库中,这样便于对数据进行管理,提高了对数据的管理效率,进而在确定了待查询业务针对的目标数据集合和确定的执行线程后,计算机设备就能够迅速地调用确定的执行线程,以查询目标数据集合中的部分集合或者全部集合,提高了待查询业务的查询效率。

在上述实施例的基础上,作为一种可选的实施方式,可选的,上述方法还包括:定时检测热库中的数据是否符合热库的时间要求,将不符合时间要求的数据从热库中移出。

具体的,计算机设备定时检测热库中的数据是否符合热库的时间要求,将不符合时间要求的数据从热库中移出。可选的,计算机设备可以在热库中增加(如果热库中已经包含了日期字段可不增加)一个日期字段用于检索过期数据并删除,然后在集合上增加该字段的ttl索引,ttl索引可以定时清除超过指定时间的记录,热库会自动按照该索引清除符合条件的数据。需要说明的是,如果业务数据主要集中在白天,则数据清除需避开高峰时段,减少数据清除对热库性能的影响,而避免的方式可以通过对ttl字段值做一次映射,例如:业务数据在白天8-23点增加量很大,此时我们设置ttl字段值集中在23-8点,这样白天就不会检索到数据,不做清除操作。

在本实施例中,计算机设备定时检测热库中数据是否符合热库的时间要求,将不符合时间要求的数据从热库中移出,这样可以降低热库数据的存储量,便于对数据管理,能够降低对热库存储器的要求,节省较多的硬件成本。

在一些场景中,计算机设备会对热库中存储的数据进行更新,可选的,计算机设备会实时监听热库的数据操作日志,从数据操作日志中读取热库中的更新数据,根据更新数据的日期字段值,确定更新数据在冷库中对应的数据集合,并将更新数据写入冷库中对应的数据集合。可选的,若冷库中不存在上述更新数据对应的数据集合,则计算机设备根据上述更新数据的日期字段值,在冷库中创建新的数据集合,并将更新数据写入新的数据集合中。

在本实施例中,计算机设备实时监听热库的数据操作日志,读取热库中的更新数据,根据更新数据的日期字段值,将更新的数据写入冷库中的数据集合,保证了冷库中的数据集合存储的数据可以进行同步地更新,保证了待查询的业务有对应的数据可以进行查询,进而提高了待查询业务的查询效率。

应该理解的是,虽然图2-4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

图5为一个实施例提供的数据查询装置结构示意图。如图5所示,该装置可以包括:第一确定模块10、第二确定模块11、第三确定模块12、分配模块13和查询模块14。

具体的,第一确定模块10,用于确定待查询业务的业务优先权重;

第二确定模块11,用于确定待查询业务针对mongo数据库中的目标数据集合;目标数据集合包括mongo数据库中的冷库数据集合;

第三确定模块12,用于根据业务优先权重和目标数据集合的数量,确定待查询业务对应的执行线程数;执行线程数小于或等于目标数据集合的数量;

分配模块13,用于根据执行线程数,为待查询业务分配对应数量的执行线程;

查询模块14,用于调用分配的对应数量的执行线程,以查询目标数据集合中的部分集合或者全部集合。

可选的,mongo数据库还包括热库数据集合;冷库数据集合中的数据包括所热库数据集合中的数据。

本实施例提供的数据查询装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。

图6为一个实施例提供的数据查询装置结构示意图。在上述实施例的基础上,可选的,如图6所示,上述分配模块13包括:第一分配单元131和第二分配单元132。

具体的,第一分配单元131,用于若执行线程数大于线程池中空闲执行线程的总数,则将空闲执行线程分配给待查询业务,并在所述线程池中存在新的空闲线程时,将所述新的空闲线程分配给等待中的所述待查询业务;

第二分配单元132,用于若执行线程数小于或等于空闲执行线程的总数,则从空闲执行线程中选择与执行线程数相匹配的空闲线程,并分配给待查询业务。

本实施例提供的数据查询装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。

请继续参见图6,在上述实施例的基础上,可选的,如图6所示,上述第三确定模块12包括:第一获取单元121和第二获取单元122。

具体的,第一获取单元121,用于获取业务优先权重对应的权重系数;

第二获取单元122,用于获取业务优先权重对应的权重系数与目标数据集合的数量的乘积值,将乘积值确定为待查询业务对应的执行线程数。

本实施例提供的数据查询装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。

请继续参见图6,在上述实施例的基础上,可选的,如图6所示,上述装置还包括:移出模块15。

具体的,删除模块15,用于定时检测热库中的数据是否符合热库的时间要求,将不符合时间要求的数据从热库中移出。

本实施例提供的数据查询装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。

请继续参见图6,在上述实施例的基础上,可选的,如图6所示,上述装置还包括:第一写入模块16。

具体的,第一写入模块16,用于实时监听热库的数据操作日志,从数据操作日志中读取热库中的更新数据,根据更新数据的日期字段值,确定更新数据在冷库中对应的数据集合,并将更新数据写入对应的数据集合。

本实施例提供的数据查询装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。

请继续参见图6,在上述实施例的基础上,可选的,如图6所示,上述装置还包括:第二写入模块17。

具体的,第二写入模块17,用于若冷库中不存在更新数据对应的数据集合,则根据更新数据的日期字段值,在冷库中创建新的数据集合,并将更新数据写入新的数据集合中。

本实施例提供的数据查询装置,可以执行上述方法实施例,其实现原理和技术效果类似,在此不再赘述。

关于数据查询装置的具体限定可以参见上文中对于数据查询方法的限定,在此不再赘述。上述数据查询装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:

确定待查询业务的业务优先权重;

确定待查询业务针对的目标数据集合;

根据业务优先权重和目标数据集合的数量,确定待查询业务对应的执行线程数;执行线程数小于或等于目标数据集合的数量;

根据执行线程数,为待查询业务分配对应数量的执行线程;

调用对应数量的执行线程,以查询目标数据集合中的部分集合或者全部集合。

上述实施例提供的计算机设备,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。

在一个实施例中,提供了一种可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

确定待查询业务的业务优先权重;

确定待查询业务针对的目标数据集合;

根据业务优先权重和目标数据集合的数量,确定待查询业务对应的执行线程数;执行线程数与目标数据集合的数量的比值小于或等于1;

根据执行线程数,为待查询业务分配对应数量的执行线程;

调用对应数量的执行线程,以查询目标数据集合中的部分集合或者全部集合。

上述实施例提供的可读存储介质,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

技术特征:

1.一种数据查询方法,其特征在于,所述方法包括:

确定待查询业务的业务优先权重;

确定所述待查询业务针对mongo数据库中的目标数据集合;所述目标数据集合包括所述mongo数据库中的冷库数据集合;

根据所述业务优先权重和所述目标数据集合的数量,确定所述待查询业务对应的执行线程数;所述执行线程数小于或等于所述目标数据集合的数量;

根据所述执行线程数,为所述待查询业务分配对应数量的执行线程;

调用所述分配的对应数量的执行线程,以查询所述目标数据集合中的部分集合或者全部集合。

2.根据权利要求1所述的方法,其特征在于,所述根据所述执行线程数,为所述待查询业务分配对应数量的执行线程,包括:

若所述执行线程数大于线程池中空闲执行线程的总数,则将所述空闲执行线程分配给所述待查询业务,并在所述线程池中存在新的空闲线程时,将所述新的空闲线程分配给等待中的所述待查询业务;

若所述执行线程数小于或等于所述空闲执行线程的总数,则从所述空闲执行线程中选择与所述执行线程数相匹配的空闲线程,并分配给所述待查询业务。

3.根据权利要求1所述的方法,其特征在于,所述根据所述业务优先权重和所述目标数据集合的数量,确定所述待查询业务对应的执行线程数,包括:

获取所述业务优先权重对应的权重系数;

获取所述业务优先权重对应的权重系数与所述目标数据集合的数量的乘积值,将所述乘积值确定为所述待查询业务对应的执行线程数。

4.根据权利要求1所述的方法,其特征在于,所述mongo数据库还包括热库数据集合;所述冷库数据集合中的数据包括所述热库数据集合中的数据;所述冷库数据集合包括不同时间段所对应的多个数据集合。

5.根据权利要求4所述的方法,其特征在于,所述方法还包括:

定时检测所述热库中的数据是否符合所述热库的时间要求,将不符合所述时间要求的数据从所述热库中移出。

6.根据权利要求5所述的方法,其特征在于,所述方法还包括:

实时监听所述热库的数据操作日志,从所述数据操作日志中读取所述热库中的更新数据,根据所述更新数据的日期字段值,确定所述更新数据在所述冷库中对应的数据集合,并将所述更新数据写入所述对应的数据集合。

7.根据权利要求6所述的方法,其特征在于,所述方法还包括:

若所述冷库中不存在所述更新数据对应的数据集合,则根据所述更新数据的日期字段值,在所述冷库中创建新的数据集合,并将所述更新数据写入所述新的数据集合中。

8.一种数据查询装置,其特征在于,所述装置包括:

第一确定模块,用于确定待查询业务的业务优先权重;

第二确定模块,用于确定所述待查询业务针对mongo数据库中的目标数据集合;所述目标数据集合包括所述mongo数据库中的冷库数据集合;

第三确定模块,用于根据所述业务优先权重和所述目标数据集合的数量,确定所述待查询业务对应的执行线程数;所述执行线程数小于或等于所述目标数据集合的数量;

分配模块,用于根据所述执行线程数,为所述待查询业务分配对应数量的执行线程;

查询模块,用于调用所述分配的对应数量的执行线程,以查询所述目标数据集合中的部分集合或者全部集合。

9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1-7中任一项所述方法的步骤。

10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-7中任一项所述方法的步骤。

技术总结

本发明涉及一种数据查询方法、装置、计算机设备和可读存储介质,该方法包括:确定待查询业务的业务优先权重;确定待查询业务针对Mongo数据库中的目标数据集合;根据业务优先权重和目标数据集合的数量,确定待查询业务对应的执行线程数;执行线程数小于或等于目标数据集合的数量;根据执行线程数,为待查询业务分配对应数量的执行线程;调用分配的对应数量的执行线程,以查询目标数据集合中的部分集合或者全部集合。该方法中由于执行线程数是确定的,会为待查询业务分配合理的执行线程数,不会同时占用过多的线程执行待查询业务的查询,使得线程的执行效率得到了提高,进而提高了对待查询业务的数据查询效率。

技术研发人员:刘召召;冯智泉

受保护的技术使用者:广州亚美信息科技有限公司

技术研发日:.09.20

技术公布日:.02.21

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。