CN113297244A - 数据库操作方法、装置、设备及存储介质 - Google Patents

数据库操作方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN113297244A
CN113297244A CN202010475806.1A CN202010475806A CN113297244A CN 113297244 A CN113297244 A CN 113297244A CN 202010475806 A CN202010475806 A CN 202010475806A CN 113297244 A CN113297244 A CN 113297244A
Authority
CN
China
Prior art keywords
operator
row group
block
output
row
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
Application number
CN202010475806.1A
Other languages
English (en)
Other versions
CN113297244B (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.)
Alibaba Cloud Computing Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN202010475806.1A priority Critical patent/CN113297244B/zh
Publication of CN113297244A publication Critical patent/CN113297244A/zh
Application granted granted Critical
Publication of CN113297244B publication Critical patent/CN113297244B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例提供一种数据库操作方法、装置、设备及存储介质,该方法包括:获得数据库查询语句对应第一算子的输入数据,所述输入数据是涉及数据库中的目标物理表,且所述数据库中所述目标物理表对应行组的存储信息针对所述第一算子是可用的;基于所述输入数据以及预设的行组属性保持策略,执行所述第一算子的表达式,以得到所述第一算子的输出数据,所述输出数据是以行为单元的块数据,且所述输出数据中的同一块对应所述目标物理表的同一行组。本申请能够保持行组的存储信息对于非叶子节点的可用性。

Description

