CN110765157B - 数据查询方法、装置、计算机设备及存储介质 - Google Patents
数据查询方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN110765157B CN110765157B CN201910842163.7A CN201910842163A CN110765157B CN 110765157 B CN110765157 B CN 110765157B CN 201910842163 A CN201910842163 A CN 201910842163A CN 110765157 B CN110765157 B CN 110765157B
- Authority
- CN
- China
- Prior art keywords
- query
- task
- data
- dimension
- client
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 41
- 238000004364 calculation method Methods 0.000 claims description 68
- 238000004590 computer program Methods 0.000 claims description 15
- 238000004806 packaging method and process Methods 0.000 claims description 5
- 230000004044 response Effects 0.000 abstract description 6
- 230000006870 function Effects 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/248—Presentation of query results
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据查询方法、装置、计算机设备及存储介质。所述方法包括:接收客户端发送的数据查询任务,并从数据查询任务中获取查询类型和查询维度;若查询类型为可拆分类型,并且查询维度的数量大于可拆分数量,则按照查询维度的取值对数据查询任务进行拆分,得到N个查询子任务;为每个查询子任务分配线程,采用多线程的方式并行执行每个线程,获取每个线程返回的查询子结果和执行时间,得到N个查询子结果,并根据每个线程的执行时间,在数据库中记录每个查询子任务的查询时间;对N个查询子结果进行汇总,得到数据查询任务的查询结果,并将查询结果返回给所述客户端。本发明的技术方案能够降低数据查询的响应时间,提高查询效率。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据查询方法、装置、计算机设备及存储介质。
背景技术
在业务管理系统中,业务数据查询是常见的功能。
通常,在进行数据查询时,按照查询条件在数据库中查询满足查询条件的数据,当查询条件项较多时,需要逐一针对每个查询条件进行查询匹配,最终得到业务需求相关的数据。而随着大数据时代的到来,面对数据库的海量数据,查询的数据数量会成几何倍数增长,导致数据查询的响应时间增加,查询效率降低。
发明内容
本发明实施例提供一种数据查询方法、装置、计算机设备及存储介质,以解决现有技术中数据查询的效率低的问题。
一种数据查询方法,包括:
接收客户端发送的数据查询任务,并从所述数据查询任务中获取查询类型和查询维度;
若所述查询类型为预设的可拆分类型,并且所述查询维度的数量大于预设的可拆分数量,则按照所述查询维度的取值对所述数据查询任务进行拆分,得到N个查询子任务,其中,N为正整数;
为每个所述查询子任务分配线程,采用多线程的方式并行执行每个所述线程,获取每个所述线程返回的查询子结果和执行时间,得到N个所述查询子结果,并根据每个所述线程的所述执行时间,在预设的数据库中记录每个所述查询子任务的查询时间;
对N个所述查询子结果进行汇总,得到所述数据查询任务的查询结果,并将所述查询结果返回给所述客户端,以使所述客户端按照所述查询类型对应的展示格式和所述查询维度对所述查询结果进行页面展示。
一种数据查询装置,包括:
接收模块,用于接收客户端发送的数据查询任务,并从所述数据查询任务中获取查询类型和查询维度;
拆分模块,用于若所述查询类型为预设的可拆分类型,并且所述查询维度的数量大于预设的可拆分数量,则按照所述查询维度的取值对所述数据查询任务进行拆分,得到N个查询子任务,其中,N为正整数;
执行模块,用于为每个所述查询子任务分配线程,采用多线程的方式并行执行每个所述线程,获取每个所述线程返回的查询子结果和执行时间,得到N个所述查询子结果,并根据每个所述线程的所述执行时间,在预设的数据库中记录每个所述查询子任务的查询时间;
输出模块,用于对N个所述查询子结果进行汇总,得到所述数据查询任务的查询结果,并将所述查询结果返回给所述客户端,以使所述客户端按照所述查询类型对应的展示格式和所述查询维度对所述查询结果进行页面展示。
一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述数据查询方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述数据查询方法的步骤。
上述数据查询方法、装置、计算机设备及存储介质中,服务端接收客户端发送的数据查询任务后,首先从数据查询任务中获取查询类型和查询维度,并在查询类型为预设的可拆分类型,并且查询维度的数量大于预设的可拆分数量时,按照查询维度的取值对数据查询任务进行拆分,得到N个查询子任务,然后为每个查询子任务分配线程,采用多线程的方式并行执行每个线程,获取每个线程返回的查询子结果,对每个查询子结果进行合并,得到数据查询任务的查询结果,并将查询结果返回给客户端进行页面展示,实现了在查询维度的数量和查询类型均满足预设条件的情况下,按照查询维度的取值对数据查询任务进行拆分,并通过多线程的方式并行处理每个查询子任务,从而降低数据查询的响应时间,提高查询效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例中数据查询方法的一应用环境示意图;
图2是本发明一实施例中数据查询方法的一流程图;
图3是本发明一实施例中数据查询方法中步骤S2的一流程图;
图4是本发明一实施例中数据查询方法的步骤S2的另一流程图;
图5是本发明一实施例中数据查询方法中对查询结果进行指标计算的一流程图;
图6是本发明一实施例中数据查询方法中对查询结果进行维度合并的一流程图;
图7是本发明一实施例中数据查询装置的一示意图;
图8是本发明一实施例中计算机设备的一示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请提供的数据查询方法,可应用在如图1所示的应用环境中,该应用环境包括服务端和客户端,其中,服务端和客户端之间通过网络进行连接,该网络可以是有线网络或者无线网络,客户端具体包括但不限于各种个人计算机、笔记本电脑、智能手机和平板电脑等,服务端具体可以用独立的服务器或者多个服务器组成的服务器集群实现。客户端将数据查询任务发送给服务端,服务端对数据查询任务进行解析和拆分,并根据解析和拆分结果完成数据查询,并向客户端返回查询结果。
在一实施例中,如图2所示,提供一种数据查询方法,以该方法应用在图1中的服务端为例进行说明,具体包括步骤S1至步骤S5,详述如下:
S1:接收客户端发送的数据查询任务,并从数据查询任务中获取查询类型和查询维度。
具体地,用户可以在客户端对数据库中的数据自由发起多维度的数据查询,通过自定义组合不同的查询维度从不同侧面观察数据,用户可以在客户端提供的交互界面选择查询类型和查询维度,客户端根据用户设置的查询类型和查询维度生成包含该查询类型和该查询维度的数据查询任务,并将该数据查询任务发送到服务端。
其中,查询类型用于标识查询出的数据的展示方式,包括但不限于数据透视表、交叉表,以及直观的数据展示表或者分类汇总表等。查询类型可以预先进行设置,并通过可选菜单的方式供客户端的用户进行选择。
其中,查询维度用于标识用户需要查询的数据类型,其具体可以是数据表中的字段名称。客户端可以预先向用户提供可供选择的查询维度,用户可以根据应用的需要从中进行选取。
S2:若查询类型为预设的可拆分类型,并且查询维度的数量大于预设的可拆分数量,则按照查询维度的取值对数据查询任务进行拆分,得到N个查询子任务,其中,N为正整数。
在本实施例中,可拆分类型是指需要对数据查询任务进行拆分的查询类型,可拆分类型具体可以根据实际应用的需要从查询类型中进行筛选,优选地,可拆分类型包括数据透视表和交叉表。
可拆分数量用于标识对数据查询任务进行拆分的查询维度的最小值,可拆分数量具体可以根据实际应用的需要进行设置,可以理解的是,当查询维度的数量为1时,通常不需要对数据查询任务进行拆分,即可拆分数量的取值可以设置为大于等于1的正整数。
具体地,服务端通过对查询类型和查询维度两个方面进行综合判断,确定是否需要对数据查询任务进行拆分,当步骤S1得到的查询类型为可拆分类型,并且用户选取的查询维度的数量大于预设的可拆分数量,则服务端确认需要对数据查询任务进行拆分,并且按照查询维度的取值对数据查询任务进行拆分,得N个查询子任务。
例如,若数据查询任务为查询参数A分别取值为a1、a2和a3,查询参数B分别取值为b1和b2的数据,则查询维度包括参数A和参数B,数据查询任务可以拆分为3个查询子任务,分别为查询参数A取值为a1且查询参数B分别取值为b1和b2的查询子任务,查询参数A取值为a2且查询参数B分别取值为b1和b2的查询子任务,以及查询参数A取值为a3且查询参数B分别取值为b1和b2的查询子任务。
S3:为每个查询子任务分配线程,采用多线程的方式并行执行每个线程,获取每个线程返回的查询子结果和执行时间,得到N个查询子结果,并根据每个线程的执行时间,在预设的数据库中记录每个查询子任务的查询时间。
具体地,服务端预先设置有线程池,在该线程池中存在预设数量的空闲线程,服务端根据步骤S2得到的查询子任务,从线程池中选取空闲线程,为每个查询子任务分配一个空闲线程,并同时执行每个被分配的空闲线程。
若线程池中的空闲线程被全部分配完时仍然存在未被分配线程的查询子任务,则服务端先并行执行已经被分配的空闲线程,待线程池中回收到执行完成的空闲线程后将空闲线程继续分配给未被分配线程的查询子任务。
优选地,服务端使用Druid进行数据查询,Druid是一个拥有大数据实时查询和分析的高容错、高性能开源分布式系统,能够快速处理大规模的数据,并能够实现快速查询和分析,从而提高线程的执行效率,进而降低数据查询的响应时间。
服务端跟踪每个被分配的空闲线程的执行结果,并从执行结果中获取该线程返回的查询子结果,以及获取该线程的执行时间,共得到N个查询子结果。
服务端按照查询子任务和被分配的空闲线程的对应关系,将每个被分配的空闲线程的执行时间作为该线程对应的查询子任务的查询时间,并将查询子任务及其查询时间对应记录在预设的数据库中。
在一具体实施例中,服务端可以采用基于Java的Executorservice线程池技术提供线程池,例如,通过Java提供的newFixedThreadPool函数创建一个定长线程池,实现多线程并行分配和执行。
S4:对N个查询子结果进行汇总,得到数据查询任务的查询结果,并将查询结果返回给客户端,以使客户端按照查询类型对应的展示格式和查询维度对查询结果进行页面展示。
具体地,服务端将步骤S3得到的N个查询子结果汇总,得到数据查询任务的查询结果,并将该查询结果发送给客户端。
客户端根据用户选择的查询类型和查询维度,按照查询类型对应的展示格式,依据查询维度对查询结果进行页面展示。
本实施例中,服务端接收客户端发送的数据查询任务后,首先从数据查询任务中获取查询类型和查询维度,并在查询类型为预设的可拆分类型,并且查询维度的数量大于预设的可拆分数量时,按照查询维度的取值对数据查询任务进行拆分,得到N个查询子任务,然后为每个查询子任务分配线程,采用多线程的方式并行执行每个线程,获取每个线程返回的查询子结果,对每个查询子结果进行合并,得到数据查询任务的查询结果,并将查询结果返回给客户端进行页面展示,实现了在查询维度的数量和查询类型均满足预设条件的情况下,按照查询维度的取值对数据查询任务进行拆分,并通过多线程的方式并行处理每个查询子任务,从而降低数据查询的响应时间,提高查询效率。
在一实施例中,如图3所示,在步骤S2中,按照查询维度的取值对数据查询任务进行拆分,得到N个查询子任务,具体包括步骤S211至步骤S213,详述如下:
S211:获取每个查询维度的取值范围。
具体地,查询维度的取值范围可以由用户从可选取值中进行设置,当用户在客户端提供的界面上选定查询维度时,客户端将该查询维度的可选取值显示在界面上供用户选择,用户可以从中选取和数据查询任务相关的可选取值,客户端将用户对每个查询维度选定的可选取值发送给服务端,服务端将选定的可选取值作为该查询维度的取值范围。
需要说明的是,用户也可以不选择可选取值,即服务端若没有收到客户端发送的用户选定的可选取值,则将查询维度的所有可选取值作为该查询维度的取值范围。
例如,当用户需要对系统中每个员工的业绩数据进行查询时,查询维度可以包括“员工”和“业绩数据”,“员工”和“业绩数据”的取值范围均未被设置,即“员工”的取值范围为所有员工,和“业绩数据”的取值范围为全部业绩数据。当用户需要对系统中业绩数据大于100万的员工进行查询时,查询维度可以包括“员工”和“业绩数据”,“员工”的取值范围未被设置,即“员工”的取值范围为所有员工,而“业绩数据”的取值范围为大于100万。
S212:根据每个查询维度的取值范围,按照预设的组合方式对不同查询维度的不同取值进行条件组合,得到N个组合条件。
具体地,服务端根据步骤S211获取到的每个查询维度的取值范围,对每个查询维度的每种取值按照预设的组合方式进行条件组合,得到N个组合条件,该N个组合条件涵盖了数据查询任务的全部查询条件。其中,预设的组合方式可以是对每种查询维度的某些取值进行条件组合,具体对哪些取值进行条件组合可以根据实际应用的需要进行设置,此处不做限制。
例如,若数据查询任务P的查询维度包括参数A和参数B,参数A的取值范围包括a1、a2和a3,参数B的取值范围包括b1和b2,则进行条件组合后可以得到3个组合条件,分别为参数A取值为a1且参数B分别取值为b1和b2的组合条件,参数A取值为a2且参数B分别取值为b1和b2的组合条件,以及参数A取值为a3且参数B分别取值为b1和b2的组合条件;或者,也可以得到6个组合条件,分别为参数A取值为a1且参数B取值为b1的组合条件,参数A取值为a1且参数B取值为b2的组合条件,参数A取值为a2且参数B取值为b1的组合条件,参数A取值为a2且参数B取值为b2的组合条件,参数A取值为a3且参数B取值为b1的组合条件,以及参数A取值为a3且参数B取值为b2的组合条件。
S213:将每个组合条件封装成对应的查询子任务,得到N个查询子任务。
具体地,服务端根据步骤S212得到的N个组合条件,为每个组合条件是指任务编号,并将包含任务编号的组合任务封装成该一个查询子任务,共得到N个查询子任务。
本实施例中,服务端通过获取每个查询维度的取值范围,并按照预设的组合方式对不同查询维度的不同取值进行条件组合,得到N个组合条件。再将N个组合条件分别封装成对应的N个查询子任务,实现了对数据查询任务的有效拆分,为后续并行执行多任务提供条件,从而降低数据查询的响应时间,提高查询效率。
在一实施例中,如图4所示,在步骤S2中,按照查询维度的取值对数据查询任务进行拆分,得到N个查询子任务,还可以包括步骤S221至步骤S225,详述如下:
S221:按照查询维度的取值将数据查询任务拆分成K个原子任务,其中,K为大于或等于N的正整数。
具体地,根据查询维度的取值范围将数据查询任务拆分为K个原子任务,其拆分方法可以采用与步骤S211至步骤S213相同的拆分过程,但在根据每个查询维度的取值范围,按照预设的组合方式对不同查询维度的不同取值进行条件组合时,该预设的组合方式为原子任务的条件组合方式,即拆分到不能再拆分的最小条件组合,得到K个原子任务,即K个最小任务单元。
例如,以步骤S212中的数据查询任务P为例,若数据查询任务P的查询维度包括参数A和参数B,参数A的取值范围包括a1、a2和a3,参数B的取值范围包括b1和b2,则按照查询维度的取值将数据查询任务P进行任务拆分后得到6个原子任务,分别为参数A取值为a1且参数B取值为b1的原子任务,参数A取值为a1且参数B取值为b2的原子任务,参数A取值为a2且参数B取值为b1的原子任务,参数A取值为a2且参数B取值为b2的原子任务,参数A取值为a3且参数B取值为b1的原子任务,以及参数A取值为a3且参数B取值为b2的原子任务。
S222:根据每个原子任务之间的关联性,确定能够进行合并的原子任务,将能够进行合并的每个原子任务作为第一任务,并对第一任务进行合并后得到第二任务。
具体地,服务端针对步骤S221得到的K个原子任务,根据每个原子任务之间的关联性,将能够进行合并的原子任务进行合并,得到第二任务,进行合并的原子任务为第一任务。
其中,对原子任务进行合并的依据为原子任务之间的关联性,该关联性具体可以是不同原子任务之间存在相同查询维度,或者不同原子任务的查询数据源相同等。
继续以步骤S222中的数据查询任务P为例,根据6个原子任务之间的关联性,可以将参数A取值为a1且参数B取值为b1的原子任务,与参数A取值为a1且参数B取值为b2的原子任务进行合并,得到参数A取值为a1且参数B分别取值为b1和b2的第二任务,并且参数A取值为a1且参数B取值为b1的原子任务,以及参数A取值为a1且参数B取值为b2的原子任务均作为第一任务。
S223:从预设的数据库中获取每个第一任务的查询时间,以及第二任务的查询时间,并将每个第一任务的查询时间的最大值作为第一执行时间;
具体地,在数据查询任务的每一次执行过程中,服务端都会在执行步骤S3时,在预设的数据库中记录每个查询子任务的查询时间。因此,服务端通过预设的数据库查询是否记录了第一任务的查询时间,以及第二任务的查询时间,若预设的数据库有记录,则获取每个第一任务的查询时间,以及第二任务的查询时间,并从每个第一任务的查询时间中选取最大值作为第一执行时间。
若服务端在预设的数据库中未查询到第一任务的查询时间或者未查询到第二任务的查询时间,则不再继续执行步骤S224和步骤S225,可以直接将原子任务作为查询子任务。
S224:若第一执行时间大于第二任务的查询时间,则使用第二任务替换第一任务。
具体地,服务端对步骤S223得到的第一执行时间和第二任务的查询时间进行比较,若第一执行时间大于第二任务的查询时间,则说明任务拆分的粒度过细,即并行执行每个第一任务的总时长超过了制定第二任务的时长,此时,服务端使用第二任务替换第一任务,即增加第二任务,并删除每个第一任务。若第一执行时间小于或等于第二任务的查询时间,则放弃第二任务,保留每个第一任务。
S225:将第二任务、未被替换的第一任务,以及不能进行合并的原子任务作为查询子任务,得到N个查询子任务。
具体地,服务端按照步骤S222和步骤S223对每个可以合并的原子任务进行分析处理后,将分析处理后得到的第二任务、没有用第二任务进行替换的第一任务,以及不能进行合并的原子任务作为查询子任务。
本实施例中,服务端在按照查询维度的取值将数据查询任务拆分成K个原子任务后,通过对原子任务按照关联性进行合并,并比较合并后的第二任务的查询时间与每个第一任务的查询时间的最大值,若第二任务的查询时间小于该最大值,则用第二任务替换第一任务,从而实现对数据查询任务的拆分粒度的优化,能够使拆分后得到的查询子任务的执行时间更短,从而进一步降低数据查询的响应时间,提高查询效率。
在一实施例中,如图5所示,在步骤S4之后,还可以对查询结果进行指标计算,具体包括步骤S51至步骤S53,详述如下:
S51:接收客户端发送的指标计算请求。
具体地,当用户通过客户端的展示界面查看到数据查询任务的查询结果后,可以根据业务的需要针对查询结果进行指标计算的配置,用户可以在客户端提供的选项中选择需要进行指标计算的指标项,客户端将包含指标项的指标计算请求发送给服务端。
S52:根据指标计算请求,确定指标计算维度和计算方式,并对查询结果中指标计算维度对应的数据,按照该计算方式进行指标计算,得到指标计算结果。
具体地,服务端从指标计算请求中获取指标项,并根据预先保存的每个指标项对应的指标计算维度和计算方式,获取指标计算请求中的指标项对应的指标计算维度和计算方式,其中,指标计算维度为查询结果中的查询维度,计算方式为使用查询维度计算指标项的计算公式。
服务端将查询结果中指标计算维度对应的数据带入获取到的计算公式中,计算得到指标项的指标计算结果。
S53:将指标计算结果发送给客户端。
具体地,服务端将步骤S52计算得到的指标计算结果返回给客户端,客户端将指标计算结果合并到查询结果对应的展示表格中,向用户展示。
本实施例中,用户在对查询结果体现的总体数据进行查看后,能够通过指标计算请求灵活实时的自定义各种指标四则运算,得到需要的指标计算结果,实现了计算与查询的分离,加快查询速度,并通过个性化自定义指标增强产品的粘性。
在一实施例中,如图6所示,在步骤S4之后,还可以对查询结果进行维度合并,具体包括步骤S61至步骤S63,详述如下:
S61:接收客户端发送的维度合并请求。
具体地,当用户通过客户端的展示界面查看到数据查询任务的查询结果后,可以根据业务的需要,针对查询结果中查询维度不同取值下的数据进行维度合并配置,用户可以在客户端提供的选项中选择需要进行维度合并的查询维度的维度取值,客户端将包含查询维度的维度取值的维度合并请求发送给服务端。
例如,查询维度A的取值包括a1、a2、a3和a4,若用户需要对查询维度A的取值为a2和a3对应的数据进行合并,则客户端将包含查询维度A及其取值a2和a3的维度合并请求发送给服务端。
S62:根据维度合并请求包含的目标查询维度和目标查询维度的维度取值,对查询结果中目标查询维度的维度取值对应的数据进行合并计算,得到合并后的结果数据。
具体地,服务端根据接收到的维度合并请求,从该维度合并请求中获取目标查询维度及其维度取值,并将查询结果中目标查询维度的维度取值对应的数据中每一对应数值进行合并计算,得到合并后的结果数据。
例如,表一为合并前的查询结果,其中,查询维度A的取值包括a1、a2、a3和a4,该查询结果还包含结果数据1和结果数据2两个查询维度。
表一
若用户需要对查询维度A的取值为a2和a3对应的数据进行合并,则服务端将查询维度A的取值为a2和a3对应的结果数据1进行合并,得到合并后的结果数据1为380,并将查询维度A的取值为a2和a3对应的结果数据2进行合并,得到合并后的结果数据2为420,即合并后的结果数据如表二所示。
查询维度A | 结果数据1 | 结果数据2 |
a1 | 100 | 150 |
合并 | 380 | 420 |
a4 | 240 | 210 |
表二S63:将合并后的结果数据发送给客户端。
具体地,服务端将步骤S62得到的合并后的结果数据返回给客户端,客户端将该结果数据替换到查询结果对应的展示表格中,向用户展示。
本实施例中,用户在对查询结果体现的总体数据进行查看后,能够通过维度合并请求灵活实时的自定义各种数据合并,得到满足业务查询需求的需要查询结果,实现了计算与查询的分离,加快查询速度,并通过个性化定制处理增强产品粘性。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
在一实施例中,提供一种装置,该数据查询装置与上述实施例中数据查询方法一一对应。如图7所示,该数据查询装置包括:接收模块10、拆分模块20、执行模块30和输出模块40。各功能模块详细说明如下:
接收模块10,用于接收客户端发送的数据查询任务,并从数据查询任务中获取查询类型和查询维度;
拆分模块20,用于若查询类型为预设的可拆分类型,并且查询维度的数量大于预设的可拆分数量,则按照查询维度的取值对数据查询任务进行拆分,得到N个查询子任务,其中,N为正整数;
执行模块30,用于为每个查询子任务分配线程,采用多线程的方式并行执行每个线程,获取每个线程返回的查询子结果和执行时间,得到N个查询子结果,并根据每个线程的执行时间,在预设的数据库中记录每个查询子任务的查询时间;
输出模块40,用于对N个查询子结果进行汇总,得到数据查询任务的查询结果,并将查询结果返回给客户端,以使客户端按照查询类型对应的展示格式和查询维度对查询结果进行页面展示。
进一步地,拆分模块20包括:
获取子模块211,用于获取每个查询维度的取值范围;
组合子模块212,用于根据每个查询维度的取值范围,按照预设的组合方式对不同查询维度的不同取值进行条件组合,得到N个组合条件;
封装子模块213,用于将每个组合条件封装成对应的查询子任务,得到N个查询子任务。
进一步地,拆分模块20还包括:
原子拆分子模块221,用于按照查询维度将数据查询任务拆分成K个原子任务,其中,K为大于或等于N的正整数;
任务合并子模块222,用于根据每个原子任务之间的关联性,确定能够进行合并的原子任务,将能够进行合并的每个原子任务作为第一任务,并对第一任务进行合并后得到第二任务;
时间确定子模块223,用于从预设的数据库中获取每个第一任务的查询时间,以及第二任务的查询时间,并将每个第一任务的查询时间的最大值作为第一执行时间;
任务替换子模块224,用于若第一执行时间大于第二任务的查询时间,则使用第二任务替换第一任务;
任务生成子模块225,用于将第二任务、未被替换的第一任务,以及不能进行合并的原子任务作为查询子任务,得到N个查询子任务。
进一步地,数据查询装置还包括:
计算请求模块51,用于接收客户端发送的指标计算请求;
指标计算模块52,用于根据指标计算请求,确定指标计算维度和计算方式,并对查询结果中指标计算维度对应的数据,按照计算方式进行指标计算,得到指标计算结果;
结果发送模块53,用于将指标计算结果发送给客户端。
进一步地,数据查询装置还包括:
合并请求模块61,用于接收客户端发送的维度合并请求;
合并计算模块62,用于根据维度合并请求包含的目标查询维度和目标查询维度的维度取值,对查询结果中目标查询维度的维度取值对应的数据进行合并计算,得到合并后的结果数据;
数据发送模块63,用于将合并后的结果数据发送给客户端。
关于数据查询装置的具体限定可以参见上文中对于数据查询方法的限定,在此不再赘述。上述数据查询装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据查询方法。
在一实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述实施例中数据查询方法的步骤,例如图2所示的步骤S1至步骤S4。或者,处理器执行计算机程序时实现上述实施例中数据查询装置的各模块/单元的功能,例如图7所示模块10至模块40的功能。为避免重复,此处不再赘述。
在一实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例中数据查询方法,或者,该计算机程序被处理器执行时实现上述装置实施例中数据查询装置中各模块/单元的功能。为避免重复,此处不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (5)
1.一种数据查询方法,其特征在于,所述数据查询方法包括:
接收客户端发送的数据查询任务,并从所述数据查询任务中获取查询类型和查询维度;
若所述查询类型为预设的可拆分类型,并且所述查询维度的数量大于预设的可拆分数量,则按照所述查询维度的取值对所述数据查询任务进行拆分,得到N个查询子任务,其中,N为正整数;
为每个所述查询子任务分配线程,采用多线程的方式并行执行每个所述线程,获取每个所述线程返回的查询子结果和执行时间,得到N个所述查询子结果,并根据每个所述线程的所述执行时间,在预设的数据库中记录每个所述查询子任务的查询时间;
对N个所述查询子结果进行汇总,得到所述数据查询任务的查询结果,并将所述查询结果返回给所述客户端,以使所述客户端按照所述查询类型对应的展示格式和所述查询维度对所述查询结果进行页面展示;
所述按照所述查询维度的取值对所述数据查询任务进行拆分,得到N个查询子任务包括:
获取每个所述查询维度的取值范围;
根据每个所述查询维度的取值范围,按照预设的组合方式对不同所述查询维度的不同取值进行条件组合,得到N个组合条件;
将每个所述组合条件封装成对应的所述查询子任务,得到N个所述查询子任务;
所述按照所述查询维度的取值对所述数据查询任务进行拆分,得到N个查询子任务还包括:
按照所述查询维度将所述数据查询任务拆分成K个原子任务,其中,K为大于或等于N的正整数;
根据每个所述原子任务之间的关联性,确定能够进行合并的所述原子任务,将能够进行合并的每个所述原子任务作为第一任务,并对所述第一任务进行合并后得到第二任务;
从所述预设的数据库中获取每个所述第一任务的查询时间,以及所述第二任务的查询时间,并将每个所述第一任务的查询时间的最大值作为第一执行时间;
若所述第一执行时间大于所述第二任务的查询时间,则使用所述第二任务替换所述第一任务;
将所述第二任务、未被替换的所述第一任务,以及不能进行合并的所述原子任务作为所述查询子任务,得到N个所述查询子任务;
所述对N个所述查询子结果进行汇总,得到所述数据查询任务的查询结果,并将所述查询结果返回给所述客户端之后,所述数据查询方法还包括:
接收所述客户端发送的指标计算请求;
根据所述指标计算请求,确定指标计算维度和计算方式,并对所述查询结果中所述指标计算维度对应的数据,按照所述计算方式进行指标计算,得到指标计算结果;
将所述指标计算结果发送给所述客户端。
2.如权利要求1所述的数据查询方法,其特征在于,所述对N个所述查询子结果进行汇总,得到所述数据查询任务的查询结果,并将所述查询结果返回给所述客户端之后,所述数据查询方法还包括:
接收所述客户端发送的维度合并请求;
根据所述维度合并请求包含的目标查询维度和所述目标查询维度的维度取值,对所述查询结果中所述目标查询维度的所述维度取值对应的数据进行合并计算,得到合并后的结果数据;
将所述合并后的结果数据发送给所述客户端。
3.一种数据查询装置,其特征在于,所述数据查询装置包括:
接收模块,用于接收客户端发送的数据查询任务,并从所述数据查询任务中获取查询类型和查询维度;
拆分模块,用于若所述查询类型为预设的可拆分类型,并且所述查询维度的数量大于预设的可拆分数量,则按照所述查询维度的取值对所述数据查询任务进行拆分,得到N个查询子任务,其中,N为正整数;
执行模块,用于为每个所述查询子任务分配线程,采用多线程的方式并行执行每个所述线程,获取每个所述线程返回的查询子结果和执行时间,得到N个所述查询子结果,并根据每个所述线程的所述执行时间,在预设的数据库中记录每个所述查询子任务的查询时间;
输出模块,用于对N个所述查询子结果进行汇总,得到所述数据查询任务的查询结果,并将所述查询结果返回给所述客户端,以使所述客户端按照所述查询类型对应的展示格式和所述查询维度对所述查询结果进行页面展示;
所述拆分模块包括:
获取子模块,用于获取每个所述查询维度的取值范围;
组合子模块,用于根据每个所述查询维度的取值范围,按照预设的组合方式对不同所述查询维度的不同取值进行条件组合,得到N个组合条件;
封装子模块,用于将每个所述组合条件封装成对应的所述查询子任务,得到N个所述查询子任务;
所述拆分模块还包括:
原子拆分子模块,用于按照所述查询维度将所述数据查询任务拆分成K个原子任务,其中,K为大于或等于N的正整数;
任务合并子模块,用于根据每个所述原子任务之间的关联性,确定能够进行合并的所述原子任务,将能够进行合并的每个所述原子任务作为第一任务,并对所述第一任务进行合并后得到第二任务;
时间确定子模块,用于从所述预设的数据库中获取每个所述第一任务的查询时间,以及所述第二任务的查询时间,并将每个所述第一任务的查询时间的最大值作为第一执行时间;
任务替换子模块,用于若所述第一执行时间大于所述第二任务的查询时间,则使用所述第二任务替换所述第一任务;
任务生成子模块,用于将所述第二任务、未被替换的所述第一任务,以及不能进行合并的所述原子任务作为所述查询子任务,得到N个所述查询子任务;
所述数据查询装置还包括:
计算请求模块,用于接收客户端发送的指标计算请求;
指标计算模块,用于根据指标计算请求,确定指标计算维度和计算方式,并对查询结果中指标计算维度对应的数据,按照计算方式进行指标计算,得到指标计算结果;
结果发送模块,用于将指标计算结果发送给客户端。
4.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1或2所述的数据查询方法。
5.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1或2所述的数据查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910842163.7A CN110765157B (zh) | 2019-09-06 | 2019-09-06 | 数据查询方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910842163.7A CN110765157B (zh) | 2019-09-06 | 2019-09-06 | 数据查询方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110765157A CN110765157A (zh) | 2020-02-07 |
CN110765157B true CN110765157B (zh) | 2024-02-02 |
Family
ID=69330357
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910842163.7A Active CN110765157B (zh) | 2019-09-06 | 2019-09-06 | 数据查询方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110765157B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111488492B (zh) * | 2020-04-08 | 2023-11-17 | 北京百度网讯科技有限公司 | 用于检索图数据库的方法和装置 |
CN111597237B (zh) * | 2020-05-22 | 2024-03-29 | 北京明略昭辉科技有限公司 | 数据查询结果的生成方法及装置、电子设备、存储介质 |
CN111796936A (zh) * | 2020-06-29 | 2020-10-20 | 平安普惠企业管理有限公司 | 请求处理方法、装置、电子设备及介质 |
CN112182050B (zh) * | 2020-09-30 | 2024-04-30 | 中国民航信息网络股份有限公司 | 一种用户查询请求的处理方法、装置及电子设备 |
CN112035559B (zh) * | 2020-11-02 | 2021-02-02 | 浙江口碑网络技术有限公司 | 热力图的展示方法、服务器及系统 |
CN113407527B (zh) * | 2020-11-20 | 2024-03-26 | 美云智数科技有限公司 | 一种权限数据的采集方法、管理装置以及存储介质 |
CN112749192A (zh) * | 2021-01-24 | 2021-05-04 | 武汉卓尔信息科技有限公司 | 一种数据集成服务系统及数据处理方法 |
CN113177062B (zh) * | 2021-05-25 | 2023-06-09 | 深圳前海微众银行股份有限公司 | 一种数据查询方法及装置 |
CN113190576A (zh) * | 2021-06-01 | 2021-07-30 | 京东科技控股股份有限公司 | 数据处理方法、装置、计算机设备和可读存储介质 |
CN117193956A (zh) * | 2021-07-13 | 2023-12-08 | 上海携宁计算机科技股份有限公司 | 分布式数据处理系统、方法、服务器和可读存储介质 |
CN113434641B (zh) * | 2021-07-26 | 2022-10-11 | 广州四三九九信息科技有限公司 | 一种多线程屏蔽字查询替换方法 |
CN113326285B (zh) * | 2021-08-03 | 2021-11-12 | 北京轻松筹信息技术有限公司 | 数据库表的查询方法及装置 |
CN115878664B (zh) * | 2022-11-24 | 2023-07-18 | 灵犀科技有限公司 | 一种海量输入数据的实时查询匹配的方法及系统 |
CN117349323B (zh) * | 2023-12-05 | 2024-02-27 | 苏州元脑智能科技有限公司 | 数据库的数据处理方法及装置、存储介质及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103942098A (zh) * | 2014-04-29 | 2014-07-23 | 国家电网公司 | 一种任务处理系统和方法 |
CN107402956A (zh) * | 2017-06-07 | 2017-11-28 | 网易(杭州)网络有限公司 | 大任务的数据处理方法、设备和计算机可读存储介质 |
CN107783838A (zh) * | 2017-03-13 | 2018-03-09 | 平安科技(深圳)有限公司 | 客户信息查询方法和装置 |
CN109492017A (zh) * | 2018-09-18 | 2019-03-19 | 平安科技(深圳)有限公司 | 业务信息查询处理方法、系统、计算机设备和存储介质 |
WO2019141134A1 (zh) * | 2018-01-19 | 2019-07-25 | 阿里巴巴集团控股有限公司 | 一种数据查询方法、装置及设备 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160103914A1 (en) * | 2014-10-10 | 2016-04-14 | Salesforce.Com, Inc. | Offloading search processing against analytic data stores |
US11016972B2 (en) * | 2018-01-26 | 2021-05-25 | Vmware, Inc. | Splitting a time-range query into multiple sub-queries for serial execution |
-
2019
- 2019-09-06 CN CN201910842163.7A patent/CN110765157B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103942098A (zh) * | 2014-04-29 | 2014-07-23 | 国家电网公司 | 一种任务处理系统和方法 |
CN107783838A (zh) * | 2017-03-13 | 2018-03-09 | 平安科技(深圳)有限公司 | 客户信息查询方法和装置 |
CN107402956A (zh) * | 2017-06-07 | 2017-11-28 | 网易(杭州)网络有限公司 | 大任务的数据处理方法、设备和计算机可读存储介质 |
WO2019141134A1 (zh) * | 2018-01-19 | 2019-07-25 | 阿里巴巴集团控股有限公司 | 一种数据查询方法、装置及设备 |
CN109492017A (zh) * | 2018-09-18 | 2019-03-19 | 平安科技(深圳)有限公司 | 业务信息查询处理方法、系统、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110765157A (zh) | 2020-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110765157B (zh) | 数据查询方法、装置、计算机设备及存储介质 | |
CN110990400B (zh) | 数据库查询方法、装置、计算机设备和存储介质 | |
US11734271B2 (en) | Data query method, apparatus and device | |
EP3404542A1 (en) | Data pipeline architecture for analytics processing stack | |
US9348677B2 (en) | System and method for batch evaluation programs | |
US20230124520A1 (en) | Task execution method and storage device | |
US11228489B2 (en) | System and methods for auto-tuning big data workloads on cloud platforms | |
US9600559B2 (en) | Data processing for database aggregation operation | |
US20150269234A1 (en) | User Defined Functions Including Requests for Analytics by External Analytic Engines | |
CN111209310A (zh) | 基于流计算的业务数据处理方法、装置和计算机设备 | |
CN111104406A (zh) | 层级型业务数据存储方法、装置、计算机设备和存储介质 | |
US20160034528A1 (en) | Co-processor-based array-oriented database processing | |
US20170017902A1 (en) | Distributed machine learning analytics framework for the analysis of streaming data sets from a computer environment | |
Kim et al. | Towards the design of a system and a workflow model for medical big data processing in the hybrid cloud | |
CN107430633B (zh) | 用于数据存储的系统及方法和计算机可读介质 | |
JP5043166B2 (ja) | 計算機システム、データ検索方法及びデータベース管理計算機 | |
CN112035555A (zh) | 一种信息展示方法、装置及设备 | |
US11627193B2 (en) | Method and system for tracking application activity data from remote devices and generating a corrective action data structure for the remote devices | |
CN113076473B (zh) | 用户数据处理方法、装置、计算机设备及存储介质 | |
US11762860B1 (en) | Dynamic concurrency level management for database queries | |
CN114168557A (zh) | 一种访问日志的处理方法、装置、计算机设备和存储介质 | |
CN110019198B (zh) | 数据查询方法和装置 | |
US9990135B2 (en) | Providing memory usage analysis by attributing memory allocations to development components | |
CN111104527A (zh) | 一种富媒体文件解析方法 | |
CN113760942A (zh) | 一种交互式分析中的数据处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |