CN114201491A - 数据检索方法、装置、计算机设备和存储介质 - Google Patents
数据检索方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN114201491A CN114201491A CN202111507004.5A CN202111507004A CN114201491A CN 114201491 A CN114201491 A CN 114201491A CN 202111507004 A CN202111507004 A CN 202111507004A CN 114201491 A CN114201491 A CN 114201491A
- Authority
- CN
- China
- Prior art keywords
- dimension
- retrieval
- dimensions
- data
- combined
- 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.)
- Pending
Links
Images
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2264—Multidimensional index structures
-
- 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/2455—Query execution
- G06F16/24552—Database cache management
-
- 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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种数据检索方法、装置、计算机设备、存储介质和计算机程序产品。方法包括:获取检索请求,确定与检索请求对应的多个检索维度中的主维度和待处理维度;确定主维度中每个主维度成员所对应的数据量;将数据量满足阈值条件的主维度成员构成待分解维度,从待处理维度中选取其中一个检索维度作为副维度,并基于副维度的各副维度成员和待分解维度构成至少一个新的组合维度;若新构成的组合维度中存在数据量满足阈值条件的待分解维度,则从待处理维度中再选取一个检索维度作为副维度继续分解,直至最终分解得到的每个组合维度所对应的数据量均不满足阈值条件时停止;最终得到与检索请求对应的检索结果。采用本方法能够提高数据检索的效率。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据检索方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
随着大数据时代的发展,对数据进行检索和查询的难度越来越高,而在数字化系统中,数据的检索是最基本、最频繁的操作。数据的快速检索依赖大量的索引策略,为了避免存储空间的浪费和索引过大的问题,通常会使用多维数据库来存储海量的多维度数据。
传统技术中,对于多维度数据的检索一般可以在数据库端进行多线程或分布式的检索策略,然而,这种检索方式会因为单线程上的数据分部不均匀而导致内存溢出,也会出现单次检索数据量过大而导致数据库宕机的问题,这样就会影响数据检索的效率。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高检索效率的数据检索方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种数据检索方法。所述方法包括:
获取检索请求,确定与所述检索请求对应的多个检索维度中的主维度和待处理维度;
确定所述主维度中每个主维度成员所对应的数据量;
将数据量满足阈值条件的主维度成员构成待分解维度,从所述待处理维度中选取其中一个检索维度作为副维度,并基于所述副维度的各副维度成员和所述待分解维度构成至少一个新的组合维度;
若新构成的所述组合维度中存在数据量满足阈值条件的待分解维度,则返回所述从所述待处理维度中选取其中一个检索维度作为副维度的步骤继续执行,直至最终分解得到的每个组合维度所对应的数据量均不满足所述阈值条件时停止;
基于最终分解得到各个组合维度生成对应的检索子任务并执行,基于各检索子任务的执行结果确定与所述检索请求对应的检索结果。
在其中一个实施例中,所述方法还包括:
若所述主维度成员中存在数据量不满足所述阈值条件的主维度成员,则将数据量不满足所述阈值条件的主维度成员作为目标维度,直接基于所述目标维度生成对应的检索子任务并执行;
若所述组合维度中存在数据量不满足所述阈值条件的组合维度,则将数据量不满足所述阈值条件的组合维度作为目标维度,直接基于所述目标维度生成对应的检索子任务并执行;
所述基于各检索子任务的执行结果确定与所述检索请求对应的检索结果,包括:
基于与各所述目标维度对应的检索子任务的执行结果、以及与各所述最终分解得到各组合维度对应的检索子任务的执行结果,确定与所述检索请求对应的检索结果。
在其中一个实施例中,所述若所述主维度成员中存在数据量不满足所述阈值条件的主维度成员,则将数据量不满足所述阈值条件的主维度成员作为目标维度,包括:
若所述主维度成员中存在数据量不满足所述阈值条件的主维度成员,且多个数据量不满足所述阈值条件的主维度成员所对应的数据量总量不满足阈值条件,则将数据总量不满足阈值条件所对应的主维度成员进行合并,得到目标维度;
所述若所述组合维度中存在数据量不满足所述阈值条件的组合维度,则将数据量不满足所述阈值条件的组合维度作为目标维度,包括:
若所述组合维度中存在数据量不满足所述阈值条件的组合维度,且多个数据量不满足所述阈值条件的组合维度所对应的数据量总量不满足阈值条件,则将数据总量不满足阈值条件所对应的组合维度进行合并,得到目标维度。
在其中一个实施例中,所述确定与所述检索请求对应的多个检索维度中的主维度和待处理维度,包括:
确定与所述检索请求对应的多个检索维度,其中,每个检索维度均包含至少一个维度成员;
将包括的维度成员数量最多的检索维度作为主维度,并将所述多个检索维度中除所述主维度之外的其他检索维度作为待处理维度。
在其中一个实施例中,将每个检索维度按照所包含维度成员的数量从大到小进行排序;
所述从所述待处理维度中选取其中一个检索维度作为副维度,包括:
按照各待处理维度的排序顺序,从所述待处理维度中选取未进行组合的一个检索维度作为副维度。
在其中一个实施例中,所述主维度所包括的主维度成员的数量不少于检索线程的总数量。
第二方面,本申请还提供了一种数据检索装置。所述装置包括:
获取模块,用于获取检索请求,确定与所述检索请求对应的多个检索维度中的主维度和待处理维度;
确定模块,用于确定所述主维度中每个主维度成员所对应的数据量;
选取模块,用于将数据量满足阈值条件的主维度成员构成待分解维度,从所述待处理维度中选取其中一个检索维度作为副维度,并基于所述副维度的各副维度成员和所述待分解维度构成至少一个新的组合维度;
返回模块,用于若新构成的所述组合维度中存在数据量满足阈值条件的待分解维度,则返回所述从所述待处理维度中选取其中一个检索维度作为副维度的步骤继续执行,直至最终分解得到的每个组合维度所对应的数据量均不满足所述阈值条件时停止;
所述确定模块,还用于基于最终分解得到各个组合维度生成对应的检索子任务并执行,基于各检索子任务的执行结果确定与所述检索请求对应的检索结果。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取检索请求,确定与所述检索请求对应的多个检索维度中的主维度和待处理维度;
确定所述主维度中每个主维度成员所对应的数据量;
将数据量满足阈值条件的主维度成员构成待分解维度,从所述待处理维度中选取其中一个检索维度作为副维度,并基于所述副维度的各副维度成员和所述待分解维度构成至少一个新的组合维度;
若新构成的所述组合维度中存在数据量满足阈值条件的待分解维度,则返回所述从所述待处理维度中选取其中一个检索维度作为副维度的步骤继续执行,直至最终分解得到的每个组合维度所对应的数据量均不满足所述阈值条件时停止;
基于最终分解得到各个组合维度生成对应的检索子任务并执行,基于各检索子任务的执行结果确定与所述检索请求对应的检索结果。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取检索请求,确定与所述检索请求对应的多个检索维度中的主维度和待处理维度;
确定所述主维度中每个主维度成员所对应的数据量;
将数据量满足阈值条件的主维度成员构成待分解维度,从所述待处理维度中选取其中一个检索维度作为副维度,并基于所述副维度的各副维度成员和所述待分解维度构成至少一个新的组合维度;
若新构成的所述组合维度中存在数据量满足阈值条件的待分解维度,则返回所述从所述待处理维度中选取其中一个检索维度作为副维度的步骤继续执行,直至最终分解得到的每个组合维度所对应的数据量均不满足所述阈值条件时停止;
基于最终分解得到各个组合维度生成对应的检索子任务并执行,基于各检索子任务的执行结果确定与所述检索请求对应的检索结果。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
获取检索请求,确定与所述检索请求对应的多个检索维度中的主维度和待处理维度;
确定所述主维度中每个主维度成员所对应的数据量;
将数据量满足阈值条件的主维度成员构成待分解维度,从所述待处理维度中选取其中一个检索维度作为副维度,并基于所述副维度的各副维度成员和所述待分解维度构成至少一个新的组合维度;
若新构成的所述组合维度中存在数据量满足阈值条件的待分解维度,则返回所述从所述待处理维度中选取其中一个检索维度作为副维度的步骤继续执行,直至最终分解得到的每个组合维度所对应的数据量均不满足所述阈值条件时停止;
基于最终分解得到各个组合维度生成对应的检索子任务并执行,基于各检索子任务的执行结果确定与所述检索请求对应的检索结果。
上述数据检索方法、装置、计算机设备、存储介质和计算机程序产品,确定与检索请求对应的多个检索维度中的主维度和待处理维度,主维度可以确定本次检索的数据的主要范围,待处理维度可以协助主维度在检索过程中的二次维度划分。然后确定主维度中每个主维度成员所对应的数据量,这样可以根据每个主维度成员所对应的数据量决定是否需要对该主维度成员进行分解。将数据量满足阈值条件的主维度成员构成待分解维度,从待处理维度中选取其中一个检索维度作为副维度,并基于副维度的各副维度成员和待分解维度构成至少一个新的组合维度,这样利用副维度对数据量满足阈值条件的主维度成员构成的待分解维度进行分解,也就是利用副维度对数据量大的待分解维度进行分解,可以减少待分解维度中包含的数据量,使得执行对应检索子任务的线程不会出现内存溢出、卡顿或宕机的危险。若新构成的组合维度中还存在数据量满足阈值条件的待分解维度,则再选取一个新的副维度对新构成的组合维度再进行分解,并不断的进行判断迭代,直至最终分解得到的每个组合维度所对应的数据量均不满足所述阈值条件时停止,这样保证得到的每一个组合维度的数据量均不会超出执行相应检索子任务的线程的性能范围。最后基于最终分解得到各个组合维度生成对应的检索子任务并执行,基于各检索子任务的执行结果确定与检索请求对应的检索结果。这样,对于多维度数据的检索,通过使用一个或多个副维度对检索请求中的主维度数据进行递进式分解,使得最后得到的所有组合维度的数据量均在完全可控的范围,避免各个线程执行检索任务时因为数据分布不均匀而导致的单节点处理时间过长或内存溢出的问题,也避免了因单次查询时数据库的I/O和计算处理压力过大而导致的数据库读写阻塞或宕机的问题,进而加快了数据检索的效率。
附图说明
图1为一个实施例中数据检索方法的应用环境图;
图2为一个实施例中数据检索方法的流程示意图;
图3为一个实施例中数据检索方法的思路概要流程图;
图4(a)为一个实施例中数据检索方法中单维度统计的数据结构;
图4(b)为一个实施例中数据检索方法中双维度统计的数据结构;
图5为一个实施例中数据检索方法的细节流程示意图;
图6为一个实施例中数据检索装置的结构框图;
图7为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的数据检索方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。本申请各实施例所提及的数据检索方法可通过终端和服务器分别单独执行实现,也可通过终端和服务器协同执行实现。以终端单独执行实现本申请中的数据检索方法为例进行说明,用户可通过终端获取检索请求,确定与检索请求对应的多个检索维度中的主维度和待处理维度,并确定主维度中每个主维度成员所对应的数据量,然后将数据量满足阈值条件的主维度成员构成待分解维度,再从待处理维度中选取其中一个检索维度作为副维度,并基于副维度的各副维度成员和待分解维度构成至少一个新的组合维度,如果新构成的组合维度中存在数据量满足阈值条件的待分解维度,则返回从待处理维度中选取其中一个检索维度作为副维度的步骤继续执行,直至最终分解得到的每个组合维度所对应的数据量均不满足阈值条件时停止,最后基于最终分解得到各个组合维度生成对应的检索子任务并执行,基于各检索子任务的执行结果确定与检索请求对应的检索结果。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种数据检索方法,以该方法应用于计算机设备(该计算机设备具体可以是图1中的终端或服务器)为例进行说明,包括以下步骤:
步骤S202,获取检索请求,确定与检索请求对应的多个检索维度中的主维度和待处理维度。
其中,主维度用于对本次检索的整体范围进行划定,待处理维度用于协助主维度在检索过程中进行二次维度划分。
具体地,用户可通过计算机设备发起检索请求,检索请求中携带有本次检索查询的多个检索维度。进而计算机设备可从多个检索维度中确定出主维度和待处理维度。
举例说明,计算机设备从用户处获取检索请求,检索请求要求获取公司内部N个组织在M年四季度之内的财务数据,那么,部门可以作为本次检索的主维度,年度和季度可以作为本次检索的待处理维度。
步骤S204,确定主维度中每个主维度成员所对应的数据量。
其中,主维度包含多个主维度成员,每个主维度成员中包含多个数据,数据量可以是每个主维度成员包含数据的总内存,也可以是每个主维度成员包含数据的个数,这里不做限定。
具体地,计算机设备根据检索请求中的主维度确定其包含的主维度成员,并对主维度成员分别包含的数据量进行预估,预估可以是上一次检索时对该维度成员的数据量进行统计后的缓存,也可以是该维度成员的数据在写入数据库时即进行的统计。
比如,检索请求为获取公司内部N个组织在M年四季度之内的财务数据,那么,主维度为组织,该组织内包含N个子组织,每个子组织即为该主维度的主维度成员,在之前的一次关于组织的财务数据的检索中已经查询过每个子组织包含的财务数据量分别为P1、P2、…、Pn,该财务数据量信息被缓存在计算机设备中,所以,对于本次关于主维度组织的财务数据检索中,每个主维度成员子组织所对应的数据量即为P1、P2、…、Pn。
步骤S206,将数据量满足阈值条件的主维度成员构成待分解维度。
其中,阈值条件用于判定包含不同数据量的主维度成员或组合维度应该如何进行检索,阈值条件可以是每个主维度成员或组合维度的数据量对应的内存大于执行检索子任务的单线程的内存,也可以是每个主维度成员或组合维度的数据量的个数大于执行检索子任务的单线程能够处理的阈值个数,也可以是每个主维度成员或组合维度的数据量的个数大于阈值个数的预设倍数,比如1.2倍,这里不做限定。具体地,计算机设备将数据量满足阈值条件的主维度成员构成待分解维度。
步骤S208,从待处理维度中选取其中一个检索维度作为副维度,并基于副维度的各副维度成员和待分解维度构成至少一个新的组合维度。
具体地,计算机设备可从待处理维度中选取其中一个检索维度作为副维度,副维度中包含至少一个副维度成员,然后将副维度的每一个副维度成员和待分解维度分别构成一个新的组合维度。
在其中一个实施例中,检索请求为获取公司内部N个组织在2016-2020年度,每一年包括4个季度的财务数据,主维度为组织,待处理维度为年度和季度,主维度组织内包含A1、A2、…、An个子组织,假如子组织A3中包含的数据量的个数为1000个,而执行对应的检索子任务的单线程能够处理的数据量仅为500个,那么将子组织A3构成待分解维度,然后从待处理维度中选取年度作为副维度,副维度中包含2016年、2017年、2018年、2019年和2020年五个副维度成员,然后将子组织A3分别与2016年、2017年、2018年、2019年和2020年度构成一个新的组合维度。
步骤S210,判断新构成的组合维度中是否存在数据量满足阈值条件的待分解维度。若是,则返回步骤S208,若否,则进入步骤S212。
具体地,计算机设备对各个新构成的组合维度中的数据量进行预估,判断各个新构成的组合维度中的数据量是否满足阈值条件,将数据量满足阈值条件的新的组合维度作为待分解维度,再从待处理维度中选取一个未使用的检索维度作为副维度,并基于副维度的各副维度成员和待分解维度继续构成至少一个新的组合维度,一直到最终分解得到的每个组合维度所对应的数据量均不满足阈值条件时停止。
在其中一个实施例中,如前述实施例中得到的子组织A3和2018年度一起构成的新的组合维度,计算机设备对该新组合维度中的数据量进行预估,若该新组合维度中的数据量所对应的内存大于执行检索子任务的单个线程的内存,那么,将该新组合维度作为待分解维度,再从待处理维度中选取季度维度作为副维度,基于季度维度的4个副维度成员(第一季度、第二季度、第三季度和第四季度)和待分解维度(A3子组织2018年度)构成A3组织2018年度第一季度、A3组织2018年度第二季度、A3组织2018年度第三季度、A3组织2018年度第四季度共4个新的组合维度,计算机设备再对各个新的组合维度的数据量进行预估,判断各个新构成的组合维度中的数据量是否满足阈值条件,以此类推,直到最终分解得到的每个组合维度所对应的数据量的内存均小于执行检索子任务的单个线程的内存时停止。
步骤S212,基于最终分解得到各个组合维度生成对应的检索子任务并执行,基于各检索子任务的执行结果确定与检索请求对应的检索结果。
其中,每个检索子任务由单个线程或者单个节点进行执行。
具体地,计算机设备将最终分解得到的各个组合维度生成一个对应的检索子任务,并在单个线程或节点上基于各个检索子任务执行检索操作,各个检索子任务检索后得到的检索结果组成了检索请求对应的检索结果的一部分。
在其中一个实施例中,最终分解得到的各个组合维度包含的数据量均小于单线程能够处理的数据量时,将各个组合维度生成对应的检索子任务,比如将前述实施例中的组合维度——A3组织2018年度第一季度生成对应的检索子任务,使用单个线程对该检索子任务执行检索,检索得到的结果组成了检索请求对应的检索结果的一部分。
上述数据检索方法中,首先获取数据的检索请求,确定与检索请求对应的多个检索维度中的主维度和待处理维度,主维度可以确定本次检索的数据的主要范围,待处理维度可以协助主维度在检索过程中的二次维度划分。然后确定主维度中每个主维度成员所对应的数据量,这样可以根据每个主维度成员所对应的数据量决定是否需要对该主维度成员进行分解。将数据量满足阈值条件的主维度成员构成待分解维度,从待处理维度中选取其中一个检索维度作为副维度,并基于副维度的各副维度成员和待分解维度构成至少一个新的组合维度,这样利用副维度对数据量满足阈值条件的主维度成员构成的待分解维度进行分解,也就是利用副维度对数据量大的待分解维度进行分解,减少待分解维度中包含的数据量,使得执行对应检索子任务的线程不会出现内存溢出、卡顿或宕机的危险。若新构成的组合维度中存在数据量满足阈值条件的待分解维度,则再选取一个新的副维度对新构成的组合维度再进行分解,直至最终分解得到的每个组合维度所对应的数据量均不满足所述阈值条件时停止,这样保证得到的每一个组合维度的数据量均不会超出执行相应检索子任务的线程的性能范围。最后基于最终分解得到各个组合维度生成对应的检索子任务并执行,基于各检索子任务的执行结果确定与检索请求对应的检索结果。这样,对于多维度数据的检索,通过使用一个或多个副维度对检索请求中的主维度数据进行递进式分解,使得最后得到的所有组合维度的数据量均在完全可控的范围,避免各个线程执行检索任务时因为数据分布不均匀而导致的单节点处理时间过长或内存溢出的问题,也避免了因单次查询时数据库的I/O和计算处理压力过大而导致的数据库读写阻塞或宕机的问题,进而加快了数据检索的效率。
在一个实施例中,方法还包括:若主维度成员中存在数据量不满足阈值条件的主维度成员,则将数据量不满足阈值条件的主维度成员作为目标维度,直接基于目标维度生成对应的检索子任务并执行;若组合维度中存在数据量不满足阈值条件的组合维度,则将数据量不满足阈值条件的组合维度作为目标维度,直接基于目标维度生成对应的检索子任务并执行;基于各检索子任务的执行结果确定与检索请求对应的检索结果,包括:基于与各目标维度对应的检索子任务的执行结果、以及与各最终分解得到各组合维度对应的检索子任务的执行结果,确定与检索请求对应的检索结果。
其中,数据量不满足阈值条件可以是数据量小于执行检索子任务的单线程或单节点能处理的数据量,也可以是数据量对应的内存小于执行检索子任务的单线程或单节点的内存。
具体地,若主维度成员中存在数据量不满足阈值条件的主维度成员,计算机设备则将数据量不满足阈值条件的主维度成员作为目标维度,直接基于目标维度生成对应的检索子任务并执行。若组合维度中存在数据量不满足阈值条件的组合维度,计算机设备则将数据量不满足阈值条件的组合维度作为目标维度,直接基于目标维度生成对应的检索子任务并执行。最后将各目标维度对应的检索子任务的执行结果与各最终分解得到各组合维度对应的检索子任务的执行结果进行合并,得到与检索请求对应的检索结果。
在其中一个实施例中,如前述实施例所述,若检索请求为获取公司内部N个组织在2016-2020年度,每一年包括四个季度的财务数据,主维度组织内包含A1、A2、…、An个子组织,如果子组织A4的数据量小于执行检索子任务的单线程能处理的数据量,那么计算机设备将子组织A4作为目标维度,直接基于子组织A4生成对应的检索子任务并由单个线程执行检索。如果子组织A3和副维度成员2020年度组成的新的组合维度的数据量小于执行检索子任务的单线程能处理的数据量,那么计算机设备将子组织A3和副维度成员2020年度组成的新的组合维度作为目标维度,由单个线程对该目标维度执行检索。最后将主维度组织以下,各目标维度对应的检索子任务的执行结果与各最终分解得到各组合维度对应的检索子任务的执行结果进行合并,得到公司内部N个组织在2016-2020年度,每一年包括四个季度的财务数据的检索结果。
在其中一个实施例中,该数据检索方法包括以下步骤:计算机设备获取检索请求,确定与检索请求对应的多个检索维度中的主维度和待处理维度;确定主维度中每个主维度成员所对应的数据量;若主维度成员中存在数据量不满足阈值条件的主维度成员,则将数据量不满足阈值条件的主维度成员作为目标维度,直接基于目标维度生成对应的检索子任务并执行;若主维度成员中存在数据量满足阈值条件的主维度成员,则将数据量满足阈值条件的主维度成员构成待分解维度;从待处理维度中选取其中一个检索维度作为副维度,并基于副维度的各副维度成员和待分解维度构成至少一个新的组合维度;判断新构成的组合维度中是否存在数据量满足阈值条件的待分解维度;若新构成的组合维度中存在数据量不满足阈值条件的组合维度,则将数据量不满足阈值条件的组合维度作为目标维度,直接基于目标维度生成对应的检索子任务并执行;若新构成的组合维度中存在数据量满足阈值条件的待分解维度,则返回从待处理维度中选取其中一个检索维度作为副维度的步骤继续执行,直至最终分解得到的每个组合维度所对应的数据量均不满足阈值条件时停止。其中,单个线程或节点在执行从待处理维度中选取其中一个检索维度作为副维度,并基于副维度的各副维度成员和待分解维度构成至少一个新的组合维度的任务时,另一个线程或节点可以同时并行执行目标维度的检索任务。基于与各目标维度对应的检索子任务的执行结果、以及与各最终分解得到各组合维度对应的检索子任务的执行结果,确定与检索请求对应的检索结果。
本实施例中,将数据量不满足阈值条件的主维度成员和组合维度中作为目标维度直接生成检索子任务,并在单个线程或节点上执行检索操作,保证了单个检索子任务的数据量以及数据量对应的内存均不会超过单个线程或节点能够处理的数据量的上限以及内存上限,从而避免了出现数据量分布不均匀而导致单节点处理时间过长及内存溢出等问题,也避免了出现处理的数据过多而导致的数据库读写阻塞,甚至宕机的问题,加快了数据检索的速率。同时,新的组合维度的形成与目标维度检索任务的并行执行,也大大的加快了数据的检索效率。
在一个实施例中,若主维度成员中存在数据量不满足阈值条件的主维度成员,则将数据量不满足阈值条件的主维度成员作为目标维度,包括:若主维度成员中存在数据量不满足阈值条件的主维度成员,且多个数据量不满足阈值条件的主维度成员所对应的数据量总量不满足阈值条件,则将数据总量不满足阈值条件所对应的主维度成员进行合并,得到目标维度;若组合维度中存在数据量不满足阈值条件的组合维度,则将数据量不满足阈值条件的组合维度作为目标维度,包括:若组合维度中存在数据量不满足阈值条件的组合维度,且多个数据量不满足阈值条件的组合维度所对应的数据量总量不满足阈值条件,则将数据总量不满足阈值条件所对应的组合维度进行合并,得到目标维度。
其中,数据总量不满足阈值条件的主维度成员或组合维度进行合并的工作,与满足阈值条件的主维度成员或组合维度进行检索的工作,两者可以经由不同的节点或线程进行并行执行。
具体地,若多个主维度成员所包含的数据量的总和不满足阈值条件,计算机设备则将这些主维度成员进行合并,得到目标维度。若多个经过相同副维度分解的组合维度所包含的数据量的总和不满足阈值条件,计算机设备则将这些组合维度进行合并,得到目标维度。
在其中一个实施例中,阈值条件为数据量对应的内存大于2GB,如果检索请求为获取公司内部N个组织在2016-2020年度,每一年包括四个季度的财务数据,主维度为组织,待处理维度为年度和季度,主维度组织内包含A1、A2、…、An个子组织。比如,主维度成员A5和A6所包含的数据量的总内存为1.5GB,显然,1.5GB<2GB,那么,计算机设备将主维度成员A5和A6进行合并,构成一个目标维度。如前述实施例所述,若组合维度子组织A3在2019年度的数据量与子组织A3在2020年度的数据量的总内存为1.8GB,显然,1.8GB<2GB,那么,计算机设备将组合维度子组织A3在2019年度与组合维度子组织A3在2020年度进行合并,构成一个目标维度。
在其中一个实施例中,将多个经过相同维度分解的数据量不满足阈值条件的组合维度进行重新组合,得到至少一个子组合。对于支持多条件OR并行检索查询的数据源,可以基于数据量不满足阈值条件的基础,将一个或多个子组合组成一个总组合,该总组合构成目标维度(该总组合所对应的数据量不满足阈值条件),计算机设备利用单个线程或节点完成总组合对应的检索子任务。对于不支持多条件OR并行检索查询的数据源,则每个子组合均可构成一个目标维度,每个目标维度所对应的检索子任务由一个单独的线程或节点进行执行。
比如,阈值条件为单个线程能够处理的数据量为5000条,如果检索请求为获取公司内部N个组织在2016-2020年度,每一年包括四个季度的财务数据,主维度为组织,待处理维度为年度和季度,主维度组织内包含A1、A2、…、An个子组织。根据阈值条件,得到多个组合维度,包括:子组织A7在2016年度第一季度的数据量为1000条、子组织A7在2016年度第二季度的数据量为1000条、子组织A7在2017年度第三季度的数据量为500条、子组织A7在2017年度第四季度的数据量为500条、子组织A8在2016年度第三季度的数据量为1000条、子组织A8在2016年度第四季度的数据量为1000条。对于支持多条件OR并行检索查询的数据源,可以将以上六个组合维度在不出现不正确重叠组合维度的前提下进行合并,比如,将子组织A7在2016年度第一季度的数据量为1000条和子组织A7在2016年度第二季度的数据量为1000条进行合并,得到一个子组合B1,将子组织A7在2017年度第三季度的数据量为500条和子组织A7在2017年度第四季度的数据量为500条进行合并,得到一个子组合B2,将子组织A8在2016年度第三季度的数据量为1000条和子组织A8在2016年度第四季度的数据量为1000条进行合并,得到一个子组合B3,且子组合B1、B2和B3的总的数据量不超过5000条。将子组合B1、B2和B3合并成一个总组合,将该总组合构成一个目标维度,将该目标维度对应的检索子任务使用一个线程通过OR功能进行执行。对于不支持多条件OR并行检索查询的数据源,则将子组合B1、B2和B3分别构成一个目标维度,每个目标维度对应的检索子任务均通过一个单独的线程进行执行。
本实施例中,在不超过阈值条件的基础上,将多个主维度成员或多个组合维度进行合并,构成一个目标维度,可以使用单个线程完成多个主维度成员或多个组合维度的检索任务,避免线程的浪费,加快数据检索的速度,节省检索时间。对于支持多条件OR并行检索查询的数据源,还可以使用一个线程在不满足阈值条件的基础上同时执行多个子组合的检索子任务,更加提高了数据的检索效率。
在一个实施例中,确定与检索请求对应的多个检索维度中的主维度和待处理维度,包括:确定与检索请求对应的多个检索维度,其中,每个检索维度均包含至少一个维度成员;将包括的维度成员数量最多的检索维度作为主维度,并将多个检索维度中除主维度之外的其他检索维度作为待处理维度。
具体地,计算机设备根据检索请求,确定与检索请求对应的多个检索维度,每个检索维度至少包含一个维度成员。计算机设备将包括的维度成员数量最多的检索维度作为主维度,将除主维度之外的其他检索维度作为待处理维度。
在其中一个实施例中,如果检索请求为获取公司内部N个组织在2016-2020年度,每一年包括四个季度的财务数据,若N>5,则将组织作为主维度,年度和季度作为待处理维度。
本实施例中,计算机设备将维度成员数量最多的检索维度作为主维度,可以使参与检索的线程数可以在对主维度成员的数据量进行预估时就尽可能多的被利用,减少线程的浪费,加快数据检索的效率。
在一个实施例中,方法还包括:将每个检索维度按照所包含维度成员的数量从大到小进行排序;从待处理维度中选取其中一个检索维度作为副维度,包括:按照各待处理维度的排序顺序,从待处理维度中选取未进行组合的一个检索维度作为副维度。
具体地,计算机设备将检索请求中包含的检索维度按照所包含维度成员的数量从大到小进行排序,构成一个维度列表。计算机设备按照各待处理维度的排序顺序,从待处理维度中逐次选取未进行组合的一个检索维度作为副维度。
在其中一个实施例中,若检索请求为获取共同满足维度一、维度二、维度三的条件的数据,其中,维度一包含的维度成员为N,维度二包含的维度成员为M,维度三包含的维度成员为Q,且Q>M>N,那么,将维度按照维度三、维度二、维度一的顺序进行排序,检索时,维度三作为主维度,维度一和维度二作为待处理维度。如果需要选取一个检索维度作为副维度,首先选择维度二,其次再选择维度一。
本实施例中,将每个检索维度按照所包含维度成员的数量从大到小进行排序,确定一个维度列表,计算机设备就可以根据这个列表选择所需的维度进行数据检索,且先选择维度成员多的待处理维度作为副维度可以将数据量多的主维度成员或组合维度迅速划分为不满足阈值条件的待分解维度,从而加快数据检索的速率。
在一个实施例中,主维度所包括的主维度成员的数量不少于检索线程的总数量。
具体地,对于海量数据的检索,计算机设备选择的主维度所包括的主维度成员的数量不少于检索线程的总数量。
比如,参与检索的线程的总数量为J,那么,计算机设备选择的检索请求的主维度包含的主维度成员的数量O与J的关系应该为O≥J。
本实施例中,选择维度成员大于检索线程数量的维度作为主维度,可以确保参与检索的线程数可以在对主维度成员的数据量进行预估时就全部被利用,避免线程的浪费,加快数据检索的效率。
在另一个实施例中,主维度所包括的主维度成员的数量也可少于检索线程的总数量,这基于实际的情况而定,本申请实施例对此不作限定。
在一个具体的实施例中,如图3所示为使用本申请的数据检索方法进行检索的思路概要流程图,该方法可以应用在数据检索时的客户端。第一步,对所有维度按成员数量进行排序;第二步,选取非稀疏的维度,其中,非稀疏维度为未分解维度中,包含维度成员最多的维度;第三步,获取该维度每一个成员的数据分布情况;第四步分两种情况,对于数据较少的维度成员,可单独或组合生成查询指令,然后通过对应的线程执行数据查询任务,完成数据的检索;对于数据量超过分组阈值的维度成员,统一进行二次维度划分,返回到第二步中继续执行,直到完成所需的数据查询。图4(a)、图4(b)分别为多维度数据按照单维度数据结构和双维度数据结构在数据库进行存储时的维度成员分布情况。
在一个具体的实施例中,图5所示为数据检索方法在使用过程中的细节流程示意图,该方法可以应用在数据检索时的客户端。“多维度数据查询”的开始流程为一个多维度数据检索任务的主干,“数据查询”的开始流程为执行数据查询子任务的流程;“维度分解”的开始流程为执行数据维度分解的流程。在“多维度数据查询”的流程中,步骤一,确定检索请求中的主维度和待处理维度;步骤二,确定主维度成员的数据量;步骤三分两种情况,第一种情况:遍历主维度成员中无需分解的维度成员,将无需分解的维度成员生成查询子任务,此种情况需要在“数据查询”的开始流程中执行分流程,分流程步骤包括:执行当前维度成员的数据查询与计算任务,得到当前维度成员的数据查询结果,步骤三的第二种情况:主维度成员中有待分解的维度成员,生成对应的分解子任务,此种情况需要在“维度分解”的开始流程中执行分流程,分流程步骤包括:获取步骤一中的待处理维度列表,选取一个副维度对待分解维度进行分解,得到新的组合维度;步骤四,将“维度分解”流程中得到的新的组合维度作为“多维度数据查询”流程中步骤四的新的组合维度;步骤五,判断组合维度中是否存在待分解维度,若存在,则继续执行“维度分解”的分流程;若不存在,则进入步骤六,根据组合维度中无需分解的维度成员生成查询子任务;最后等待所有的子任务完成后,综合所有“数据查询”分流程中的数据查询结果,即为本次多维度数据查询的最终结果。
在上述实施例中,“获取待分解维度列表”的分流程和“分组查询计算任务”的分流程可以并行执行,即对于无需分解的维度成员,使用相应的线程完成该维度成员对应的查询子任务,同时,对于需要分解的维度成员,使用相应的线程可以同时执行维度分解任务,并将分解得到的多个组合维度中的一个组合维度生成对应的查询子任务,并使用该线程执行该子任务的数据查询工作,其余分解得到的多个组合维度可以列入排队查询的任务列表中,等待空闲的线程继续对其执行相应的数据查询工作或者维度分解工作。这样,数据查询和维度分解任务的多线程或多节点并行执行,以及对数据量较多的维度成员进行维度分解,将每一个线程处理的数据量掌握在可控的范围内,从而平衡客户端多线程的工作负载,可以更大程度的加快数据的检索效率。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的数据检索方法的数据检索装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个数据检索装置实施例中的具体限定可以参见上文中对于数据检索方法的限定,在此不再赘述。
在一个实施例中,如图6所示,提供了一种数据检索装置,包括:获取模块601、确定模块602、选取模块603和返回模块604,其中:
获取模块601,用于获取检索请求,确定与检索请求对应的多个检索维度中的主维度和待处理维度;
确定模块602,用于确定主维度中每个主维度成员所对应的数据量;
选取模块603,用于将数据量满足阈值条件的主维度成员构成待分解维度,从待处理维度中选取其中一个检索维度作为副维度,并基于副维度的各副维度成员和待分解维度构成至少一个新的组合维度;
返回模块604,用于若新构成的组合维度中存在数据量满足阈值条件的待分解维度,则返回从待处理维度中选取其中一个检索维度作为副维度的步骤继续执行,直至最终分解得到的每个组合维度所对应的数据量均不满足阈值条件时停止;
确定模块602,还用于基于最终分解得到各个组合维度生成对应的检索子任务并执行,基于各检索子任务的执行结果确定与检索请求对应的检索结果。
在一个实施例中,确定模块602,还用于若主维度成员中存在数据量不满足阈值条件的主维度成员,则将数据量不满足阈值条件的主维度成员作为目标维度,直接基于目标维度生成对应的检索子任务并执行;若组合维度中存在数据量不满足阈值条件的组合维度,则将数据量不满足阈值条件的组合维度作为目标维度,直接基于目标维度生成对应的检索子任务并执行;基于各检索子任务的执行结果确定与检索请求对应的检索结果,包括:基于与各目标维度对应的检索子任务的执行结果、以及与各最终分解得到各组合维度对应的检索子任务的执行结果,确定与检索请求对应的检索结果。
在一个实施例中,确定模块602,还用于若主维度成员中存在数据量不满足阈值条件的主维度成员,且多个数据量不满足阈值条件的主维度成员所对应的数据量总量不满足阈值条件,则将数据总量不满足阈值条件所对应的主维度成员进行合并,得到目标维度;若组合维度中存在数据量不满足阈值条件的组合维度,则将数据量不满足阈值条件的组合维度作为目标维度,包括:若组合维度中存在数据量不满足阈值条件的组合维度,且多个数据量不满足阈值条件的组合维度所对应的数据量总量不满足阈值条件,则将数据总量不满足阈值条件所对应的组合维度进行合并,得到目标维度。
在一个实施例中,确定模块602,还用于确定与检索请求对应的多个检索维度,其中,每个检索维度均包含至少一个维度成员;将包括的维度成员数量最多的检索维度作为主维度,并将多个检索维度中除主维度之外的其他检索维度作为待处理维度。
在一个实施例中,选取模块603,还用于将每个检索维度按照所包含维度成员的数量从大到小进行排序;从待处理维度中选取其中一个检索维度作为副维度,包括:按照各待处理维度的排序顺序,从待处理维度中选取未进行组合的一个检索维度作为副维度。
在一个实施例中,主维度所包括的主维度成员的数量不少于检索线程的总数量。
上述数据检索装置,确定与检索请求对应的多个检索维度中的主维度和待处理维度,主维度可以确定本次检索的数据的主要范围,待处理维度可以协助主维度在检索过程中的二次维度划分。然后确定主维度中每个主维度成员所对应的数据量,这样可以根据每个主维度成员所对应的数据量决定是否需要对该主维度成员进行分解。将数据量满足阈值条件的主维度成员构成待分解维度,从待处理维度中选取其中一个检索维度作为副维度,并基于副维度的各副维度成员和待分解维度构成至少一个新的组合维度,这样利用副维度对数据量满足阈值条件的主维度成员构成的待分解维度进行分解,也就是利用副维度对数据量大的待分解维度进行分解,可以减少待分解维度中包含的数据量,使得执行对应检索子任务的线程不会出现内存溢出、卡顿或宕机的危险。若新构成的组合维度中还存在数据量满足阈值条件的待分解维度,则再选取一个新的副维度对新构成的组合维度再进行分解,并不断的进行判断迭代,直至最终分解得到的每个组合维度所对应的数据量均不满足所述阈值条件时停止,这样保证得到的每一个组合维度的数据量均不会超出执行相应检索子任务的线程的性能范围。最后基于最终分解得到各个组合维度生成对应的检索子任务并执行,基于各检索子任务的执行结果确定与检索请求对应的检索结果。这样,对于多维度数据的检索,通过使用一个或多个副维度对检索请求中的主维度数据进行递进式分解,使得最后得到的所有组合维度的数据量均在完全可控的范围,避免各个线程执行检索任务时因为数据分布不均匀而导致的单节点处理时间过长或内存溢出的问题,也避免了因单次查询时数据库的I/O和计算处理压力过大而导致的数据库读写阻塞或宕机的问题,进而加快了数据检索的效率。
上述数据检索装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器或终端,其内部结构图可以如图7所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储各维度成员数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据检索方法。
本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:获取检索请求,确定与检索请求对应的多个检索维度中的主维度和待处理维度;确定主维度中每个主维度成员所对应的数据量;将数据量满足阈值条件的主维度成员构成待分解维度,从待处理维度中选取其中一个检索维度作为副维度,并基于副维度的各副维度成员和待分解维度构成至少一个新的组合维度;若新构成的组合维度中存在数据量满足阈值条件的待分解维度,则返回从待处理维度中选取其中一个检索维度作为副维度的步骤继续执行,直至最终分解得到的每个组合维度所对应的数据量均不满足阈值条件时停止;基于最终分解得到各个组合维度生成对应的检索子任务并执行,基于各检索子任务的执行结果确定与检索请求对应的检索结果。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:若主维度成员中存在数据量不满足阈值条件的主维度成员,则将数据量不满足阈值条件的主维度成员作为目标维度,直接基于目标维度生成对应的检索子任务并执行;若组合维度中存在数据量不满足阈值条件的组合维度,则将数据量不满足阈值条件的组合维度作为目标维度,直接基于目标维度生成对应的检索子任务并执行;基于各检索子任务的执行结果确定与检索请求对应的检索结果,包括:基于与各目标维度对应的检索子任务的执行结果、以及与各最终分解得到各组合维度对应的检索子任务的执行结果,确定与检索请求对应的检索结果。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:若主维度成员中存在数据量不满足阈值条件的主维度成员,则将数据量不满足阈值条件的主维度成员作为目标维度,包括:若主维度成员中存在数据量不满足阈值条件的主维度成员,且多个数据量不满足阈值条件的主维度成员所对应的数据量总量不满足阈值条件,则将数据总量不满足阈值条件所对应的主维度成员进行合并,得到目标维度;若组合维度中存在数据量不满足阈值条件的组合维度,则将数据量不满足阈值条件的组合维度作为目标维度,包括:若组合维度中存在数据量不满足阈值条件的组合维度,且多个数据量不满足阈值条件的组合维度所对应的数据量总量不满足阈值条件,则将数据总量不满足阈值条件所对应的组合维度进行合并,得到目标维度。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:确定与检索请求对应的多个检索维度中的主维度和待处理维度,包括:确定与检索请求对应的多个检索维度,其中,每个检索维度均包含至少一个维度成员;将包括的维度成员数量最多的检索维度作为主维度,并将多个检索维度中除主维度之外的其他检索维度作为待处理维度。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:将每个检索维度按照所包含维度成员的数量从大到小进行排序;从待处理维度中选取其中一个检索维度作为副维度,包括:按照各待处理维度的排序顺序,从待处理维度中选取未进行组合的一个检索维度作为副维度。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:主维度所包括的主维度成员的数量不少于检索线程的总数量。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:获取检索请求,确定与检索请求对应的多个检索维度中的主维度和待处理维度;确定主维度中每个主维度成员所对应的数据量;将数据量满足阈值条件的主维度成员构成待分解维度,从待处理维度中选取其中一个检索维度作为副维度,并基于副维度的各副维度成员和待分解维度构成至少一个新的组合维度;若新构成的组合维度中存在数据量满足阈值条件的待分解维度,则返回从待处理维度中选取其中一个检索维度作为副维度的步骤继续执行,直至最终分解得到的每个组合维度所对应的数据量均不满足阈值条件时停止;基于最终分解得到各个组合维度生成对应的检索子任务并执行,基于各检索子任务的执行结果确定与检索请求对应的检索结果。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:若主维度成员中存在数据量不满足阈值条件的主维度成员,则将数据量不满足阈值条件的主维度成员作为目标维度,直接基于目标维度生成对应的检索子任务并执行;若组合维度中存在数据量不满足阈值条件的组合维度,则将数据量不满足阈值条件的组合维度作为目标维度,直接基于目标维度生成对应的检索子任务并执行;基于各检索子任务的执行结果确定与检索请求对应的检索结果,包括:基于与各目标维度对应的检索子任务的执行结果、以及与各最终分解得到各组合维度对应的检索子任务的执行结果,确定与检索请求对应的检索结果。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:若主维度成员中存在数据量不满足阈值条件的主维度成员,则将数据量不满足阈值条件的主维度成员作为目标维度,包括:若主维度成员中存在数据量不满足阈值条件的主维度成员,且多个数据量不满足阈值条件的主维度成员所对应的数据量总量不满足阈值条件,则将数据总量不满足阈值条件所对应的主维度成员进行合并,得到目标维度;若组合维度中存在数据量不满足阈值条件的组合维度,则将数据量不满足阈值条件的组合维度作为目标维度,包括:若组合维度中存在数据量不满足阈值条件的组合维度,且多个数据量不满足阈值条件的组合维度所对应的数据量总量不满足阈值条件,则将数据总量不满足阈值条件所对应的组合维度进行合并,得到目标维度。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:确定与检索请求对应的多个检索维度中的主维度和待处理维度,包括:确定与检索请求对应的多个检索维度,其中,每个检索维度均包含至少一个维度成员;将包括的维度成员数量最多的检索维度作为主维度,并将多个检索维度中除主维度之外的其他检索维度作为待处理维度。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:将每个检索维度按照所包含维度成员的数量从大到小进行排序;从待处理维度中选取其中一个检索维度作为副维度,包括:按照各待处理维度的排序顺序,从待处理维度中选取未进行组合的一个检索维度作为副维度。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:主维度所包括的主维度成员的数量不少于检索线程的总数量。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种数据检索方法,其特征在于,所述方法包括:
获取检索请求,确定与所述检索请求对应的多个检索维度中的主维度和待处理维度;
确定所述主维度中每个主维度成员所对应的数据量;
将数据量满足阈值条件的主维度成员构成待分解维度,从所述待处理维度中选取其中一个检索维度作为副维度,并基于所述副维度的各副维度成员和所述待分解维度构成至少一个新的组合维度;
若新构成的所述组合维度中存在数据量满足阈值条件的待分解维度,则返回所述从所述待处理维度中选取其中一个检索维度作为副维度的步骤继续执行,直至最终分解得到的每个组合维度所对应的数据量均不满足所述阈值条件时停止;
基于最终分解得到各个组合维度生成对应的检索子任务并执行,基于各检索子任务的执行结果确定与所述检索请求对应的检索结果。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述主维度成员中存在数据量不满足所述阈值条件的主维度成员,则将数据量不满足所述阈值条件的主维度成员作为目标维度,直接基于所述目标维度生成对应的检索子任务并执行;
若所述组合维度中存在数据量不满足所述阈值条件的组合维度,则将数据量不满足所述阈值条件的组合维度作为目标维度,直接基于所述目标维度生成对应的检索子任务并执行;
所述基于各检索子任务的执行结果确定与所述检索请求对应的检索结果,包括:
基于与各所述目标维度对应的检索子任务的执行结果、以及与各所述最终分解得到各组合维度对应的检索子任务的执行结果,确定与所述检索请求对应的检索结果。
3.根据权利要求2所述的方法,其特征在于,所述若所述主维度成员中存在数据量不满足所述阈值条件的主维度成员,则将数据量不满足所述阈值条件的主维度成员作为目标维度,包括:
若所述主维度成员中存在数据量不满足所述阈值条件的主维度成员,且多个数据量不满足所述阈值条件的主维度成员所对应的数据量总量不满足阈值条件,则将数据总量不满足阈值条件所对应的主维度成员进行合并,得到目标维度;
所述若所述组合维度中存在数据量不满足所述阈值条件的组合维度,则将数据量不满足所述阈值条件的组合维度作为目标维度,包括:
若所述组合维度中存在数据量不满足所述阈值条件的组合维度,且多个数据量不满足所述阈值条件的组合维度所对应的数据量总量不满足阈值条件,则将数据总量不满足阈值条件所对应的组合维度进行合并,得到目标维度。
4.根据权利要求1所述的方法,其特征在于,所述确定与所述检索请求对应的多个检索维度中的主维度和待处理维度,包括:
确定与所述检索请求对应的多个检索维度,其中,每个检索维度均包含至少一个维度成员;
将包括的维度成员数量最多的检索维度作为主维度,并将所述多个检索维度中除所述主维度之外的其他检索维度作为待处理维度。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将每个检索维度按照所包含维度成员的数量从大到小进行排序;
所述从所述待处理维度中选取其中一个检索维度作为副维度,包括:
按照各待处理维度的排序顺序,从所述待处理维度中选取未进行组合的一个检索维度作为副维度。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述主维度所包括的主维度成员的数量不少于检索线程的总数量。
7.一种数据检索装置,其特征在于,所述装置包括:
获取模块,用于获取检索请求,确定与所述检索请求对应的多个检索维度中的主维度和待处理维度;
确定模块,用于确定所述主维度中每个主维度成员所对应的数据量;
选取模块,用于将数据量满足阈值条件的主维度成员构成待分解维度,从所述待处理维度中选取其中一个检索维度作为副维度,并基于所述副维度的各副维度成员和所述待分解维度构成至少一个新的组合维度;
返回模块,用于若新构成的所述组合维度中存在数据量满足阈值条件的待分解维度,则返回所述从所述待处理维度中选取其中一个检索维度作为副维度的步骤继续执行,直至最终分解得到的每个组合维度所对应的数据量均不满足所述阈值条件时停止;
所述确定模块,还用于基于最终分解得到各个组合维度生成对应的检索子任务并执行,基于各检索子任务的执行结果确定与所述检索请求对应的检索结果。
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述的方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
10.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111507004.5A CN114201491A (zh) | 2021-12-10 | 2021-12-10 | 数据检索方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111507004.5A CN114201491A (zh) | 2021-12-10 | 2021-12-10 | 数据检索方法、装置、计算机设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114201491A true CN114201491A (zh) | 2022-03-18 |
Family
ID=80652228
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111507004.5A Pending CN114201491A (zh) | 2021-12-10 | 2021-12-10 | 数据检索方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114201491A (zh) |
-
2021
- 2021-12-10 CN CN202111507004.5A patent/CN114201491A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11922221B2 (en) | System and method for automatic dependency analysis for use with a multidimensional database | |
US11797496B2 (en) | System and method for parallel support of multidimensional slices with a multidimensional database | |
WO2018222580A1 (en) | System and method for optimizing large database management systems | |
US20200059689A1 (en) | Query processing in data analysis | |
US9305076B1 (en) | Flattening a cluster hierarchy tree to filter documents | |
US20160034528A1 (en) | Co-processor-based array-oriented database processing | |
Raghavan et al. | Progressive result generation for multi-criteria decision support queries | |
KR102465391B1 (ko) | 실시간으로 데이터의 증가 속도에 따라 데이터 처리 주기를 설정하는 시스템의 분석 방법 | |
CN110795469B (zh) | 基于Spark的高维序列数据相似性查询方法及系统 | |
US10437839B2 (en) | Bulk sets for executing database queries | |
Liroz-Gistau et al. | Dynamic workload-based partitioning algorithms for continuously growing databases | |
JP7213890B2 (ja) | 高速化された大規模な類似度計算 | |
CN114201491A (zh) | 数据检索方法、装置、计算机设备和存储介质 | |
Ismaeel et al. | A systematic cloud workload clustering technique in large scale data centers | |
US20220066988A1 (en) | Hash suppression | |
CN115357352A (zh) | 分布式异步任务调度方法、装置、计算机设备、存储介质 | |
RU2755568C1 (ru) | Способ параллельного выполнения операции JOIN при обработке больших структурированных высокоактивных данных | |
CN114691302A (zh) | 一种面向大数据处理的动态缓存替换方法及设备 | |
CN110046173B (zh) | 调度信息的生成方法及装置、电子设备 | |
JP2000112973A (ja) | 空間インデックス方法及び空間インデックス処理プログラムを格納した媒体 | |
Krechowicz et al. | Business Intelligence Platform for Big Data based on Scalable Distributed Two-Layer Data Store. | |
CN114253723A (zh) | 任务调度方法、装置、计算机设备和存储介质 | |
Daoudi et al. | Fast 3D shape retrieval method for classified databases | |
CN108809726B (zh) | 盒覆盖节点的方法和系统 | |
CN115220657A (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 |