CN113918605A - 数据查询方法、装置、设备以及计算机存储介质 - Google Patents
数据查询方法、装置、设备以及计算机存储介质 Download PDFInfo
- Publication number
- CN113918605A CN113918605A CN202111195190.3A CN202111195190A CN113918605A CN 113918605 A CN113918605 A CN 113918605A CN 202111195190 A CN202111195190 A CN 202111195190A CN 113918605 A CN113918605 A CN 113918605A
- Authority
- CN
- China
- Prior art keywords
- sub
- field
- main
- unique identification
- target
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
-
- 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/242—Query formulation
- G06F16/2433—Query languages
Abstract
本发明实施例涉及计算机数据处理技术领域,公开了一种数据查询方法、装置、设备以及计算机存储介质,该方法包括:获取目标查询条件;目标查询条件中包括待查询字段和子查询条件;根据映射表确定主表中的各条主表记录分别对应的唯一标识字段值;映射表中包括待查询字段与唯一标识字段之间的字段值映射关系;将各条主表记录对应的唯一标识字段值分别在目标位图进行查询;其中,目标位图根据映射表对目标子表记录进行聚合得到;目标子表记录为子表中满足子查询条件的子表记录;主表和子表根据待查询字段进行关联;返回在待查询位图中查询到的唯一标识字段值所对应的主表记录。通过上述方式,本发明实施例提高了数据查询的效率。
Description
技术领域
本发明实施例涉及计算机数据处理技术领域,具体涉及一种数据查询方法、装置、设备以及计算机存储介质。
背景技术
目前在Apache Kylin的IN子查询采取的在查询阶段临时在内存里构造map,并对主表每一条记录的主字段,依次在map查询的方式。
发明人在实施本发明的过程中发现,由于主表记录数量较多,针对每条记录都需要在map里查找一遍,其数据查找的效率较低。
发明内容
鉴于上述问题,本发明实施例提供了一种数据查询方法、装置、设备以及计算机存储介质,用于解决现有技术中存在的数据查询效率较低的问题。
根据本发明实施例的一个方面,提供了一种数据查询方法,所述方法包括:
获取目标查询条件;所述目标查询条件中包括待查询字段和子查询条件;
根据映射表确定主表中的各条主表记录分别对应的唯一标识字段值;所述映射表中包括所述待查询字段与唯一标识字段之间的字段值映射关系;
将各条所述主表记录对应的所述唯一标识字段值分别在目标位图进行查询;其中,所述目标位图根据映射表对目标子表记录进行聚合得到;所述目标子表记录为子表中满足所述子查询条件的子表记录;所述主表和所述子表根据所述待查询字段进行关联;
返回在所述待查询位图中查询到的唯一标识字段值所对应的所述主表记录。
在一种可选的方式中,所述方法还包括:根据所述映射表确定所述目标子表记录对应的唯一标识字段值;
将所有所述目标子表记录对应的唯一标识字段值进行聚合,得到所述目标位图。
在一种可选的方式中,所述方法基于一联机分析处理引擎;所述主表记录中包括多个主表字段;所述待查询字段为所述主表字段中的一个;所述方法还包括:
根据所述主表和所述映射表构建主表视图;
在所述联机分析处理引擎中,以所述主表视图为事实表,以所述唯一标识字段为维度列,构建主数据立方体;
删除所述主数据立方体中所述主表字段对应的维度列;
根据各条所述主表记录在所述待查询字段下的字段值在所述主数据立方体中分别进行查询,得到所述各条主表记录分别对应的唯一标识字段值。
在一种可选的方式中,所述方法还包括:
根据所述主表字段将所述映射表与所述主表进行关联,得到关联后主表;
在所述关联后主表中添加所述唯一标识字段,得到所述主表视图。
在一种可选的方式中,所述方法基于一联机分析处理引擎;所述子表记录中包括多个子表字段;所述待查询字段为所述子表字段中的一个;所述方法还包括:
根据所述子表与所述映射表构建子表视图;
在所述联机分析处理引擎中,以所述子表视图为事实表构建从数据立方体;
删除所述从数据立方体中所述子表字段对应的维度列;
在所述从数据立方体中添加度量列;所述度量列用于确定至少一条子表记录在所述待查询字段下对应的位图数据;
将各条所述主表记录对应的所述唯一标识字段值在所述从数据立方体中进行查询。
在一种可选的方式中,所述方法还包括:
根据所述子表字段将所述映射表与所述子表进行关联,得到关联后子表;
在所述关联后子表中添加所述唯一标识字段,得到所述子表视图。
在一种可选的方式中,所述方法还包括:
获取所述主表的更新数据;
根据所述更新数据确定新增表;所述新增表中包括所述主表字段和所述唯一标识字段;
根据所述映射表中的唯一标识字段值确定所述新增表的所述唯一标识字段对应的字段值;
根据所述新增表对所述映射表进行更新。
根据本发明实施例的另一方面,提供了一种数据查询装置,包括:
获取模块,用于获取目标查询条件;所述目标查询条件中包括待查询字段和子查询条件;
确定模块,用于根据映射表确定主表中的各条主表记录分别对应的唯一标识字段值;所述映射表中包括所述待查询字段与唯一标识字段之间的字段值映射关系;
查询模块,用于将各条所述主表记录对应的所述唯一标识字段值分别在目标位图进行查询;其中,所述目标位图根据映射表对目标子表记录进行聚合得到;所述目标子表记录为子表中满足所述子查询条件的子表记录;所述主表和所述子表根据所述待查询字段进行关联;
返回模块,用于返回在所述待查询位图中查询到的唯一标识字段值所对应的所述主表记录。
根据本发明实施例的另一方面,提供了一种数据查询设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如所述的数据查询方法的操作。
根据本发明实施例的又一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使数据查询设备执行所述的数据查询方法的操作。
本发明实施例通过获取目标查询条件;目标查询条件中包括待查询字段和子查询条件;根据映射表确定主表中的各条主表记录分别对应的唯一标识字段值;映射表中包括待查询字段与唯一标识字段之间的字段值映射关系;然后将各条主表记录对应的唯一标识字段值分别在目标位图进行查询;其中,目标位图根据映射表对目标子表记录进行聚合得到;目标子表记录为子表中满足子查询条件的子表记录;主表和子表根据待查询字段进行关联;返回在待查询位图中查询到的唯一标识字段值所对应的主表记录。
区别于现有技术中把IN子查询结果放入内存临时构造的map里,然后针对主表查询得到的每一条记录,都需要取出主字段值在该map里查找,其时间复杂度为O(log(n))的方案,本发明实施例能够将各条主表在待查询字段下的字段值转换为对应的唯一标识字段值,并且将子查询的结果聚合为目标位图,从而将数据查询转换为将各条主表记录对应的唯一标识值在目标位图进行查询,将数据查询的时间复杂度降为O(1),由此能够提高数据查询的效率。
上述说明仅是本发明实施例技术方案的概述,为了能够更清楚了解本发明实施例的技术手段,而可依照说明书的内容予以实施,并且为了让本发明实施例的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
附图仅用于示出实施方式,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的数据查询方法的流程示意图;
图2示出了本发明实施例提供的数据查询方法的查询示意图;
图3示出了本发明实施例提供的数据查询装置的结构示意图;
图4示出了本发明实施例提供的数据查询设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。
在进行本发明实施例的数据查询方法的说明之前,先对相关名词进行说明:
子查询:在SQL语言中,一个SELECT-FROM-WHERE语句称为一个查询块。当获得一个查询的答案需要多个步骤的操作,首先必须创建一个查询来确定用户不知道但包含在数据库中的值,将一个查询块嵌套在另一个查询块的WHERE字句或HAVING短语的条件中查询块称为子查询或内层查询。上层的查询块称为父查询或外层查询。子查询的结果作为输入传递回“父查询”或“外部查询”。父查询将这个值结合到计算中,以便确定最后的输出。
联机分析处理:即Online analytical processing,简称OLAP,主要用于支持企业决策管理分析。OLAP中包括MOLAP(Multi-dimensional OLAP,多为联机分析处理)。MOLAP以多维数组(Multi-dimensional Array)存储模型的OLAP,是OLAP发源最初的形态,某些方面也等同于OLAP。它的特点是数据需要预计算(pre-computaion),然后把预计算之后的结果(cube)存在多维数组里。其中,cube包含所有维度的聚合结果,所以查询速度非常快。计算结果数据占用的磁盘空间相对关系型数据库更小。但其查询灵活度比较低。需要提前设计维度模型,查询分析的内容仅限于这些指定维度,增加维度需要重新计算。
ApacheKylin:OLAP工具的一种,其核心思想是利用空间换时间,将输入的原始记录分为维度列和度量列,利用MapReduce,按照维度列分组,聚合度量列,将维度列作为HBase记录的RowKey,将聚合的度量列作为HBase记录的列值,将聚合结果存入HBase,后续应用查询时直接从HBase得到结果返回,不需要现场临时计算,从而提升查询速度。
Hive:基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
Cube:即多维数据立方体,多维数据立方体是事实数据(即记录个别事件的数据)的扩展。扩展是基于用户要分析的列建立的,这些列称为维度。多维数据集是结果集,其中包含各维度的所有可能组合的交叉表格。
Bitmap:位图,用一个bit位来标记某个key对应的value。
图1示出了本发明实施例提供的数据查询方法的流程图,该方法由计算机处理设备执行。计算机处理设备可以包括手机、笔记本电脑等。如图1所示,该方法包括以下步骤:
步骤10:获取目标查询条件;所述目标查询条件中包括待查询字段和子查询条件。
在本发明的一个实施例中,待查询字段是主表中包括的多个主表字段中的一个,子查询条件用于在子表中进行查询,筛选出满足条件的子表记录,待查询字段是主表与子表的共同字段。
举例说明,主表中可以包括“设备标识”、“事件标识”以及“设备群组标识”等主表字段,其中,待查询字段为“设备群组标识”,子表中包括“应用标识”以及“设备群组标识”等子表字段。
步骤20:根据映射表确定主表中的各条主表记录分别对应的唯一标识字段值;所述映射表中包括所述待查询字段与唯一标识字段之间的字段值映射关系。
在本发明的一个实施例中,唯一标识字段的字段值类型可以为唯一整型标识。
映射表的建立过程至少包括:建立多个Hive映射表,每一个Hive映射表中存储主表的一个主表字段与唯一标识字段之间的字段值的映射关系。每一个Hive映射表中有两个字段:和主表字段以及子表字段类型相同的待匹配字段,其类型一般为字符串类型;以及唯一标识字段,其类型为整型。
在本发明的一个实施例中,考虑到主表中可能会存在记录的新增,因此,还可以增加一个定时任务,实现定时给主表在主表字段下新增的取值分配全局唯一整型标识。具体地,映射表的更新过程至少包括如下:
步骤204:获取所述主表的更新数据。
在本发明的一个实施例中,获取主表距离上次定时任务执行后新增的记录作为更新数据。
步骤205:根据所述更新数据确定新增表;所述新增表中包括所述主表字段和所述唯一标识字段。
在本发明的一个实施例中,定义一个Hive临时表,对应于前述Hive映射表,Hive临时表中包含两个字段:和主表字段以及子表字段类型相同的待匹配字段和整型的唯一标识字段。
将更新数据中的各条主表记录的待匹配字段下的字段值去重后作为待匹配字段下的字段值写入Hive临时表里,并将Hive临时表中的唯一标识字段下的字段值设置为空。
步骤206:根据所述映射表中的唯一标识字段值确定所述新增表的所述唯一标识字段对应的字段值。
在本发明的一个实施例中,将Hive临时表和前述Hive映射表根据待匹配字段进行左连接,找到Hive映射表里不存在的主表记录,覆写回Hive临时表。再使用Hive窗口函数row_number()over(order by key)对Hive临时表的唯一标识字段进行赋值,得到新增表的唯一标识字段对应的字段值。
步骤207:根据所述新增表对所述映射表进行更新。
在本发明的一个实施例中,将Hive临时表中各条记录追加到前述Hive映射表里,得到更新后的映射表。其中,追加Hive临时表的记录的待匹配字段值和Hive临时表的待匹配字段值相同,唯一标识字段值为Hive临时表中的唯一标识字段值和Hive映射表唯一标识字段最大值的和。
在本发明的一个实施例中,所述方法基于一联机分析处理引擎;所述主表记录中包括多个主表字段;所述待查询字段为所述主表字段中的一个;其中,联机分析处理引擎可以是Apache Kylin等多维联机分析处理引擎。
步骤20还包括:步骤201:根据所述主表和所述映射表构建主表视图;
在本发明的一个实施例中,为了实现查询时输入数据的类型由原有的字段值转换为整型的唯一标识值,在联机分析处理引擎中创建一个Hive视图作为主表视图,其中,主表视图包含主表中的所有主表字段,并增加来自Hive映射表的唯一标识字段,唯一标识字段与主表字段的关联可以根据各个主表对应的Hive映射表来完成。因此,在本发明的再一个实施例中,步骤201还包括:
步骤2011:根据所述主表字段将所述映射表与所述主表进行关联,得到关联后主表。
在本发明的一个实施例中,根据映射表中的主表字段下的字段值找到对应的主表记录进行关联,得到关联后主表。
步骤2012:在所述关联后主表中添加所述唯一标识字段,得到所述主表视图。
在本发明的一个实施例中,在关联后主表中的各个主表字段下的各个字段值后添加该字段值在映射表中对应的唯一标识字段值,得到主表视图。
步骤202:在所述联机分析处理引擎中,以所述主表视图为事实表,以所述唯一标识字段为维度列,构建主数据立方体。
在本发明的一个实施例中,在所述联机分析处理引擎中,构建主表对应的主数据立方体,并修改主数据立方体的定义,将其事实表修改为主表视图。进一步地,为了实现根据整型的唯一标识值进行查询,将唯一标识字段确定为主数据立方体的维度列。
步骤203:删除所述主数据立方体中所述主表字段对应的维度列。
在本发明的一个实施例中,为了实现根据整型的唯一标识值进行查询,而不是现有的根据待匹配的主表字段值在键值对映射中进行查询,在将唯一标识字段确定为主数据立方体的维度列之后,从主数据立方体中删除原主表中所述主表字段对应的维度列。
步骤204:根据各条所述主表记录在所述待查询字段下的字段值在所述主数据立方体中分别进行查询,得到所述各条主表记录分别对应的唯一标识字段值。
在本发明的一个实施例中,还可以对数据查询的方法进行对应修改,以实现根据唯一标识字段值在位图数据中的查询。
如在修改Calcite的IN查找处理方法:EnumerableDefaults#join_(),该函数返回一个迭代器对象,包含四个成员变量,这四个变量以及其初始值如下:
innerLookup:右表待匹配字段作为key,具有相同的待匹配字段的右表记录集合为value的map;
outers:左表记录集合;
inners:空集合;
unmatchedKeys:右表记录集合待匹配的关键字取值集合。
其中,左表指IN操作左边的表即本发明实施例中的主表,右表指IN操作右边的表,即本发明实施例中的子表。进一步地,对函数返回的迭代器对象的查找下一条匹配记录创建一moveNext()方法,moveNext()方法用于在右表待匹配字段为Bitmap接口类型,并且左表的待匹配字段为整型时,则调用Bitmap的contains方法,contains方法用于检查Bitmap里是否包含该整型对象。具体的查询动作的实现的过程可以参考图2。
步骤30:将各条所述主表记录对应的所述唯一标识字段值分别在目标位图进行查询;其中,所述目标位图根据映射表对目标子表记录进行聚合得到;所述目标子表记录为子表中满足所述子查询条件的子表记录;所述主表和所述子表根据所述待查询字段进行关联。
在本发明的一个实施例中,子查询条件可以是至少一个子表字段满足条件,如“应用标识”为4或者“应用标识”为4或5。主表和子表中共同包括一个相同的字段即待查询字段,子表中除了待查询字段还包括其他主表中没有的子表特有字段。
在对目标子表记录进行聚合时,考虑到位图的记录原理,将目标子表记录在待匹配字段下的字段值按照前述映射表转换为对应的唯一标识值,然后对所有目标子表记录对应的唯一标识值进行聚合,得到目标位图。
在本发明的一个实施例中,所述方法基于一联机分析处理引擎;所述子表记录中包括多个子表字段;所述待查询字段为所述子表字段中的一个;步骤30还包括:
步骤301:根据所述子表与所述映射表构建子表视图。
在本发明的一个实施例中,由于待查询的对象的数据类型是位图数据,而不是现有技术中的键值对映射图,因此,需要构建子表对应的子表视图,完成待查询对象的数据类型的转换,而在数据类型转换过程中,为了保证记录之前的一致性,根据映射表将子表记录的待匹配字段值与对应的唯一标识值关联起来,并将关联关系记录在子表视图中,从而为查询提供依据。
因此,在本发明的一个实施例中,步骤301还包括:
步骤3011:根据所述子表字段将所述映射表与所述子表进行关联,得到关联后子表。
在本发明的一个实施例中,根据映射表中的待匹配字段下的字段值找到对应的子表记录进行关联,得到关联后主表。
步骤3012:在所述关联后子表中添加所述唯一标识字段,得到所述子表视图。
在本发明的一个实施例中,在关联后子表中的待匹配字段值的各个字段值后添加该字段值在映射表中对应的唯一标识字段值,得到子表视图。
步骤302:在所述联机分析处理引擎中,以所述子表视图为事实表构建从数据立方体。
在本发明的一个实施例中,在将子表视图确定为事实表之后,联机分析处理引擎根据子表视图按照定义好的维度列和度量列进行抽取,得到从数据立方体。
步骤303:删除所述从数据立方体中所述子表字段对应的维度列。
在本发明的一个实施例中,由于在查询时是根据各个子表字段值映射得到的唯一标识值聚合后的位图数据查询,而并不基于原始的子表字段值,因此从数据立方体中所述子表字段对应的维度列。
步骤304:在所述从数据立方体中添加度量列;所述度量列用于确定至少一条子表记录在所述待查询字段下对应的位图数据。
在本发明的一个实施例中,度量列的表达式类型为去重计数、参数类型为字段、参数值为唯一标识值、返回类型为精确,从而联机分析处理引擎在构建从数据立方体时,唯一标识字段的维度列各个值将被聚合为一个位图数据,并存储到HBase以便后续查询。
步骤305:将各条所述主表记录对应的所述唯一标识字段值在所述从数据立方体中进行查询。
在本发明的一个实施例中,区别于现有技术中的查询SQL语句:select m.*from主表m where m.主字段in(select s.子字段from子表s where条件)
本发明通过带有bitmap查找功能的SQL:select m.*from主表视图mwhere m.gidin(select hold_bitmap(s.gid)from子表视图s where条件)进行查询。其中,hold_bitmap函数用于在子查询条件中存在多个子表维度取值时,将各个子表维度取值对应的位图数据再次进行聚合,得到一个总的位图对象。
举例说明,在本发明的一个实施例中查询语句为:
Select app_id,device_id,device_group,event_id
from dwd_event_amber_di_ii_view
where device_group_no
in(select hold_bitmap(device_group_no)
from dwd_user_group_list_view
where app_id='4'or app_id='5');
其中,dwd_event_amber_di_ii_view为主表视图;dwd_user_group_list_view为子表视图;device_group为待匹配字段;device_group_no为待匹配字段对应的唯一标识字段;app_id='4'or app_id='5'为子查询条件。通过hold_bitmap函数将app_id为4和app_id为5的所有子表记录分别对应bitmap合并为一个bitmap进行返回。
在本发明的再一个实施例中,hold_bitmap()函数的实现可以通过调用Kylin提供的BitmapCounter对象的add方法。
在本发明的一个实施例中,步骤30前还包括:
步骤306:根据所述映射表确定所述目标子表记录对应的唯一标识字段值。
在本发明的一个实施例中,根据待匹配字段在映射表中进行查询,得到所述目标子表记录对应的唯一标识字段值。
步骤307:将所有所述目标子表记录对应的唯一标识字段值进行聚合,得到所述目标位图。
在本发明的一个实施例中,将所有所述目标子表记录对应的唯一标识字段值进行聚合,得到所述目标位图。
步骤40:返回在所述待查询位图中查询到的唯一标识字段值所对应的所述主表记录。
在本发明的一个实施例中,还可以进一步对返回的主表记录的信息量进行限定,如返回满足目标查询条件的主表记录的一或多个字段值信息。如针对步骤305中的举例,其返回的即是满足目标查询条件的主表记录中的app_id、device_id、device_group以及event_id这些字段下的信息。
本发明实施例提供的数据查询方法通过获取目标查询条件;目标查询条件中包括待查询字段和子查询条件;根据映射表确定主表中的各条主表记录分别对应的唯一标识字段值;映射表中包括待查询字段与唯一标识字段之间的字段值映射关系;然后将各条主表记录对应的唯一标识字段值分别在目标位图进行查询;其中,目标位图根据映射表对目标子表记录进行聚合得到;目标子表记录为子表中满足子查询条件的子表记录;主表和子表根据待查询字段进行关联;返回在待查询位图中查询到的唯一标识字段值所对应的主表记录。
区别于现有技术中把IN子查询结果放入内存临时构造的map里,然后针对主表查询得到的每一条记录,都需要取出主字段值在该map里查找,其时间复杂度为O(log(n))的方案,本发明实施例提供的数据查询方法能够将各条主表在待查询字段下的字段值转换为对应的唯一标识字段值,并且将子查询的结果聚合为目标位图,从而将数据查询转换为将各条主表记录对应的唯一标识值在目标位图进行查询,将数据查询的时间复杂度降为O(1),由此能够提高数据查询的效率。
图3示出了本发明实施例提供的数据查询装置的结构示意图。如图3所示,该装置500包括:获取模块501、确定模块502、查询模块503以及返回模块504。
在一种可选的方式中,获取模块501,用于获取目标查询条件;所述目标查询条件中包括待查询字段和子查询条件;
确定模块502,用于根据映射表确定主表中的各条主表记录分别对应的唯一标识字段值;所述映射表中包括所述待查询字段与唯一标识字段之间的字段值映射关系;
查询模块503,用于将各条所述主表记录对应的所述唯一标识字段值分别在目标位图进行查询;其中,所述目标位图根据映射表对目标子表记录进行聚合得到;所述目标子表记录为子表中满足所述子查询条件的子表记录;所述主表和所述子表根据所述待查询字段进行关联;
返回模块504,用于返回在所述待查询位图中查询到的唯一标识字段值所对应的所述主表记录。
在一种可选的方式中,确定模块502还用于:根据所述映射表确定所述目标子表记录对应的唯一标识字段值;
将所有所述目标子表记录对应的唯一标识字段值进行聚合,得到所述目标位图。
在一种可选的方式中,所述主表记录中包括多个主表字段;所述待查询字段为所述主表字段中的一个;确定模块502还用于:
根据所述主表和所述映射表构建主表视图;
在所述联机分析处理引擎中,以所述主表视图为事实表,以所述唯一标识字段为维度列,构建主数据立方体;
删除所述主数据立方体中所述主表字段对应的维度列;
根据各条所述主表记录在所述待查询字段下的字段值在所述主数据立方体中分别进行查询,得到所述各条主表记录分别对应的唯一标识字段值。
在一种可选的方式中,确定模块502还用于:根据所述主表字段将所述映射表与所述主表进行关联,得到关联后主表;
在所述关联后主表中添加所述唯一标识字段,得到所述主表视图。
在一种可选的方式中,所述子表记录中包括多个子表字段;所述待查询字段为所述子表字段中的一个;查询模块503还用于:
根据所述子表与所述映射表构建子表视图;
在所述联机分析处理引擎中,以所述子表视图为事实表构建从数据立方体;
删除所述从数据立方体中所述子表字段对应的维度列;
在所述从数据立方体中添加度量列;所述度量列用于确定至少一条子表记录在所述待查询字段下对应的位图数据;
将各条所述主表记录对应的所述唯一标识字段值在所述从数据立方体中进行查询。
在一种可选的方式中,查询模块503还用于:
根据所述子表字段将所述映射表与所述子表进行关联,得到关联后子表;
在所述关联后子表中添加所述唯一标识字段,得到所述子表视图。
在一种可选的方式中,确定模块502还用于:
获取所述主表的更新数据;
根据所述更新数据确定新增表;所述新增表中包括所述主表字段和所述唯一标识字段;
根据所述映射表中的唯一标识字段值确定所述新增表的所述唯一标识字段对应的字段值;
根据所述新增表对所述映射表进行更新。
本发明实施例提供的数据查询装置通过获取目标查询条件;目标查询条件中包括待查询字段和子查询条件;根据映射表确定主表中的各条主表记录分别对应的唯一标识字段值;映射表中包括待查询字段与唯一标识字段之间的字段值映射关系;然后将各条主表记录对应的唯一标识字段值分别在目标位图进行查询;其中,目标位图根据映射表对目标子表记录进行聚合得到;目标子表记录为子表中满足子查询条件的子表记录;主表和子表根据待查询字段进行关联;返回在待查询位图中查询到的唯一标识字段值所对应的主表记录。
区别于现有技术中把IN子查询结果放入内存临时构造的map里,然后针对主表查询得到的每一条记录,都需要取出主字段值在该map里查找,其时间复杂度为O(log(n))的方案,本发明实施例提供的数据查询装置能够将各条主表在待查询字段下的字段值转换为对应的唯一标识字段值,并且将子查询的结果聚合为目标位图,从而将数据查询转换为将各条主表记录对应的唯一标识值在目标位图进行查询,将数据查询的时间复杂度降为O(1),由此能够提高数据查询的效率。
图4示出了本发明实施例提供的数据查询设备的结构示意图,本发明具体实施例并不对数据查询设备的具体实现做限定。
如图4所示,该数据查询设备可以包括:处理器(processor)602、通信接口(Communications Interface)604、存储器(memory)606、以及通信总线608。
其中:处理器602、通信接口604、以及存储器606通过通信总线608完成相互间的通信。通信接口604,用于与其它设备比如客户端或其它服务器等的网元通信。处理器602,用于执行程序610,具体可以执行上述用于数据查询方法实施例中的相关步骤。
具体地,程序610可以包括程序代码,该程序代码包括计算机可执行指令。
处理器602可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。数据查询设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器606,用于存放程序610。存储器606可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序610具体可以被处理器602调用使数据查询设备执行以下操作:
获取目标查询条件;所述目标查询条件中包括待查询字段和子查询条件;
根据映射表确定主表中的各条主表记录分别对应的唯一标识字段值;所述映射表中包括所述待查询字段与唯一标识字段之间的字段值映射关系;
将各条所述主表记录对应的所述唯一标识字段值分别在目标位图进行查询;其中,所述目标位图根据映射表对目标子表记录进行聚合得到;所述目标子表记录为子表中满足所述子查询条件的子表记录;所述主表和所述子表根据所述待查询字段进行关联;
返回在所述待查询位图中查询到的唯一标识字段值所对应的所述主表记录。
在一种可选的方式中,所述程序610被处理器602调用使数据查询设备执行以下操作:
根据所述映射表确定所述目标子表记录对应的唯一标识字段值;
将所有所述目标子表记录对应的唯一标识字段值进行聚合,得到所述目标位图。
在一种可选的方式中,所述方法基于一联机分析处理引擎;所述主表记录中包括多个主表字段;所述待查询字段为所述主表字段中的一个;所述程序610被处理器602调用使数据查询设备执行以下操作:
根据所述主表和所述映射表构建主表视图;
在所述联机分析处理引擎中,以所述主表视图为事实表,以所述唯一标识字段为维度列,构建主数据立方体;
删除所述主数据立方体中所述主表字段对应的维度列;
根据各条所述主表记录在所述待查询字段下的字段值在所述主数据立方体中分别进行查询,得到所述各条主表记录分别对应的唯一标识字段值。
在一种可选的方式中,所述程序610被处理器602调用使数据查询设备执行以下操作:
根据所述主表字段将所述映射表与所述主表进行关联,得到关联后主表;
在所述关联后主表中添加所述唯一标识字段,得到所述主表视图。
在一种可选的方式中,所述方法基于一联机分析处理引擎;所述子表记录中包括多个子表字段;所述待查询字段为所述子表字段中的一个;所述程序610被处理器602调用使数据查询设备执行以下操作:
根据所述子表与所述映射表构建子表视图;
在所述联机分析处理引擎中,以所述子表视图为事实表构建从数据立方体;
删除所述从数据立方体中所述子表字段对应的维度列;
在所述从数据立方体中添加度量列;所述度量列用于确定至少一条子表记录在所述待查询字段下对应的位图数据;
将各条所述主表记录对应的所述唯一标识字段值在所述从数据立方体中进行查询。
在一种可选的方式中,所述程序610被处理器602调用使数据查询设备执行以下操作:
根据所述子表字段将所述映射表与所述子表进行关联,得到关联后子表;
在所述关联后子表中添加所述唯一标识字段,得到所述子表视图。
在一种可选的方式中,所述程序610被处理器602调用使数据查询设备执行以下操作:
获取所述主表的更新数据;
根据所述更新数据确定新增表;所述新增表中包括所述主表字段和所述唯一标识字段;
根据所述映射表中的唯一标识字段值确定所述新增表的所述唯一标识字段对应的字段值;
根据所述新增表对所述映射表进行更新。
本发明实施例提供的数据查询设备通过获取目标查询条件;目标查询条件中包括待查询字段和子查询条件;根据映射表确定主表中的各条主表记录分别对应的唯一标识字段值;映射表中包括待查询字段与唯一标识字段之间的字段值映射关系;然后将各条主表记录对应的唯一标识字段值分别在目标位图进行查询;其中,目标位图根据映射表对目标子表记录进行聚合得到;目标子表记录为子表中满足子查询条件的子表记录;主表和子表根据待查询字段进行关联;返回在待查询位图中查询到的唯一标识字段值所对应的主表记录。
区别于现有技术中把IN子查询结果放入内存临时构造的map里,然后针对主表查询得到的每一条记录,都需要取出主字段值在该map里查找,其时间复杂度为O(log(n))的方案,本发明实施例提供的数据查询设备能够将各条主表在待查询字段下的字段值转换为对应的唯一标识字段值,并且将子查询的结果聚合为目标位图,从而将数据查询转换为将各条主表记录对应的唯一标识值在目标位图进行查询,将数据查询的时间复杂度降为O(1),由此能够提高数据查询的效率。
本发明实施例提供了一种计算机可读存储介质,所述存储介质存储有至少一可执行指令,该可执行指令在数据查询设备上运行时,使得所述数据查询设备执行上述任意方法实施例中的数据查询方法。
可执行指令具体可以用于使得数据查询设备执行以下操作:
获取目标查询条件;所述目标查询条件中包括待查询字段和子查询条件;
根据映射表确定主表中的各条主表记录分别对应的唯一标识字段值;所述映射表中包括所述待查询字段与唯一标识字段之间的字段值映射关系;
将各条所述主表记录对应的所述唯一标识字段值分别在目标位图进行查询;其中,所述目标位图根据映射表对目标子表记录进行聚合得到;所述目标子表记录为子表中满足所述子查询条件的子表记录;所述主表和所述子表根据所述待查询字段进行关联;
返回在所述待查询位图中查询到的唯一标识字段值所对应的所述主表记录。
在一种可选的方式中,所述可执行指令使所述数据查询设备执行以下操作:
根据所述映射表确定所述目标子表记录对应的唯一标识字段值;
将所有所述目标子表记录对应的唯一标识字段值进行聚合,得到所述目标位图。
在一种可选的方式中,所述主表记录中包括多个主表字段;所述待查询字段为所述主表字段中的一个;所述可执行指令使所述数据查询设备执行以下操作:
根据所述主表和所述映射表构建主表视图;
在所述联机分析处理引擎中,以所述主表视图为事实表,以所述唯一标识字段为维度列,构建主数据立方体;
删除所述主数据立方体中所述主表字段对应的维度列;
根据各条所述主表记录在所述待查询字段下的字段值在所述主数据立方体中分别进行查询,得到所述各条主表记录分别对应的唯一标识字段值。
在一种可选的方式中,所述可执行指令使所述数据查询设备执行以下操作:
根据所述主表字段将所述映射表与所述主表进行关联,得到关联后主表;
在所述关联后主表中添加所述唯一标识字段,得到所述主表视图。
在一种可选的方式中,所述子表记录中包括多个子表字段;所述待查询字段为所述子表字段中的一个;所述可执行指令使所述数据查询设备执行以下操作:
根据所述子表与所述映射表构建子表视图;
在所述联机分析处理引擎中,以所述子表视图为事实表构建从数据立方体;
删除所述从数据立方体中所述子表字段对应的维度列;
在所述从数据立方体中添加度量列;所述度量列用于确定至少一条子表记录在所述待查询字段下对应的位图数据;
将各条所述主表记录对应的所述唯一标识字段值在所述从数据立方体中进行查询。
在一种可选的方式中,所述可执行指令使所述数据查询设备执行以下操作:
根据所述子表字段将所述映射表与所述子表进行关联,得到关联后子表;
在所述关联后子表中添加所述唯一标识字段,得到所述子表视图。
在一种可选的方式中,所述可执行指令使所述数据查询设备执行以下操作:
获取所述主表的更新数据;
根据所述更新数据确定新增表;所述新增表中包括所述主表字段和所述唯一标识字段;
根据所述映射表中的唯一标识字段值确定所述新增表的所述唯一标识字段对应的字段值;
根据所述新增表对所述映射表进行更新。
本发明实施例提供的计算机存储介质通过获取目标查询条件;目标查询条件中包括待查询字段和子查询条件;根据映射表确定主表中的各条主表记录分别对应的唯一标识字段值;映射表中包括待查询字段与唯一标识字段之间的字段值映射关系;然后将各条主表记录对应的唯一标识字段值分别在目标位图进行查询;其中,目标位图根据映射表对目标子表记录进行聚合得到;目标子表记录为子表中满足子查询条件的子表记录;主表和子表根据待查询字段进行关联;返回在待查询位图中查询到的唯一标识字段值所对应的主表记录。
区别于现有技术中把IN子查询结果放入内存临时构造的map里,然后针对主表查询得到的每一条记录,都需要取出主字段值在该map里查找,其时间复杂度为O(log(n))的方案,本发明实施例提供的计算机存储介质能够将各条主表在待查询字段下的字段值转换为对应的唯一标识字段值,并且将子查询的结果聚合为目标位图,从而将数据查询转换为将各条主表记录对应的唯一标识值在目标位图进行查询,将数据查询的时间复杂度降为O(1),由此能够提高数据查询的效率。
本发明实施例提供一种数据查询装置,用于执行上述数据查询方法。
本发明实施例提供了一种计算机程序,所述计算机程序可被处理器调用使数据查询设备执行上述任意方法实施例中的数据查询方法。
本发明实施例提供了一种计算机程序产品,计算机程序产品包括存储在计算机可读存储介质上的计算机程序,计算机程序包括程序指令,当程序指令在计算机上运行时,使得所述计算机执行上述任意方法实施例中的数据查询方法。
在此提供的算法或显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明实施例也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。
本领域技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。上述实施例中的步骤,除有特殊说明外,不应理解为对执行顺序的限定。
Claims (10)
1.一种数据查询方法,其特征在于,所述方法包括:
获取目标查询条件;所述目标查询条件中包括待查询字段和子查询条件;
根据映射表确定主表中的各条主表记录分别对应的唯一标识字段值;所述映射表中包括所述待查询字段与唯一标识字段之间的字段值映射关系;
将各条所述主表记录对应的所述唯一标识字段值分别在目标位图进行查询;其中,所述目标位图根据映射表对目标子表记录进行聚合得到;所述目标子表记录为子表中满足所述子查询条件的子表记录;所述主表和所述子表根据所述待查询字段进行关联;
返回在所述待查询位图中查询到的唯一标识字段值所对应的所述主表记录。
2.根据权利要求1所述的方法,其特征在于,在所述将各条所述主表记录对应的所述唯一标识字段值分别在目标位图进行查询之前,包括:
根据所述映射表确定所述目标子表记录对应的唯一标识字段值;
将所有所述目标子表记录对应的唯一标识字段值进行聚合,得到所述目标位图。
3.根据权利要求1所述的方法,其特征在于,所述方法基于一联机分析处理引擎;所述主表记录中包括多个主表字段;所述待查询字段为所述主表字段中的一个;所述根据映射表确定主表中的各条主表记录分别对应的唯一标识字段值,包括:
根据所述主表和所述映射表构建主表视图;
在所述联机分析处理引擎中,以所述主表视图为事实表,以所述唯一标识字段为维度列,构建主数据立方体;
删除所述主数据立方体中所述主表字段对应的维度列;
根据各条所述主表记录在所述待查询字段下的字段值在所述主数据立方体中分别进行查询,得到所述各条主表记录分别对应的唯一标识字段值。
4.根据权利要求3所述的方法,其特征在于,所述根据所述主表和所述映射表构建主表视图,包括:
根据所述主表字段将所述映射表与所述主表进行关联,得到关联后主表;
在所述关联后主表中添加所述唯一标识字段,得到所述主表视图。
5.根据权利要求1所述的方法,其特征在于,所述方法基于一联机分析处理引擎;所述子表记录中包括多个子表字段;所述待查询字段为所述子表字段中的一个;所述将各条所述主表记录对应的所述唯一标识字段值分别在目标位图进行查询,包括:
根据所述子表与所述映射表构建子表视图;
在所述联机分析处理引擎中,以所述子表视图为事实表构建从数据立方体;
删除所述从数据立方体中所述子表字段对应的维度列;
在所述从数据立方体中添加度量列;所述度量列用于确定至少一条子表记录在所述待查询字段下对应的位图数据;
将各条所述主表记录对应的所述唯一标识字段值在所述从数据立方体中进行查询。
6.根据权利要求5所述的方法,其特征在于,所述根据所述子表与所述映射表构建子表视图,包括:
根据所述子表字段将所述映射表与所述子表进行关联,得到关联后子表;
在所述关联后子表中添加所述唯一标识字段,得到所述子表视图。
7.根据权利要求1所述的方法,其特征在于,在所述根据映射表确定主表中的各条主表记录分别对应的唯一标识字段值之前,包括:
获取所述主表的更新数据;
根据所述更新数据确定新增表;所述新增表中包括所述主表字段和所述唯一标识字段;
根据所述映射表中的唯一标识字段值确定所述新增表的所述唯一标识字段对应的字段值;
根据所述新增表对所述映射表进行更新。
8.一种数据查询装置,其特征在于,所述装置包括:
获取模块,用于获取目标查询条件;所述目标查询条件中包括待查询字段和子查询条件;
确定模块,用于根据映射表确定主表中的各条主表记录分别对应的唯一标识字段值;所述映射表中包括所述待查询字段与唯一标识字段之间的字段值映射关系;
查询模块,用于将各条所述主表记录对应的所述唯一标识字段值分别在目标位图进行查询;其中,所述目标位图根据映射表对目标子表记录进行聚合得到;所述目标子表记录为子表中满足所述子查询条件的子表记录;所述主表和所述子表根据所述待查询字段进行关联;
返回模块,用于返回在所述待查询位图中查询到的唯一标识字段值所对应的所述主表记录。
9.一种数据查询设备,其特征在于,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-7任意一项所述的数据查询方法的操作。
10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一可执行指令,所述可执行指令在数据查询设备上运行时,使得数据查询设备执行如权利要求1-7任意一项所述的数据查询方法的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111195190.3A CN113918605A (zh) | 2021-10-13 | 2021-10-13 | 数据查询方法、装置、设备以及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111195190.3A CN113918605A (zh) | 2021-10-13 | 2021-10-13 | 数据查询方法、装置、设备以及计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113918605A true CN113918605A (zh) | 2022-01-11 |
Family
ID=79240178
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111195190.3A Pending CN113918605A (zh) | 2021-10-13 | 2021-10-13 | 数据查询方法、装置、设备以及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113918605A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114138798A (zh) * | 2022-01-29 | 2022-03-04 | 阿里巴巴达摩院(杭州)科技有限公司 | 查询结果命中概率估计系统、方法、电子设备及介质 |
CN114741393A (zh) * | 2022-04-19 | 2022-07-12 | 四川大学 | 一种材料基因工程数据转换及检索方法 |
-
2021
- 2021-10-13 CN CN202111195190.3A patent/CN113918605A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114138798A (zh) * | 2022-01-29 | 2022-03-04 | 阿里巴巴达摩院(杭州)科技有限公司 | 查询结果命中概率估计系统、方法、电子设备及介质 |
CN114741393A (zh) * | 2022-04-19 | 2022-07-12 | 四川大学 | 一种材料基因工程数据转换及检索方法 |
CN114741393B (zh) * | 2022-04-19 | 2023-04-28 | 四川大学 | 一种材料基因工程数据转换及检索方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3602351B1 (en) | Apparatus and method for distributed query processing utilizing dynamically generated in-memory term maps | |
US10210236B2 (en) | Storing and retrieving data of a data cube | |
US7734615B2 (en) | Performance data for query optimization of database partitions | |
US20110137890A1 (en) | Join Order for a Database Query | |
US20150302058A1 (en) | Database system with highly denormalized database structure | |
CN107301214B (zh) | 在hive中数据迁移方法、装置及终端设备 | |
EP3289484B1 (en) | Method and database computer system for performing a database query using a bitmap index | |
CN107203640B (zh) | 通过数据库运行记录建立物理模型的方法及系统 | |
US10706077B2 (en) | Performance of distributed databases and database-dependent software applications | |
WO2017096892A1 (zh) | 索引构建方法、查询方法及对应装置、设备、计算机存储介质 | |
CN109791543B (zh) | 执行多表连接操作的控制方法及对应装置 | |
EP3217296A1 (en) | Data query method and apparatus | |
US10936606B2 (en) | Method and system for processing data in a parallel database environment | |
CN113918605A (zh) | 数据查询方法、装置、设备以及计算机存储介质 | |
CN110019384A (zh) | 一种血缘数据的获取方法、提供血缘数据的方法及装置 | |
CN108140022B (zh) | 数据查询方法和数据库系统 | |
US20150120697A1 (en) | System and method for analysis of a database proxy | |
CN109471874A (zh) | 数据分析方法、设备及存储介质 | |
US8805811B2 (en) | Executing user-defined function on a plurality of database tuples | |
CN106991116B (zh) | 数据库执行计划的优化方法和装置 | |
WO2023086322A1 (en) | Late materialization of queried data in database cache | |
CN115658680A (zh) | 数据存储方法、数据查询方法和相关装置 | |
US9378229B1 (en) | Index selection based on a compressed workload | |
CN110609854A (zh) | 字段名查询方法、系统、电子设备及计算机存储介质 | |
CN109344216A (zh) | 一种面向大数据的k近邻连接查询方法 |
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 |