数据库操作方法、装置、设备及存储介质
技术领域
本申请涉及数据库技术领域,尤其涉及一种数据库操作方法、装置、设备及存储介质。
背景技术
随着大数据的发展,传统的行(row)式数据库在查询性能和维护成本等方面逐渐不能满足需求,于是出现了列式数据库,列式数据库是以列式存储架构进行数据存储的数据库。
目前,为了充分发挥列式存储的优势,提出了在列式存储结构的基础上,进一步以“行组”为单位组织数据,并对每一个行组内的数据进行独立压缩和信息统计,从而得到行组的存储信息,该存储信息可以用于表达式的优化。对于分析查询语句所得到的查询树中的叶子节点,其输入数据是数据库中基于行组为单位组织的数据,行组的存储信息针对叶子节点必定是可用的,因此可以基于行组的存储信息对叶子节点对应表达式进行优化,以提高数据库查询效率。然而,对于语法树中非叶子节点,通常存在行组的存储信息失效的情况,从而导致无法基于行组的存储信息对非叶子节点对应表达式进行优化。
因此,如何保持行组的存储信息对于非叶子节点的可用性,成为目前亟待解决的问题。
发明内容
本申请实施例提供一种数据库操作方法、装置、设备及存储介质,用以解决现有技术中如何保持行组的存储信息对于非叶子节点的输入数据可用性的问题。
第一方面,本申请实施例提供一种数据库操作方法,所述方法包括:
获得数据库查询语句对应第一算子的输入数据,所述输入数据是涉及数据库中的目标物理表,且所述数据库中所述目标物理表对应行组的存储信息针对所述第一算子是可用的;
基于所述输入数据以及预设的行组属性保持策略,执行所述第一算子的表达式,以得到所述第一算子的输出数据,所述输出数据是以行为单元的块数据,且所述输出数据中的同一块对应所述目标物理表的同一行组。
第二方面,本申请实施例提供一种数据库操作装置,包括:
获得模块,用于获得数据库查询语句对应第一算子的输入数据,所述输入数据是涉及数据库中的目标物理表,且所述数据库中所述目标物理表对应行组的存储信息针对所述第一算子是可用的;
执行模块,用于基于所述输入数据以及预设的行组属性保持策略,执行所述第一算子的表达式,以得到所述第一算子的输出数据,所述输出数据是以行为单元的块数据,且所述输出数据中的同一块对应所述目标物理表的同一行组。
第三方面,本申请实施例提供一种计算及设备,包括:存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行时实现如第一方面任一项所述的方法。
第四方面,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包含至少一段代码,所述至少一段代码可由计算机执行,以控制所述计算机执行如第一方面任一项所述的方法。
另外,本申请实施例还提供一种计算机程序,当所述计算机程序被计算机执行时,用于实现如第一方面任一项所述的方法。
本申请实施例提供的数据库操作方法、装置、设备及存储介质,通过获得数据库查询语句对应第一算子的输入数据,输入数据是涉及数据库中的目标物理表,且数据库中目标物理表对应行组的存储信息针对第一算子是可用的,基于输入数据以及预设的行组属性保持策略,执行第一算子的表达式以得到第一算子的输出数据,实现了基于行组保持策略执行第一算子的表达式所得到的第一算子的输出数据,能够保持数据库中目标物理表的行组属性,由于第一算子的输出数据可以作为其他算子的输入数据,其他算子即为非叶子节点对应的算子,因此非叶子节点的输入数据能够保持数据库中目标物理表的行组属性,使得目标物理表对应行组的存储信息可以用于非叶子节点的执行,从而实现了确保行组的存储信息针对非叶子节点的可能性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一实施例提供的数据库访问系统的结构示意图;
图2为本申请一实施例提供的部分物理表中行组的示意图。
图3为本申请一实施例提供的语法树的示意图;
图4为本申请一实施例提供的数据库操作方法的流程示意图;
图5为本申请一实施例提供的算子执行框架的示意图;
图6为本申请一实施例提供的输入/输出块结构的示意图;
图7-图11为本申请实施例提供的第一算子的输入输出数据的行组关系的示意图;
图12为本申请一实施例提供的数据库引擎处理查询语句的流程示意图;
图13为本申请一实施例提供的数据库操作装置的结构示意图;
图14为本申请一实施例提供的计算机设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种,但是不排除包含至少一种的情况。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
为了方便本领域技术人员理解本申请实施例提供的技术方案,下面先对技术方案实现的技术环境进行说明。
相关技术中比较常用的数据库操作方法,主要包括对于分析查询语句所得到的查询树中的叶子节点,可以基于行组的存储信息对叶子节点对应表达式进行优化,以提高数据库查询效率,然而,对于语法树中非叶子节点的输入数据,通常存在行组的存储信息失效的情况,从而导致无法基于行组的存储信息对叶子节点对应表达式进行优化。因此相关技术中亟需一种能够保持行组的存储信息对于非叶子节点的输入数据可用性的数据库操作方式。
基于类似于上文所述的实际技术需求,本申请提供的数据库操作方法可以利用技术化的手段保持行组的存储信息对于非叶子节点的可用性。
下面通过一个示例性的应用场景具体说明本申请各个实施例提供的数据库操作方法。
图1为本申请一实施例提供的数据库访问系统的结构示意图。如图1所示,该系统可以包括客户端11、数据库引擎12以及支持列式存储的数据库(Database)13。
支持列式存储的数据库13是建立在计算机存储设备上,支持以列式存储架构来组织、存储和管理数据的仓库。在本申请实施例中,并不限定承载支持列式存储的数据库13的计算机存储设备的实现形式。支持列式存储的数据库13可以是但不限于列式数据库,还可以是行列混合的数据库。
本申请实施例中,支持列式存储的数据库13中是以“行组”为单位组织数据,其中,行组是列式存储中若干行形成的数据单位,本申请实施例中的行是指数据库领域中传统意义上的数据行。在列式存储中,数据被逐列存储,在一个列中,数据被进一步分割为行组。可选地,以行组为单位,可以对行组内的数据进行独立压缩和信息统计,得到行组的存储信息,存储信息可以包括压缩信息和/或进行信息统计得到的统计信息,行组的压缩信息可以用于描述行组数据压缩的特征,行组的统计信息主要用于描述行组数据数理统计的特征。所述存储信息例如可以包括:压缩方式、压缩参数,行组某一列中数据值的分布情况,数值分布是否均匀,最大值是多少,最小值是多少等,当然,在其他实施例中,存储信息还可以为其他形式,本申请对此不做限定。
参见图2所示,列式存储中部分表格中包括列1、列2、列3以及其他列(图2中未示出),另外还包括行组1、行组2、行组3以及其它行组(图2中未示出)。在图2中,列与行组的交叉部分表示该列包含的行组单元,每个交叉部分中的黑框表示该行组的存储信息,灰色框表示该行组包含的各行数据压缩后形成的数据包。参见图2可知,从“行组”的角度来看,一个“行组”涉及若干列,每个列对应的部分称为行组单元;从列的角度来看,一个“列”包含若干个行组单元,若干个行组单元分别属于若干个行组。在此说明,本申请实施例并不限定若干个的具体数量,可以根据应用场景适应性设定。
数据库引擎12是用于存储、处理和保护数据的核心服务,其任务包括处理与支持列式存储的数据库13相关的事务,例如设计并创建支持列式存储的数据库13,保存支持列式存储的数据库13所需的各种列表和文档等,针对支持列式存储的数据库13提供日常管理支持以优化支持列式存储的数据库13的性能。
其中,为了便于处于与支持列式存储的数据库13相关的事务,数据库引擎12与支持列式存储的数据库13之间建立通信连接,该通信连接可以是有线或无线网络连接。可选的,在部署实现上,数据库引擎12与支持列式存储的数据库13可以部署在同一物理设备上实现,也可以部署在不同物理设备上实现。当数据库引擎12与支持列式存储的数据库13部署在不同物理设备上实现时,两者可以部署同一局域网内,也可以部署在不同局域网内。
如图1所示,该数据库系统还包括:客户端11。其中,客户端11与数据库引擎12之间通信连接,该通信连接可以是有线或无线网络连接。可选的,客户端11可以与数据库引擎12处于同一局域网内,也可以处于不同局域网内。
客户端11可以看作是支持列式存储的数据库13面向用户提供的交互接口,允许用户通过该客户端11访问支持列式存储的数据库13。在需要访问支持列式存储的数据库13时,客户端11可以向数据库引擎12发送数据库访问请求;数据库引擎12还可以响应客户端11的数据库访问请求对支持列式存储的数据库13进行相应操作并向客户端11返回相应操作结果,从而实现支持列式存储的数据库13中数据的查看、删除、修改、增加等。
在一种数据库查询场景中,客户端11可以向数据库引擎12发送数据库查询语句。根据支持列式存储的数据库13支持的数据库语言的不同,数据库查询语句会有所不同,例如可以是SQL语句,也可以是Orcal语句。数据库引擎12主要根据数据库查询语句对支持列式存储的数据库13进行查询操作,并向客户端11返回查询结果。
针对客户端11发送的数据库查询语句,数据库引擎12可以先进行语法解析,将数据库查询语句解析成一颗语法树,可选的,数据库引擎12为解析获得的语法树进行静态优化,得到优化后的语法树,语法树包含至少一个逻辑执行计划。以数据库查询语句:SELECTsum(b)FROM t1,t2 WHERE t1.a<t2.a and t1.b<100and t2.c>50为例,其语法树可以如图3所示,整个语法树由下至上执行,首先针对“t1.b<100”和“t2.c>50”两个过滤条件分别执行TableScan操作(包括扫描(Scan)和过滤(Filter)),其次在两个TableScan操作的输出结果上针对“t1.a<t2.a”条件进行两表连接(Join)操作,最后对Join的输出结果进行聚合(Aggregate)操作获得最终输出。图3所示的语法树中包括2个叶子节点和3个非叶子节点,2个叶子节点均对应逻辑算子Scan,3个非叶子节点分别对应逻辑算子Filter、Join和Aggregate。可以理解的是,图3中的逻辑算子均可以存在对应的物理算子。
本申请实施例中,数据库引擎12在根据数据库查询语句对数据库13进行查询的过程中,可以在输出数据是以行为单元的块数据的基础上,控制第一算子的输出数据中同一块对应数据库13中物理表的同一行组,这样可以保持行组的存储信息对于非叶子节点的可用性。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
图4为本申请一实施例提供的数据库操作方法的流程示意图,本实施例的方法可以应用于计算机设备,该计算机设备中部署有数据库引擎12。如图4所示,本实施例的方法可以包括:
步骤41,获得数据库查询语句对应第一算子的输入数据,所述输入数据是涉及数据库中的目标物理表,且所述数据库中所述目标物理表对应行组的存储信息针对所述第一算子是可用的;
步骤42,基于所述输入数据以及预设的行组属性保持策略,执行所述第一算子的表达式,以得到所述第一算子的输出数据,所述输出数据是以行为单元的块数据,所述输出数据中的同一块对应所述目标物理表的同一行组。
其中,所述第一算子可以为叶子节点对应的算子,或者所述第一算子可以为非叶子节点对应的算子。在所述第一算子为叶子节点对应的算子情况下,所述第一算子的输入数据具体可以是数据库13中的物理表,该物理表即为输入数据涉及的物理表。进一步由于数据库13中行组的存储信息是基于数据库中的物理表生成的,因此物理表对应行组的存储信息能够表征输入数据的数据压缩的特征和/或数据统计的特征等,从而物理表对应行组的存储信息针对所述第一算子是可用的。
在所述第一算子为叶子节点对应的算子情况下,所述第一算子的输入数据具体可以包括以行为单元的块数据以及数据库13中的数据,块的个数可以为一个或多个,块对应的物理表即为输入数据涉及的物理表。进一步的,在同一块对应一物理表的同一行组时,该物理表对应行组的存储信息能够表征该块的数据压缩的特征和/或数据统计的特征等,因此该物理表对应行组的存储信息针对所述第一算子是可用的。
需要说明的是,为了便于描述,输入数据涉及的物理表中需要在输出数据中保持行组属性的物理表称为目标物理表。可以理解的是,目标物理表可以为输入数据涉及的部分物理表或全部物理表。
需要说明的是,第一算子可以为逻辑算子,或者,第一算子也可以是物理算子。在第一算子是逻辑算子情况下,本申请所实现的保持行组的存储信息对于非叶子节点的可用性,可以用于逻辑表达式的优化;在第一算子是物理算子情况下,本申请所实现的保持行组的存储信息对于非叶子节点的可用性,可以用于物理表达式的优化。
以第一算子是非叶子节点对应的算子例如Filter、Join等为例,算子的执行(Execute)框架例如可以如图5所示。参考图5,执行框架可以包括方法1、方法2和方法3,其中方法1主要负责所需资源的获取,方法2主要负责获取输入集后对其进行操作获得输出数据,方法3主要负责释放所使用的资源。其中,方法2是执行框架中最为重要的部分。需要说明的是,图5所示框架中以3个方法分别负责不同功能为例,可以理解的是,执行框架中方法的数量也可以为其他数量。
在所述执行框架中,方法2具有批处理能力,其可以按批处理输入和输出数据,输入输出数据可以按块的形式进行存储和处理,其中,输入的块数据可以简称为输入块,输出的块数据可以简称为输出块。输入/输出块的大小和批处理大小可以不同。基于输入数据,能够根据数据库中保存的存储信息对算子的表达式进行优化。
图6给出了输入/输出块的结构。参考图6,每个块内可以包含关系号、行号组成的向量(以下简称为行号向量)以及行组游标。其中,关系号为针对关系的编号,由于数据库中的表也是描述了一种关系,因此关系号可以包括表号。行号是指数据库引擎12针对数据库存储的物理表中行的编号,其并不存储在数据库13中,是数据库引擎12为了便于操作数据库所引入的属性。在一个块满足同一块对应一物理表的同一行组的条件下,该块的行组游标可以用于表征该块对应的物理表及行组信息,在一个实施例中,行组游标可以包括物理表号及行组号。
可选的,如图6所示,每个块内还可以包含行组保持状态。其中,一个块中包含的行组保持状态可以用于指示行组属性是“保持”还是“不保持”,在行组保持状态指示“保持”行组属性时,可以表示存在针对该块可用的行组的存储信息,在行组保持状态指示“不保持”行组属性时,可以表示不存在针对该块可用的行组的统计信息。例如行组保持状态为“是”可以表示行组保持状态为“保持”,行组保持状态为“否”可以表示行组保持状态为“不保持”。如果行组保持状态为“保持”,则可以通过行组游标获得行组的存储信息,如果行组保持状态为“不保持”,则行组游标无效,行组游标例如可以为空(null)。
本申请实施例中,所述行组属性保持策略具体可以为能够使得所述第一节点的所述输出数据满足同一块对应所述目标物理表的同一行组条件的任意策略,以使得所述输出数据能够保持所述目标物理表的行组属性。
在一个实施例中,所述行组属性保持策略具体可以包括:在输出数据的当前块(以下可以简称为当前输出块)已满,或者待输出行与当前输出块中已输出行跨所述目标物理表对应的行组情况下,创建新输出块并将所述待输出行输出至所述新输出块中。其中,待输出行是指在执行表达式的过程中当前待输出至其他算子,以便其他算子执行进一步计算的行。当前输出块已满可以表示当前输出块中行数量已等于最大数量,当前输出块中已无法进一步输出新的行,因此可以创建新输出块并将待输出行输出至新输出块中。待输出行与当前输出块中已输出行跨所述目标物理表对应行组,是指待输出行与当前输出块中已输出行分属于所述目标物理表对应的不同行组,例如待输出行属于目标物理表对应的行组1,而当前输出块中已输出行属于目标物理表对应的行组2。通过在待输出行与当前输出块中已输出行跨所述目标物理表对应的行组情况下,创建新输出块并将所述待输出行输出至所述新输出块中,能够保持同一块中的行不会垮目标物理表对应的行组,使得目标物理表对应行组的存储信息能够针对输出块可用,从而使得能够基于目标物理表对应行组的存储信息对其他算子的表达式进行优化,其中,其他算子即为非叶子节点对应的算子。
基于此,第一算子具体可以为能够支持所述行组属性保持策略的任意算子。示例性的,所述第一算子包括下述中的一种或多种:Scan算子、Filter算子或Join算子。
考虑到Scan算子的输入通常为具体的单物理表,输出为物理表的所有行皆有效的输出块,因此在执行Scan算子对应表达式的过程中只要使得每个输出块中的行位于同一个行组,就可以保持行组的存储信息的可用性。对于行组剩余行无法填满输出块的情况,输出块内实际行数目小于块大小。
以第一算子为Scan算子,行组大小为65536行且输出块大小大于或等于65536行为例,第一算子的输入数据与输出数据的行组关系可以如图7所示。参考图7,Scan算子的输入数据为数据库13中的物理表x,物理表x对应三个行组,分别为行组1、行组2和行组3。其中,数据库13中行组1的行数量为65536行,其存储信息为存储信息1,行组2的行数量为65536行,其存储信息为存储信息2,行组3的行数量为65534行,其存储信息为存储信息3。需要说明的是,为了便于说明,图7中以物理表x的列数为一列为例,且该列每行的数值用于表示该行的行号,而非该行数据库中实际的数据。
针对于图7所示的输入数据,在执行Scan算子的表达式过程中以由物理表x的第0行开始扫描为例,可以先创建块1,在创建块1之后可以首先按照行号从0开始依次增大的顺序将扫描到的第0-65535行输出至块1,从而得到图7所示的块1。然后,针对第65536行由于其属于物理表x对应的行组2与当前输出块(即块1)已输出行属于不同行组,块1已输出行属于物理表x对应的行组1,即第65536行与块1已输出行跨物理表x对应的行组,因此可以创建新输出块(即行块2),并按照行号依次增大的顺序将扫描到的第65536-131071行输出至块2,从而得到图7所示的块2。之后,针对第131072行由于其属于物理表x对应的行组3与当前输出块(即块2)已输出行属于不同行组,块2已输出行属于物理表x对应的行组2,即第131072行与块2已输出行跨物理表x对应的行组,因此可以创建新输出块(即行块3),并按照行号依次增大的顺序将扫描到的第131072-196605行输出至块3,从而得到图7所示的块3。另外,由于行组3的行数量为65534小于块大小65536,因此块3未被填满,块3实际行数据小于块大小。
考虑到Filter算子通常是以某个关系表的数据块作为输入,输出为仅包含过滤后行的输出块,顺序执行的Filter操作也不会改变输入块的行组保持状态,仅改变行号向量,因此Filter算子的输出可以保持行组的存储信息的可用性。
以第一算子为Filter算子,输入数据为图7Scan算子输出的块为例,第一算子的输入数据与输出数据的行组关系可以如图8所示。参考图8,针对于图8所示的输入数据,在执行Filter算子的表达式过程中以由输入块的块1开始过滤处理为例,可以先创建输出块的块1,在创建块1之后可以首先按照行号从0开始依次增大的顺序依次对第0-65535行进行过滤,并将过滤后的行输出至创建的块1,从而得到图8所示的输出块块1。然后,针对第65536行进行过滤,假设第65536行满足过滤条件,由于第65536行属于物理表x对应的行组2与当前输出块(即输出块的块1)已输出行属于不同行组,输出块的块1已输出行属于物理表x对应的行组1,即第65536行与输出块的块1已输出行跨物理表x对应的行组,因此可以创建新输出块(即输出块的块2),并按照行号依次增大的顺序依次对第65536-131071行进行过滤,并将过滤后的行输出至创建的块2,从而得到图8所示的输出块块2。之后,针对第131072行进行过滤,假设第131072行满足过滤条件,由于第131072行属于物理表x对应的行组3与当前输出块(即输出块的块2)已输出行属于不同行组,输出块的块2已输出行属于物理表x对应的行组2,即第131072行与输出块的块2已输出行跨物理表x对应的行组,因此可以创建新输出块(即输出块的块3),并按照行号依次增大的顺序依次对第131072-196605行进行过滤,并将过滤后的行输出至创建的块3,从而得到图8所示的输出块块3。
Join算子与Filter算子和Scan算子不同,Join算子的输入可以为两个关系表,输出为两个关系表连接的结果。因此,Join算子的行组属性的保持情况更为复杂。针对于Join算子输入数据中的左表和右表,Join算子的行组属性的保持方式可以分为:保持左表的行组属性,即目标物理表包括左表而不包括右表;保持右表的行组属性,即目标物理表包括右表而不包括左表;以及,和保持左右双表的行组属性,即目标物理表既包括左表又包括右表。
输入数据中左表和右表对应块是否满足同一块对应同一行组的条件,与Join算子的行组属性保持方式的关系可以如下表1所示。
表1
Figure BDA0002515795580000131
表1中,左表的行组保持状态为“是”可以表示左表对应块满足同一块对应同一行组的条件,即左表保持了行组的存储信息的可用性;右表的行组保持状态为“是”可以表示右表对应块满足同一块对应同一行组的条件,即右表保持了行组的存储信息的可用性。
在Join算子的行组属性保持方式为保持左表的行组属性情况下,Join算子产生结果向输出块的填入受左输入块的限制。当对应同一行组的左输入块处理结束时,无论当前输出块是否填满,都会结束当前输出块并开启一个新输出块用于结果填写。因此,同一个输出块中左表行数据皆来自于左表对应的同一行组,从而实现了Join算子的输出块保持了左表的行组属性。
类似的,在Join算子的行组属性保持方式为保持右表的行组属性情况下,Join算子产生结果向输出块的填入受右输入块的限制。当对应同一行组的右输入块处理结束时,无论当前输出块是否填满,都会结束当前输出块并开启一个新输出块用于结果填写。因此,同一个输出块中右表行数据皆来自于右表对应的同一行组,从而实现了Join算子的输出块保持了右表的行组属性。
在Join算子的行组属性保持方式为保持左右双表的行组属性情况下,Join算子产生结果向输出块的填入受左输入块和右输入块的限制。当对应同一行组的左输入块或右输入块处理结束时,无论当前输出块是否填满,都会结束当前输出块并开启一个新输出块用于结果填写。因此,同一个输出块中左表行数据皆来自于左表对应的同一行组,右表行数据也皆来自于右表对应的同一行组,从而实现了Join算子的输出块保持了左右双表的行组属性。
以第一算子为Join算子,输入数据中的右表为图8Filter算子输出的块,输入数据中的左表为物理表y,且Join算子的行组属性保持方式为保持双表的行组属性为例,第一算子的输入数据与输出数据的行组关系可以如图9所示。参考图9,由于左表对应的行组数量为2,右表对应的行组数量为3,且需要保持双表的行组属性,因此可以得到2×3共六种行组组合方式,分别是:“物理表x+行组1”+“物理表y+行组1”,对应图9中输出块的块1,其中关系z的行是由来自物理表x对应行组1的元素和来自物理表y对应行组1的元素连接获得;“物理表x+行组1”+“物理表y+行组2”,对应图9中输出块的块2,其中关系z的行是由来自物理表x对应行组1的元素和来自物理表y对应行组2的元素连接获得;“物理表x+行组2”+“物理表y+行组1”,对应图9中输出块的块3,其中关系z的行是由来自物理表x对应行组2的元素和来自物理表y对应行组1的元素连接获得;“物理表x+行组2”+“物理表y+行组2”,对应图9中输出块的块4,其中关系z的行是由来自物理表x对应行组2的元素和来自物理表y对应行组2的元素连接获得;“物理表x+行组3”+“物理表y+行组1”,对应图9中输出块的块5,其中关系z的行是由来自物理表x对应行组3的元素和来自物理表y对应行组1的元素连接获得;“物理表x+行组3”+“物理表y+行组2”,对应图9中输出块的块6,其中关系z的行是由来自物理表x对应行组3的元素和来自物理表y对应行组2的元素连接获得。
需要说明的是,为了便于表述,图9中假定一对输入块Join后输出的行数目不大于块大小。
以第一算子为Join算子,输入数据中的右表为图8Filter算子输出的块,输入数据中的左表为物理表y,且Join算子的行组属性保持方式为保持左表的行组属性为例,第一算子的输入数据与输出数据的行组关系可以如图10所示。参考图10,由于左表对应的行组数量为2,右表对应的行组数量为3,且需要保持左表的行组属性而不保持右表的行组属性,因此可以得到2×1共两种行组组合方式,分别是:“物理表y+行组1”,对应图10中输出块的块1,其中关系z的行是由来自物理表x对应不同行组的元素和来自物理表y对应行组1的元素连接获得;“物理表y+行组2”,对应图10中输出块的块2,其中关系z的行是由来自物理表x对应不同行组的元素和来自物理表y对应行组2的元素连接获得。
需要说明的是,为了便于表述,图10中假定左表的一个输入块与右表的三个输入块分别Join后输出的行数目不大于块大小。
另外,基于前述图7-图10可以看出,为了便于获知块数据的行组保持信息,能够直接从块数据中获得对应的行组保持信息,所述第一算子的输出数据中单个块的数据可以包括行组游标,所述行组游标包括所述目标物理表的表号及所述目标物理表对应行组的行组号。以图7为例,在输出块块1中目标物理表的表号为x,目标物理表对应行组的行组号为1,在输出块块2中目标物理表的表号为x,目标物理表对应行组的行组号为2,在输出块块3中目标物理表的表号为x,目标物理表对应行组的行组号为3。
在另一个实施例中,所述行组属性保持策略具体可以包括:在当前输出块已满,或者待输出行对应的输入块与当前输出块中已输出行对应的输入块针对目标物理表跨块的情况下,创建新输出块并将所述待输出行输出至所述新输出块中。通过在待输出行对应的输入块与当前输出块中已输出行对应的输入块针对目标物理表跨块的情况下,创建新输出块并将所述待输出行输出至所述新输出块中,可以实现输入数据中目标物理表的不同输入块对应输出数据中的不同输出块,由于输入数据针对数据库中目标物理表对应行组的存储信息是可用的,目标物理表对应输入块满足同一块对应所述目标物理表的同一行组的条件,因此通过输入数据中目标物理表的不同输入块对应输出数据中的不同输出块,使得输出块能够保持有目标物理表的行组属性。此种行组属性保持策略实现简单,但是相比于前一种行组属性保持策略存在输出块数量过多的问题。
需要说明的是,对于有些特定的算子,由于其特殊性无法保持输出数据的行组属性。例如,聚合算子,其输出为单值,输出无法保持行组属性。又例如,排序算子,其输出顺序发生改变,通常输出无法保持行组属性。
本申请实施例中,对于第一算子可以固定采用基于行组属性保持策略执行第一算子的表达式的方式,以便第一算子的输出结果能够保持目标物理表对应行组的行组属性。
或者,为了提高灵活性,可以根据实际情况灵活选择是否基于行组属性保持策略执行第一算子的表达式。在一个实施例中,所述基于所述输入数据以及行组属性保持策略,执行所述第一算子的表达式,具体可以包括:在满足一定条件时,设置所述目标物理表的行组保持模式为保持;以及,在所述行组保持模式为保持的情况下,基于所述输入数据以及预设的行组属性保持策略,执行所述第一算子的表达式。
满足一定条件可以表征需要保持第一算子的输出保持行组属性,不满足一定条件可以表征无需保持第一算子的输出保持行组属性。在实际应用中可以根据需求灵活实现判定是否需要保持第一算子输出保持行组属性的条件。示例性的,所述满足一定条件包括下述中的一种或多种:所述输入数据为物理表,所述输入数据为以行为单元的块数据且所述输入数据针对所述目标物理表存在行数量大于或等于第一数量阈值的块,或者,所述输入数据为以行为单元的块数据且所述输入数据针对所述目标物理表的行数量之和大于或等于第二数量阈值。
基于图7可以看出,叶子节点对应算子的输入数据是数据库中的物理表,为了使得行组的存储信息针对叶子节点的上一级节点的输入数据是可用的,可以在输入数据为物理表情况下设置所述目标物理表的行组保持模式为保持。
基于图8-图10可以看出,非叶子节点(例如,叶子节点的上一级节点)的输入数据是输入块。对于输入数据是块数据的情况,考虑到在输入数据中针对目标物理表的行数越少时,基于目标物理表对应行组的存储信息进行表达式优化所能带来的收益越少,而基于行组的存储信息进行表达式优化是需要耗费一定的时间代价和计算代价,因此为了避免代价过大而收益较小的情况,可以在收益达到一定程度的时候,才保持目标物理表的行组属性。并且,由于行数是与优化收益正相关的,因此,可以在目标物理表下的行数量满足一定条件的情况下设置所述目标物理表的行组保持模式为保持。
另外,考虑到第一算子的输出数据是作为其他节点的输入,且第一算子的输出数据中行必定是包括在第一算子的输入数据中,因此,可以基于第一节点的输入数据针对目标物理表的行数量情况决定是否有必要基于目标物理表对应行组的行组数据对该其他节点的表达式进行优化。由此,满足一定条件可以包括:所述输入数据为以行为单元的块数据且所述输入数据针对所述目标物理表存在行数量大于或等于第一数量阈值的块,或者,所述输入数据为以行为单元的块数据且所述输入数据针对所述目标物理表的行数量之和大于或等于第二数量阈值。
以针对于Filter算子,输入数据为图7Scan算子输出的块,且Filter算子的输出不保持行组属性为例,Filter算子的输入数据与输出数据的行组关系可以如图11所示。参考图11,针对于图11所示的输入数据,在执行Filter算子的表达式过程中以由输入块的块1开始过滤处理为例,可以先创建输出块的块1,在创建块1之后可以首先按照行号从0开始依次增大的顺序依次对第0-196605行进行过滤,并将过滤后的行输出至创建的块1,假设块1的块大小大于或等于对第0-196605行进行过滤后的行数量,则如图11所示,针对输入块块1、块2和块3过滤后的行可以均通过输出块块1输出,从而得到图8所示的输出块块1。
本申请实施例中,数据库引擎12可以包括执行器和优化器,执行器和优化器是数据库引擎12中的功能模块,在实现上,执行器和优化器可以是软件的程序模块,也可以是硬件的,例如基于FPGA或CPLD等实现。基于此,前述基于所述输入数据以及预设的行组属性保持策略,执行所述第一算子的表达式,具体可以包括:运行执行器基于所述输入数据以及预设的行组属性保持策略,执行所述第一算子的表达式。
其中,优化器可以用于在执行器执行过程中对表达式进行优化。在得到第一算子的输出数据之后,由于第一算子的输出数据能够保持目标物理表的行组属性,因此针对输入包括第一算子的输出数据的其他算子,可以由优化器根据目标物理表对应行组的行组信息针对其他算子的表达式进行优化。
基于此,本申请实施例还可以包括:针对所述数据库查询语句对应的第二算子,所述输出数据为所述第二算子的输入,根据所述目标物理表对应行组的存储信息对所述第二算子的表达式进行优化。为了便于描述,可以将根据目标物理表对应行组的存储信息进行优化之前第二算子的表达式称为第二算子的原始表达式。
在一个实施例中,目标物理表对应行组的存储信息可以由执行器传递给优化器,以便优化器可以基于存储信息进行表达式的优化。基于此,本申请实施例还可以包括:运行所述执行器将所述目标物理表对应行组的存储信息以及所述第二算子的原始表达式传递给优化器。
或者,第一算子的输出数据可以由执行器传递给优化器,以便优化器可以基于第一算子的输出数据获得目标物理表对应行组的存储信息。基于此,本申请实施例还可以包括:运行所述执行器将所述输出数据以及所述第二算子的原始表达式传递给优化器。相应的,所述根据所述目标物理表对应行组的存储信息对所述第二算子的表达式进行优化,具体可以包括:运行所述优化器基于所述输出数据从所述数据库获得所述目标物理表对应行组的存储信息,并根据所述存储信息对所述原始表达式进行优化。
由于第一算子的输出数据为第二算子的输入,通过将第一算子的输出数据传递给优化器,使得优化器可以根据第二算子的输入数据确定第二算子的输出数据是否需要保持目标物理表的行组属性,具体方式可以参见前述关于行组保持模式的相关内容,在此不再赘述。
在第二算子的原始表达式是逻辑表达式情况下,优化器基于存储信息对第二算子的原始表达式的优化例如可以为:将原始的基于解压后数据进行计算的逻辑表达式,优化为基于压缩数据进行计算的逻辑表达式。当然,在其他实施例中基于存储信息对逻辑表达式进行的优化还可以为其他方式,本申请对此不做限定。
在第二算子的原始表达式是物理表达式情况下,优化器基于存储信息对第二算子的原始表达式的优化例如可以为:将原始的基于64位运算实现的物理表达式,优化为基于32位运算实现的物理表达式。当然,在其他实施例中基于存储信息对物理表达式进行的优化还可以为其他方式,本申请对此不做限定。
本申请实施例中,在运行优化器对第二算子的原始表达式进行优化之后,可以运行所述优化器将对所述第二算子的原始表达式进行优化所得到的优化表达式传递给所述执行器,以及运行所述执行器基于所述输出块执行所述第二算子的所述优化表达式。从而,使得运行执行器可以执行第二算子的优化表达式,以提高数据库查询效率。
以数据库查询语句为SELECT sum(b)FROM t1,t2 WHERE t1.a<t2.a and t1.b<100and t2.c>50为例,数据库引擎处理查询语句的流程可以如图12所示。参考图12,对于客户端11发送的数据库查询语句,可以运行优化器1进行优化,其中优化器1可以针对语法的优化。例如一个查询语句中包括了A=B,B=1,则优化后可以为A=1,B=1。在优化器1优化之后,进一步可以根据优化器1的输出生成执行计划,该执行计划可以是逻辑执行计划或物理执行计划,进而可以运行执行器执行所生成的执行计划。
如图12所示,可以运行执行器将Scan算子的原始表达式传递给优化器2,运行优化器2根据对应的存储信息,对Scan算子的原始表达式进行优化,得到Scan算子的优化表达式并将优化表达式传递给执行器。进一步的,可以运行执行器基于预设的行组属性保持策略执行Scan算子的优化表达式,得到Scan算子的输出数据(记为输出数据1)。需要说明的是,针对Scan算子可以默认行组保持模式为保持,以简化实现;图12中执行器针对两个Scan算子需要分别与优化器2进行交互,为了简化图12中仅示出基于其中一个Scan算子与优化器2的交互。
然后,可以运行执行器将Filter算子的原始表达式以及输出数据1传递给优化器2,运行优化器2根据输出数据1确定Filter算子的行组保持模式,该行组保持模式可以为保持或者不保持,具体确定方式可以参见前述相关描述,在此不再赘述。另外,运行优化器2根据对应的存储信息对Filter算子的原始表达式进行优化得到Filter算子的优化表达式,并将优化表达式传递给Filter算子。进一步的,在行组保持模式为保持情况下,可以运行执行器基于预设的行组属性保持策略执行Filter算子的优化表达式,得到Filter算子的输出数据(记为输出数据2);在行组保持模式为不保持情况下,可以不基于预设的行组属性保持策略执行优化表达式,得到Filter算子的输出数据。需要说明的是,图12中执行器针对两个Filter算子需要分别与优化器2进行交互,为了简化图12中仅示出基于其中一个Filter算子与优化器的交互。
之后,假设Filter算子的行组保持模式为保持,则可以运行执行器将Join算子的原始表达式以及输出数据2传递给优化器2,运行优化器2根据输出数据2确定Join算子的行组保持模式,该行组保持模式可以为保持左表、保持右表、保持双表或者不保持,具体确定方式可以参见前述相关描述,在此不再赘述。另外,运行优化器2根据对应的存储信息对Join算子的原始表达式进行优化得到Join的优化表达式,并将优化表达式传递给Join算子。进一步的,在行组保持模式为保持情况下,可以运行执行器基于预设的行组属性保持策略执行Join算子的优化表达式,得到Join算子的输出数据;在行组保持模式为不保持情况下,可以不基于预设的行组属性保持策略执行优化表达式,得到Join算子的输出数据。需要说明的是,假设Filter算子的行组保持模式为不保持,则Join算子的行组保持模式也为不保持,Join算子的行组保持模式无需运行优化器根据Join算子的输入数据确定。
最后,可以运行执行器将Aggregate算子的原始表达式以及Join算子的输出数据2传递给优化器2,假设Join算子的行组保持模式为保持,则运行优化器2根据对应的存储信息对Aggregate算子的原始表达式进行优化得到Aggregate的优化表达式,并将优化表达式传递给Aggregate算子。进一步的,可以运行执行器执行Aggregate算子的优化表达式,得到Aggregate算子的输出数据,也即最终的输出结果。需要说明的是,由于聚合算子的输出为单值,因此聚合算子的行组保持模式固定为不保持,无需运行优化器根据Aggregate算子的输入数据确定。
本申请实施例提供的数据库操作方法,通过获得数据库查询语句对应第一算子的输入数据,输入数据是涉及数据库中的目标物理表,且数据库中目标物理表对应行组的存储信息针对第一算子是可用的,基于输入数据以及预设的行组属性保持策略,执行第一算子的表达式以得到第一算子的输出数据,实现了基于行组保持策略执行第一算子的表达式所得到的第一算子的输出数据,能够保持数据库中目标物理表的行组属性,由于第一算子的输出数据可以作为其他算子的输入数据,其他算子即为非叶子节点对应的算子,因此非叶子节点的输入数据能够保持数据库中目标物理表的行组属性,使得目标物理表对应行组的存储信息可以用于非叶子节点的执行,从而实现了确保行组的存储信息针对非叶子节点的可能性。
图13为本申请另一实施例提供数据库操作装置的结构示意图;参考附图13所示,本实施例提供了一种数据库操作装置,该装置可以执行上述图4所示的数据库操作方法中,具体的,该数据库操作装置可以包括:
获得模块131,用于获得数据库查询语句对应第一算子的输入数据,所述输入数据是涉及数据库中的目标物理表,且所述数据库中所述目标物理表对应行组的存储信息针对所述第一算子是可用的;
执行模块132,用于基于所述输入数据以及预设的行组属性保持策略,执行所述第一算子的表达式,以得到所述第一算子的输出数据,所述输出数据是以行为单元的块数据,且所述输出数据中的同一块对应所述目标物理表的同一行组。
可选的,所述执行模块132,具体用于:
在满足一定条件时,设置所述目标物理表的行组保持模式为保持;
在所述行组保持模式为保持的情况下,基于所述输入数据以及预设的行组属性保持策略,执行所述第一算子的表达式。
可选的,所述满足一定条件包括下述中的一种或多种:
所述输入数据为物理表,所述输入数据为以行为单元的块数据且所述输入数据针对所述目标物理表存在行数量大于或等于第一数量阈值的块,或者,所述输入数据为以行为单元的块数据且所述输入数据针对所述目标物理表的行数量之和大于或等于第二数量阈值。
可选的,所述输出数据中单个块的数据包括行组游标,所述行组游标包括所述目标物理表的表号及所述目标物理表对应行组的行组号。
可选的,所述行组属性保持策略包括:在当前输出块已满,或者待输出行与当前输出块中已输出行跨所述目标物理表对应的行组情况下,创建新输出块并将所述待输出行输出至所述新输出块中。
可选的,所述第一算子包括下述中的一种或多种:Scan算子、Filter算子或Join算子。
可选的,所述第一算子为Join算子,所述目标物理表包括左表和/或右表。
可选的,在所述输入数据中的左表对应块满足同一块对应同一行组的条件,所述输入数据中的右表对应块不满足同一块对应同一行组的条件情况下,所述目标关系包括左表而不包括右表。
可选的,在所述输入数据中的左表对应块不满足同一块对应同一行组的条件,所述输入数据中的右表对应块满足同一块对应同一行组的条件情况下,所述目标关系包括右表而不包括左表。
可选的,在所述输入数据中的左表对应块和右表对应块均满足同一块对应同一行组的条件情况下,所述目标关系包括左表和/或右表。
可选的,所述装置还包括:优化模块,所述优化模块用于:
针对所述数据库查询语句对应的第二算子,所述输出数据为所述第二算子的输入,根据所述目标物理表对应行组的存储信息对所述第二算子的表达式进行优化。
可选的,所述执行模块132,具体用于:运行执行器基于所述输入数据以及预设的行组属性保持策略,执行所述第一算子的表达式,以得到所述第一算子的输出数据;
所述执行模块132,还用于运行所述执行器将所述输出数据以及所述第二算子的原始表达式传递给优化器;
所述优化模块,具体用于运行所述优化器基于所述输出数据从所述数据库获得所述目标物理表对应行组的存储信息,并根据所述存储信息对所述原始表达式进行优化。
可选的,所述优化模块,还用于运行所述优化器将对所述第二算子的原始表达式进行优化所得到的优化表达式传递给所述执行器;
所述执行模块132,还用于运行所述执行器基于所述输出块执行所述第二算子的所述优化表达式。
图13所示装置可以执行图4所示实施例的方法,本实施例未详细描述的部分,可参考对图4所示实施例的相关说明。该技术方案的执行过程和技术效果参见图4所示实施例中的描述,在此不再赘述。
在一个可能的实现中,图13所示数据库操作装置的结构可实现为计算机设备。如图14所示,该计算机设备可以包括:处理器141和存储器142。其中,存储器142用于存储支持计算机设备执行上述图4所示实施例中提供的数据库操作方法的程序,处理器141被配置为用于执行存储器142中存储的程序。
程序包括一条或多条计算机指令,其中,一条或多条计算机指令被处理器141执行时能够实现如下步骤:
获得数据库查询语句对应第一算子的输入数据,所述输入数据是涉及数据库中的目标物理表,且所述数据库中所述目标物理表对应行组的存储信息针对所述第一算子是可用的;
基于所述输入数据以及预设的行组属性保持策略,执行所述第一算子的表达式,以得到所述第一算子的输出数据,所述输出数据是以行为单元的块数据,且所述输出数据中的同一块对应所述目标物理表的同一行组。
可选的,处理器141还用于执行前述图4所示实施例中的全部或部分步骤。
其中,计算机设备的结构中还可以包括通信接口143,用于计算机设备与其他设备或通信网络通信。
另外,本申请实施例提供了一种计算机存储介质,用于储存计算机设备所用的计算机软件指令,其包含用于执行上述图4所示方法实施例所涉及的程序。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程设备的处理器以产生一个机器,使得通过计算机或其他可编程设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

Claims (16)

1.一种数据库操作方法,所述方法包括:
获得数据库查询语句对应第一算子的输入数据,所述输入数据是涉及数据库中的目标物理表,且所述数据库中所述目标物理表对应行组的存储信息针对所述第一算子是可用的;
基于所述输入数据以及预设的行组属性保持策略,执行所述第一算子的表达式,以得到所述第一算子的输出数据,所述输出数据是以行为单元的块数据,且所述输出数据中的同一块对应所述目标物理表的同一行组。
2.根据权利要求1所述的方法,所述基于所述输入数据以及预设的行组属性保持策略,执行所述第一算子的表达式,包括:
在满足一定条件时,设置所述目标物理表的行组保持模式为保持;
在所述行组保持模式为保持的情况下,基于所述输入数据以及预设的行组属性保持策略,执行所述第一算子的表达式。
3.根据权利要求2所述的方法,所述满足一定条件包括下述中的一种或多种:
所述输入数据为物理表,所述输入数据为以行为单元的块数据且所述输入数据针对所述目标物理表存在行数量大于或等于第一数量阈值的块,或者,所述输入数据为以行为单元的块数据且所述输入数据针对所述目标物理表的行数量之和大于或等于第二数量阈值。
4.根据权利要求1所述的方法,所述输出数据中单个块的数据包括行组游标,所述行组游标包括所述目标物理表的表号及所述目标物理表对应行组的行组号。
5.根据权利要求1-4任一项所述的方法,所述行组属性保持策略包括:在当前输出块已满,或者待输出行与当前输出块中已输出行跨所述目标物理表对应的行组情况下,创建新输出块并将所述待输出行输出至所述新输出块中。
6.根据权利要求5所述的方法,所述第一算子包括下述中的一种或多种:Scan算子、Filter算子或Join算子。
7.根据权利要求6所述的方法,所述第一算子为Join算子,所述目标物理表包括左表和/或右表。
8.根据权利要求7所述的方法,在所述输入数据中的左表对应块满足同一块对应同一行组的条件,所述输入数据中的右表对应块不满足同一块对应同一行组的条件情况下,所述目标关系包括左表而不包括右表。
9.根据权利要求7所述的方法,在所述输入数据中的左表对应块不满足同一块对应同一行组的条件,所述输入数据中的右表对应块满足同一块对应同一行组的条件情况下,所述目标关系包括右表而不包括左表。
10.根据权利要求7所述的方法,在所述输入数据中的左表对应块和右表对应块均满足同一块对应同一行组的条件情况下,所述目标关系包括左表和/或右表。
11.根据权利要求1-4任一项所述的方法,所述方法还包括:
针对所述数据库查询语句对应的第二算子,所述输出数据为所述第二算子的输入,根据所述目标物理表对应行组的存储信息对所述第二算子的表达式进行优化。
12.根据权利要求11所述的方法,所述基于所述输入数据以及预设的行组属性保持策略,执行所述第一算子的表达式,以得到所述第一算子的输出数据,包括:运行执行器基于所述输入数据以及预设的行组属性保持策略,执行所述第一算子的表达式,以得到所述第一算子的输出数据;
所述方法还包括:
运行所述执行器将所述输出数据以及所述第二算子的原始表达式传递给优化器;
所述根据所述目标物理表对应行组的存储信息对所述第二算子的表达式进行优化,包括:
运行所述优化器基于所述输出数据从所述数据库获得所述目标物理表对应行组的存储信息,并根据所述存储信息对所述原始表达式进行优化。
13.根据权利要求12所述的方法,所述方法还包括:
运行所述优化器将对所述第二算子的原始表达式进行优化所得到的优化表达式传递给所述执行器;
运行所述执行器基于所述输出块执行所述第二算子的所述优化表达式。
14.一种数据库操作装置,包括:
获得模块,用于获得数据库查询语句对应第一算子的输入数据,所述输入数据是涉及数据库中的目标物理表,且所述数据库中所述目标物理表对应行组的存储信息针对所述第一算子是可用的;
执行模块,用于基于所述输入数据以及预设的行组属性保持策略,执行所述第一算子的表达式,以得到所述第一算子的输出数据,所述输出数据是以行为单元的块数据,且所述输出数据中的同一块对应所述目标物理表的同一行组。
15.一种计算机设备,包括:存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行时实现如权利要求1至13中任一项所述的方法。
16.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包含至少一段代码,所述至少一段代码可由计算机执行,以控制所述计算机执行如权利要求1至13中任一项所述的方法。
CN202010475806.1A 2020-05-29 2020-05-29 数据库操作方法、装置、设备及存储介质 Active CN113297244B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010475806.1A CN113297244B (zh) 2020-05-29 2020-05-29 数据库操作方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010475806.1A CN113297244B (zh) 2020-05-29 2020-05-29 数据库操作方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN113297244A true CN113297244A (zh) 2021-08-24
CN113297244B CN113297244B (zh) 2022-05-06

