CN116644090B - 一种数据查询方法、装置、设备及介质 - Google Patents

一种数据查询方法、装置、设备及介质 Download PDF

Info

Publication number
CN116644090B
CN116644090B CN202310931499.7A CN202310931499A CN116644090B CN 116644090 B CN116644090 B CN 116644090B CN 202310931499 A CN202310931499 A CN 202310931499A CN 116644090 B CN116644090 B CN 116644090B
Authority
CN
China
Prior art keywords
data
instruction
scanning
scanned
limiting
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
Application number
CN202310931499.7A
Other languages
English (en)
Other versions
CN116644090A (zh
Inventor
于凯
李彬
周勇亮
赵德禄
吴嵩
蒋旭
胡薇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
TIANJIN SHENZHOU GENERAL DATA TECHNOLOGY CO LTD
Original Assignee
TIANJIN SHENZHOU GENERAL DATA TECHNOLOGY CO LTD
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by TIANJIN SHENZHOU GENERAL DATA TECHNOLOGY CO LTD filed Critical TIANJIN SHENZHOU GENERAL DATA TECHNOLOGY CO LTD
Priority to CN202310931499.7A priority Critical patent/CN116644090B/zh
Publication of CN116644090A publication Critical patent/CN116644090A/zh
Application granted granted Critical
Publication of CN116644090B publication Critical patent/CN116644090B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/9035Filtering based on additional data, e.g. user or group profiles
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本申请公开了一种数据查询方法、装置、设备及介质,数据查询方法包括:获取数据查询请求,根据数据查询请求生成数据限制指令和数据扫描指令;其中,若数据查询请求中包含数据筛选规则,则数据限制指令中包含与数据筛选规则对应的数据筛选条件;若数据限制指令中包含数据筛选条件,则将数据筛选条件添加到数据扫描指令中;根据数据扫描指令执行数据扫描操作,按照数据限制指令从扫描到的数据得到目标数据,目标数据为数据查询请求对应的数据查询结果;其中,根据数据扫描指令执行数据扫描操作包括:若数据扫描指令中包含数据筛选条件,则根据数据筛选条件确定无需扫描的数据,并对需要扫描的数据进行扫描。

Description

一种数据查询方法、装置、设备及介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据查询方法、装置、设备及介质。
背景技术
现有技术中,很多功能或技术的实现都依赖于数据查询。例如,在使用应用程序过程中,需要进行数据查询,然后将查询到的数据传输给应用程序,从而形成相应的应用程序页面。在数据库应用系统中,大量应用程序使用数据分页的方式进行数据展示。即先展示一部分数据,随着用户点击“下一页”或类似按钮,应用程序向数据库发送分页命令,数据库根据分页命令进行数据查询,并将查询到的数据发送给客户端,从而客户端可以继续展示下一页或其他数据,这种方式也被称为分页查询。在分页查询方式下,分页命令中包含需要获取的数据的行数,例如需要获取A行数据,这一般是单个页面可展示的数据行数。由于有些数据已经通过已打开的页面进行了展示,故分页命令中还包括需要跳过的数据的行数,例如需要跳过B行数据(B非定值)。这样每一次根据分页命令进行数据查询时,数据库执行物理扫描操作,从头开始获取数据。数据库根据分页命令中需要跳过的行数以及需要获取的行数,决定从获取到的数据中丢弃B行数据,并从丢弃B行数据后的第一行数据开始,选择A行数据返回给客户端。可见,每次进行数据查询时,数据库至少需要获取A+B行数据。
这样一来,随着打开的页面的增多,通过已打开的页面被展示的数据也越来越多,故分页命令中需要跳过的数据的行数(即上述的B)也会不断增长,例如每增加一个打开页面,就有A行数据被展示,那么下一次发送的分页命令中需要跳过的数据的行数就要增加A行。由于数据库每次根据分页命令进行数据查询时,都是从头开始扫描和获取数据,那么随着分页命令中需要跳过的数据的行数的增长,一方面在数据查询过程中,数据库需要获取的数据(至少是A+B行数据)大量增加;另一方面所获取的数据中需要丢弃的数据(即B行数据)也大量增加,甚至于后来数据库获取到的数据中的大部分数据(即B大于A或远大于A)都要作为无用数据被丢弃。
由上可知,随着数据查询的不断进行,不光数据库的数据扫描量会增加,并且获取到的无用数据也会增加,以至于到了获取的数据中大部分都是无用数据的程度,这就带来冗余的扫描过程,造成数据查询效率和性能的急剧下降,导致糟糕的用户使用体验。
基于上述说明,如何提高数据查询效率,已成为科技发展中的重要课题。特别是在数据量日益增长,数据更加多样化的情况下,对提升数据查询效果的需求更加迫切。
有鉴于此,需要更高效的数据查询方案。
发明内容
本申请提供一种数据查询方法、装置、设备及介质,用以解决如何更高效地进行数据查询的技术问题。
为解决上述技术问题,本申请提供如下技术方案:
一种数据查询方法,所述方法包括:
获取数据查询请求,根据所述数据查询请求生成数据限制指令和数据扫描指令;其中,若所述数据查询请求中包含数据筛选规则,则所述数据限制指令中包含与所述数据筛选规则对应的数据筛选条件;
若所述数据限制指令中包含所述数据筛选条件,则将所述数据筛选条件添加到所述数据扫描指令中;
根据所述数据扫描指令执行数据扫描操作,按照所述数据限制指令从扫描到的数据得到目标数据,所述目标数据为所述数据查询请求对应的数据查询结果;
其中,根据所述数据扫描指令执行数据扫描操作包括:
若所述数据扫描指令中包含所述数据筛选条件,则根据所述数据筛选条件确定无需扫描的数据,并对需要扫描的数据进行扫描。
进一步的,其中,所述数据查询请求包含SQL语句;根据所述数据查询请求生成数据限制指令和数据扫描指令包括:
对所述SQL语句进行编译,根据所述SQL语句的编译结果生成数据限制指令和数据扫描指令。
进一步的,其中,根据所述SQL语句的编译结果生成数据限制指令和数据扫描指令包括:
根据所述SQL语句的编译结果生成二叉树,所述二叉树的节点对应操作符,所述数据限制指令和/或数据扫描指令包括一个或多个操作符。
进一步的,其中,所述数据扫描指令包含的操作符对应所述二叉树的底层节点;
根据所述数据扫描指令执行数据扫描操作还包括:
将扫描到的数据向上层节点传输。
进一步的,其中,所述数据限制指令包含的操作符对应所述二叉树的非底层节点;
按照所述数据限制指令从扫描到的数据得到目标数据包括:
获取底层节点传输来的数据,按照所述数据限制指令包含的操作符对所述底层节点传输来的数据进行处理,以得到目标数据。
进一步的,其中,所述数据限制指令和/或数据扫描指令包括一个或多个操作符;
将所述数据筛选条件添加到所述数据扫描指令中包括:
在所述数据扫描指令包括的操作符中添加所述数据筛选条件。
进一步的,其中,所述数据限制指令包括limit操作符;和/或,所述数据扫描指令包括seq操作符;和/或,所述数据筛选条件包括offset条件。
进一步的,其中,根据所述数据扫描指令执行数据扫描操作还包括:
根据所述数据扫描指令确定数据扫描对象;
根据所述数据筛选条件确定无需扫描的数据,并对需要扫描的数据进行扫描,包括:
根据所述数据筛选条件确定所述数据扫描对象中无需扫描的数据,并对所述数据扫描对象中需要扫描的数据进行扫描。
进一步的,其中,所述方法还包括:
若将所述数据筛选条件添加到所述数据扫描指令,则将所述数据限制指令中的数据筛选条件置为空。
进一步的,其中,根据所述数据扫描指令执行数据扫描操作,按照所述数据限制指令从扫描到的数据得到目标数据,包括:
使数据库根据所述数据扫描指令执行数据扫描操作,按照所述数据限制指令从扫描到的数据得到目标数据。
本申请还提供一种数据查询装置,所述装置包括:
查询计划模块,用于获取数据查询请求,根据所述数据查询请求生成数据限制指令和数据扫描指令;其中,若所述数据查询请求中包含数据筛选规则,则所述数据限制指令中包含与所述数据筛选规则对应的数据筛选条件;
查询调整模块,用于若所述数据限制指令中包含所述数据筛选条件,则将所述数据筛选条件添加到所述数据扫描指令中;
查询执行模块,用于根据所述数据扫描指令执行数据扫描操作,按照所述数据限制指令从扫描到的数据得到目标数据,所述目标数据为所述数据查询请求对应的数据查询结果;
其中,根据所述数据扫描指令执行数据扫描操作包括:
若所述数据扫描指令中包含所述数据筛选条件,则根据所述数据筛选条件确定无需扫描的数据,并对需要扫描的数据进行扫描。
本申请还提供一种数据查询设备,所述设备包括:
至少一个处理器;
以及,
与所述至少一个处理器通信连接的存储器;
其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,使所述至少一个处理器能够执行上述的数据查询方法。
本申请还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现上述的数据查询方法。
本申请采用的上述至少一个技术方案能够达到以下有益效果:
在获取数据查询请求后,根据数据查询请求生成数据限制指令和数据扫描指令。若数据查询请求中包含数据筛选规则,则生成的数据限制指令中包含相应的数据筛选条件,并进一步将数据筛选条件添加到数据扫描指令中。这样一来,在每次进行实际的数据查询时,先通过数据筛选条件确定和过滤掉无需扫描的数据,只扫描需要扫描的数据,并根据扫描到的数据得到与数据查询请求对应的目标数据。从而一方面在扫描阶段就能过滤到冗余数据,降低数据扫描量和数据扫描用时,另一方面在仅需根据扫描到的数据得到目标数据,也就降低了目标数据的确定范围和确定用时,也就能够降低数据查询量和数据查询用时,提高数据查询效率和数据查询性能。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对本说明书实施例或现有技术描述中所需要使用的附图作简单的介绍。显而易见地,下面介绍的附图仅仅是本说明书中记载的实施例可能涉及的部分附图,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请第一个实施例中的数据查询方法的执行主体示意图。
图2是本申请第一个实施例中的数据查询方法的流程示意图。
图3是本申请第一个实施例中的数据查询示例的数据查询过程示意图。
图4是本申请第一个实施例中的数据查询示例的数据限制指令生成示意图。
图5是本申请第一个实施例中的数据查询示例的数据扫描指令执行示意图。
图6是本申请第一个实施例中的数据查询示例的数据限制指令执行示意图。
图7是本申请第二个实施例中的数据查询装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例的附图,对本说明书实施例的技术方案清楚、完整地进行描述。显然,本说明书所描述的实施例仅仅是本申请的部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。本说明书实施例中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。
本说明书第一个实施例(以下简称“实施例一”)提供了一种数据查询方法,实施例一的执行主体可以是终端(包括但不限于手机、计算机、pad、电视)或者服务器或者操作系统或者应用程序或者数据查询平台或者数据查询系统等,即执行主体可以是多种多样的,可以根据需要设置、使用或者变换执行主体。另外,也可以有第三方应用程序协助所述执行主体执行实施例一。例如图1所示,可以由服务器来执行实施例一中的数据查询方法,并且可以在(用户所持有的)终端上安装(与所述服务器)相对应的应用程序,终端或应用程序与服务器之间可以进行数据传输,通过终端或应用程序来进行数据的采集或输入或输出或(向用户)进行页面或信息处理,从而辅助服务器执行实施例一中的数据查询方法。
如图2所示,实施例一提供的数据查询方法包括:
S101:(执行主体)获取数据查询请求,根据所述数据查询请求生成数据限制指令和数据扫描指令;其中,若所述数据查询请求中包含数据筛选规则,则所述数据限制指令中包含与所述数据筛选规则对应的数据筛选条件;
实际场景中,可以有各种主体出于各种需求需要获取或查询数据。例如,应用程序需要获取到或查询到数据,以便形成页面进行信息展示;或者,需要进行数据迁移时,需要获取到或查询到待迁移的数据。当有主体需要获取或查询数据时,可以向待获取的数据的存储方或管理方或所有方发送数据查询请求或类似请求,以便待获取的数据的存储方或管理方或所有方根据数据查询请求进行数据查询,并向上述主体提供数据。
以下将需要获取或查询数据的主体称为数据请求方。对于数据请求方的形式或性质,或数据查询方获取或查询数据的目的,实施例一不进行具体限定。
实施例一的执行主体可以获取数据请求方的数据查询请求。一般的,实施例一的执行主体是数据请求方想要获取或查询的数据的存储方或管理方或所有方,故数据请求方会向实施例一的执行主体发送数据查询请求,以便实施例一的执行主体查询相应的数据。
实施例一的执行主体所获取的数据查询请求中可以包含数据筛选规则,数据筛选规则用于表征(数据请求方)需要查询或获取什么样的数据(需要查询或获取也就是筛选出的数据),即数据筛选规则可以表征待查询数据的形式或性质或内容。相应的,数据筛选规则也会用于表征需要筛选掉或过滤掉的数据。
实施例一中,数据查询请求可以是SQL语句的形式,或数据查询请求至少有一部分内容是SQL语句的形式,即数据查询请求可以包括SQL语句,例如,数据查询请求中的数据筛选规则可以是SQL语句的形式。这样一来,若待查询数据的存储方或管理方或所有方是数据库或数据库管理系统,则SQL语句形式的数据查询请求便于数据库或数据库管理系统接收和处理。相应的,实施例一的执行主体可以是数据库;或者实施例一的执行主体可以是数据库管理系统;或者实施例一的执行主体可以是数据库所在的设备或装置(例如数据库所在的计算机或服务器)或部署有数据库的设备或装置(例如计算机或服务器);或者实施例一的执行主体可以是数据库管理系统所在的设备或装置(例如数据库所在的计算机或服务器)或部署有数据库管理系统的设备或装置(例如计算机或服务器)。
实施例一的执行主体获取数据查询请求后,可以根据数据查询请求生成数据限制指令和数据扫描指令。其中,所述数据扫描指令用于发起数据扫描操作,以便通过数据扫描操作获取数据;所述数据限制指令用于限制获取的数据中的哪些数据可以作为返回给数据请求方的数据,或者如何从获取的数据中得到可以返回给数据请求方的数据。若将数据请求方需要获取或查询的数据,即数据查询请求对应的数据称为目标数据,则数据限制指令用于对目标数据进行限制或用于限定目标数据的特征或属性。其中,对目标数据进行限制包括但不限于对目标数据的数量或类型或性质或序列或特征或属性进行限制,目标数据的特征或属性包括但不限于目标数据的数量或类型或性质或序列。例如,数据查询请求中包含目标数据的数量,则数据限制指令中有对应的,用于限定目标数据的数量的内容。
实施例一中,所述数据限制指令还可以用于规定对扫描到(扫描到指通过扫描获取到,下同)的数据的处理动作,即实施例一的执行主体根据数据限制指令可以对扫描到的数据执行“数据限制指令所规定的处理动作”。特别的,实施例一的执行主体对扫描到的数据执行“数据限制指令所规定的处理动作”后所得的数据,就是(数据限制指令所限定的)目标数据。
由于数据查询请求可以包含SQL语句,故实施例一的执行主体根据所述数据查询请求生成数据限制指令和数据扫描指令可以包括:对所述SQL语句进行编译,根据所述SQL语句的编译结果生成数据限制指令和数据扫描指令。
其中,根据所述SQL语句的编译结果生成数据限制指令和数据扫描指令可以包括:根据所述SQL语句的编译结果生成二叉树,所述二叉树的节点对应操作符或二叉树的节点就是操作符,所述数据限制指令包括一个或多个操作符和/或数据扫描指令包括一个或多个操作符(即由一个或多个操作符形成数据限制指令和/或由一个或多个操作符形成数据扫描指令)。从二叉树的底层节点开始逐层执行各层节点对应的操作符,就相当于执行了数据查询请求,也就相当于执行了数据扫描指令和数据限制指令,下文中会具体说明。
获取数据查询请求后,若数据查询请求中包含数据筛选规则,则根据数据查询请求所形成的数据限制指令中会包含与(数据查询请求中的)数据筛选规则对应的数据筛选条件。由于数据筛选规则用于表征需要筛选掉或过滤掉的数据,则与数据筛选规则对应的数据筛选条件同样用于表征需要筛选掉或过滤掉的数据。
其中,若数据查询请求是SQL语句的形式或数据查询请求中包含的数据筛选规则是SQL语句的形式,则实施例一的执行主体根据SQL语句的编译结果所生成的数据限制指令中,会包含与(数据查询请求中的)数据筛选规则对应的数据筛选条件。特别的,(数据限制指令中的)数据筛选条件可以包括一个或多个上述的操作符(即由一个或多个操作符形成数据限制指令中的数据筛选条件),各个操作符分别对应二叉树中的节点。
实际上,相对于数据查询请求,根据数据查询请求生成的数据限制指令和数据扫描指令能够被实施例一的执行主体执行或处理,且根据数据查询请求生成的数据限制指令和数据扫描指令的形式或类型或内容更便于被实施例一的执行主体执行或处理。例如,实际场景中,操作符更便于被实施例一的执行主体执行或处理,则作为数据限制指令和数据扫描指令的形式或类型或内容的一种示例,数据限制指令可以包括一个或多个操作符和/或数据扫描指令可以包括一个或多个操作符,那么数据限制指令和数据扫描指令自然也就更便于被实施例一的执行主体执行或处理。
同理,相对于数据查询请求中的数据筛选规则,与数据筛选规则对应的数据筛选条件能够被实施例一的执行主体执行或处理,且与数据筛选规则对应的数据筛选条件的形式或类型或内容更便于被实施例一的执行主体执行或处理。例如,实际场景中,操作符更便于被实施例一的执行主体执行或处理,则作为数据筛选条件的形式或类型或内容的一种示例,数据筛选条件可以包括一个或多个操作符,那么数据筛选条件自然也就更便于被实施例一的执行主体执行或处理。
当然,数据查询请求也可以是其他形式或者包含其他内容,对于数据查询请求的内容或形式,实施例一不进行具体限定。
S103:(执行主体)若所述数据限制指令中包含所述数据筛选条件,则将所述数据筛选条件添加到所述数据扫描指令中;
根据数据查询请求生成数据限制指令和数据扫描指令后,实施例一的执行主体可以判断数据限制指令中是否包含上述的数据筛选条件。若数据限制指令中包含数据筛选条件,则实施例一的执行主体可以将(数据限制指令中的)数据筛选条件添加到数据扫描指令中。下文中,将添加了数据筛选条件的数据扫描指令称为“新数据扫描指令”。
需要说明的是,根据数据查询请求生成数据限制指令后,即使实施例一的执行主体判断数据限制指令中包含数据筛选条件,实施例一的执行主体也不必再去重复判断数据限制指令中的数据筛选条件是否与数据查询请求中的数据筛选规则是否对应。当然,根据数据查询请求生成数据限制指令后,实施例一的执行主体若判断数据限制指令中包含数据筛选条件,也可以再判断数据限制指令中的数据筛选条件是否与数据查询请求中的数据筛选规则是否对应,从而进一步保证数据限制指令中的数据筛选条件的正确性。
如上所述,数据限制指令和/或数据扫描指令可以包含一个或多个操作符,则将数据筛选条件添加到数据扫描指令可以包括:在数据扫描指令包括的操作符中添加数据筛选条件。由于数据筛选条件已包括一个或多个操作符,则在数据扫描指令包括的操作符中添加数据筛选条件可以包括:在数据扫描指令包括的操作符中添加数据筛选条件所包括的操作符。
S105:(执行主体)根据所述数据扫描指令执行数据扫描操作,按照所述数据限制指令从扫描到的数据得到目标数据,所述目标数据为所述数据查询请求对应的数据查询结果;其中,根据所述数据扫描指令执行数据扫描操作包括:若所述数据扫描指令中包含所述数据筛选条件,则根据所述数据筛选条件确定无需扫描的数据,并对需要扫描的数据进行扫描。
将数据筛选条件添加到数据扫描指令中后,实施例一的执行主体可以分别执行数据扫描指令和数据限制指令,包括:根据数据扫描指令执行数据扫描操作,按照数据限制指令从扫描到的数据得到目标数据,所述目标数据为所述数据查询请求对应的数据查询结果。
下面具体说明如何执行新数据扫描指令和数据限制指令:
执行数据扫描指令:
实施例一的执行主体根据数据扫描指令执行数据扫描操作,获取被扫描的数据。其中,根据数据扫描指令执行数据扫描操作可以包括:若数据扫描指令中包含所述数据筛选条件,则根据(数据扫描指令中的)数据筛选条件确定无需扫描的数据,并对需要扫描的数据进行扫描。
具体的,如上所述,添加了数据筛选条件的数据扫描指令为新数据扫描指令,若数据扫描指令中包含所述数据筛选条件,实施例一的执行主体就会根据新数据扫描指令执行数据扫描操作。由于数据筛选条件用于表征需要筛选掉或过滤掉的数据中,实施例一的执行主体根据新数据扫描指令执行数据扫描操作可以包括:实施例一的执行主体先根据新数据扫描指令中的数据筛选条件确定需要筛选掉或过滤掉的数据(也就是确定无需扫描的数据),进而可以对需要扫描的数据进行扫描。
实施例一的执行主体上可以存储有若干数据对象,数据对象一般是数据的集合,数据对象包括但不限于表、文本、文件等类型。实施例一中,根据数据扫描指令执行数据扫描操作还可以包括:根据数据扫描指令确定数据扫描对象。其中,数据扫描对象即为实施例一的执行主体需要扫描的数据对象,数据请求方需要查询或获取的数据存在于数据扫描对象中。
实施例一的执行主体根据数据扫描指令确定数据扫描对象可以包括但不限于1.1或1.2所述的内容:
1.1、数据扫描指令中包含与“用于表征数据请求方身份的信息”对应的内容
数据查询请求中可以有用于表征数据请求方身份的信息,在根据数据查询请求生成数据扫描指令时,数据查询请求中用于表征数据请求方身份的信息会转换为数据扫描指令中对应的内容。以下将数据扫描指令中,与“数据查询请求中用于表征数据请求方身份的信息”对应的内容称为第一关键内容,特别的,数据扫描指令中的第一关键内容可以与数据查询请求中用于表征数据请求方身份的信息相同。
这种情况下,根据数据扫描指令确定数据扫描对象可以包括:根据数据扫描指令中的第一关键内容,确定数据扫描对象。
例如,数据请求方与数据对象可以有对应关系(即数据请求方身份与数据对象有对应关系),与任一数据请求方对应的数据对象中包含了用以提供给该数据请求方使用的数据。实施例一的执行主体可以根据数据扫描指令中的第一关键内容,确定数据请求方身份,并将与数据请求方身份对应的数据对象确定为数据扫描对象。
如上所述,数据扫描指令可以包含一个或多个操作符,则数据扫描指令中的第一关键内容,可以存在于数据扫描指令所包含的操作符中,例如数据扫描指令中的第一关键内容,可以作为数据扫描指令所包含的操作符中的某些字段存在。
1.2、数据扫描指令中包含与“用于表征数据扫描对象的信息”对应的内容
数据查询请求中可以有用于表征数据扫描对象的信息,在根据数据查询请求生成数据扫描指令时,数据查询请求中用于表征数据扫描对象的信息会转换为数据扫描指令中对应的内容。以下将数据扫描指令中,与“数据查询请求中用于表征数据扫描对象的信息”对应的内容称为第二关键内容,特别的,数据扫描指令中的第二关键内容可以与数据查询请求中用于表征数据扫描对象的信息相同。
这种情况下,根据数据扫描指令确定数据扫描对象可以包括:根据数据扫描指令中的第二关键内容,确定数据扫描对象。
例如,数据扫描对象是某个表,数据查询请求中有该表的表名,在根据数据查询请求生成数据扫描指令时,数据查询请求中该表的表名会转换为数据扫描指令中的第二关键内容(第二关键内容可以就是该表的表名)。实施例一的执行主体可以根据数据扫描指令中的第二关键内容,确定数据扫描对象为该表。
如上所述,数据扫描指令可以包含一个或多个操作符,则数据扫描指令中的第二关键内容,可以存在于数据扫描指令所包含的操作符中,例如数据扫描指令中的第二关键内容,可以作为数据扫描指令所包含的操作符中的某些字段存在。
基于上述内容,根据数据扫描指令执行数据扫描操作可以包括:先根据新数据扫描指令确定数据扫描对象,再根据新数据扫描指令中的数据筛选条件确定数据扫描对象中需要筛选掉或过滤掉的数据(也就是确定无需扫描的数据),进而可以对数据扫描对象中需要扫描的数据进行扫描。也就是说,上述的“根据新数据扫描指令中的数据筛选条件确定无需扫描的数据,并对需要扫描的数据进行扫描”可以包括:根据新数据扫描指令中的数据筛选条件确定数据扫描对象中无需扫描的数据,进而可以对数据扫描对象中需要扫描的数据进行扫描。
1.1或1.2中,是根据数据扫描指令中确定数据扫描对象。另外,实施例一的执行主体还可以根据数据查询请求中的某些内容直接确定数据扫描对象。例如,数据请求方与数据对象可以有对应关系(即数据请求方身份与数据对象有对应关系),数据查询请求中可以有用于表征数据请求方身份的信息,则实施例一的执行主体获取数据查询请求后,可以确定数据查询请求中用于表征数据请求方身份的信息,根据“数据查询请求中用于表征数据请求方身份的信息”确定数据请求方身份,并将与数据请求方身份对应的数据对象确定为数据扫描对象。或者,数据查询请求中可以有用于表征数据扫描对象的信息,则实施例一的执行主体获取数据查询请求后,可以确定数据查询请求中用于表征数据扫描对象的信息,根据“数据查询请求中用于表征数据扫描对象的信息”确定数据扫描对象。
若是采用根据数据查询请求中的某些内容直接确定数据扫描对象的方式,则确定数据扫描对象可以在获取数据查询请求之后,根据数据扫描指令执行主句扫描操作之前完成,也可以在将数据筛选条件添加到数据扫描指令之前完成。
若是采用根据数据查询请求中的某些内容直接确定数据扫描对象的方式,则上述的“根据新数据扫描指令中的数据筛选条件确定无需扫描的数据,并对需要扫描的数据进行扫描”可以包括:根据新数据扫描指令中的数据筛选条件确定数据扫描对象中无需扫描的数据,进而可以对数据扫描对象中需要扫描的数据进行扫描。
下面说明如何确定需要扫描的数据:
如上所述,数据限制指令可以限制或限定目标数据的数量(以下将目标数据的数量称为目标量),则确定无需扫描的数据后,从剩余数据中扫描目标量个数据。一般的,确定无需扫描的数据后,可以在剩余数据中从头开始扫描目标量个数据,或者在剩余数据中从头开始按序扫描目标量个数据。也就是说,需要扫描的数据为“剩余数据中从头开始的前目标量个数据”,且这“前目标量个数据”可以是按序扫描得到的。
实施例一中,可以将数据扫描对象中除去无需扫描的数据所剩余的数据称为“扫描候选数据”。在确定了数据扫描对象的情况下,确定数据扫描对象中无需扫描的数据后,可以在扫描候选数据中扫描目标量个数据。一般的,确定数据扫描对象中无需扫描的数据后,可以在扫描候选数据中从头开始扫描目标量个数据,或者在扫描候选数据中从头开始按序扫描目标量个数据。也就是说,需要扫描的数据为“扫描候选数据中从头开始的前目标量个数据”,且这前目标量个数据可以是按序扫描得到的。
上述的从头开始可以是指从无需扫描的数据之后的首个单位的数据开始,所述单位可以是个、组或行或其他单位,所述单位可以根据需要设置或变化,下同。对于单位的内容,实施例一不进行具体限定。
执行数据限制指令:
上面说明了实施例一的执行主体可以执行数据扫描操作,对需要扫描的数据进行扫描,且能扫描到目标量个数据。由于数据限制指令用于限制获取的数据中的哪些数据可以作为返回给数据请求方的数据,那么实施例一的执行主体可以执行数据限制指令,即按照数据限制指令从扫描到的数据得到(数据限制指令所限定的)目标数据,目标数据作为数据查询请求对应的数据查询结果。其中,实施例一的执行主体可以对扫描到的目标量个数据执行数据限制指令,被执行了数据限制指令的目标量个数据作为目标数据。
具体的,实施例一的执行主体可以根据数据限制指令,对扫描到的数据执行“数据限制指令所规定的处理动作”(即执行数据限制指令),被执行了“数据限制指令所规定的处理动作”的这目标量个数据,就是(数据限制指令所限定的)目标数据,从而实施例一的执行主体按照扫描限制指令从被扫描到的数据得到了目标数据。
实施例一中,执行数据扫描指令和执行数据限制指令没有绝对的先后顺序,例如可以先执行数据扫描指令,扫描到数据,再对扫描到的数据执行数据限制指令(数据限制指令的处理动作);或者,可以先执行数据限制指令(例如先执行数据限制指令中的某个或某些操作符,这个或这些操作符例如可以用于引导执行数据扫描指令),然后再执行数据扫描指令,扫描到数据,再对扫描到的数据执行数据限制指令(数据限制指令的处理动作)。
其中,可以每扫描到一个单位的数据,就对该单位的数据执行数据限制指令。
如前所述,可以根据SQL语句的编译结果生成二叉树,二叉树的节点对应操作符,从二叉树的底层节点开始逐层执行各层节点对应的操作符,就相当于执行了数据查询请求,也就相当于执行了数据扫描指令和数据限制指令。下面对此进行进一步说明:
实施例一中,数据扫描指令可以包括一个或多个操作符,且数据扫描指令包含的操作符对应二叉树的底层节点;数据限制指令可以包括一个或多个操作符,且数据限制指令包括的操作符对应二叉树的非底层节点。
实施例一的执行主体从二叉树的底层节点开始逐层执行各层节点对应的操作符,即实施例一的执行主体先执行数据扫描指令包括的操作符,也就是上面所述的“根据数据扫描指令执行数据扫描操作”。
由于根据数据扫描指令执行数据扫描操作,会按照上述说明,对需要扫描的数据进行扫描,则实施例一中,根据数据扫描指令执行数据扫描操作还可以包括:将扫描到的数据向上层节点传输。实施例一中,将扫描到的数据向上层节点传输可以包括:对扫描到的数据执行投影操作(投影操作是数据计算的一种),将执行了投影操作后的数据向上层节点传输。
实施例一的执行主体会使数据会在各层节点之间流动,且下层节点的输出数据作为上层节点(下层和上层指相邻的两层)的输入数据,从而数据在二叉树中是由底层向顶层逐层传输。一般的,实施例一的执行主体每扫描到一个单位的数据,就将扫描到的该单位的数据向上层节点传输,以使该单位的数据由底层向顶层逐层传输,当扫描到的数据达到目标量后停止扫描。
既然数据限制指令包含的操作符对应二叉树的非底层节点,那么扫描到的数据由底层向顶层传输过程中,数据限制指令包含的操作符所对应二叉树的非底层节点,会获取从底层节点逐层传输来的数据,实施例一的执行主体按述数据限制指令包含的操作符对底层节点传输来的数据进行处理,也就是对底层节点传输来的数据执行数据限制指令,从而得到目标数据。这样一来,按照数据限制指令从扫描到的数据得到目标数据可以包括:获取底层节点传输来的数据,按照数据限制指令包含的操作符对底层节点传输来的数据进行处理,以得到目标数据。
具体而言,既然数据限制指令可以用于规定对扫描到的数据的处理动作,则数据限制指令所包括的操作符中,可以有表征对扫描到的数据的处理动作的操作符(以下将表征对扫描到的数据的处理动作的操作符成为“处理动作操作符”),这些处理动作操作符对应二叉树的非底层节点。例如数据处理动作是排序,则处理动作操作符可以包括排序操作符。
对任一处理动作操作符,当数据传输到该处理动作操作符对应的节点所在层,实施例一的执行主体执行该处理动作操作符对应的节点所在层的各节点,包括执行该处理动作操作符,即对“传输到该处理动作操作符对应的节点所在层的数据”执行该处理动作操作符表征的处理动作。
对二叉树的任一层节点,当数据传输到该层,实施例一的执行主体执行该层的各节点,即对“传输到该层的数据”执行该层的各节点对应的操作符,也就是对“传输到该层的数据”执行“该层的各节点对应的操作符”所表征的操作。当然,该层的各节点对应的操作符之间可以有排序或优先级之分,则对传输到该层的数据执行该层各节点对应的操作符时,会根据操作符的排序或优先级,按序执行该层各节点对应的操作符。
当数据传输到顶层,根据顶层节点对应的操作符的不同,可能有2.1或2.2或2.3所述的情况:
2.1、顶层节点对应的操作符表征数据发送操作
若顶层节点对应的操作符表征数据发送操作的操作符,则当扫描到的目标量个数据都传输到顶层,实施例一的执行主体执行顶层节点对应的操作符,即执行数据发送操作,包括:将这目标量个传输到顶层的数据作为目标数据,所述目标数据为数据查询请求对应的数据查询结果,将数据查询结果发送给数据请求方。
2.2、顶层节点对应的操作符可以表征数据发送操作之外的其他操作
若顶层节点对应的操作符可以表征数据发送操作之外的其他操作,则实施例一的执行主体可以对传输的顶层的数据执行顶层各节点对应的操作符,即对传输的顶层的数据执行顶层节点对应的操作符所表征的“数据发送操作之外的其他操作”。
当扫描到的目标量个数据都传输到顶层,并被执行了所述“数据发送操作之外的其他操作”,实施例一的执行主体可以将这目标量个被执行了顶层各节点对应的操作符的数据作为目标数据,所述目标数据为数据查询请求对应的数据查询结果,实施例一的执行主体可以将数据查询结果发送给数据请求方。
2.3、顶层节点对应的操作符可以表征数据发送操作以及数据发送操作之外的其他操作
若顶层节点对应的操作符可以表征数据发送操作之外的其他操作,则实施例一的执行主体可以对传输的顶层的数据执行顶层各节点对应的操作符,即对传输的顶层的数据执行顶层节点对应的操作符所表征的“数据发送操作之外的其他操作”。
当扫描到的目标量个数据都传输到顶层,并被执行了所述“数据发送操作之外的其他操作”,实施例一的执行主体执行数据发送操作,包括:将这目标量个被执行了所述“数据发送操作之外的其他操作”的数据作为目标数据,所述目标数据为数据查询请求对应的数据查询结果,将数据查询结果发送给数据请求方。
上述内容说明了,所生成的二叉树就代表了数据查询计划,二叉树的每个节点或其对应的操作符用于实现数据查询计划中的一步,通过自下而上执行二叉树的节点,就实现了执行新数据扫描指令和数据限制指令,得到目标数据。
实施例一中,一旦将数据筛选条件添加到数据扫描指令,则实施例一的执行主体将数据限制指令中的数据筛选条件置为空。这是因为,数据筛选条件主要用于表征需要筛选掉或过滤掉的数据,而将数据筛选条件添加到数据扫描指令后,在进行数据扫描操作过程中就已经确定了无需扫描的数据,即确定了筛选掉或过滤掉的数据,则不同再在根据数据限制指令从被扫描到的数据得到目标数据过程中,重复执行数据筛选条件。数据筛选条件代表代表了数据筛选功能,将数据限制指令中的数据筛选条件置为空,说明数据限制指令无需再重复发挥数据筛选的功能。
需要说明的是,由于数据请求方需要查询或获取的数据可以存储于数据库,故上述的“根据数据扫描指令执行数据扫描操作,按照数据限制指令从扫描到的数据得到目标数据”可以包括:使数据库根据数据扫描指令执行数据扫描操作,按照数据限制指令从扫描到的数据得到目标数据,即“根据数据扫描指令执行数据扫描操作,按照数据限制指令从扫描到的数据得到目标数据”的执行主体可以是数据库或数据库管理系统。并且,数据库或数据库管理系统可以将数据查询结果发送给数据请求方,或者,数据库或数据库管理系统可以将数据查询结果发送给实施例一的执行主体,由实施例一的执行主体将将数据查询结果发送给数据请求方。
假设实施例一的执行主体不是数据库或数据库管理系统,则实施例一的执行主体可以向数据库或数据库管理系统发送指令,以使数据库根据数据扫描指令执行数据扫描操作,按照数据限制指令从扫描到的数据得到目标数据。实施例一的执行主体的指令还可以使数据库或数据库管理系统可以将数据查询结果发送给数据请求方,或者,数据库或数据库管理系统可以将数据查询结果发送给实施例一的执行主体。
前面还提到了,实施例一的执行主体可以是实施例一的执行主体可以是数据库所在的设备或装置(例如数据库所在的计算机或服务器)或部署有数据库的设备或装置(例如计算机或服务器);或者实施例一的执行主体可以是数据库管理系统所在的设备或装置(例如数据库所在的计算机或服务器)或部署有数据库管理系统的设备或装置(例如计算机或服务器)。这种情况下,“根据数据扫描指令执行数据扫描操作,按照数据限制指令从扫描到的数据得到目标数据”的执行主体是数据库和数据库管理系统,就相当于“根据数据扫描指令执行数据扫描操作,按照数据限制指令从扫描到的数据得到目标数据”的执行主体是实施例一的执行主体。
下面通过示例对实施例一进行进一步说明:
如图3所示,本示例中,数据请求方可以是客户端或客户端所在的设备,执行主体可以是数据库。假设数据请求方当前展示的页面的“下一页”或跳转按钮被选择,则数据请求方可以向执行主体发送数据查询请求,数据查询请求可以是SQL语句的形式。例如数据查询请求为“select * from table limit M offset N”,在该数据查询请求中,“table”即为上述的第二关键内容,表征数据扫描对象的信息,本示例中表征数据扫描对象为某个表;M表示数据请求方需要查询或获取的数据的行数,即目标量;N表示需要筛选或过滤掉的数据的行数。以下就以该数据查询请求为例进行说明:
执行主体获取到数据查询请求,对上述SQL语句进行编译,根据SQL语句的编译结果生成数据限制指令和数据扫描指令。数据限制指令可以包括所述limit操作符(对应图4中“生成limit操作符”),数据扫描指令可以包括seq操作符。本示例中,执行主体会将M和N编译成为limit操作符的条件。
执行主体可以根据SQL语句的编译结果生成二叉树,二叉树的节点对应操作符。其中,二叉树的底层节点对应上述的seq操作符,二叉树的顶层节点对应上述的limit操作符。
数据查询请求中的“offset N”表示需要筛选或过滤掉N行数据,这即为数据筛选规则(实际场景中还可以是其他数据筛选规则,数据筛选规则包括但不限于offset N条件),故生成的数据限制指令中会包含与数据筛选规则对应的数据筛选条件。具体的,在对SQL语句编译过程中,执行主体会将offset N编译成limit操作符的条件(即与数据筛选规则对应的数据筛选条件),从而保证了生成的数据限制指令中包含与数据筛选规则对应的数据筛选条件,这与上述的“将N编译成为limit操作符的条件”是对应或等同的。
生成数据限制指令后,由于数据限制指令中包含数据筛选条件,执行主体会将数据限制指令中的数据筛选条件添加到数据扫描指令中,即将offset N添加到上述的seq操作符中(对应图3中“offset下推”),具体操作可以是在seq操作符中记录offset条件,作为物理扫描时的筛选条件。将数据限制指令中的数据筛选条件添加到数据扫描指令中后,执行主体会将数据限制指令中的数据筛选条件置为空。这样一来,就相当于生成了新的limit操作符(对应图4中“生成limit操作符完毕”)和seq操作符,
需要说明的是,将数据限制指令中的数据筛选条件添加到数据扫描指令前,执行主体可以判断数据查询请求中是否包含谓词条件。若数据查询请求中包含谓词条件,则不将数据筛选条件添加到数据扫描指令中(如图4中包含谓词条件的情况所示),因为谓词条件需要下推到物理扫描算子,或者谓词不允许筛选或过滤掉前N行数据(例如谓词条件是寻找某类数据,则前N行数据可能存在此类数据,不允许筛选或过滤掉前N行数据,);或,若数据查询请求中不包含谓词条件,则将数据限制指令中的数据筛选条件添加到数据扫描指令。
特别的,生成数据限制指令、数据扫描指令以及将数据限制指令中的数据筛选条件添加到数据扫描指令中可以是由数据库的优化器执行(相当于数据库执行)。
图5是执行数据扫描指令的示意图,图6是执行数据限制指令的示意图。下面进行说明:
执行主体首先执行二叉树底层节点对应的操作符,即执行数据扫描指令。由于数据查询请求中包含第二关键内容,故执行数据扫描指令时,执行主体确定需要扫描的表,并对表进行扫描。
由于数据扫描指令中包含数据筛选条件(对应图5中“seq包含offset条件”),故执行主体在扫描表时,根据数据筛选条件确定需要筛选掉或过滤掉的数据(也就是确定无需扫描的数据)。本示例中,需要筛选掉或过滤掉的数据为N行(说明这N行数据之前可能已经发送给数据请求方过),故执行主体会跳过表的前N行,对前N行之后的数据进行扫描。
每获取到一个数据查询请求后,对数据扫描对象的扫描可以看作是一次整体的扫描过程。当然,不同扫描过程,数据扫描对象可以相同或不同。
在一次扫描过程中,对表进行扫描(物理扫描)时,可以一行一行进行扫描,并获取数据。即第一次扫描时,跳过表的前N行(对应图5中“扫描时跳过offset行”),对第N+1行进行扫描,第二次扫描时,对第N+2行进行扫描(如图5所示,非第一次扫描下,“扫描当前行”),以此类推,直到扫描的行数达到M行后停止扫描。
每扫描一行,就将最新扫描的行数据进行投影操作,将投影操作后的数据(对应图3中的“data”)传输给上层节点(对应图5中“将结果返回到limit”)。本示例中,上层节点即为limit操作符。
本示例中,也可以先执行limit操作符,引导执行数据扫描指令,然后执行数据扫描指令,从而向上层节点传输数据(对应图6中“从物理扫描操作获取数据”)。
当limit操作符接收到M行数据后,执行主体向数据请求方发送这M行数据(因为limit操作符中offset条件已置为空,对应图6中不包含offset条件的情况),数据请求方可以根据这M行数据显示下一页或所跳转的页。
本示例中,如果数据查询请求没有包含数据筛选规则(比如数据请求方第一次请求获取或查询数据,不需要筛选或过滤数据),则可以根据数据查询请求生成数据限制指令和数据扫描指令,即生成limit操作符(如图4中不包含offset的情况)和seq操作符(同样可以建立二叉树,底层节点对应seq操作符,上层或顶层节点对应limit操作符)。执行数据扫描指令,即seq操作符时,从表的第1行开始扫描(对应图5中不包含offset条件的情况,即扫描当前行,当前行从第1行开始),直到扫描的行数达到M行(数据查询请求中仍然可以包含目标量M),然后将这M行数据发送给数据请求方(对应图6中“返回limit指定的行数”,对应于数据查询请求中的M,limit操作符作为数据限制指令,其内指定了目标量,下同)。
本示例中,如果数据查询请求包含数据筛选条件,但数据查询请求中包含谓词条件,则可以根据数据查询请求生成数据限制指令和数据扫描指令,即生成limit操作符(limit操作符包含数据筛选条件,例如offset条件)和seq操作符(同样可以建立二叉树,底层节点对应seq操作符,上层或顶层节点对应limit操作符)。执行数据扫描指令,即seq操作符时,从表的第1行开始扫描(对应图5中不包含offset条件的情况),直到扫描的行数达到M+N行。由于limit操作符中包含offset条件,则根据数据筛选条件将这M+N行数据中的前N行丢弃,将剩余M行数据发送给数据请求方(对应图6中“返回limit指定的行数”)。
特别的,生成数据限制指令、数据扫描指令以及将数据限制指令中的数据筛选条件添加到数据扫描指令中可以是由数据库的执行器执行(相当于数据库执行)。
实施例一可以应用于多种场景,例如上述的客户端页面显示。又例如,在进行数据迁移或复制时,可能需要分多次迁移或复制数据,则可以通过数据查询请求查询某次需要迁移或复制的数据,并将之前已经迁移或复制的数据筛选或过滤掉。通过实施例一,可以在进行数据或迁移时,将已经迁移或复制的数据作为无需扫描的数据,并对需要扫描的数据进行扫描,从扫描到的数据得到目标数据,即该次需要迁移或复制的数据。
实施例一中,将数据筛选条件添加或下推到数据扫描指令,在每次进行实际的数据查询时,先通过数据筛选条件确定和过滤掉无需扫描的数据,只扫描需要扫描的数据,并根据扫描到的数据得到与数据查询请求对应的目标数据。从而一方面在扫描阶段就能过滤到冗余数据,降低数据扫描量和数据扫描用时,另一方面在仅需根据扫描到的数据得到目标数据,也就降低了目标数据的确定范围和确定用时。从而实施例一的上述技术方案能够降低数据查询量和数据查询用时,提高数据查询效率和数据查询性能,且尤其适合实现大数据量扫描或大数据量筛选或过滤场景下的数据查询操作。
如图7所示,本说明书第二个实施例提供一种与实施例一所述数据查询方法对应的数据查询装置,包括:
查询计划模块202,用于获取数据查询请求,根据所述数据查询请求生成数据限制指令和数据扫描指令;其中,若所述数据查询请求中包含数据筛选规则,则所述数据限制指令中包含与所述数据筛选规则对应的数据筛选条件;
查询调整模块204,用于若所述数据限制指令中包含所述数据筛选条件,则将所述数据筛选条件添加到所述数据扫描指令中;
查询执行模块206,用于根据所述数据扫描指令执行数据扫描操作,按照所述数据限制指令从扫描到的数据得到目标数据,所述目标数据为所述数据查询请求对应的数据查询结果;
其中,根据所述数据扫描指令执行数据扫描操作包括:
若所述数据扫描指令中包含所述数据筛选条件,则根据所述数据筛选条件确定无需扫描的数据,并对需要扫描的数据进行扫描。
可选的,所述数据查询请求包含SQL语句;根据所述数据查询请求生成数据限制指令和数据扫描指令包括:
对所述SQL语句进行编译,根据所述SQL语句的编译结果生成数据限制指令和数据扫描指令。
可选的,根据所述SQL语句的编译结果生成数据限制指令和数据扫描指令包括:
根据所述SQL语句的编译结果生成二叉树,所述二叉树的节点对应操作符,所述数据限制指令和/或数据扫描指令包括一个或多个操作符。
可选的,所述数据扫描指令包含的操作符对应所述二叉树的底层节点;
根据所述数据扫描指令执行数据扫描操作还包括:
将扫描到的数据向上层节点传输。
可选的,所述数据限制指令包含的操作符对应所述二叉树的非底层节点;
按照所述数据限制指令从扫描到的数据得到目标数据包括:
获取底层节点传输来的数据,按照所述数据限制指令包含的操作符对所述底层节点传输来的数据进行处理,以得到目标数据。
可选的,所述数据限制指令和/或数据扫描指令包括一个或多个操作符;
将所述数据筛选条件添加到所述数据扫描指令中包括:
在所述数据扫描指令包括的操作符中添加所述数据筛选条件。
可选的,所述数据限制指令包括limit操作符;和/或,所述数据扫描指令包括seq操作符;和/或,所述数据筛选条件包括offset条件。
可选的,根据所述数据扫描指令执行数据扫描操作还包括:
根据所述数据扫描指令确定数据扫描对象;
根据所述数据筛选条件确定无需扫描的数据,并对需要扫描的数据进行扫描,包括:
根据所述数据筛选条件确定所述数据扫描对象中无需扫描的数据,并对所述数据扫描对象中需要扫描的数据进行扫描。
可选的,所述查询调整模块204,还用于若将所述数据筛选条件添加到所述数据扫描指令,则将所述数据限制指令中的数据筛选条件置为空。
可选的,根据所述数据扫描指令执行数据扫描操作,按照所述数据限制指令从扫描到的数据得到目标数据,包括:
使数据库根据所述数据扫描指令执行数据扫描操作,按照所述数据限制指令从扫描到的数据得到目标数据。
本说明书第三个实施例提供一种数据查询设备,所述设备包括:
至少一个处理器;
以及,
与所述至少一个处理器通信连接的存储器;
其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,使所述至少一个处理器能够执行实施例一所述的数据查询方法。
本说明书第四个实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现实施例一所述的数据查询方法。
上述各实施例可以结合使用,不同实施例之间或同一实施例内的名称相同的模块可以是相同或不同的模块。
上述对本说明书特定实施例进行了描述,其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,附图中描绘的过程不一定必须按照示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、非易失性计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书实施例提供的装置、设备、非易失性计算机可读存储介质与方法是对应的,因此,装置、设备、非易失性计算机存储介质也具有与对应方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述对应装置、设备、非易失性计算机存储介质的有益技术效果。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device, PLD)(例如现场可编程门阵列(FieldProgrammable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(HardwareDescription Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(CornellUniversity Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书实施例可提供为方法、系统、或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带式磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (9)

1.一种数据查询方法,其特征在于,所述方法包括:
获取数据查询请求,根据所述数据查询请求生成数据限制指令和数据扫描指令;其中,若所述数据查询请求中包含数据筛选规则,则所述数据限制指令中包含与所述数据筛选规则对应的数据筛选条件;所述数据查询请求包含SQL语句;根据所述数据查询请求生成数据限制指令和数据扫描指令包括:
对所述SQL语句进行编译,根据所述SQL语句的编译结果生成数据限制指令和数据扫描指令,包括:
根据所述SQL语句的编译结果生成二叉树,所述二叉树的节点对应操作符,所述数据限制指令和数据扫描指令包括一个或多个操作符;
所述数据扫描指令包含的操作符对应所述二叉树的底层节点;
根据所述数据扫描指令执行数据扫描操作还包括:
将扫描到的数据向上层节点传输;
所述数据限制指令包含的操作符对应所述二叉树的非底层节点;
按照所述数据限制指令从扫描到的数据得到目标数据包括:
获取底层节点传输来的数据,按照所述数据限制指令包含的操作符对所述底层节点传输来的数据进行处理,以得到目标数据;
若所述数据限制指令中包含所述数据筛选条件,则将所述数据筛选条件添加到所述数据扫描指令中;
根据所述数据扫描指令执行数据扫描操作,按照所述数据限制指令从扫描到的数据得到目标数据,所述目标数据为所述数据查询请求对应的数据查询结果;
其中,根据所述数据扫描指令执行数据扫描操作包括:
若所述数据扫描指令中包含所述数据筛选条件,则根据所述数据筛选条件确定无需扫描的数据,并对需要扫描的数据进行扫描;
其中,执行主体会使数据在各层节点之间流动,且下层节点的输出数据作为上层节点的输入数据,从而数据在二叉树中是由底层向顶层逐层传输;执行主体每扫描到一个单位的数据,就将扫描到的该单位的数据向上层节点传输,以使该单位的数据由底层向顶层逐层传输,当扫描到的数据达到目标量后停止扫描;
数据限制指令包含的操作符对应二叉树的非底层节点,扫描到的数据由底层向顶层传输过程中,数据限制指令包含的操作符所对应二叉树的非底层节点,会获取从底层节点逐层传输来的数据,执行主体按照所述数据限制指令包含的操作符对底层节点传输来的数据进行处理,也就是对底层节点传输来的数据执行数据限制指令,从而得到目标数据;按照数据限制指令从扫描到的数据得到目标数据包括:获取底层节点传输来的数据,按照数据限制指令包含的操作符对底层节点传输来的数据进行处理,以得到目标数据。
2.如权利要求1所述的方法,其特征在于,所述数据限制指令和数据扫描指令包括一个或多个操作符;
将所述数据筛选条件添加到所述数据扫描指令中包括:
在所述数据扫描指令包括的操作符中添加所述数据筛选条件。
3.如权利要求1至2中任一项所述的方法,其特征在于,所述数据限制指令包括limit操作符;和/或,所述数据扫描指令包括seq操作符;和/或,所述数据筛选条件包括offset条件。
4.如权利要求1所述的方法,其特征在于,根据所述数据扫描指令执行数据扫描操作还包括:
根据所述数据扫描指令确定数据扫描对象;
根据所述数据筛选条件确定无需扫描的数据,并对需要扫描的数据进行扫描,包括:
根据所述数据筛选条件确定所述数据扫描对象中无需扫描的数据,并对所述数据扫描对象中需要扫描的数据进行扫描。
5.如权利要求1所述的方法,其特征在于,所述方法还包括:
若将所述数据筛选条件添加到所述数据扫描指令,则将所述数据限制指令中的数据筛选条件置为空。
6.如权利要求1所述的方法,其特征在于,根据所述数据扫描指令执行数据扫描操作,按照所述数据限制指令从扫描到的数据得到目标数据,包括:
使数据库根据所述数据扫描指令执行数据扫描操作,按照所述数据限制指令从扫描到的数据得到目标数据。
7.一种数据查询装置,其特征在于,所述装置包括:
查询计划模块,用于获取数据查询请求,根据所述数据查询请求生成数据限制指令和数据扫描指令;其中,若所述数据查询请求中包含数据筛选规则,则所述数据限制指令中包含与所述数据筛选规则对应的数据筛选条件;所述数据查询请求包含SQL语句;根据所述数据查询请求生成数据限制指令和数据扫描指令包括:
对所述SQL语句进行编译,根据所述SQL语句的编译结果生成数据限制指令和数据扫描指令,包括:
根据所述SQL语句的编译结果生成二叉树,所述二叉树的节点对应操作符,所述数据限制指令和数据扫描指令包括一个或多个操作符;
所述数据扫描指令包含的操作符对应所述二叉树的底层节点;
根据所述数据扫描指令执行数据扫描操作还包括:
将扫描到的数据向上层节点传输;
所述数据限制指令包含的操作符对应所述二叉树的非底层节点;
按照所述数据限制指令从扫描到的数据得到目标数据包括:
获取底层节点传输来的数据,按照所述数据限制指令包含的操作符对所述底层节点传输来的数据进行处理,以得到目标数据;
查询调整模块,用于若所述数据限制指令中包含所述数据筛选条件,则将所述数据筛选条件添加到所述数据扫描指令中;
查询执行模块,用于根据所述数据扫描指令执行数据扫描操作,按照所述数据限制指令从扫描到的数据得到目标数据,所述目标数据为所述数据查询请求对应的数据查询结果;
其中,根据所述数据扫描指令执行数据扫描操作包括:
若所述数据扫描指令中包含所述数据筛选条件,则根据所述数据筛选条件确定无需扫描的数据,并对需要扫描的数据进行扫描;
其中,执行主体会使数据在各层节点之间流动,且下层节点的输出数据作为上层节点的输入数据,从而数据在二叉树中是由底层向顶层逐层传输;执行主体每扫描到一个单位的数据,就将扫描到的该单位的数据向上层节点传输,以使该单位的数据由底层向顶层逐层传输,当扫描到的数据达到目标量后停止扫描;
数据限制指令包含的操作符对应二叉树的非底层节点,扫描到的数据由底层向顶层传输过程中,数据限制指令包含的操作符所对应二叉树的非底层节点,会获取从底层节点逐层传输来的数据,执行主体按照所述数据限制指令包含的操作符对底层节点传输来的数据进行处理,也就是对底层节点传输来的数据执行数据限制指令,从而得到目标数据;按照数据限制指令从扫描到的数据得到目标数据包括:获取底层节点传输来的数据,按照数据限制指令包含的操作符对底层节点传输来的数据进行处理,以得到目标数据。
8.一种数据查询设备,其特征在于,所述数据查询设备包括:
至少一个处理器;
以及,
与所述至少一个处理器通信连接的存储器;
其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,使所述至少一个处理器能够执行权利要求1至6中任一项所述的数据查询方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现权利要求1至6中任一项所述的数据查询方法。
CN202310931499.7A 2023-07-27 2023-07-27 一种数据查询方法、装置、设备及介质 Active CN116644090B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310931499.7A CN116644090B (zh) 2023-07-27 2023-07-27 一种数据查询方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310931499.7A CN116644090B (zh) 2023-07-27 2023-07-27 一种数据查询方法、装置、设备及介质

Publications (2)

Publication Number Publication Date
CN116644090A CN116644090A (zh) 2023-08-25
CN116644090B true CN116644090B (zh) 2023-11-10

Family

ID=87643887

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310931499.7A Active CN116644090B (zh) 2023-07-27 2023-07-27 一种数据查询方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN116644090B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102323946A (zh) * 2011-09-05 2012-01-18 天津神舟通用数据技术有限公司 并行数据库中算子复用的实现方法
WO2014101199A1 (zh) * 2012-12-31 2014-07-03 华为技术有限公司 数据的处理方法和装置
CN110781180A (zh) * 2019-09-05 2020-02-11 腾讯科技(深圳)有限公司 一种数据筛选方法和数据筛选装置
CN113641701A (zh) * 2021-10-13 2021-11-12 苏州浪潮智能科技有限公司 一种数据查询方法、系统、异构加速平台及存储介质
CN113836163A (zh) * 2020-06-23 2021-12-24 南京中兴软件有限责任公司 数据的关联查询方法、装置、设备及存储介质
CN114238391A (zh) * 2021-12-17 2022-03-25 挂号网(杭州)科技有限公司 数据分页查询方法、装置、电子设备及存储介质
CN115905310A (zh) * 2023-01-04 2023-04-04 阿里云计算有限公司 数据查询方法、数据存储方法及相应的设备、系统、介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102323946A (zh) * 2011-09-05 2012-01-18 天津神舟通用数据技术有限公司 并行数据库中算子复用的实现方法
WO2014101199A1 (zh) * 2012-12-31 2014-07-03 华为技术有限公司 数据的处理方法和装置
CN104321766A (zh) * 2012-12-31 2015-01-28 华为技术有限公司 数据的处理方法和装置
CN110781180A (zh) * 2019-09-05 2020-02-11 腾讯科技(深圳)有限公司 一种数据筛选方法和数据筛选装置
CN113836163A (zh) * 2020-06-23 2021-12-24 南京中兴软件有限责任公司 数据的关联查询方法、装置、设备及存储介质
CN113641701A (zh) * 2021-10-13 2021-11-12 苏州浪潮智能科技有限公司 一种数据查询方法、系统、异构加速平台及存储介质
CN114238391A (zh) * 2021-12-17 2022-03-25 挂号网(杭州)科技有限公司 数据分页查询方法、装置、电子设备及存储介质
CN115905310A (zh) * 2023-01-04 2023-04-04 阿里云计算有限公司 数据查询方法、数据存储方法及相应的设备、系统、介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种分页查询优化方法的研究与实现;王瑞波;《中国优秀硕士学位论文全文数据库信息科技辑(月刊)》(第07期);全文 *

Also Published As

Publication number Publication date
CN116644090A (zh) 2023-08-25

Similar Documents

Publication Publication Date Title
KR102258437B1 (ko) 블록체인 기반 데이터 저장 및 쿼리 방법 및 디바이스
CN108848244B (zh) 一种分页显示的方法及装置
CN114880504B (zh) 一种图数据的查询方法、装置以及设备
CN117312394B (zh) 一种数据访问方法、装置、存储介质及电子设备
CN110399359B (zh) 一种数据回溯方法、装置及设备
CN107451204B (zh) 一种数据查询方法、装置及设备
CN115617799A (zh) 一种数据存储的方法、装置、设备及存储介质
CN110083602B (zh) 一种基于hive表的数据存储及数据处理的方法及装置
CN115756449B (zh) 一种页面复用方法、装置、存储介质及电子设备
CN116644090B (zh) 一种数据查询方法、装置、设备及介质
CN108153799B (zh) 数据库访问控制方法、装置和数据库系统
CN116048977A (zh) 一种基于数据还原的测试方法及装置
CN115129786A (zh) 一种维护区块链数据的方法、装置、电子设备和存储介质
CN111339117B (zh) 数据处理方法、装置及设备
CN110502589B (zh) 一种节点血缘关系确定方法、装置以及电子设备
CN116737367B (zh) 一种基于Minio的数据保鲜方法、设备及介质
CN117591625B (zh) 一种数据存储方法、装置、存储介质及电子设备
CN116756093B (zh) 一种大对象存储、查询方法、装置、设备及介质
CN117041980B (zh) 一种网元管理方法、装置、存储介质及电子设备
CN110704733B (zh) 一种发送数据的方法及装置
CN116226225A (zh) 单号生成方法、装置及设备
CN115587107A (zh) 一种数据更新方法、装置、存储介质及设备
CN116186035A (zh) 一种数据查询方法、装置、存储介质及电子设备
CN117196509A (zh) 一种业务表单的审批意见展示方法、设备及介质
CN116431465A (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