CN111538747A - 数据查询、辅助数据查询的方法、装置和设备 - Google Patents
数据查询、辅助数据查询的方法、装置和设备 Download PDFInfo
- Publication number
- CN111538747A CN111538747A CN202010463573.3A CN202010463573A CN111538747A CN 111538747 A CN111538747 A CN 111538747A CN 202010463573 A CN202010463573 A CN 202010463573A CN 111538747 A CN111538747 A CN 111538747A
- Authority
- CN
- China
- Prior art keywords
- data table
- query
- field
- target
- primary key
- 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.)
- Granted
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/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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- 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
-
- 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
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例公开了一种数据查询、辅助查询数据的方法、装置和设备,其中,数据查询方法接收到携带初始查询条件查询请求后;如果初始查询条件中的查询字段是目标数据表的非索引字段,则先从目标二级数据表中查询得到初始查询条件对应的目标数据表的索引字段的取值集合,再以目标数据表的索引字段及该取值集合为新的查询条件,查询目标数据表得到存储在大数据计算服务中的目标数据;其中,目标数据表是大数据计算服务的基础数据表的外部表,以主键字段为索引字段;目标二级数据表是基础数据表的一张扩展数据表的外部表,其中存储有基础数据表的主键字段和一个非主键字段,并以所述非主键字段为索引字段,且扩展数据表的索引字段与查询字段相同。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据查询、辅助数据查询的方法、装置和设备。
背景技术
随着业务量的增长和时间的推移,一些企业(如互联网企业)或机构的数据量越来越多,传统的数据存储和计算模式已不能满足要求。为此,一些有能力的企业推出了大数据计算服务,如MaxCompute(原名ODPS)、分布式数据库Hadoop等,以供有需求的企业或机构使用。
企业或机构作为大数据服务的用户,在使用大数据计算服务时,常常要进行数据查询。目前有两种查询方式,一种是利用大数据服务提供的软件开发工具包(SoftwareDevelopment Kit,SDK)直连查询,查询效率低;另一种是通过同步工具,把大数据服务表里的数据回流到本地的高性能数据库,然后再查询,这种方式需要在本地构建高性能的数据库,需要增加额外的存储计算资源,且数据同步完成之后,一份数据存储存多份,该需要维护同步任务,日常同步任务也会消耗计算资源,另外当数据在查询过程中发生更新时需重新回流,无法保障数据更新的及时性。
可见,现有的从大数据计算服务中查询数据的方式均不理想,亟待改进。
发明内容
本说明书实施例提供了一种数据查询、辅助数据查询的方法、装置和设备,以解决相关技术中的数据查询方式均不理想的问题。
为解决上述技术问题,本说明书实施例是这样实现的:
第一方面,提出了一种数据查询方法,应用于查询引擎,所述方法包括:
接收查询请求,所述查询请求中携带初始查询条件;
如果所述初始查询条件中的查询字段是目标数据表的非索引字段,则基于所述初始查询条件,查询目标二级数据表得到所述初始查询条件对应的所述目标数据表的索引字段的取值集合,其中,所述目标数据表是大数据计算服务的基础数据表的外部表,所述基础数据表以主键字段为索引字段,所述目标二级数据表是所述基础数据表的一张扩展数据表的外部表;所述扩展数据表中存储有所述基础数据表的主键字段和该非主键字段对应的值,以及所述基础数据表中的一个非主键字段和该非主键字段对应的值;所述扩展数据表以所述非主键字段为索引字段,所述扩展数据表的索引字段与所述查询字段相同;
以所述目标数据表的索引字段及所述取值集合为新的查询条件,查询所述目标数据表得到存储在所述大数据计算服务中的目标数据。
第二方面,提出了一种辅助查询数据的方法,应用于大数据计算服务,所述方法包括:
响应于数据表修改请求,在所述大数据计算服务中的源数据表中选择一个主键字段作为索引字段,得到基础数据表;
响应于数据表新建请求,基于所述基础数据表的主键字段和非主键字段创建至少一个扩展数据表,所述扩展数据表中存储有所述基础数据表的主键字段和一个非主键字段,所述扩展数据表以自身存储的所述基础数据表的非主键字段为索引字段;
响应于初始化请求,对所述基础数据表进行刷新,并基于刷新后的基础数据表补全所述扩展数据表中的两个字段的值;
其中,所述基础数据表用于查询引擎创建目标数据表,所述目标数据表为所述基础数据的外部表;所述扩展数据表用于所述查询引擎创建目标二级数据表,所述目标二级数据表是所述扩展数据的外部表;所述查询引擎用于接收携带初始查询条件的查询请求,如果所述初始查询条件中的查询字段是目标数据表的非索引字段,则基于所述初始查询条件,查询目标二级数据表得到所述初始查询条件对应的所述目标数据表的索引字段的取值集合,以所述目标数据表的索引字段及所述取值集合为新的查询条件,查询所述目标数据表得到存储在所述大数据计算服务中的目标数据,所述扩展数据表的索引字段与所述查询字段相同。
第三方面,提出了一种数据查询装置,应用于查询引擎,所述装置包括:
请求接收模块,用于接收查询请求,所述查询请求中携带初始查询条件;
第一查询模块,用于如果所述初始查询条件中的查询字段是目标数据表的非索引字段,则基于所述初始查询条件,查询目标二级数据表得到所述初始查询条件对应的所述目标数据表的索引字段的取值集合,其中,所述目标数据表是大数据计算服务的基础数据表的外部表,所述基础数据表以主键字段为索引字段,所述目标二级数据表是所述基础数据表的一张扩展数据表的外部表;所述扩展数据表中存储有所述基础数据表的主键字段和该非主键字段对应的值,以及所述基础数据表中的一个非主键字段和该非主键字段对应的值;所述扩展数据表以所述非主键字段为索引字段,所述扩展数据表的索引字段与所述查询字段相同;
第二查询模块,用于以所述目标数据表的索引字段及所述取值集合为新的查询条件,查询所述目标数据表得到存储在所述大数据计算服务中的目标数据。
第四方面,提出了一种辅助查询数据的装置,应用于大数据计算服务,所述装置包括:
第一响应模块,用于响应于数据表修改请求,在所述大数据计算服务中的源数据表中选择一个主键字段作为索引字段,得到基础数据表;
第二响应模块,用于响应于数据表新建请求,基于所述基础数据表的主键字段和非主键字段创建至少一个扩展数据表,所述扩展数据表中存储有所述基础数据表的主键字段和一个非主键字段,所述扩展数据表以自身存储的所述基础数据表的非主键字段为索引字段;
第三响应模块,用于响应于初始化请求,对所述基础数据表进行刷新,并基于刷新后的基础数据表补全所述扩展数据表中的两个字段的值;
其中,所述基础数据表用于查询引擎创建目标数据表,所述目标数据表为所述基础数据的外部表;所述扩展数据表用于所述查询引擎创建目标二级数据表,所述目标二级数据表是所述扩展数据的外部表;所述查询引擎用于接收携带初始查询条件的查询请求,如果所述初始查询条件中的查询字段是目标数据表的非索引字段,则基于所述初始查询条件,查询目标二级数据表得到所述初始查询条件对应的所述目标数据表的索引字段的取值集合,以所述目标数据表的索引字段及所述取值集合为新的查询条件,查询所述目标数据表得到存储在所述大数据计算服务中的目标数据,所述扩展数据表的索引字段与所述查询字段相同。
第五方面,提出了一种电子设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:
接收查询请求,所述查询请求中携带初始查询条件;
如果所述初始查询条件中的查询字段是目标数据表的非索引字段,则基于所述初始查询条件,查询目标二级数据表得到所述初始查询条件对应的所述目标数据表的索引字段的取值集合,其中,所述目标数据表是大数据计算服务的基础数据表的外部表,所述基础数据表以主键字段为索引字段,所述目标二级数据表是所述基础数据表的一张扩展数据表的外部表;所述扩展数据表中存储有所述基础数据表的主键字段和该非主键字段对应的值,以及所述基础数据表中的一个非主键字段和该非主键字段对应的值;所述扩展数据表以所述非主键字段为索引字段,所述扩展数据表的索引字段与所述查询字段相同;
以所述目标数据表的索引字段及所述取值集合为新的查询条件,查询所述目标数据表得到存储在所述大数据计算服务中的目标数据。
第六方面,提出了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:
接收查询请求,所述查询请求中携带初始查询条件;
如果所述初始查询条件中的查询字段是目标数据表的非索引字段,则基于所述初始查询条件,查询目标二级数据表得到所述初始查询条件对应的所述目标数据表的索引字段的取值集合,其中,所述目标数据表是大数据计算服务的基础数据表的外部表,所述基础数据表以主键字段为索引字段,所述目标二级数据表是所述基础数据表的一张扩展数据表的外部表;所述扩展数据表中存储有所述基础数据表的主键字段和该非主键字段对应的值,以及所述基础数据表中的一个非主键字段和该非主键字段对应的值;所述扩展数据表以所述非主键字段为索引字段,所述扩展数据表的索引字段与所述查询字段相同;
以所述目标数据表的索引字段及所述取值集合为新的查询条件,查询所述目标数据表得到存储在所述大数据计算服务中的目标数据。
第七方面,提出了一种电子设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:
响应于数据表修改请求,在所述大数据计算服务中的源数据表中选择一个主键字段作为索引字段,得到基础数据表;
响应于数据表新建请求,基于所述基础数据表的主键字段和非主键字段创建至少一个扩展数据表,所述扩展数据表中存储有所述基础数据表的主键字段和一个非主键字段,所述扩展数据表以自身存储的所述基础数据表的非主键字段为索引字段;
响应于初始化请求,对所述基础数据表进行刷新,并基于刷新后的基础数据表补全所述扩展数据表中的两个字段的值;
其中,所述基础数据表用于查询引擎创建目标数据表,所述目标数据表为所述基础数据的外部表;所述扩展数据表用于所述查询引擎创建目标二级数据表,所述目标二级数据表是所述扩展数据的外部表;所述查询引擎用于接收携带初始查询条件的查询请求,如果所述初始查询条件中的查询字段是目标数据表的非索引字段,则基于所述初始查询条件,查询目标二级数据表得到所述初始查询条件对应的所述目标数据表的索引字段的取值集合,以所述目标数据表的索引字段及所述取值集合为新的查询条件,查询所述目标数据表得到存储在所述大数据计算服务中的目标数据,所述扩展数据表的索引字段与所述查询字段相同。
第八方面,提出了一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:
响应于数据表修改请求,在所述大数据计算服务中的源数据表中选择一个主键字段作为索引字段,得到基础数据表;
响应于数据表新建请求,基于所述基础数据表的主键字段和非主键字段创建至少一个扩展数据表,所述扩展数据表中存储有所述基础数据表的主键字段和一个非主键字段,所述扩展数据表以自身存储的所述基础数据表的非主键字段为索引字段;
响应于初始化请求,对所述基础数据表进行刷新,并基于刷新后的基础数据表补全所述扩展数据表中的两个字段的值;
其中,所述基础数据表用于查询引擎创建目标数据表,所述目标数据表为所述基础数据的外部表;所述扩展数据表用于所述查询引擎创建目标二级数据表,所述目标二级数据表是所述扩展数据的外部表;所述查询引擎用于接收携带初始查询条件的查询请求,如果所述初始查询条件中的查询字段是目标数据表的非索引字段,则基于所述初始查询条件,查询目标二级数据表得到所述初始查询条件对应的所述目标数据表的索引字段的取值集合,以所述目标数据表的索引字段及所述取值集合为新的查询条件,查询所述目标数据表得到存储在所述大数据计算服务中的目标数据,所述扩展数据表的索引字段与所述查询字段相同。
本说明书实施例提供的至少一个技术方案,查询前,在大数据计算服务中创建以主键字段为索引字段的基础数据表,以及以基础数据表中的一个非主键字段为索引字段的扩展数据表,扩展数据表还对应存储有基础数据表的索引字段(主键字段),同时在查询引擎中创建基础数据表和扩展数据表的外部表,这两个外部表分别是目标数据表和目标二级数据表;然后,在查询时,如果查询请求携带的初始查询条件中的查询字段为目标数据表的非索引字段,则先从目标二级数据表得到初始查询条件对应的目标数据表的索引字段的取值集合(称为前置查询),再以所述目标数据表的索引字段及所述取值集合为新的查询条件,查询所述目标数据表得到存储在所述大数据计算服务中的目标数据(可称为主查询)。该方案,一方面,将相关技术中的一次查询拆分成了两次查询,且每次查询都是以被查询的数据表的索引字段为查询条件,这相比于直接使用非索引字段查询,可以大大提升查询效率;另一方面,由于基础数据表的外部表一般只包含基础数据表的元数据信息和文件数据指向信息而不包含基础数据表对应的文件数据,因此可以减少数据回流带来的一份数据存储多份的存储成本;再有,引入独立于大数据计算服务的查询引擎,可以绕开大数据计算服务的计算引擎的调度逻辑,避免在大数据计算服务所在服务器或服务器集群中进行排队,不需要和大数据计算服务中的数据表共享计算资源,而是使用查询引擎的弹性计算资源,再次提高了查询效率;还有,可以直接从内存中读取前置查询的结果以进行主查询,从而可以进一步提升查询效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是本说明书实施例提供的数据查询***的架构示意图。
图2是本说明书实施例提供的数据查询方法的流程示意图。
图3是本说明书实施例提供的数据查询方法中的数据表创建过程示意图。
图4是本说明书实施例提供的数据查询方法的流程示意图。
图5是本说明书实施例提供的数据查询方法的查询效果示意图之一。
图6是本说明书实施例提供的数据查询方法的查询效果示意图之二。
图7是本说明书实施例提供的数据查询方法的查询效果示意图之三。
图8是本说明书实施例提供的辅助查询数据的方法的流程示意图。
图9是本说明书实施例提供的一种电子设备的结构示意图。
图10是本说明书实施例提供的数据查询装置的结构示意图。
图11是本说明书实施例提供的辅助查询数据的装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了解决相关技术中的数据查询方式不够理想的问题,本说明书实施例提供一种数据查询方法和装置,以及一种辅助查询数据的方法和装置。本说明书实施例提供的方法及装置可以由电子设备执行,例如服务端设备。换言之,所述方法可以由安装在服务端设备的软件或硬件来执行。所述服务端包括但不限于单台服务器、服务器集群、云端服务器或云端服务器集群等。
下面先结合图1对本说明书实施例提供数据查询***的架构进行说明。如图1所示,本说明书实施例提供的数据查询***可包括大数据计算服务1和查询引擎2,其中,查询引擎2独立于大数据计算服务1。
示例性的,大数据计算服务1可以是MaxCompute(原名ODPS),查询引擎可以是交互式分析Hologres;或者,大数据计算服务1可以是分布式数据库数据(如Hadoop),查询引擎可以是Spark/Flink等计算引擎。为了简要起见,下文中以大数据计算服务为ODPS,查询引擎为Hologres为例,对本说明书实施例提供的技术方案进行说明。
下面结合图2和图3对本说明书实施例提供的一种数据查询方法进行说明,图2是本说明书的一个实施例提供的一种数据查询方法的实现流程示意图,图3是本说明书实施例提供的数据查询方法中的数据表创建过程示意图。
如图2所示,本说明书实施例提供的一种数据查询方法,可以包括:
步骤202、大数据计算服务1响应于数据表修改请求,在大数据计算服务1的源数据表中选择一个主键字段作为索引字段,得到基础数据表。
如图3所示,假设ODPS的源数据表a的主键(Primary Key,PK)字段为“biz_no”,则可以在接收到ODPS的源数据表a的修改请求后,将“biz_no”确定为源数据表a的索引字段(或称为哈希键(hash key)),得到ODPS的基础(base)数据表aa,由于ODPS的基础数据表aa是对ODPS的源数据表a进行修改得到的,因此,基础数据表aa的索引字段也为“biz_no”。在基础数据表aa中,“omt_create”“user_id”“pav_amt”和“partner_id”为四个非索引字段。
在实际应用中,可以在对ODPS源数据表a进行萃取、转置、加载(Extract-Transform-Load,ETL)的过程中完成hash索引的创建,以得到基础数据表aa。
步骤204、大数据计算服务1响应于数据表新建请求,基于基础数据表的主键字段和非主键字段创建至少一个扩展数据表。
一个扩展数据表中存储有所述基础数据表的主键字段和一个非主键字段,扩展数据表以自身存储的所述基础数据表的非主键字段为索引字段。
如图3所示,在基础数据表aa的基础上可以创建扩展(mapping)数据表b和扩展数据表c,当然为了满足查询需要,还可以创建其他扩展数据表,此处仅列出了两张。扩展数据表b中包含“biz_no”和“user_id”两个字段,其中,biz_no”为基础数据表aa的主键字段(也是基础数据表aa的索引字段),“user_id”为基础数据表aa的一个非主键字段,扩展数据表b以基础数据表aa的非主键字段“user_id”为索引字段。扩展数据表c中包含“biz_no”和“partner_id”两个字段,其中,biz_no”为基础数据表aa的主键字段(也是基础数据表aa的索引字段),“partner_id”为基础数据表aa的一个非主键字段,扩展数据表c以基础数据表aa的非主键字段“partner_id”为索引字段。
虽然,相对于使用非索引字段进行查询,使用索引字段进行查询的效率更高。但是,ODPS基础数据表目前只支持一个索引字段(hash key),这就限定了想要快速查询只能以索引字段为查询条件进行查询,如果使用非索引字段则达不到快速查询的效果。为了使使用非索引字段进行查询也能取得快速查询的效果,本说明书实施例提出了一个新的方案,就是在基础数据表的基础上创建扩展数据表,使用“基础数据表+扩展数据表”这种组合方式,实现快速查询的目的,其中,基础(base)数据表以主键字段为索引字段,扩展(mapping)数据表以查询条件中的查询字段(对应基础数据表中的一个非索引字段)为索引字段,加上基础数据表的主键字段,一张扩展数据表可以只存储两个字段,增加的存储很少。建立好基础数据表和扩展数据表之后,先根据查询字段查询扩展数据表得到基础数据表的索引字段的取值集合(base表的hash key的list),再以基础数据表的索引字段的取值集合为查询条件,查询基础数据表获取存储在ODPS中的目标数据,可以极大加快查询速度。
由于一张扩展数据表表只存储两个字段,因此,对ODPS来说增加的存储非常少,而且可以在不影响基础数据表的表结构的情况下,随意创建扩展数据表,扩展性很好。且对于ODPS超大、超宽表来说,记录数越多、字段数越多,使用“基础数据表+扩展数据表”进行查询提升查询速度的效果越明显。
步骤206、大数据计算服务1响应于初始化请求,对基础数据表进行刷新,并基于刷新后的基础数据表补全扩展数据表中的两个字段的值。
在对源数据表a进行修改得到基础数据表aa,以及创建扩展数据表之后,可以对基础数据表和扩展数据表中的数据进行初始化,具体是对基础数据表进行刷新,并基于刷新后的基础数据表补全扩展数据表中的两个字段的值。
一般来说,扩展数据表中存储的基础数据表的主键字段的值,与基础数据表中的主键字段的值全部对应一致;以及,扩展数据表中存储的基础数据表的一个非主键字段的值,与基础数据表中的该非主键字段的值全部对应一致。也就是说,扩展数据表中存储的内容是完全从基础数据表里面获取的,当基础数据表发生更新时,扩展数据表相应的也要进行更新。
步骤208、查询引擎2基于基础数据表创建目标数据表,并基于扩展数据表创建目标二级数据表。
查询引擎2可以分别基于ODPS的基础数据表和扩展数据表,创建目标数据表和目标二级数据表,一张基础数据表对应创建一张目标数据表,一张扩展数据表对应创建一张目标二级数据表,目标数据表相当于ODPS中的基础数据表在查询引擎2中的外部表,目标二级数据表相当于ODPS中的扩展数据表在查询引擎2中的外部表。
如图3所示,查询引擎2可以基于ODPS中的基础数据表aa,创建目标数据表h_aa,可以基于ODPS中的扩展数据表b,创建二级数据表h_b,可以基于ODPS中的扩展数据表c,创建二级数据表h_c。
一般而言,ODPS中的基础数据表的外部表的结构与基础数据表的结构相同,如包含基础数据表中的元数据信息和文件数据指向信息,且指向基础数据表,但是不包含基础数据表对应的文件数据(实际数据还在ODPS)。也就是说,上述目标数据表中包含基础数据表的元数据信息和文件数据指向信息,且不包含基础数据表对应的文件数据,以及所述目标数据表指向所述基础数据表。
可以理解,由于目标数据表中不包含基础数据表对应的文件数据,因此,在查询引擎中创建目标数据表,并不会引起ODPS中存储的数据的回流,进而可以减少数据回流带来的一份数据存储多份的存储成本。
步骤210、查询引擎2接收查询请求,该查询请求中携带初始查询条件。
初始查询条件中可以包含查询字段和查询字段的取值或取值范围。
步骤212、查询引擎2判断初始查询条件中的查询字段是否是目标数据表的索引字段,如果不是,执行步骤214,否则执行步骤218。
以目标数据表为图3中的h_aa为例,如果初始查询条件中的查询字段为“biz_no”,则可以判定查询字段是目标数据表的索引字段;如果初始查询条件中的查询字段为“user_id”,则可以判定查询字段是目标数据表的非索引字段。
步骤214、查询引擎2基于初始查询条件,查询目标二级数据表得到初始查询条件对应的目标数据表的索引字段的取值集合,然后转入步骤216。
步骤216、查询引擎2以目标数据表的索引字段及上述取值集合为新的查询条件,查询目标数据表得到存储在大数据计算服务1中的目标数据。
如果初始查询条件中的查询字段不是目标数据表的索引字段,则可以先从目标二级数据表中(扩展数据表在查询引擎中的外部表)查询得到初始查询条件对应的目标数据表的索引字段的取值集合;再以目标数据表的索引字段及上述取值集合为新的查询条件,查询目标数据表得到存储在大数据计算服务1中的目标数据。
上述步骤214中的查询过程可以看作是前置查询,上述步骤216中的查询过程可以看作是主查询,主查询依赖前置查询的查询结果。可以理解,前置查询的结构化查询语言(Structured Query Language,SQL)查询结果一般放在内存,因此,在主查询时,通过内部参数透传,可以将前置查询的查询结果自动填写到主查询的执行SQL内,自动完成主查询的SQL查询,主查询的结果就是用户最终想要的查询结果。对用户来说,两次查询是透明的,用户并不会感知到进行了两次查询,用户体验也很好。
可选地,如果步骤214通过前置查询得到的取值集合中值的数量超过预设数量(前置查询返回的记录数过多),则在步骤216中,可以将以目标数据表的索引字段及该取值集合为新的查询条件在所述目标数据表中进行的查询拆分为多个子查询;对目标数据表并行执行这多个子查询,得到多个查询结果;对所述多个查询结果进行合并,得到存储在所述大数据计算服务中的目标数据。这一过程依赖具体的SQL查询工具实现。可以理解,将主查询拆分为多个子查询并行执行,可以进一步加快查询速度。
步骤218、查询引擎2基于初始查询条件,查询目标数据表得到存储在大数据计算服务1中的目标数据。
如果初始查询条件中的查询字段是目标数据表的索引字段,则可以基于初始查询条件,直接查询目标数据表得到存储在大数据计算服务1中的目标数据。
下面通过图4、图5和图6对本说明书实施例提供的数据查询方法的效果进行说明。需要说明的是,图4、图5和图6所示的查询效果示意图所依据的数据表为图3所示的数据表。
如图4所示,假设初始查询条件为:biz_no小于100,按照相关技术中的查询方式,其查询SQL如下(附图标记41对应的SQL):
--原始查询1
select*
from a
where biz_no='${biz_no}'
limit 100;
而按照本说明书实施例提供的查询方法,由于查询字段“biz_no”为目标数据表h_aa的索引字段,因此,其查询SQL如下(附图标记42对应的SQL):
--主查询
select*
from h_aa
where biz_no in(#{biz_no});
其中,${biz_no}是查询入参。
如图5所示,假设初始查询条件为:user_id小于100,按照相关技术中的查询方式,其查询SQL如下(附图标记51对应的SQL):
--原始查询2
select*
from a
where user_id='${user_id}'
limit 100;
而按照本说明书实施例提供的查询方法,由于查询字段“user_id”不是目标数据表h_aa的索引字段,因此,其查询SQL如下(附图标记52对应的SQL):
--前置查询
select biz_no
from h_b
where user_id='${user_id}'
limit 100;
--主查询
select*
from h_aa
where biz_no in(#{biz_no});
其中,${user_id}是查询入参,#{biz_no}是前置查询结果。
如图6所示,假设初始查询条件为:partner_id小于100,按照相关技术中的查询方式,其查询SQL如下(附图标记61对应的SQL):
--原始查询3
select*
from a
where partner_id='${partner_id}'
limit 100;
而按照本说明书实施例提供的查询方法,由于查询字段“partner_id”不是目标数据表h_aa的索引字段,因此,其查询SQL如下(附图标记62对应的SQL):
--前置查询
select biz_no
from h_c
where partner_id='${partner_id}'
limit 100;
--主查询
select*
from h_aa
where biz_no in(#{biz_no});
其中,${partner_id}是查询入参,#{biz_no}是前置查询结果。
可以理解,由于目标数据表h_aa是ODPS中的基础数据表aa的外部表,能够指向基础数据表aa,因此主查询通过查询目标数据表h_aa,即可查询到基础数据表aa对应的文件数据,从而得到目标数据。
本说明书实施例提供的一种数据查询方法,查询前,在大数据计算服务中创建以主键字段为索引字段的基础数据表,以及以基础数据表中的一个非主键字段为索引字段的扩展数据表,扩展数据表还对应存储有基础数据表的索引字段(主键字段),同时在查询引擎中创建基础数据表和扩展数据表的外部表,这两个外部表分别是目标数据表和目标二级数据表;然后,在查询时,如果查询请求携带的初始查询条件中的查询字段为目标数据表的非索引字段,则先从目标二级数据表得到初始查询条件对应的目标数据表的索引字段的取值集合(称为前置查询),再以所述目标数据表的索引字段及所述取值集合为新的查询条件,查询所述目标数据表得到存储在所述大数据计算服务中的目标数据(称为主查询)。
该数据查询方法,一方面,将相关技术中的一次查询拆分成了两次查询,且每次查询都是以被查询的数据表的索引字段为查询条件,这相比于直接使用非索引字段查询,可以大大提升查询效率;另一方面,由于基础数据表的外部表一般只包含基础数据表的元数据信息和文件数据指向信息而不包含基础数据表对应的文件数据,因此可以减少数据回流带来的一份数据存储多份的存储成本;再有,引入独立于大数据计算服务的查询引擎,可以绕开大数据计算服务的计算引擎的调度逻辑,避免在大数据计算服务所在服务器或服务器集群中进行排队,不需要和大数据计算服务中的数据表共享计算资源,而是使用查询引擎的弹性计算资源,再次提高了查询效率;还有,可以直接从内存中读取前置查询的结果以进行主查询,从而可以进一步提升查询效率。
上文通过图2对本说明书实施例提供的一种数据查询方法进行了完整的描述,下面结合图7和图8,分别对应用于查询引擎的数据查询方法,和应用于大数据计算服务的辅助查询数据的方法进行简要的介绍。
如图7所示,本说明书实施例提供的一种数据查询方法,可应用于图1中所示的查询引擎中,该方法可以包括:
步骤702、接收查询请求,该查询请求中携带初始查询条件。
初始查询条件中可以包含查询字段和查询字段的取值或取值范围。
步骤704、判断初始查询条件中的查询字段是否是目标数据表的索引字段,如果不是,执行步骤706,否则执行步骤710。
以目标数据表为图3中的h_aa为例,如果初始查询条件中的查询字段为“biz_no”,则可以判定查询字段是目标数据表的索引字段;如果初始查询条件中的查询字段为“user_id”,则可以判定查询字段是目标数据表的非索引字段。
步骤706、基于初始查询条件,查询目标二级数据表得到初始查询条件对应的目标数据表的索引字段的取值集合,然后转入步骤216。
其中,目标数据表是大数据计算服务的基础数据表的外部表,基础数据表以主键字段为索引字段,目标二级数据表是基础数据表的一张扩展数据表的外部表;扩展数据表中存储有基础数据表的主键字段和该非主键字段对应的值,以及基础数据表中的一个非主键字段和该非主键字段对应的值;扩展数据表以所述非主键字段为索引字段,扩展数据表的索引字段与所述查询字段相同。关于基础数据表、扩展数据表、目标数据表以及目标二级数据表的创建请参见上文对图2所示的实施例的说明,此处不做重复描述。
步骤708、以目标数据表的索引字段及上述取值集合为新的查询条件,查询目标数据表得到存储在大数据计算服务1中的目标数据。
如果初始查询条件中的查询字段不是目标数据表的索引字段,则可以先从目标二级数据表中(扩展数据表在查询引擎中的外部表)查询得到初始查询条件对应的目标数据表的索引字段的取值集合;再以目标数据表的索引字段及上述取值集合为新的查询条件,查询目标数据表得到存储在大数据计算服务1中的目标数据。
上述步骤706中的查询过程可以看作是前置查询,上述步骤708中的查询过程可以看作是主查询,主查询依赖前查询的查询结果。可以理解,前置查询的结构化查询语言(Structured Query Language,SQL)查询结果一般放在内存,因此,在主查询时,通过内部参数透传,可以将前置查询的查询结果过自动填写到主查询的执行SQL内,自动完成主查询的SQL查询,主查询的结果就是用户最终想要的查询结果。对用户来说,两次查询是透明的,用户并不会感知到进行了两次查询,用户体验也很好。
可选地,如果步骤706通过前置查询得到的取值集合中值的数量超过预设数量(前置查询返回的记录数过多),则在步骤708中,可以将以目标数据表的索引字段及该取值集合为新的查询条件在所述目标数据表中进行的查询拆分为多个子查询;对目标数据表并行执行这多个子查询,得到多个查询结果;对所述多个查询结果进行合并,得到存储在所述大数据计算服务中的目标数据。这一过程依赖具体的SQL查询工具实现。可以理解,将主查询拆分为多个子查询并行执行,可以进一步加快查询速度。
步骤710、基于初始查询条件,查询目标数据表得到存储在大数据计算服务1中的目标数据。
如果初始查询条件中的查询字段是目标数据表的索引字段,则可以基于初始查询条件,直接查询目标数据表得到存储在大数据计算服务1中的目标数据。
本说明书实施例提供的一种数据查询方法对应于图2所示的实施例提供的数据查询方法,并能取得相同的技术效果,本说明书实施例中未说明之处,可参考上文对图2所示的实施例的介绍,不再赘述。
如图8所示,本说明书实施例提供的一种辅助查询数据的方法,可应用于图1中所示的大数据计算服务中,该方法可以包括:
步骤802、响应于数据表修改请求,在所述大数据计算服务中的源数据表中选择一个主键字段作为索引字段,得到基础数据表。
步骤804、响应于数据表新建请求,基于所述基础数据表的主键字段和非主键字段创建至少一个扩展数据表。
其中,所述扩展数据表中存储有所述基础数据表的主键字段和一个非主键字段,所述扩展数据表以自身存储的所述基础数据表的非主键字段为索引字段。
步骤806、响应于初始化请求,对所述基础数据表进行刷新,并基于刷新后的基础数据表补全所述扩展数据表中的两个字段的值。
其中,所述基础数据表用于查询引擎创建目标数据表,所述目标数据表为所述基础数据的外部表;所述扩展数据表用于所述查询引擎创建目标二级数据表,所述目标二级数据表是所述扩展数据的外部表;所述查询引擎用于接收携带初始查询条件的查询请求,如果所述初始查询条件中的查询字段是目标数据表的非索引字段,则基于所述初始查询条件,查询目标二级数据表得到所述初始查询条件对应的所述目标数据表的索引字段的取值集合,以所述目标数据表的索引字段及所述取值集合为新的查询条件,查询所述目标数据表得到存储在所述大数据计算服务中的目标数据,所述扩展数据表的索引字段与所述查询字段相同。
本说明书实施例提供的一种辅助查询数据的方法也与图2所示的实施例提供的数据查询方法相对应,并能取得相同的技术效果,本说明书实施例中未说明之处,可参考上文对图2所示的实施例的介绍,不再赘述。
以上是对本说明书提供的方法实施例的说明,下面对本说明书提供的电子设备进行介绍。
图9是本说明书的一个实施例提供的电子设备的结构示意图。请参考图9,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成数据查询装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
接收查询请求,所述查询请求中携带初始查询条件;
如果所述初始查询条件中的查询字段是目标数据表的非索引字段,则基于所述初始查询条件,查询目标二级数据表得到所述初始查询条件对应的所述目标数据表的索引字段的取值集合,其中,所述目标数据表是大数据计算服务的基础数据表的外部表,所述基础数据表以主键字段为索引字段,所述目标二级数据表是所述基础数据表的一张扩展数据表的外部表;所述扩展数据表中存储有所述基础数据表的主键字段和该非主键字段对应的值,以及所述基础数据表中的一个非主键字段和该非主键字段对应的值;所述扩展数据表以所述非主键字段为索引字段,所述扩展数据表的索引字段与所述查询字段相同;
以所述目标数据表的索引字段及所述取值集合为新的查询条件,查询所述目标数据表得到存储在所述大数据计算服务中的目标数据。
或者,处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成数据查询装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
响应于数据表修改请求,在所述大数据计算服务中的源数据表中选择一个主键字段作为索引字段,得到基础数据表;
响应于数据表新建请求,基于所述基础数据表的主键字段和非主键字段创建至少一个扩展数据表,所述扩展数据表中存储有所述基础数据表的主键字段和一个非主键字段,所述扩展数据表以自身存储的所述基础数据表的非主键字段为索引字段;
响应于初始化请求,对所述基础数据表进行刷新,并基于刷新后的基础数据表补全所述扩展数据表中的两个字段的值;
其中,所述基础数据表用于查询引擎创建目标数据表,所述目标数据表为所述基础数据的外部表;所述扩展数据表用于所述查询引擎创建目标二级数据表,所述目标二级数据表是所述扩展数据的外部表;所述查询引擎用于接收携带初始查询条件的查询请求,如果所述初始查询条件中的查询字段是目标数据表的非索引字段,则基于所述初始查询条件,查询目标二级数据表得到所述初始查询条件对应的所述目标数据表的索引字段的取值集合,以所述目标数据表的索引字段及所述取值集合为新的查询条件,查询所述目标数据表得到存储在所述大数据计算服务中的目标数据,所述扩展数据表的索引字段与所述查询字段相同。
上述如本说明书图7所示的实施例提供的数据查询方法,或图8所示的实施例提供的辅助查询数据的方法,可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(ApplicationSpecific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书一个或多个实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书一个或多个实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
该电子设备还可执行图7所示的实施例提供的数据查询方法,或图8所示的实施例提供的辅助查询数据的方法,本说明书在此不再赘述。
当然,除了软件实现方式之外,本说明书的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
本说明书实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图7所示实施例的方法,并具体用于执行以下操作:
接收查询请求,所述查询请求中携带初始查询条件;
如果所述初始查询条件中的查询字段是目标数据表的非索引字段,则基于所述初始查询条件,查询目标二级数据表得到所述初始查询条件对应的所述目标数据表的索引字段的取值集合,其中,所述目标数据表是大数据计算服务的基础数据表的外部表,所述基础数据表以主键字段为索引字段,所述目标二级数据表是所述基础数据表的一张扩展数据表的外部表;所述扩展数据表中存储有所述基础数据表的主键字段和该非主键字段对应的值,以及所述基础数据表中的一个非主键字段和该非主键字段对应的值;所述扩展数据表以所述非主键字段为索引字段,所述扩展数据表的索引字段与所述查询字段相同;
以所述目标数据表的索引字段及所述取值集合为新的查询条件,查询所述目标数据表得到存储在所述大数据计算服务中的目标数据。
本说明书实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图8所示实施例的方法,并具体用于执行以下操作:
响应于数据表修改请求,在所述大数据计算服务中的源数据表中选择一个主键字段作为索引字段,得到基础数据表;
响应于数据表新建请求,基于所述基础数据表的主键字段和非主键字段创建至少一个扩展数据表,所述扩展数据表中存储有所述基础数据表的主键字段和一个非主键字段,所述扩展数据表以自身存储的所述基础数据表的非主键字段为索引字段;
响应于初始化请求,对所述基础数据表进行刷新,并基于刷新后的基础数据表补全所述扩展数据表中的两个字段的值;
其中,所述基础数据表用于查询引擎创建目标数据表,所述目标数据表为所述基础数据的外部表;所述扩展数据表用于所述查询引擎创建目标二级数据表,所述目标二级数据表是所述扩展数据的外部表;所述查询引擎用于接收携带初始查询条件的查询请求,如果所述初始查询条件中的查询字段是目标数据表的非索引字段,则基于所述初始查询条件,查询目标二级数据表得到所述初始查询条件对应的所述目标数据表的索引字段的取值集合,以所述目标数据表的索引字段及所述取值集合为新的查询条件,查询所述目标数据表得到存储在所述大数据计算服务中的目标数据,所述扩展数据表的索引字段与所述查询字段相同。
下面对本说明书提供的装置进行说明。
如图10所示,本说明书的一个实施例提供了一种数据查询装置1000,在一种软件实施方式中,装置1000可包括:请求接收模块1001、判断模块1002、第一查询模块1003、第二查询模块1004和第三查询模块1005。
第一数据获取模块801,用于接收查询请求,该查询请求中携带初始查询条件。
其中,初始查询条件中可以包含查询字段和查询字段的取值或取值范围。
判断模块1002,用于判断初始查询条件中的查询字段是否是目标数据表的索引字段,如果不是,触发第一查询模块1003,否则触发第三查询模块1005。
第一查询模块1003,用于基于初始查询条件,查询目标二级数据表得到初始查询条件对应的目标数据表的索引字段的取值集合。
第二查询模块1004,用于以目标数据表的索引字段及上述取值集合为新的查询条件,查询目标数据表得到存储在大数据计算服务1中的目标数据。
第三查询模块1005,用于基于初始查询条件,查询目标数据表得到存储在大数据计算服务1中的目标数据。
需要说明的是,数据查询装置1000能够实现图7的方法,并能取得相同的技术效果,详细内容可参考图7所示的方法,不再赘述。
如图11所示,本说明书的一个实施例提供了一种辅助查询数据的装置1100,在一种软件实施方式中,装置1100可包括:第一响应模块1101、第二响应模块1102和第三响应模块1103。
第一响应模块1101,用于响应于数据表修改请求,在所述大数据计算服务中的源数据表中选择一个主键字段作为索引字段,得到基础数据表。
第二响应模块1102,用于响应于数据表新建请求,基于所述基础数据表的主键字段和非主键字段创建至少一个扩展数据表。
其中,所述扩展数据表中存储有所述基础数据表的主键字段和一个非主键字段,所述扩展数据表以自身存储的所述基础数据表的非主键字段为索引字段。
第三响应模块1103,用于响应于初始化请求,对所述基础数据表进行刷新,并基于刷新后的基础数据表补全所述扩展数据表中的两个字段的值。
其中,所述基础数据表用于查询引擎创建目标数据表,所述目标数据表为所述基础数据的外部表;所述扩展数据表用于所述查询引擎创建目标二级数据表,所述目标二级数据表是所述扩展数据的外部表;所述查询引擎用于接收携带初始查询条件的查询请求,如果所述初始查询条件中的查询字段是目标数据表的非索引字段,则基于所述初始查询条件,查询目标二级数据表得到所述初始查询条件对应的所述目标数据表的索引字段的取值集合,以所述目标数据表的索引字段及所述取值集合为新的查询条件,查询所述目标数据表得到存储在所述大数据计算服务中的目标数据,所述扩展数据表的索引字段与所述查询字段相同。
需要说明的是,辅助查询数据的装置1100能够实现图8的方法,并能取得相同的技术效果,详细内容可参考图8所示的方法,不再赘述。
上述对本说明书特定实施例进行了描述,其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
总之,以上所述仅为本说明书的较佳实施例而已,并非用于限定本说明书的保护范围。凡在本说明书一个或多个实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例的保护范围之内。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制时,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
Claims (15)
1.一种数据查询方法,应用于查询引擎,包括:
接收查询请求,所述查询请求中携带初始查询条件;
如果所述初始查询条件中的查询字段是目标数据表的非索引字段,则基于所述初始查询条件,查询目标二级数据表得到所述初始查询条件对应的所述目标数据表的索引字段的取值集合,其中,所述目标数据表是大数据计算服务的基础数据表的外部表,所述基础数据表以主键字段为索引字段,所述目标二级数据表是所述基础数据表的一张扩展数据表的外部表;所述扩展数据表中存储有所述基础数据表的主键字段和该非主键字段对应的值,以及所述基础数据表中的一个非主键字段和该非主键字段对应的值;所述扩展数据表以所述非主键字段为索引字段,所述扩展数据表的索引字段与所述查询字段相同;
以所述目标数据表的索引字段及所述取值集合为新的查询条件,查询所述目标数据表得到存储在所述大数据计算服务中的目标数据。
2.根据权利要求1所述的方法,还包括:
如果所述初始查询条件中的查询字段是所述目标数据表的索引字段,则基于所述初始查询条件,查询所述目标数据表得到存储在所述大数据计算服务中的目标数据。
3.根据权利要求1或2所述的方法,在查询所述目标数据表得到存储在所述大数据计算服务中的目标数据之前,还包括:
基于所述基础数据表创建所述目标数据表;
基于所述扩展数据表创建所述目标二级数据表。
4.根据权利要求1所述的方法,
所述目标数据表中包含所述基础数据表的元数据信息和文件数据指向信息,且不包含所述基础数据表对应的文件数据,以及所述目标数据表指向所述基础数据表。
5.根据权利要求1所述的方法,
所述扩展数据表中存储的所述基础数据表的主键字段的值,与所述基础数据表中的主键字段的值全部对应一致;
以及,
所述扩展数据表中存储的所述基础数据表的一个非主键字段的值,与所述基础数据表中的该非主键字段的值全部对应一致。
6.根据权利要求1所述的方法,其中,以所述目标数据表的索引字段及所述取值集合为新的查询条件,查询所述目标数据表得到存储在所述大数据计算服务中的目标数据,包括:
当所述取值集合中值的数量超过预设数量时,将以所述目标数据表的索引字段及所述取值集合为新的查询条件在所述目标数据表中进行的查询拆分为多个子查询;
对所述目标数据表并行执行所述多个子查询,得到多个查询结果;
对所述多个查询结果进行合并,得到存储在所述大数据计算服务中的目标数据。
7.根据权利要求1所述的方法,
所述大数据计算服务为ODPS,所述查询引擎为交互式分析引擎Hologres。
8.一种用于辅助查询数据的方法,应用于大数据计算服务,包括:
响应于数据表修改请求,在所述大数据计算服务中的源数据表中选择一个主键字段作为索引字段,得到基础数据表;
响应于数据表新建请求,基于所述基础数据表的主键字段和非主键字段创建至少一个扩展数据表,所述扩展数据表中存储有所述基础数据表的主键字段和一个非主键字段,所述扩展数据表以自身存储的所述基础数据表的非主键字段为索引字段;
响应于初始化请求,对所述基础数据表进行刷新,并基于刷新后的基础数据表补全所述扩展数据表中的两个字段的值;
其中,所述基础数据表用于查询引擎创建目标数据表,所述目标数据表为所述基础数据的外部表;所述扩展数据表用于所述查询引擎创建目标二级数据表,所述目标二级数据表是所述扩展数据的外部表;所述查询引擎用于接收携带初始查询条件的查询请求,如果所述初始查询条件中的查询字段是目标数据表的非索引字段,则基于所述初始查询条件,查询目标二级数据表得到所述初始查询条件对应的所述目标数据表的索引字段的取值集合,以所述目标数据表的索引字段及所述取值集合为新的查询条件,查询所述目标数据表得到存储在所述大数据计算服务中的目标数据,所述扩展数据表的索引字段与所述查询字段相同。
9.根据权利要求8所述的方法,
所述扩展数据表中存储的所述基础数据表的主键字段的值,与所述基础数据表中的主键字段的值全部对应一致;
以及,
所述扩展数据表中存储的所述基础数据表的一个非主键字段的值,与所述基础数据表中的该非主键字段的值全部对应一致。
10.一种数据查询装置,应用于查询引擎,包括:
请求接收模块,用于接收查询请求,所述查询请求中携带初始查询条件;
第一查询模块,用于如果所述初始查询条件中的查询字段是目标数据表的非索引字段,则基于所述初始查询条件,查询目标二级数据表得到所述初始查询条件对应的所述目标数据表的索引字段的取值集合,其中,所述目标数据表是大数据计算服务的基础数据表的外部表,所述基础数据表以主键字段为索引字段,所述目标二级数据表是所述基础数据表的一张扩展数据表的外部表;所述扩展数据表中存储有所述基础数据表的主键字段和该非主键字段对应的值,以及所述基础数据表中的一个非主键字段和该非主键字段对应的值;所述扩展数据表以所述非主键字段为索引字段,所述扩展数据表的索引字段与所述查询字段相同;
第二查询模块,用于以所述目标数据表的索引字段及所述取值集合为新的查询条件,查询所述目标数据表得到存储在所述大数据计算服务中的目标数据。
11.一种用于辅助查询数据的装置,应用于大数据计算服务,包括:
第一响应模块,用于响应于数据表修改请求,在所述大数据计算服务中的源数据表中选择一个主键字段作为索引字段,得到基础数据表;
第二响应模块,用于响应于数据表新建请求,基于所述基础数据表的主键字段和非主键字段创建至少一个扩展数据表,所述扩展数据表中存储有所述基础数据表的主键字段和一个非主键字段,所述扩展数据表以自身存储的所述基础数据表的非主键字段为索引字段;
第三响应模块,用于响应于初始化请求,对所述基础数据表进行刷新,并基于刷新后的基础数据表补全所述扩展数据表中的两个字段的值;
其中,所述基础数据表用于查询引擎创建目标数据表,所述目标数据表为所述基础数据的外部表;所述扩展数据表用于所述查询引擎创建目标二级数据表,所述目标二级数据表是所述扩展数据的外部表;所述查询引擎用于接收携带初始查询条件的查询请求,如果所述初始查询条件中的查询字段是目标数据表的非索引字段,则基于所述初始查询条件,查询目标二级数据表得到所述初始查询条件对应的所述目标数据表的索引字段的取值集合,以所述目标数据表的索引字段及所述取值集合为新的查询条件,查询所述目标数据表得到存储在所述大数据计算服务中的目标数据,所述扩展数据表的索引字段与所述查询字段相同。
12.一种电子设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:
接收查询请求,所述查询请求中携带初始查询条件;
如果所述初始查询条件中的查询字段是目标数据表的非索引字段,则基于所述初始查询条件,查询目标二级数据表得到所述初始查询条件对应的所述目标数据表的索引字段的取值集合,其中,所述目标数据表是大数据计算服务的基础数据表的外部表,所述基础数据表以主键字段为索引字段,所述目标二级数据表是所述基础数据表的一张扩展数据表的外部表;所述扩展数据表中存储有所述基础数据表的主键字段和该非主键字段对应的值,以及所述基础数据表中的一个非主键字段和该非主键字段对应的值;所述扩展数据表以所述非主键字段为索引字段,所述扩展数据表的索引字段与所述查询字段相同;
以所述目标数据表的索引字段及所述取值集合为新的查询条件,查询所述目标数据表得到存储在所述大数据计算服务中的目标数据。
13.一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:
接收查询请求,所述查询请求中携带初始查询条件;
如果所述初始查询条件中的查询字段是目标数据表的非索引字段,则基于所述初始查询条件,查询目标二级数据表得到所述初始查询条件对应的所述目标数据表的索引字段的取值集合,其中,所述目标数据表是大数据计算服务的基础数据表的外部表,所述基础数据表以主键字段为索引字段,所述目标二级数据表是所述基础数据表的一张扩展数据表的外部表;所述扩展数据表中存储有所述基础数据表的主键字段和该非主键字段对应的值,以及所述基础数据表中的一个非主键字段和该非主键字段对应的值;所述扩展数据表以所述非主键字段为索引字段,所述扩展数据表的索引字段与所述查询字段相同;
以所述目标数据表的索引字段及所述取值集合为新的查询条件,查询所述目标数据表得到存储在所述大数据计算服务中的目标数据。
14.一种电子设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:
响应于数据表修改请求,在所述大数据计算服务中的源数据表中选择一个主键字段作为索引字段,得到基础数据表;
响应于数据表新建请求,基于所述基础数据表的主键字段和非主键字段创建至少一个扩展数据表,所述扩展数据表中存储有所述基础数据表的主键字段和一个非主键字段,所述扩展数据表以自身存储的所述基础数据表的非主键字段为索引字段;
响应于初始化请求,对所述基础数据表进行刷新,并基于刷新后的基础数据表补全所述扩展数据表中的两个字段的值;
其中,所述基础数据表用于查询引擎创建目标数据表,所述目标数据表为所述基础数据的外部表;所述扩展数据表用于所述查询引擎创建目标二级数据表,所述目标二级数据表是所述扩展数据的外部表;所述查询引擎用于接收携带初始查询条件的查询请求,如果所述初始查询条件中的查询字段是目标数据表的非索引字段,则基于所述初始查询条件,查询目标二级数据表得到所述初始查询条件对应的所述目标数据表的索引字段的取值集合,以所述目标数据表的索引字段及所述取值集合为新的查询条件,查询所述目标数据表得到存储在所述大数据计算服务中的目标数据,所述扩展数据表的索引字段与所述查询字段相同。
15.一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:
响应于数据表修改请求,在所述大数据计算服务中的源数据表中选择一个主键字段作为索引字段,得到基础数据表;
响应于数据表新建请求,基于所述基础数据表的主键字段和非主键字段创建至少一个扩展数据表,所述扩展数据表中存储有所述基础数据表的主键字段和一个非主键字段,所述扩展数据表以自身存储的所述基础数据表的非主键字段为索引字段;
响应于初始化请求,对所述基础数据表进行刷新,并基于刷新后的基础数据表补全所述扩展数据表中的两个字段的值;
其中,所述基础数据表用于查询引擎创建目标数据表,所述目标数据表为所述基础数据的外部表;所述扩展数据表用于所述查询引擎创建目标二级数据表,所述目标二级数据表是所述扩展数据的外部表;所述查询引擎用于接收携带初始查询条件的查询请求,如果所述初始查询条件中的查询字段是目标数据表的非索引字段,则基于所述初始查询条件,查询目标二级数据表得到所述初始查询条件对应的所述目标数据表的索引字段的取值集合,以所述目标数据表的索引字段及所述取值集合为新的查询条件,查询所述目标数据表得到存储在所述大数据计算服务中的目标数据,所述扩展数据表的索引字段与所述查询字段相同。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010463573.3A CN111538747B (zh) | 2020-05-27 | 2020-05-27 | 数据查询、辅助数据查询的方法、装置和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010463573.3A CN111538747B (zh) | 2020-05-27 | 2020-05-27 | 数据查询、辅助数据查询的方法、装置和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111538747A true CN111538747A (zh) | 2020-08-14 |
CN111538747B CN111538747B (zh) | 2023-04-14 |
Family
ID=71968252
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010463573.3A Active CN111538747B (zh) | 2020-05-27 | 2020-05-27 | 数据查询、辅助数据查询的方法、装置和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111538747B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114637759A (zh) * | 2020-12-16 | 2022-06-17 | 金篆信科有限责任公司 | 数据查询方法、电子设备、存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2539898A (en) * | 2015-06-29 | 2017-01-04 | Broadridge Financial Solutions Ltd | A data handling method |
CN106933907A (zh) * | 2015-12-31 | 2017-07-07 | 北京国双科技有限公司 | 数据表扩展指标的处理方法及装置 |
JP6199513B1 (ja) * | 2016-08-29 | 2017-09-20 | 株式会社 ビーアイマトリックスBi Matrix Co.,Ltd | キャッシュテーブルの統合基盤の2段階クエリ処理システム |
CN107515882A (zh) * | 2016-06-17 | 2017-12-26 | 阿里巴巴集团控股有限公司 | 数据查询方法及装置 |
CN107644033A (zh) * | 2016-07-21 | 2018-01-30 | 阿里巴巴集团控股有限公司 | 一种在非关系型数据库中进行数据查询的方法与设备 |
CN108509437A (zh) * | 2017-02-24 | 2018-09-07 | 南京烽火星空通信发展有限公司 | 一种ElasticSearch查询加速方法 |
CN109947770A (zh) * | 2018-08-14 | 2019-06-28 | 武汉斗鱼网络科技有限公司 | 一种数据库查询方法、终端设备及存储介质 |
US20190205292A1 (en) * | 2016-10-11 | 2019-07-04 | Fujitsu Limited | Aggregation apparatus, aggregation method, and storage medium |
CN110019334A (zh) * | 2017-10-16 | 2019-07-16 | 广东亿迅科技有限公司 | 一种多维数据查询分析的优化方法及其*** |
US20190236184A1 (en) * | 2018-01-30 | 2019-08-01 | Salesforce.Com, Inc. | Using row value constructor (rvc) based queries to group records of a database for multi-thread execution |
US10607271B1 (en) * | 2017-03-16 | 2020-03-31 | Walgreen Co. | Search platform with data driven search relevancy management |
CN111008200A (zh) * | 2019-12-18 | 2020-04-14 | 北京数衍科技有限公司 | 数据查询方法、装置和服务器 |
-
2020
- 2020-05-27 CN CN202010463573.3A patent/CN111538747B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2539898A (en) * | 2015-06-29 | 2017-01-04 | Broadridge Financial Solutions Ltd | A data handling method |
CN106933907A (zh) * | 2015-12-31 | 2017-07-07 | 北京国双科技有限公司 | 数据表扩展指标的处理方法及装置 |
CN107515882A (zh) * | 2016-06-17 | 2017-12-26 | 阿里巴巴集团控股有限公司 | 数据查询方法及装置 |
CN107644033A (zh) * | 2016-07-21 | 2018-01-30 | 阿里巴巴集团控股有限公司 | 一种在非关系型数据库中进行数据查询的方法与设备 |
JP6199513B1 (ja) * | 2016-08-29 | 2017-09-20 | 株式会社 ビーアイマトリックスBi Matrix Co.,Ltd | キャッシュテーブルの統合基盤の2段階クエリ処理システム |
US20190205292A1 (en) * | 2016-10-11 | 2019-07-04 | Fujitsu Limited | Aggregation apparatus, aggregation method, and storage medium |
CN108509437A (zh) * | 2017-02-24 | 2018-09-07 | 南京烽火星空通信发展有限公司 | 一种ElasticSearch查询加速方法 |
US10607271B1 (en) * | 2017-03-16 | 2020-03-31 | Walgreen Co. | Search platform with data driven search relevancy management |
CN110019334A (zh) * | 2017-10-16 | 2019-07-16 | 广东亿迅科技有限公司 | 一种多维数据查询分析的优化方法及其*** |
US20190236184A1 (en) * | 2018-01-30 | 2019-08-01 | Salesforce.Com, Inc. | Using row value constructor (rvc) based queries to group records of a database for multi-thread execution |
CN109947770A (zh) * | 2018-08-14 | 2019-06-28 | 武汉斗鱼网络科技有限公司 | 一种数据库查询方法、终端设备及存储介质 |
CN111008200A (zh) * | 2019-12-18 | 2020-04-14 | 北京数衍科技有限公司 | 数据查询方法、装置和服务器 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114637759A (zh) * | 2020-12-16 | 2022-06-17 | 金篆信科有限责任公司 | 数据查询方法、电子设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111538747B (zh) | 2023-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11204915B2 (en) | Blockchain-based data storage and query method and device | |
CN107038207B (zh) | 一种数据查询方法、数据处理方法及装置 | |
CN107463632B (zh) | 一种分布式NewSQL数据库***和数据查询方法 | |
JP6535031B2 (ja) | データクエリ方法及び装置 | |
US8812489B2 (en) | Swapping expected and candidate affinities in a query plan cache | |
CN106326309B (zh) | 一种数据查询方法和装置 | |
US20140229429A1 (en) | Database management delete efficiency | |
US20150120697A1 (en) | System and method for analysis of a database proxy | |
CN111723161A (zh) | 一种数据处理方法、装置及设备 | |
CN113094387A (zh) | 一种数据查询方法、装置、电子设备及机器可读存储介质 | |
WO2024113740A1 (zh) | 数据查询方法、***、设备及计算机可读存储介质 | |
CN111488371A (zh) | 一种数据查询方法和装置 | |
CN111538747B (zh) | 数据查询、辅助数据查询的方法、装置和设备 | |
CN108959330B (zh) | 一种数据库的处理、数据查询方法及设备 | |
CN110083602B (zh) | 一种基于hive表的数据存储及数据处理的方法及装置 | |
CN111125216A (zh) | 数据导入Phoenix的方法及装置 | |
CN112527792A (zh) | 一种数据存储方法、装置、设备和存储介质 | |
US20210149960A1 (en) | Graph Data Storage Method, System and Electronic Device | |
CN112907198B (zh) | 业务状态流转维护方法、装置及电子设备 | |
CN107122358B (zh) | 混合查询方法及设备 | |
CN115221249B (zh) | 跨库数据查询方法、装置、计算机设备和存储介质 | |
CN117609303A (zh) | 多表联合查询方法、装置、设备及存储介质 | |
CN113282624B (zh) | 规则匹配方法、装置、电子设备及存储介质 | |
CN114139208A (zh) | 一种基于视图的查询方法及装置 | |
CN116126850A (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 |