Family

ID=77318089

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010475806.1A Active CN113297244B (zh) 2020-05-29 2020-05-29 数据库操作方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN113297244B (zh)

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6453313B1 (en) * 1999-07-06 2002-09-17 Compaq Information Technologies Group, L.P. Database management system and method for dequeuing rows published to a database table
US20110219020A1 (en) * 2010-03-08 2011-09-08 Oks Artem A Columnar storage of a database index
US20160357740A1 (en) * 2014-02-24 2016-12-08 Huawei Technologies Co., Ltd. Metadata Updating Method and Apparatus Based on Columnar Storage in Distributed File System, and Host
US20170039280A1 (en) * 2015-08-05 2017-02-09 International Business Machines Corporation Retrieving and displaying data from a columnar database
US20170147644A1 (en) * 2015-11-20 2017-05-25 Sap Se Query optimization using join cardinality
CN106874437A (zh) * 2017-02-04 2017-06-20 中国人民大学 面向数据库一体机的内存数据仓库行列存储转换实现方法
US20180060390A1 (en) * 2016-08-31 2018-03-01 Sap Se Generating Faster and Efficient Database Query Execution Plans
CN108197275A (zh) * 2018-01-08 2018-06-22 中国人民大学 一种分布式文件列存储索引方法
CN109241093A (zh) * 2017-06-30 2019-01-18 华为技术有限公司 一种数据查询的方法、相关装置及数据库系统
CN110362572A (zh) * 2019-06-25 2019-10-22 浙江邦盛科技有限公司 一种基于列式存储的时序数据库系统
CN110968594A (zh) * 2018-09-30 2020-04-07 阿里巴巴集团控股有限公司 数据库查询优化方法、引擎及存储介质
CN110968579A (zh) * 2018-09-30 2020-04-07 阿里巴巴集团控股有限公司 执行计划的生成与执行方法、数据库引擎及存储介质

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6453313B1 (en) * 1999-07-06 2002-09-17 Compaq Information Technologies Group, L.P. Database management system and method for dequeuing rows published to a database table
US20110219020A1 (en) * 2010-03-08 2011-09-08 Oks Artem A Columnar storage of a database index
US20160357740A1 (en) * 2014-02-24 2016-12-08 Huawei Technologies Co., Ltd. Metadata Updating Method and Apparatus Based on Columnar Storage in Distributed File System, and Host
US20170039280A1 (en) * 2015-08-05 2017-02-09 International Business Machines Corporation Retrieving and displaying data from a columnar database
US20170147644A1 (en) * 2015-11-20 2017-05-25 Sap Se Query optimization using join cardinality
US20180060390A1 (en) * 2016-08-31 2018-03-01 Sap Se Generating Faster and Efficient Database Query Execution Plans
CN106874437A (zh) * 2017-02-04 2017-06-20 中国人民大学 面向数据库一体机的内存数据仓库行列存储转换实现方法
CN109241093A (zh) * 2017-06-30 2019-01-18 华为技术有限公司 一种数据查询的方法、相关装置及数据库系统
CN108197275A (zh) * 2018-01-08 2018-06-22 中国人民大学 一种分布式文件列存储索引方法
CN110968594A (zh) * 2018-09-30 2020-04-07 阿里巴巴集团控股有限公司 数据库查询优化方法、引擎及存储介质
CN110968579A (zh) * 2018-09-30 2020-04-07 阿里巴巴集团控股有限公司 执行计划的生成与执行方法、数据库引擎及存储介质
CN110362572A (zh) * 2019-06-25 2019-10-22 浙江邦盛科技有限公司 一种基于列式存储的时序数据库系统

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
GRAEFE, GOETZ: "Efficient columnar storage in B-trees", 《SIGMOD RECORD》 *
丁祥武: "列存储系统的若干关键技术研究", 《中国博士学位论文全文数据库 信息科技辑》 *
张光辉: "列存储系统中并行查询处理的研究与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 *
梁堰波: "深入分析Parquet列式存储格式", 《HTTPS://WWW.INFOQ.CN/ARTICLE/IN-DEPTH-ANALYSIS-OF-PARQUET-COLUMN-STORAGE-FORMAT》 *
甘茂然: "分布式非事务列式存储引擎的设计与实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 *

