CN115705333A - 数据查询方法以及相关设备 - Google Patents
数据查询方法以及相关设备 Download PDFInfo
- Publication number
- CN115705333A CN115705333A CN202110943513.6A CN202110943513A CN115705333A CN 115705333 A CN115705333 A CN 115705333A CN 202110943513 A CN202110943513 A CN 202110943513A CN 115705333 A CN115705333 A CN 115705333A
- Authority
- CN
- China
- Prior art keywords
- storage node
- data
- node
- query
- page
- 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/242—Query formulation
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种数据查询方法,由数据库集群执行,数据库集群包括计算节点和存储节点,该方法包括:计算节点根据数据查询语句,从第一查询范围中确定第二查询范围,该第二查询范围小于第一查询范围,然后计算节点根据第二查询范围,获得数据查询请求,该数据查询请求用于查询第二查询范围中的数据,接着计算节点向存储节点发送数据查询请求。由于预先对查询范围进行缩减,避免计算下推之后存储层进行无意义的计算,提高了存储层中计算资源的利用率,以及存储层的计算效率。
Description
技术领域
本申请涉及云计算技术领域,尤其涉及一种数据查询方法、数据库集群以及计算机可读存储介质、计算机程序产品。
背景技术
随着云计算规模越来越大,数据量呈现指数级增长,一些数据库在支撑海量数据和写入压力方面难以满足日益增长的业务需求。为此,云原生数据库(cloud nativedatabase,cloud DB)应运而生。其中,云原生数据库是指基于云上内生的云能力设计的数据库。云原生数据库通常以平台即服务(Platform-as-a-Service,PaaS)的形式进行分发,因而也称作数据库即服务(DataBase-as-a-Service,DBaaS)。
云原生数据库一般采用存算分离的架构。具体地,云原生数据库可以包括存储层和计算层。存储层可以存储源数据,计算层可以从存储层拉取源数据,并进行相应的计算。其中,计算层和存储层能够独立伸缩,满足用户的个性化需求。计算层拉取的数据量较大时,将严重影响计算效率。
为此,业界提出了计算下推(near data processing,NDP)方案。计算下推是指将计算层的部分计算逻辑下推至存储层,一方面可以利用存储层提前过滤数据,减少网络传输开销,另一方面利用存储层的计算资源就近计算,提升计算效率,进而提升云原生数据库的性能。然而,计算下推虽然在一定程度上提升了云原生数据库的性能,但是仍然难以满足一些业务的需求。
发明内容
本申请提供了一种数据查询方法。该方法在计算下推之前预先对查询范围进行缩减,避免计算下推之后存储层进行无意义的计算,提高了存储层中计算资源的利用率,以及存储层的计算效率,进而提高了云原生数据库的响应效率,提升了云原生数据库的性能,能够满足业务的需求。本申请还提供了上述数据查询方法对应的数据库集群、计算机可读存储介质以及计算机程序产品。
第一方面,本申请提供了一种数据查询方法。该方法由数据库集群执行。该数据库集群为存算分离(存储和计算分离)的集群。数据库集群包括计算节点和存储节点。其中,计算节点为计算层中的节点,存储节点为存储层中的节点。上述节点可以是物理节点,也可以是从物理节点中通过虚拟化等方式生成的逻辑节点。
具体地,计算节点可以根据数据查询语句,从第一查询范围中确定第二查询范围,该第二查询范围小于第一查询范围,然后计算节点根据第二查询范围,获得数据查询请求,该数据查询请求用于查询第二查询范围中的数据,接着计算节点向存储节点发送数据查询请求。
在该方法中,计算节点可以通过预先剪枝等方式对查询范围进行缩减,例如从第一查询范围中确定第二查询范围,如此避免了计算下推后,存储层的存储节点进行一些无意义的计算,提高了存储层中计算资源的利用率,以及存储层的计算效率,进而提高了云原生数据库的响应效率,提升了云原生数据库的性能,能够满足业务的需求。而且,存储节点先进行过滤,可以减少网络传输开销。
在一些可能的实现方式中,计算节点和存储节点可以通过交互进行协商,从而确定是否进行计算下推。具体地,在计算节点发送数据查询请求后,存储节点可以基于该存储节点的负载,确定是否进行计算下推。存储节点的负载可以通过存储节点的资源的队列长度衡量。其中,队列长度可以由队列中线程的数量确定。
当存储节点的负载达到预设负载时,存储节点可以向计算节点发送拒绝查询响应,以使计算节点查询第二查询范围中的数据。在一些实施例中,当存储节点的负载未达到预设负载时,存储节点可以根据下推的计算逻辑,利用自身的计算资源查询第二查询范围中的数据。其中,预设负载可以根据经验值进行设置。
在该方法中,计算节点和存储节点通过协商确定是否进行计算下推,避免了存储节点负载较大情况下基于下推的计算逻辑进行计算,导致存储节点难以正常提供服务。
在一些可能的实现方式中,计算节点还可以通过先获取存储节点的负载,确定存储节点的负载小于预设负载,然后再向存储节点发送所述数据查询请求。在另一些实施例中,计算节点确定存储节点的负载不小于预设负载时,则计算节点可以不向存储节点发送数据查询请求。
通过上述方法,可以避免存储节点负载较大情况下基于下推的计算逻辑进行计算,导致存储节点难以正常提供服务。并且,存储节点的负载不小于预设负载时,由于无需向存储节点发送数据查询请求,减少了传输开销。
在一些可能的实现方式中,计算节点还可以先获取所述存储节点的状态,该状态用于表征节点的负载状况,例如节点的负载较大时,则节点的状态可以为过载,节点的负载较小时,则节点的状态可以为空闲。计算节点确定所述存储节点的状态为预设状态,该预设状态例如可以是空闲状态。然后计算节点再向所述存储节点发送所述数据查询请求。
通过上述方法,可以避免存储节点在非预设状态下基于下推的计算逻辑进行计算,导致存储节点难以正常提供服务。
在一些可能的实现方式中,计算节点可以通过不同方式获取存储节点的状态。例如,存储节点可以提供状态接口,计算节点可以根据存储节点的状态接口,通过调用状态接口的方式主动获取存储节点的状态。又例如,存储节点可以维护返回值标志位,当存储节点更新返回值标志位时,计算节点可以响应于所述存储节点对返回值标志位的更新,根据所述返回值标志位确定所述存储节点的状态。
通过基于上述方式获取存储节点的状态,可以实现基于存储节点的状态,在计算下推和不进行计算下推之间进行自由切换,提高数据库集群的资源利用率,以及数据库集群的性能。
在一些可能的实现方式中,存储节点还可以根据所述数据查询请求,确定至少一个物理页面。所述至少一个物理页面中的每个物理页面包括至少一行满足条件的数据。其中,至少一行满足条件的数据中的每一行满足条件的数据可以是一行完整的数据,也可以是一行数据中的若干列。存储节点可以根据所述至少一个物理页面,获得至少一个逻辑页面。例如存储节点可以通过合并方式获得至少一个逻辑页面。然后存储节点向所述计算节点返回所述至少一个逻辑页面。
其中,存储节点通过将至少一个物理页面合并为至少一个逻辑页面,如此可以减少网络传输开销,降低数据查询成本。
在一些可能的实现方式中,存储节点可以通过多种方式进行合并,以获得至少一个逻辑页面。例如,存储节点可以将所述至少一个物理页面中满足条件的数据的页面描述信息(即物理页面裁剪后的小页面的页面描述信息)合并,获得至少一个逻辑页面。其中,所述页面描述信息包括页面头和页面尾中的至少一个。又例如,存储节点可以将所述至少一个物理页面中满足条件的数据合并。当然,存储节点也可以既合并至少一个物理页面中满足条件的数据的页面描述信息,又合并至少一个物理页面中满足条件的数据。
通过合并页面描述信息或合并数据,可以有效压缩数据空间,节省网络传输开销,降低数据查询成本。
在一些可能的实现方式中,所述逻辑页面在查询结束后被销毁。具体地,逻辑页面是一个逻辑层面的页面,通常对当前查询有效,对其他查询无效,因此,该逻辑页面在查询结束后被销毁,避免对后续查询产生干扰。
在一些可能的实现方式中,考虑到数据可以被事务修改,数据可以包括多个不同版本。基于此,存储节点在确定至少一个物理页面时,可以先根据所述数据查询请求,确定满足条件的数据,然后判断该数据的可见性,从而确定至少一个物理页面。具体地,存储节点可以根据满足条件的数据的事务标识确定至少一个物理页面。至少一个物理页面中的每个物理页面的包括至少一行满足条件且事务标识小于低水位的数据。其中,事务标识小于低水位表征数据可见。
该方法中,计算节点将低水位下推至存储节点,使得存储节点可以基于低水位和事务标识判断数据的可见性,进而基于该可见性实现并发控制,满足了业务需求。
在一些可能的实现方式中,存储节点接收计算节点发送的所述低水位,例如该低水位可以携带在数据查询请求中,存储节点接收计算节点发的数据查询请求,从而获得上述低水位。接着,存储节点可以比较所述满足条件的数据的事务标识和所述低水位,从而确定至少一个物理页面。
该方法中,计算节点将低水位下推至存储节点,存储节点基于该低水位以及满足条件的数据的事务标识判断数据的可见性,并根据可见的数据确定至少一个物理页面。一方面,实现了在存储节点进行并发控制,另一方面,计算节点无需下推完整的Read view信息,降低了实施难度,以及减少了传输开销。
在一些可能的实现方式中,数据查询语句的查询类型为条件过滤、聚合或投影。其中,条件过滤指查询符合条件的行记录。投影是指查询符合条件的行记录中的指定列。聚合是指对至少一个符合条件的行记录进行归纳,例如是对至少一个符合条件的行记录进行计数、求极大值、求极小值、求和或者是求平均。由此可见,该方法可以适用于多种查询场景,满足了多样性的查询需求。
第二方面,本申请提供了一种数据库集群。所述数据库集群包括计算节点和存储节点;
所述计算节点,用于根据数据查询语句,从第一查询范围中确定第二查询范围,所述第二查询范围小于所述第一查询范围,然后根据所述第二查询范围,获得数据查询请求,所述数据查询请求用于查询所述第二查询范围中的数据,接着向所述存储节点发送所述数据查询请求。
在一些可能的实现方式中,所述存储节点用于:
当所述存储节点的负载达到预设负载时,向所述计算节点发送拒绝查询响应,以使所述计算节点查询所述第二查询范围中的数据。
在一些可能的实现方式中,所述计算节点还用于:
在所述计算节点向所述存储节点发送所述数据查询请求之前,获取所述存储节点的负载,确定所述存储节点的负载小于预设负载。
在一些可能的实现方式中,所述计算节点还用于:
在所述计算节点向所述存储节点发送所述数据查询请求之前,获取所述存储节点的状态,确定所述存储节点的状态为预设状态。
在一些可能的实现方式中,所述计算节点用于:
根据所述存储节点的状态接口获取所述存储节点的状态;和/或,
响应于所述存储节点对返回值标志位的更新,根据所述返回值标志位确定所述存储节点的状态。
在一些可能的实现方式中,所述存储节点还用于:
根据所述数据查询请求,确定至少一个物理页面,所述至少一个物理页面中的每个物理页面包括至少一行满足条件的数据;
根据所述至少一个物理页面,获得至少一个逻辑页面;
向所述计算节点返回所述至少一个逻辑页面。
在一些可能的实现方式中,所述存储节点具体用于:
将所述至少一个物理页面中满足条件的数据的页面描述信息合并,所述页面描述信息包括页面头和页面尾中的至少一个;和/或;
将所述至少一个物理页面中满足条件的数据合并。
在一些可能的实现方式中,所述逻辑页面在查询结束后被销毁。
在一些可能的实现方式中,所述存储节点具体用于:
根据所述数据查询请求,确定满足条件的数据;
根据满足条件的数据的事务标识确定至少一个物理页面,所述至少一个物理页面中的每个物理页面包括至少一行满足条件且事务标识小于低水位的数据。
在一些可能的实现方式中,所述存储节点还用于:
接收所述计算节点发送的所述低水位;
所述存储节点根据满足条件的数据的事务标识确定至少一个物理页面,包括:
所述存储节点比较所述满足条件的数据的事务标识和所述低水位,确定至少一个物理页面。
在一些可能的实现方式中,所述数据查询语句的查询类型为条件过滤、聚合或投影。
第三方面,本申请提供了一种数据库集群。所述数据库集群包括多台计算设备,所述多台计算设备包括第一计算设备和第二计算设备,每台计算设备包括处理器和存储器;
所述第一计算设备的处理器用于执行所述第一计算设备的存储器中存储的指令,以使得所述第一计算设备执行如第一方面的任一种实现方式所述的由计算节点执行的方法步骤;
所述第二计算设备的处理器用于执行所述第二计算设备的存储器中存储的指令,以使得所述第二计算设备执行如第一方面的任一种实现方式所述的由存储节点执行的方法步骤。
第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,所述指令指示设备执行上述第一方面或第一方面的任一种实现方式所述的数据查询方法。
第五方面,本申请提供了一种包含指令的计算机程序产品,当其在设备上运行时,使得设备执行上述第一方面或第一方面的任一种实现方式所述的数据查询方法。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
为了更清楚地说明本申请实施例的技术方法,下面将对实施例中所需使用的附图作以简单地介绍。
图1为本申请实施例提供的一种数据库的存储粒度示意图;
图2为本申请实施例提供的一种数据库集群的架构示意图;
图3为本申请实施例提供的一种数据查询方法的交互流程图;
图4为本申请实施例提供的一种B+tree的结构示意图;
图5为本申请实施例提供的一种可见性判断原理图;
图6为本申请实施例提供的一种B+tree叶子节点的结构示意图;
图7为本申请实施例提供的一种B+tree叶子节点的结构示意图;
图8为本申请实施例提供的一种数据库集群的结构示意图。
具体实施方式
本申请实施例中的术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。
为了便于理解本申请实施例,首先,对本申请涉及的部分术语进行解释说明。
数据库,也称作数据管理系统,具体是一种对电子化的数据进行管理的系统。数据库中存储有数据,并支持用户对数据进行新增、删除、查找或者修改等操作。其中,利用云上内生的云能力设计的数据库即为云原生数据库。
数据库(例如是云原生数据库)通常将数据存在一个空间,该空间称作表空间(tablespace)100。如图1所示,数据库可以包括一个或多个表空间100。表空间100可以包括系统表空间、用户表空间、撤销表空间、临时表空间等不同类型。表空间100是一个逻辑容器,该逻辑容器的存储对象是段(segment)102。
段102是数据库中的分配单位。一个表空间100可以包括一个或多个段102,每个段102归属于一个表空间100。其中,不同类型的数据库对象以不同的段形式存在。例如,用户创建数据表时,数据库中会创建一个表段。又例如,用户创建一个索引时,数据库中会创建一个索引段。
段102通常包括一个或多个区(entent)104。其中,区104也可以称作块(block)。区104在文件系统中是一个连续分配的空间。例如,在一些数据库中,一个区104包括64个连续的页(page)106。其中,页106的大小通常为16千字节(kilobyte,KB),相应地,一个区104的大小可以为64*16KB=1兆字节(megabyte,MB)。
页106中可以包括多个行(row)108,数据可以按行存储。其中,页106中存储有数据的行可以称作行记录。每个页106通常可以存放有限数量的行记录。例如,对于大小为16KB的页106而言,最多可以存放7992行记录。
其中,用户可以提交事务,从而将相应的数据写入到行108中,形成行记录。基于此,行108中可以包括事务(transaction)的标识,例如是trx_id。每一个行记录可以包括多个列(col),多个列可以表示为col 1至col n。其中,n为正整数。
为了便于理解,本申请结合一个示例,对页106、行108以及行108中的列进行示例说明。例如,一个页面106中可以存储多个学生的考试成绩。每个学生的考试成绩存储在页面106的一个行108中。学生的姓名、学号、总成绩以及各科成绩分别占用行108的一个列。
云原生数据库通常采用存算分离的架构。为了提升云原生数据库的性能,可以进行计算下推,也即计算卸载。计算下推,具体是指将计算层的部分计算逻辑下推至存储层。存储层可以利用自身的计算资源直接进行计算,然后再向计算层返回存储层的计算结果。一方面可以提升云原生数据库的性能,例如提高云原生数据库的响应效率,另一方面存储层可以提前过滤数据,从而减少不必要的网络传输开销。
然而,计算层在将部分计算逻辑下推至存储层时,可能导致存储层额外进行一些无意义的计算。例如,存储层需要对page1至page10进行条件过滤,其中,page5至page10中不包括任何满足条件的行。如此,浪费了计算资源,降低了计算效率,导致计算下推对于性能的提升比较有限,难以满足业务的需求。
有鉴于此,本申请实施例提供了一种数据查询方法。该方法可以由数据库集群执行。数据库集群包括多个节点,这些节点可以分为计算层的节点(即计算节点)和存储层的节点(即存储节点)。其中,计算节点可以运行数据库引擎,数据库引擎是用于存储、处理和保护数据的核心服务,通过数据库处理引擎可以创建用于存储数据的表和用于查看、管理、保护数据安全的数据库对象(如索引、视图)。存储节点存储数据库的数据,例如是页面数据或日志数据等。
具体地,计算节点可以根据数据查询语句,从第一查询范围中确定第二查询范围,该第二查询范围小于第一查询范围,然后计算节点根据第二查询范围,获得数据查询请求,该数据查询请求用于查询第二查询范围中的数据,接着计算节点向存储节点发送上述数据查询请求。
由于数据查询请求指示对第二查询范围中的数据进行查询,而不是对第一查询范围中的数据进行查询,如此避免了存储层的存储节点进行一些无意义的计算,提高了存储层中计算资源的利用率,以及存储层的计算效率,进而提高了云原生数据库的响应效率,提升了云原生数据库的性能,能够满足业务的需求。
为了使得本申请的技术方案更加清楚、易于理解,下面结合附图对本申请实施例的系统架构进行介绍。
参见图2所示的数据库集群的架构图,数据库集群200包括计算节点202和存储节点204。其中,计算节点202为计算层中的节点,存储节点204为存储层中的节点。图2以一个计算节点202和一个存储节点204进行示例说明,在本申请实施例其他可能的实现方式中,数据处理系统200可以包括多个计算节点202和多个存储节点204。计算节点202和存储节点204建立有通信连接。
当用户10查询数据时,可以通过终端20上的客户端编写数据查询语句,例如可以采用结构化查询语言(structured query language,SQL)编写数据查询语句。然后客户端可以向数据库集群200发送上述数据查询语句。
数据库集群200中的计算节点202可以根据数据查询语句,从第一查询范围中确定第二查询范围,该第二查询范围小于第一查询范围。然后,计算节点202根据上述第二查询范围,获得数据查询请求,该数据查询请求用于查询第二查询范围中的数据。接着,计算节点202向存储节点204发送上述数据查询请求。存储节点204可以根据该数据查询请求对第二查询范围中的数据进行查询。
其中,数据查询请求指示有计算逻辑和第二查询范围。该计算逻辑是计算层的计算节点202下推至存储层的存储节点204。存储节点204具有计算资源,存储节点204可以基于计算节点202下推的计算逻辑,通过上述计算资源对第二查询范围中的数据进行查询。
接下来,将从数据处理系统200中计算节点202和存储节点204的角度,对本申请实施例提供的数据查询方法进行详细说明。
参见图3所示的数据查询方法的流程图,该方法包括:
S302:客户端发送数据查询语句。
具体地,用户需要查询数据时,可以使用客户端编写数据查询语句,然后客户端向数据库集群200发送数据查询语句,进而实现数据查询。其中,数据查询语句是基于查询语言例如是SQL编写得到的。
数据查询语句可以根据需要获得的查询结果分为不同查询类型。例如,查询类型可以包括条件过滤(filter)、聚合(aggregate)或者是投影(project)等不同类型。其中,条件过滤是指查询符合条件的行记录。投影是指查询符合条件的行记录中的指定列。聚合是指对至少一个符合条件的行记录进行归纳,例如是对至少一个符合条件的行记录进行计数(count)、求极大值(maximum,max)、求极小值(minimum,min)、求和(summation,sum)或者是求平均(average,avg)。
为了便于理解,下面仍以存储学生的考试成绩的云原生数据库进行示例说明。在该示例中,数据查询语句1用于获取学号为20210511的学生的成绩,数据查询语句2用于获取302班各位学生的语文成绩,数据查询语句3用于获取总成绩大于600的学生的数量。相应地,数据查询语句1的查询类型为条件过滤。数据查询语句2的查询类型为投影,数据查询语句3的查询类型为聚合。
S304:计算节点202获取存储节点204的负载。
在本实施例中,存储节点204提供有计算资源和存储资源,以便于计算节点202执行计算下推时,能够基于该计算资源和存储资源执行相应的任务的进程。其中,计算资源可以包括处理器,例如是中央处理器(central processing unit,CPU)。存储资源可以包括内存(memory,MEM)。
存储节点204的负载具体是指计算资源的负载和/或存储资源的负载。例如,存储节点204的负载可以是CPU负载(CPU load)。CPU load通常可以根据CPU队列长度确定,CPU队列长度越长,CPU load越大。CPU队列长度具体是指CPU队列中进程的数量。例如,一个存储节点204的CPU队列中有3个进程,另一个存储节点204的队列中有6个进程,则包括6个进程的存储节点204的负载大于包括3个进程的存储节点204的负载。
具体实现时,计算节点202可以周期性地访问存储节点204,以获取存储节点204的负载。在一些实施例中,存储节点204也可以监控负载状况,并将存储节点204的负载反馈至计算节点202。
S306:计算节点202确定存储节点204的负载小于预设负载。
预设负载可以根据经验值进行设置。计算节点202可以比较存储节点204的负载和预设负载的大小关系。当计算节点202确定存储节点204的负载小于预设负载时,表明存储节点204的可用资源能够支持计算节点202进行计算下推。计算节点202可以执行S308至S312。
S308:计算节点202根据数据查询语句,从第一查询范围中确定第二查询范围。
具体地,计算节点202可以根据数据查询语句,执行剪枝操作,以实现从第一查询范围中确定第二查询范围。其中,剪枝是指删减不重要的节点,以减小计算或搜索的复杂度。计算节点202可以根据数据查询语句的指示,对第一查询范围进行剪枝,从而得到第二查询范围。
在一些可能的实现方式中,数据库的文件系统可以采用树结构存储数据。树结构可以包括二叉查找树、平衡二叉树(Adelson-Velskii Landis tree,AVL tree)、平衡多路查找树(即B树,B tree)、B+树(B+tree)等不同类型。第一查询范围可以通过存储数据的树结构表示。计算节点202可以根据数据查询语句,对上述树结构进行剪枝,得到剪枝后的树结构。第二查询范围可以通过剪枝后的树结构表示。
其中,二叉查找树是一种左子树的键值小于根的键值,右子树的键值大于根的键值的树结构,AVL tree则是在符合二叉查找树的条件下,还满足任何节点的两个子树的高度最大差为1的树结构。在AVL tree中插入或删除节点可以导致平衡二叉树失衡。失衡是指两个子树的高度最大差大于1。此时,可以通过旋转失衡的AVL tree,使其重新平衡。
相对于AVL tree,B tree的每个节点包括的关键字增多。由于B tree的节点包括的关键字增多,因而B tree的层级比原来的二叉树有所减少,如此可以减少数据查找的次数和复杂度。B+树则是B树衍生的一种树结构。与B tree相比,B+tree的非叶子节点不保存关键字的指针,只进行数据索引,这样使得B+树每个非叶子节点所能保存的关键字大大增加。
为了便于理解,下面以一个B+tree的剪枝进行示例说明。具体参见图4所示的B+tree的结构示意图,该示例中,B+tree包括3层,具体是level 0、level 1和level 2。数据查询语句用于从事务表中查找主键(primary key)小于30的数据,具体表示为SELECT*FROMtt WHERE primary key<30。计算节点202可以自顶向下扫描B+tree。当计算节点202扫描至level 1层非叶子节点Page1时,可以获取该节点的所有叶子节点的page id,即page3至page7。计算节点202判断出page7中primary key大于30,因而计算节点202可以剪去P7以及P7右边的分支,无需进行扫描。
S310:计算节点202根据第二查询范围,获得数据查询请求。
具体地,计算节点202可以根据数据查询语句确定对第二查询范围中数据的计算逻辑,根据第二查询范围的标识以及计算逻辑生成数据查询请求。该数据查询请求用于请求查询第二查询范围中的数据。
继续以图4的示例进行说明。具体地,第二查询范围可以是叶子节点page3至page6中的数据形成的数据集。计算节点202可以根据叶子节点page3至page6组装数据查询请求,以指示存储节点204根据该数据查询请求查询叶子节点page3至page6中的数据。其中,数据查询请求可以为读请求,例如是批量读请求。
其中,计算节点202上运行有数据库引擎,例如是SQL engine。SQL engine包括查询缓存(query cache)、分析器(parser)、预处理器(preprocessor)、优化器(optimizer)和查询执行引擎(query execution engine)、存储抽象层(storage abstract layer,SAL)。查询缓存可以缓存客户端的查询语句,如SQL语句,然后该SQL语句可以输入至分析器进行语法分析,获得语法树(parser tree)。预处理器可以对语法树进行预处理,然后由优化器对预处理后的语法树进行优化,生成查询执行计划(query execution plan)。查询执行引擎可以对查询执行计划进行处理,例如进行条件过滤(filter)、聚合(aggregation)等,接着可以通过API call方式调用存储引擎,形成页面读(page read)请求,SQL可以将该普通页面读请求转换成剪枝后的批量读(batch read)请求,如此可以减少网络输入输出(inputoutput,IO)次数和网络吞吐。
S312:计算节点202向存储节点204发送数据查询请求。
计算节点202向存储节点204发送数据查询请求,从而实现计算下推。根据数据查询语句的查询类型不同,计算下推可以分为不同类型。例如,计算下推可以包括条件下推、聚合下推、投影下推等不同类型。
条件下推是指将过滤条件下推到存储节点204(具体是存储节点204中的数据源),存储节点204(例如是存储节点204中的数据源)先进行预过滤,将符合条件的数据返回给计算节点204(例如是计算节点204中的查询引擎)。
聚合下推是将聚合函数如Count,Max,Min,Sum,avg等下推到存储节点204(具体是存储节点204中的数据源),存储节点204(例如是存储节点204中的数据源)利用聚合功能进行聚合求值,将求值结果返回给计算节点204(例如是计算节点204中的查询引擎),如此可以极大地减小数据传输开销,同时可以大幅度节省内存资源。
投影下推也称作列裁剪,具体是指将需要的列下推到存储节点204(具体是存储节点204中的数据源),使得存储节点204(例如是存储节点204中的数据源)只返回所需要的列数据给计算节点204(例如是计算节点204中的查询引擎),如此可以大大减小数据的传输开销,尤其是对于列存数据源,可以极大地提高查询速率。
S314:存储节点204根据数据查询请求,确定至少一个物理页面。
存储节点204可以根据数据查询请求中的计算逻辑,例如存储节点204可以通过存储层插件如NDP plugin处理计算逻辑,以对数据查询请求指示的第二查询范围进行处理,从而确定至少一个物理页面。其中,至少一个物理页面中的每个物理页面包括至少一行满足条件的数据。即存储节点204确定的至少一个物理页面中的每个物理页面包括至少一个满足条件的行记录。
在一些可能的实现方式中,存储节点204还可以判断行记录中数据的可见性。其中,存储节点204判断可见性的方式与计算节点202类似。参见图5所示的可见性判断原理图,存储节点可以通过比较事务标识trx_id和ReadView中低水位(low_water_mark)、高水位(high_water_mark)的大小关系,确定数据可见性。
具体地,当行记录的trx_id<low_water_mark时,表示该版本是已提交事务生成,该行记录中的数据可见;当行记录的trx_id>high_water_mark时,表示该版本是未开始事务生成,该行记录中的数据不可见,需要结合undo log获取数据的历史版本。当行记录的trx_id满足low_water_mark≤trx_id≤high_water_mark时,则需要结合ReadView中其他相关信息判断可见性。
考虑到ReadView包括的信息较多,将ReadView完整地下推至存储节点204较为复杂,而且存储节点204难以获取undo log等信息,因此,计算节点202可以将ReadView中的low_water_mark下推至存储节点204。如此,当trx_id<low_water_mark时,表示行记录中的数据可见,存储节点204可以进行相关计算,当trx_id≥low_water_mark时,表示行记录中的数据不可见或无法判断可见,此类数据可以返回至计算节点202,由计算节点202判断可见性。
基于此,存储节点204可以先根据数据查询请求,确定满足条件的数据,然后根据满足条件的数据的trx_id和低水位确定至少一个物理页面。其中,至少一个物理页面中的每个物理页面包括至少一行满足条件且事务标识小于low_water_mark的数据。
S316:存储节点204将至少一个物理页面中满足条件的数据的页面描述信息合并,以及将至少一个物理页面中满足条件的数据合并,获得至少一个逻辑页面。
存储节点204确定的每个物理页面中包括至少一行满足条件的数据。至少一行满足条件的数据中的每一行数据可以是一行完整的数据,也可以是一行数据中的若干列数据。例如查询类型为条件过滤时,至少一行满足条件的数据中的每一行数据为一行完整的数据。又例如查询类型为投影时,至少一行满足条件的数据中的每一行数据为一行数据中的若干列数据。
其中,每个物理页面中满足条件的数据可以将该物理页面裁剪为至少一个小页面。每个小页面可以包括连续N行满足条件的数据。上述N为正整数。N行满足条件的数据中的每一行数据可以是一行完整的数据,或者一行数据中的若干列。每个小页面可以包括页面描述信息。其中,页面描述信息包括页面头(page header)和页面尾(page trailer)中的至少一种。
基于此,满足条件的数据的页面描述信息可以是小页面的页面描述信息。存储节点204将至少一个物理页面中满足条件的数据的页面描述信息合并,具体是将裁剪后的多个小页面的页面头和/或页面尾进行合并。并且,存储节点204还可以将至少一个物理页面中满足条件的数据合并,如裁剪后的多个小页面的数据合并,从而获得至少一个逻辑页面。
为了便于理解,下面结合具体示例说明。
参见图6所示的一种B+tree叶子节点的结构示意图,如图6所示,叶子节点共占用16KB,其中,页面头(page header)占用120字节(Bytes),页面尾(page trailer)占用8字节,当存储层中的存储节点204对物理页面中的数据进行了过滤或裁剪,假设过滤或裁剪后剩余的数据为20字节,则将每个小页面回传至计算节点202,需要传输120+20+8=148字节的数据量。存储节点204可以将n个小页面的页面描述信息进行合并,从而获得一个逻辑页面。如此,可以节省(n-1)*(120+8)字节的传输开销。
进一步地,存储层中的存储节点204计算出每个物理页面满足条件的行数,例如page1中满足条件的行数为n1,page 2中满足条件的行数为n2,以此类推,page m中满足条件的行数为nm,存储节点204可以将m个物理页面的满足条件的行进行合并,组装为一个逻辑页面,该逻辑页面包括(n1+n2+…+nm)行。例如,参见图7,在聚合下推时,存储节点204将各物理页面中满足条件的行执行计数这一聚合操作。如此,可以进一步压缩数据空间,节省传输开销。
需要说明的是,存储节点204组装的逻辑页面是一个逻辑层面的页面。该逻辑页面仅对当前查询有效,对其他查询无效。该逻辑页面在当前查询结束后可以被销毁。另外,每一个物理页面中未参与组装形成逻辑页面的数据还用于形成空页面。具体地,存储节点204可以针对未参与组装的数据添加“empty”标签,从而形成空页面。该空页面无需传输。
上述S316为本申请实施例中存储节点204确定逻辑页面的一种实现方式,在一些可能的实现方式中,存储节点204也可以仅对满足条件的数据的页面描述信息进行合并,或者仅对多个满足条件的数据进行合并,从而获得至少一个逻辑页面。
S318:存储节点204返回至少一个逻辑页面。
具体地,存储节点204可以向计算节点202返回至少一个逻辑页面。具体地,存储节点204可以将至少一个逻辑页面的页面描述信息封装在数据查询响应中,然后向计算节点202返回数据查询响应,以便于计算节点202根据上述逻辑页面的描述信息从存储节点204获取上述逻辑页面。
S320:计算节点202返回查询结果。
该查询结果具体是根据至少一个逻辑页面形成。具体地,计算节点202可以解析存储节点204返回的页面,当解析到逻辑页面时,遍历该逻辑页面的全部数据,基于该数据可以获得查询结果。其中,计算节点204解析到空页面时,可以跳过空页面,以减少不必要的计算。
需要说明的是,上述S304至S306确定进行计算下推的一种实现方式,在本申请实施例其他可能的实现方式中,也可以通过其他方式确定进行计算下推。类似地,上述S314至S320为根据数据查询请求进行查询,并返回查询结果的一种实现方式,在本申请实施例其他可能的实现方式中,也可以通过其他方式进行查询,并返回相应的查询结果。本实施例对此不作替换。
基于上述内容描述,本申请实施例提供的数据查询方法通过计算节点202预先剪枝,避免了计算下推后,存储层的存储节点204进行一些无意义的计算,提高了存储层中计算资源的利用率,以及存储层的计算效率,进而提高了云原生数据库的响应效率,提升了云原生数据库的性能,能够满足业务的需求。而且,存储节点204先进行过滤,可以减少网络传输开销。进一步地,存储节点204将多个小页面合并为逻辑页面,进一步节省了网络传输开销。
此外,计算节点202可以根据存储节点204的负载状况,在计算下推和非计算下推之间进行灵活切换,如此可以实现更合理地使用数据库集群200的资源,提高资源利用率。
需要说明的是,图3所示实施例是以计算节点202基于负载状况确定进行计算下推作为示例说明,在本申请实施例其他可能的实现方式中,计算节点202也可以通过其他因素确定进行计算下推。例如,计算节点202可以获取存储节点204的状态,确定存储节点204的状态为预设状态时,进行计算下推。又例如,计算节点202可以先发送指示进行计算下推的数据查询请求,存储节点204可以根据该数据查询请求,执行数据查询操作,从而完成计算下推。在一些实施例中,存储节点204也可以返回拒绝查询响应。该拒绝查询响应表示存储节点204拒绝计算下推,将查询任务返回至计算节点202,由计算节点202自行查询第二查询范围中的数据。
下面对上述不同实现方式分别进行详细说明。
在第一种实现方式中,存储节点204可以对外提供状态接口,该状态接口具体是用于提供状态查询功能的应用程序编程接口(application programming interface,API)。计算节点202可以调用存储节点204的上述API,以获取存储节点204的状态。
存储节点204的状态用于表征存储节点204的负载状况。基于负载状况可以将存储节点204的状态分为过载或空闲等不同类型。其中,过载是指负载较大,空闲是指负载较小。负载状况可以根据存储节点204中计算资源如CPU的队列长度确定。例如队列长度小于第一预设长度时,存储节点204的状态可以为空载,队列长度大于第二预设长度时,存储节点204的状态可以为过载。
当队列未满时,考虑到资源利用率和负载具有相关性,还可以根据资源利用率,如CPU利用率、MEM利用率中的至少一种确定。例如,CPU利用率小于第一阈值,且内存利用率小于第二阈值时,表征存储节点204处于空闲状态,CPU利用率大于或等于第一阈值,且内存利用率大于或等于第二阈值时,表征存储节点204处于过载状态。
考虑到将计算逻辑下推至存储层的存储节点204时,存储节点204需要消耗CPU或MEM资源进行过滤、裁剪等计算,当存储节点204负载较高,例如存储节点204处于过载状态时,进行计算下推对于性能的提升有限。因此,计算节点202可以在存储节点204的状态为预设状态,例如是空闲状态时,进行计算下推。
在本实施例中,计算节点202可以根据存储节点204的状态,在计算下推和非计算下推之间进行灵活切换。例如,对于一个较大的表空间,在扫描前1/3的页面(例如是页面1-10)时,由于CPU利用率、MEM利用率相对较低,存储节点204处于空闲状态,因此计算节点202可以针对前1/3的页面进行计算下推,在扫描中间1/3的页面(例如是页面11-20)时,由于CPU利用率、MEM利用率相对较高,存储节点204处于过载状态,计算节点202可以针对中间1/3的页面不进行计算下推,在扫描最后1/3的页面(例如是页面21-30)时,由于存储节点204变为空闲状态,因此,计算节点202可以针对剩余的1/3的页面再进行计算下推。
S304是以计算节点202主动获取存储节点204的状态,例如是周期性访问状态接口,获取存储节点204的状态进行示例说明。在本申请实施例其他可能的实现方式中,计算节点202也可以响应于所述存储节点204对返回值标志位的更新,根据所述返回值标志位确定所述存储节点的状态。具体地,存储节点204可以根据存储节点204的资源利用率维护返回值标志位,例如,资源利用率由大于或等于对应的阈值,变更为小于对应的阈值,则将该返回值标志位由第一值更新为第二值。其中,第一值可以为0,第二值可以为1,当返回值标志位为1时表征存储节点处于空闲状态。
在第二种可能的实现方式中,计算节点202和存储节点204可以协商,从而决定是否进行计算下推。具体地,计算节点202向存储节点204发送数据查询请求,该数据查询请求携带有待下推的计算逻辑。存储节点204根据自身的负载状况确定是否进行计算下推,若否,则向计算节点202返回拒绝查询响应,以向计算节点202通知不进行计算下推,由计算节点202查询第二查询范围中的数据;若是,则通过存储节点204的计算资源按照下推的计算逻辑,查询第二查询范围中的数据。
上文结合图1至图7对本申请实施例提供的数据查询方法进行了详细介绍,下面将结合附图对本申请实施例提供的数据库集群200进行介绍。
参见图2所示的数据库集群200的结构示意图,该数据库集群200包括计算节点202和存储节点204;
所述计算节点202,用于根据数据查询语句,从第一查询范围中确定第二查询范围,所述第二查询范围小于所述第一查询范围,然后根据所述第二查询范围,获得数据查询请求,所述数据查询请求用于查询所述第二查询范围中的数据,接着向所述存储节点204发送所述数据查询请求。
在一些可能的实现方式中,所述存储节点204用于:
当所述存储节点的负载达到预设负载时,向所述计算节点发送拒绝查询响应,以使所述计算节点查询所述第二查询范围中的数据。
在一些可能的实现方式中,所述计算节点202还用于:
在所述计算节点向所述存储节点发送所述数据查询请求之前,获取所述存储节点的负载,确定所述存储节点的负载小于预设负载。
在一些可能的实现方式中,所述计算节点202还用于:
在所述计算节点向所述存储节点发送所述数据查询请求之前,获取所述存储节点的状态,确定所述存储节点的状态为预设状态。
在一些可能的实现方式中,所述计算节点202用于:
根据所述存储节点的状态接口获取所述存储节点的状态;和/或,
响应于所述存储节点对返回值标志位的更新,根据所述返回值标志位确定所述存储节点的状态。
在一些可能的实现方式中,所述存储节点204还用于:
根据所述数据查询请求,确定至少一个物理页面,所述至少一个物理页面中的每个物理页面包括至少一行满足条件的数据;
根据所述至少一个物理页面,获得至少一个逻辑页面;
向所述计算节点返回所述至少一个逻辑页面。
在一些可能的实现方式中,所述存储节点204具体用于:
将所述至少一个物理页面中满足条件的数据的页面描述信息合并,所述页面描述信息包括页面头和页面尾中的至少一个;和/或;
将所述至少一个物理页面中满足条件的数据合并。
在一些可能的实现方式中,所述逻辑页面在查询结束后被销毁。
在一些可能的实现方式中,所述存储节点204具体用于:
根据所述数据查询请求,确定满足条件的数据;
根据满足条件的数据的事务标识确定至少一个物理页面,所述至少一个物理页面中的每个物理页面包括至少一行满足条件且事务标识小于低水位的数据。
在一些可能的实现方式中,所述存储节点204还用于:
接收所述计算节点发送的所述低水位;
所述存储节点根据满足条件的数据的事务标识确定至少一个物理页面,包括:
所述存储节点比较所述满足条件的数据的事务标识和所述低水位,确定至少一个物理页面。
在一些可能的实现方式中,所述数据查询语句的查询类型为条件过滤、聚合或投影。
根据本申请实施例的数据库集群200可对应于执行本申请实施例中描述的方法,并且数据库集群200的各个模块/单元的上述和其它操作和/或功能分别为了实现图3所示实施例中的各个方法的相应流程,为了简洁,在此不再赘述。
本申请实施例还提供了一种数据库集群200。该数据库集群200可以包括多台计算设备,多台计算设备包括第一计算设备和第二计算设备。第一计算设备、第二计算设备可以是服务器。其中,第一计算设备用于实现计算节点202的功能,第二计算设备用于实现存储节点204的功能。
图8提供了一种数据库集群200的硬件结构图,如图8所示,数据库集群200包括第一计算设备802和第二计算设备804。第一计算设备802用于实现计算节点202的功能,第二计算设备804用于实现存储节点204的功能。
其中,第一计算设备802包括总线8021、处理器8022、通信接口8023和存储器8024。
第二计算设备804处理器8022、存储器8024和通信接口8023之间通过总线8021通信。类似地,第二计算设备804包括总线8041、处理器8042、通信接口8043和存储器8044。第二计算设备804处理器8042、存储器8044和通信接口8043之间通过总线8041通信。
总线8021、总线8041可以是外设部件互连标准(peripheral componentinterconnect,PCI)总线或扩展工业标准结构(extended industry standardarchitecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
处理器8021、处理器8041可以为中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)、微处理器(micro processor,MP)或者数字信号处理器(digital signal processor,DSP)等处理器中的任意一种或多种。
通信接口8023、通信接口8043用于与外部通信。例如,通信接口903接收用户配置的领域知识,例如接收用户配置的井下参数的响应方程,地层参数和/或地质参数的约束等。
存储器8024、存储器8044可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。存储器8024、存储器8044还可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM),快闪存储器,硬盘驱动器(hard disk drive,HDD)或固态驱动器(solid state drive,SSD)。
存储器8024中存储有可执行代码,处理器8022执行该可执行代码以执行前述数据查询方法中由计算节点202执行的方法步骤。存储器8044中存储有可执行代码,处理器8042执行该可执行代码以执行前述数据查询方法中由存储节点204执行的方法步骤。
本申请实施例还提供了一种计算机可读存储介质。所述计算机可读存储介质可以是计算设备能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,所述指令指示计算设备执行上述应用于数据库集群200的数据查询方法。
本申请实施例还提供了一种计算机程序产品。所述计算机程序产品包括一个或多个计算机指令。在计算设备上加载和执行所述计算机指令时,全部或部分地产生按照本申请实施例所述的流程或功能。
所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机或数据中心进行传输。
所述计算机程序产品可以为一个软件安装包,在需要使用前述数据查询方法的任一方法的情况下,可以下载该计算机程序产品并在计算设备上执行该计算机程序产品。
上述各个附图对应的流程或结构的描述各有侧重,某个流程或结构中没有详述的部分,可以参见其他流程或结构的相关描述。
Claims (25)
1.一种数据查询方法,其特征在于,数据库集群包括计算节点和存储节点,所述方法包括:
所述计算节点根据数据查询语句,从第一查询范围中确定第二查询范围,所述第二查询范围小于所述第一查询范围;
所述计算节点根据所述第二查询范围,获得数据查询请求,所述数据查询请求用于查询所述第二查询范围中的数据;
所述计算节点向所述存储节点发送所述数据查询请求。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述存储节点的负载达到预设负载时,所述存储节点向所述计算节点发送拒绝查询响应,以使所述计算节点查询所述第二查询范围中的数据。
3.根据权利要求1所述的方法,其特征在于,在所述计算节点向所述存储节点发送所述数据查询请求之前,所述方法还包括:
所述计算节点获取所述存储节点的负载,确定所述存储节点的负载小于预设负载。
4.根据权利要求1所述的方法,其特征在于,在所述计算节点向所述存储节点发送所述数据查询请求之前,所述方法还包括:
所述计算节点获取所述存储节点的状态,确定所述存储节点的状态为预设状态。
5.根据权利要求4所述的方法,其特征在于,所述计算节点获取所述存储节点的状态,包括:
所述计算节点根据所述存储节点的状态接口获取所述存储节点的状态;和/或,
所述计算节点响应于所述存储节点对返回值标志位的更新,根据所述返回值标志位确定所述存储节点的状态。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述方法还包括:
所述存储节点根据所述数据查询请求,确定至少一个物理页面,所述至少一个物理页面中的每个物理页面包括至少一行满足条件的数据;
根据所述至少一个物理页面,获得至少一个逻辑页面;
所述存储节点向所述计算节点返回所述至少一个逻辑页面。
7.根据权利要求6所述的方法,其特征在于,所述根据所述至少一个物理页面,获得至少一个逻辑页面,包括:
将所述至少一个物理页面中满足条件的数据的页面描述信息合并,所述页面描述信息包括页面头和页面尾中的至少一个;和/或;
将所述至少一个物理页面中满足条件的数据合并。
8.根据权利要求6或7所述的方法,其特征在于,所述逻辑页面在查询结束后被销毁。
9.根据权利要求6至8任一项所述的方法,其特征在于,所述存储节点根据所述数据查询请求,确定至少一个物理页面,包括:
所述存储节点根据所述数据查询请求,确定满足条件的数据;
所述存储节点根据满足条件的数据的事务标识确定至少一个物理页面,所述至少一个物理页面中的每个物理页面包括至少一行满足条件且事务标识小于低水位的数据。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
所述存储节点接收所述计算节点发送的所述低水位;
所述存储节点根据满足条件的数据的事务标识确定至少一个物理页面,包括:
所述存储节点比较所述满足条件的数据的事务标识和所述低水位,确定至少一个物理页面。
11.根据权利要求1至10任一项所述的方法,其特征在于,所述数据查询语句的查询类型为条件过滤、聚合或投影。
12.一种数据库集群,其特征在于,所述数据库集群包括计算节点和存储节点;
所述计算节点,用于根据数据查询语句,从第一查询范围中确定第二查询范围,所述第二查询范围小于所述第一查询范围,然后根据所述第二查询范围,获得数据查询请求,所述数据查询请求用于查询所述第二查询范围中的数据,接着向所述存储节点发送所述数据查询请求。
13.根据权利要求12所述的集群,其特征在于,所述存储节点用于:
当所述存储节点的负载达到预设负载时,向所述计算节点发送拒绝查询响应,以使所述计算节点查询所述第二查询范围中的数据。
14.根据权利要求12所述的集群,其特征在于,所述计算节点还用于:
在所述计算节点向所述存储节点发送所述数据查询请求之前,获取所述存储节点的负载,确定所述存储节点的负载小于预设负载。
15.根据权利要求12所述的集群,其特征在于,所述计算节点还用于:
在所述计算节点向所述存储节点发送所述数据查询请求之前,获取所述存储节点的状态,确定所述存储节点的状态为预设状态。
16.根据权利要求15所述的集群,其特征在于,所述计算节点用于:
根据所述存储节点的状态接口获取所述存储节点的状态;和/或,
响应于所述存储节点对返回值标志位的更新,根据所述返回值标志位确定所述存储节点的状态。
17.根据权利要求12至16任一项所述的集群,其特征在于,所述存储节点还用于:
根据所述数据查询请求,确定至少一个物理页面,所述至少一个物理页面中的每个物理页面包括至少一行满足条件的数据;
根据所述至少一个物理页面,获得至少一个逻辑页面;
向所述计算节点返回所述至少一个逻辑页面。
18.根据权利要求17所述的集群,其特征在于,所述存储节点具体用于:
将所述至少一个物理页面中满足条件的数据的页面描述信息合并,所述页面描述信息包括页面头和页面尾中的至少一个;和/或;
将所述至少一个物理页面中满足条件的数据合并。
19.根据权利要求17或18所述的集群,其特征在于,所述逻辑页面在查询结束后被销毁。
20.根据权利要求17至19任一项所述的集群,其特征在于,所述存储节点具体用于:
根据所述数据查询请求,确定满足条件的数据;
根据满足条件的数据的事务标识确定至少一个物理页面,所述至少一个物理页面中的每个物理页面包括至少一行满足条件且事务标识小于低水位的数据。
21.根据权利要求20所述的集群,其特征在于,所述存储节点还用于:
接收所述计算节点发送的所述低水位;
所述存储节点根据满足条件的数据的事务标识确定至少一个物理页面,包括:
所述存储节点比较所述满足条件的数据的事务标识和所述低水位,确定至少一个物理页面。
22.根据权利要求12至21任一项所述的集群,其特征在于,所述数据查询语句的查询类型为条件过滤、聚合或投影。
23.一种数据库集群,其特征在于,包括多台计算设备,所述多台计算设备包括第一计算设备和第二计算设备,每台计算设备包括处理器和存储器;
所述第一计算设备的处理器用于执行所述第一计算设备的存储器中存储的指令,以使得所述第一计算设备执行如权利要求1至11中任一项所述的由计算节点执行的方法步骤;
所述第二计算设备的处理器用于执行所述第二计算设备的存储器中存储的指令,以使得所述第二计算设备执行如权利要求1至11中任一项所述的由存储节点执行的方法步骤。
24.一种计算机可读存储介质,其特征在于,包括计算机程序指令,当所述计算机程序指令由数据库集群执行时,所述数据库集群执行如权利要求1至11中任一种所述的方法。
25.一种包含指令的计算机程序产品,其特征在于,当所述指令被数据库集群运行时,使得所述数据库集群执行如权利要求的1至11中任一种所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110943513.6A CN115705333A (zh) | 2021-08-17 | 2021-08-17 | 数据查询方法以及相关设备 |
PCT/CN2022/086225 WO2023019981A1 (zh) | 2021-08-17 | 2022-04-12 | 数据查询方法以及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110943513.6A CN115705333A (zh) | 2021-08-17 | 2021-08-17 | 数据查询方法以及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115705333A true CN115705333A (zh) | 2023-02-17 |
Family
ID=85180490
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110943513.6A Pending CN115705333A (zh) | 2021-08-17 | 2021-08-17 | 数据查询方法以及相关设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115705333A (zh) |
WO (1) | WO2023019981A1 (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10628418B2 (en) * | 2014-11-13 | 2020-04-21 | Sap Se | Data driven multi-provider pruning for query execution plan |
US10437821B2 (en) * | 2016-10-26 | 2019-10-08 | Sap Se | Optimization of split queries |
US10417228B2 (en) * | 2016-12-16 | 2019-09-17 | General Electric Company | Apparatus and method for analytical optimization through computational pushdown |
TWI653538B (zh) * | 2017-11-13 | 2019-03-11 | 慧榮科技股份有限公司 | 資料儲存裝置與記憶體裝置之資料處理方法 |
CN112395303A (zh) * | 2019-08-15 | 2021-02-23 | 阿里巴巴集团控股有限公司 | 查询的执行方法、装置、电子设备及计算机可读介质 |
-
2021
- 2021-08-17 CN CN202110943513.6A patent/CN115705333A/zh active Pending
-
2022
- 2022-04-12 WO PCT/CN2022/086225 patent/WO2023019981A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023019981A1 (zh) | 2023-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11550769B2 (en) | Data processing method, apparatus, and system | |
US6832227B2 (en) | Database management program, a database managing method and an apparatus therefor | |
US8949222B2 (en) | Changing the compression level of query plans | |
US8924373B2 (en) | Query plans with parameter markers in place of object identifiers | |
CN106294695A (zh) | 一种面向实时大数据搜索引擎的实现方法 | |
US10664459B2 (en) | Database managing method, database managing system, and database tree structure | |
CN109815240B (zh) | 用于管理索引的方法、装置、设备和存储介质 | |
CN109299101B (zh) | 数据检索方法、装置、服务器和存储介质 | |
CN108874930A (zh) | 文件属性信息统计方法、装置、系统、设备及存储介质 | |
US10558636B2 (en) | Index page with latch-free access | |
US20220342888A1 (en) | Object tagging | |
CN108932258B (zh) | 数据索引处理方法及装置 | |
CN113297266B (zh) | 数据处理方法、装置、设备及计算机存储介质 | |
CN111752941B (zh) | 一种数据存储、访问方法、装置、服务器及存储介质 | |
CN115705333A (zh) | 数据查询方法以及相关设备 | |
US20220215021A1 (en) | Data Query Method and Apparatus, Computing Device, and Storage Medium | |
CN111078160B (zh) | 基于调用比例及响应时长的数据迁移存储方法及装置 | |
CN114385657A (zh) | 数据存储方法、装置及存储介质 | |
CN114048219A (zh) | 图数据库更新方法及装置 | |
CN113641711B (zh) | 一种针对saas租户的数据缓存处理方法、装置及介质 | |
WO2024016789A1 (zh) | 日志数据查询方法、装置、设备和介质 | |
CN115114012B (zh) | 一种任务分配方法、装置、电子设备及存储介质 | |
CN113051441A (zh) | 实体对象的存储设计及管理方法 | |
CN116860700A (zh) | 处理分布式文件系统中元数据的方法、装置、设备及介质 | |
CN116069816A (zh) | 在sql模式下高效使用数据缓存的方法、装置及应用 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |