苏 畅
(黑龙江工业学院,黑龙江 鸡西 158100)
在数据库建设过程中,查询引擎具备十分重要的地位与作用,提升数据库查询功能的关键在于做好查询优化工作。以往传统数据库的应用过程中存在多种优化查询方法,但相较传统数据库而言,分布式列式数据库的数据存储位置、信息读取方式以及组织结构分布等方面均存在较大差异,查询优化方式各不相同,这便导致传统数据查询优化方式并不适用于分布式分列数据库。对此,应基于内存分布式列式数据库的自身特点,不断优化查询方式,拓展其查询范围,提升系统的运行效果。
(1)关系数据库。在关系数据库中,数据之间的内在关系主要以表格的形式体现,其核心内容为表格,描述对象为数据内容,表格中存在多个描述对象,因此关系模型也存在多种内在的描述关系。描述关系模型的过程被称为关系代数,其主要以表格模型为操作基础,针对分布式列式数据库关系进行查询操作,体现了关系代数的运用。并、交、差、选择、组合以及投影等均属于关系代数的操作,对于不同操作模式需要利用不同符号表示,以有效体现出两个关系主体之间的操作特征。在对分布式列式数据库进行查询请求时应通过不同等价代数关系进行表达,其查询优化工作的基础便为时间应用、空间应用以及代数关系转化等。
(2)列式存储及查询优化技术。列式数据库一般通过二维表的模式进行构建,且计算机主要通过连续地址的方式存放模型数据,将描述对象的空间逻辑结构转换为平面物理存储模式。不同于传统的数据库系统,列式数据库主要采用列式存储方式,在存储完一列之后再存储下一列。而传统数据库则采用行存储方式,即在存储完一行之后再存储下一行。行与列的存储方式均具备自身的优缺点。为了提升数据的查询效率,数据存储方式方面应采用行表顺序,而模型构建方面则采用列式方式。除此之外,还可以应用混合索引、行号索引等存储方式,根据不同的数据库应用领域进行针对性选择,从而体现不同的应用优劣势。
(3)分布式环境查询优化技术。分布式列式数据库在数据节点的分布方面存在交互特征,内部分布式环境在进行信息查询与检索时也存在较多差异,且查询工作的关键在于节点之间的传输成本。在数据查询过程中,系统会将不同的查询任务分配至不同的数据节点中,且期间必须考虑数据在网络中的传输成本。同时,查询优化的关键在于执行正确的数据分布策略与查询任务执行策略,并根据分布式数据库的结构特点,将数据分散至不同物理节点中,有效提升查询效果。
(4)数据库查询的基本流程。数据库应用的关键内容便是查询任务的执行,其也更好地体现了数据库的应用效率。查询引擎可以有效接收客户端的用户查询请求,并由DC转化成语言,在分析之后确定查询计划,之后在由执行引擎完成查询工作任务,最终向客户端反馈查询结果。一般而言,数据库查询流程可以归纳如下:一是客户端发送查询语言,请求至DC层面;二是DC将客户查询请求发送至QE节点,之后解析查询语言;三是QE解析查询请求后执行查询计划,并将其发送至主控节点,进行位置提示;四是DC向客户端告知查询应用的目标QE节点;五是目标QE节点与客户端进行链接,建立关系;六是计划节点向其他QE节点发送数据查询请求;七是QE节点向下层CS发送数据查询请求;八是CS反馈数据信息,并执行命令;九是根据执行要求汇总不同QE节点计算的数据,计算最终结果;十是向客户端反馈最终查询结果,完成全部查询任务。其具体流程见下图1所示。
图1 数据库查询基本流程
(1)查询优化的基本流程。数据查询工作开始于查询任务执行命令,之后经过层层数据的传输与转化形成最终的物理操作计划。且其流程可以分为语法解析阶段、预处理阶段、根据规则执行转化阶段、查询并计算代价阶段以及确定最优查询路径阶段。首先是语法解析阶段,此阶段主要语法分析查询语言,并将语言分解为具有代表意义的词汇,之后对不同词汇进行语法分析,确定不同单词之间的语言逻辑关系。在此阶段需要筛选不符合语法规则的查询语言,确保执行阶段的查询语言负荷规则,从而有效完成后期的查询任务。其次是预处理阶段,主要预先处理语法树中的表达方式,减少执行阶段的工作量。在此阶段中主要整理去除多余的词汇前后缀,并通过语法树的预处理遍历,形成具有逻辑执行价值的初始查询计划。再次是执行计划优化阶段,主要适当调整上阶段的查询计划,通过关系代数模型完成技术操作,并通过计划调整减少执行任务量的工作目标,在提升查询工作效率的基础上,确定最优的查询应用与计划方案。最后是物理优化,其主要利用不同的优化选择方式生成最优选择价值的空间。
(2)查询优化设计。一是设计查询引擎,解析与优化查询语言的语句,并执行查询任务。期间主要由查询优化与任务执行优化等两方面进行,且其彼此保持独立,而任务执行优化则可以由计划解析、执行、缓存管理等方面进行,从而有效提升优化效率。二是数据存储与分布方案,数据库的基本功能为数据存储,其也属于查询优化的工作基础。在查询优化方面应选择Group-Key列式存储方式,确保数据之间的关联性,通过扁平化的集成模式体现不同数据间的交互特点,提高查询效率。
(3)算法细节优化。不同节点的数据计算也影响着最终的查询效率,应重视优化算法细节,从而有效提升不同QE节点的计算效率,本系统中应采用遗传算法与贪心算法。
(4)查询任务树设计。查询语法树结构直接影响着查询优化目标,因此应由语法树结构以及树的不同节点完成任务树的设计工作,通过合理调整系统结构提高信息的处理效率。
实现查询优化应以数据查询流程为基础,主要分为逻辑计划优化、预处理模块优化、规则优化以及物理优化等过程。逻辑计划数据结构对应一颗语法树,且将查询任务分解为不同模块,通过分解信息与查询模块的匹配实现查询任务的无歧义检索。预处理主要去除冗余部分,实现预期的工作目标。规则优化确保查询服务契合逻辑计划,确保无论数据发生怎样变化,其均可以在语法树结构中体现逻辑关系。物理优化主要根据系统的状态进行查询计算,通过调用逻辑计划,形成最优路径。在查询优化策略过程中需要合理的想象,要在考虑非查询任务的基础上,满足实际的查询任务工作需求,结合使用列式存储与应用模型关系,确保关系代数的优化操作拓展至数据库建设与实际应用过程中,从而达到预期的查询优化设计结果。
随着计算机硬件技术的快速发展,内存的使用效率与使用量也得到进一步提升,作为提高数据库应用效率的关键因素,查询优化可以促使分布式列式数据库得到更好发展,从而有效推动数据库应用技术的发展与不断进步。