Also Published As

Publication number Publication date
CN113297244B (zh) 2022-05-06

Similar Documents

Publication Publication Date Title
US20220027195A1 (en) System and method for batch evaluation programs
CN111563101B (zh) 执行计划优化方法、装置、设备及存储介质
CN105824957B (zh) 分布式内存列式数据库的查询引擎系统及查询方法
US20160034547A1 (en) Systems and methods for an sql-driven distributed operating system
CN110968579B (zh) 执行计划的生成与执行方法、数据库引擎及存储介质
US10970343B2 (en) Adapting database queries for data virtualization over combined database stores
WO2017019879A1 (en) Multi-query optimization
CN109241159B (zh) 一种数据立方体的分区查询方法、系统及终端设备
CN111339071A (zh) 一种多源异构数据的处理方法及装置
US20070250517A1 (en) Method and Apparatus for Autonomically Maintaining Latent Auxiliary Database Structures for Use in Executing Database Queries
CN112631754A (zh) 数据处理方法、装置、存储介质及电子装置
CN116483850A (zh) 数据处理方法、装置、设备以及介质
CN105210059A (zh) 一种数据处理方法及系统
CN111078705A (zh) 基于Spark平台建立数据索引方法及数据查询方法
CN113297244B (zh) 数据库操作方法、装置、设备及存储介质
US12072886B2 (en) Method and device for accelerating database operation
CN113254480A (zh) 一种数据查询方法及装置
CN111046066A (zh) 远程数据库对象的优化方法、装置、设备及存储介质
CN116501761A (zh) 查询优化方法、设备及存储介质
CN116049193A (zh) 数据存储方法及装置
CN109902067B (zh) 文件处理方法、装置、存储介质及计算机设备
CN112749189A (zh) 数据查询方法及装置
US20240087076A1 (en) Graph data calculation method and apparatus
US11816582B2 (en) Heuristic search for k-anonymization
US11640399B2 (en) Database query processing for data in a remote data store

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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20231218

Address after: Room 1-2-A06, Yungu Park, No. 1008 Dengcai Street, Sandun Town, Xihu District, Hangzhou City, Zhejiang Province

Patentee after: Aliyun Computing Co.,Ltd.

Address before: Box 847, four, Grand Cayman capital, Cayman Islands, UK

Patentee before: ALIBABA GROUP HOLDING Ltd.