结构化查询语言程序的计算方法、调整方法和服务器技术

技术编号:9935441 阅读:101 留言:0更新日期:2014-04-18 07:22
一种结构化查询语言SQL程序的计算方法,其特征在于,所述方法包括:服务器获取待计算的原始SQL程序,所述原始SQL程序携带有标识信息;根据所述原始SQL程序的标识信息,在优化数据库中提取所述标识信息对应的优化SQL程序;其中,所述优化SQL程序是所述服务器对原始数据库中的所有原始SQL程序进行分解和重组的优化处理后得到的,所述优化SQL程序包括优化逻辑结果;根据所述优化SQL程序的优化逻辑结果的内容,对所述优化SQL程序进行计算,以获得所述原始SQL程序的计算结果。

【技术实现步骤摘要】
结构化查询语言程序的计算方法、调整方法和服务器
本申请涉及数据查询领域,尤其涉及一种结构化查询语言SQL程序的计算方法、调整方法和服务器。
技术介绍
随着互联网的快速发展,产生了大量的数据。对这些数据的操作,如查询等,占用了大量的计算资源。并且由于数据查询操作的相似性,导致大量信息的重复计算。例如,作为电子商务网站中,为完成数据操作,每天都要运行一万到两万个结构化查询语言(StructuredQueryLanguage,SQL)程序,在运行时,通过调度系统实现所有SQL程序的顺序调度。这些SQL程序看上去是为了解决各种各样的业务问题,但其本质上是对于源数据的类似操作,由于计算的相似性,导致大量的重复计算。现有技术下,SQL程序的计算方法为:对每个需要运行的SQL程序都进行完整的计算。现有的SQL程序的计算方法的缺点是:很多SQL程序都是对源数据的类似操作,因此,对每个SQL程序都进行完整的计算相当于每次都对源数据进行扫描,在源数据量大的情况下,这种运算严重浪费了计算资源,而且延长了计算时间,计算效率低。
技术实现思路
本申请的目的是,提供一种SQL程序的计算方法、调整方法和服务器,以实现服务器自动对要进行运算的原始SQL程序进行调整得到优化SQL程序,提高对原始SQL程序计算的效率,以及减轻服务器对源数据的访问负担。为实现上述目的,本申请提供了一种SQL程序的计算方法,所述方法包括:服务器获取待计算的原始SQL程序,所述原始SQL程序携带有标识信息;根据所述原始SQL程序的标识信息,在优化数据库中提取所述标识信息对应的优化SQL程序;其中,所述优化SQL程序是所述服务器对原始数据库中的所有原始SQL程序进行分解和重组的优化处理后得到的,所述优化SQL程序包括优化逻辑结果;根据所述优化SQL程序的优化逻辑结果的内容,对所述优化SQL程序进行计算,以获得所述原始SQL程序的计算结果。本申请还提供了一种SQL程序的调整方法,所述方法包括:使用语法解析器对所有所述原始SQL程序按照最小的语法结构词进行拆分处理获得语法节点,并且将拆分后的所有语法节点按照各个节点之间的原始语法关系组装为一个语法树;对所有原始SQL程序的语法节点组装后的所述语法树之间进行匹配运算,得到匹配的最大子树;将所述匹配的最大子树的计算逻辑的所述优化逻辑结果保存在第二缓存表中;使用第二缓存表中保存的所述计算逻辑的优化逻辑结果替换所述原始SQL程序中与所述匹配的最大子树对应的子程序,得到优化SQL程序。相应地,本申请还提供了一种服务器,所述服务器包括:获取单元,用于服务器获取待计算的原始SQL程序,所述原始SQL程序携带有标识信息;提取单元,用于根据所述原始SQL程序的标识信息,在优化数据库中提取所述标识信息对应的优化SQL程序;其中,所述优化SQL程序是所述服务器对原始数据库中的所有原始SQL程序进行分解和重组的优化处理后得到的,所述优化SQL程序包括优化逻辑结果;计算单元,用于根据所述优化SQL程序的优化逻辑结果的内容,对所述优化SQL程序进行计算,以获得所述原始SQL程序的计算结果。相应地,本申请还提供了一种服务器,所述服务器包括:建树单元,用于使用语法解析器对所有所述原始SQL程序按照最小的语法结构词进行拆分处理获得语法节点,并且将拆分后的所有语法节点按照各个节点之间的原始语法关系组装为一个语法树;匹配单元,用于对所有原始SQL程序的语法节点组装后的所述语法树之间进行匹配运算,得到匹配的最大子树;存储单元,用于将所述匹配的最大子树的计算逻辑的所述优化逻辑结果保存在第二缓存表中;替换单元,用于使用第二缓存表中保存的所述计算逻辑的优化逻辑结果替换所述原始SQL程序中与所述匹配的最大子树对应的子程序,得到优化SQL程序。因此,本申请实现了服务器对大量的原始SQL程序进行分解和重组,得到优化SQL程序,并且对原始SQL程序公用的计算逻辑的优化逻辑结果存储在第二缓存表中,将优化逻辑结果的内容存储在第一缓存表中,使得对原始SQL的计算可以替换为对优化SQL程序的计算,提高了对原始SQL程序计算的效率,以及减轻了服务器对源数据的访问负担。附图说明图1为本申请实施例提供的一种SQL程序的计算方法流程图;图2为本申请实施例提供的一种SQL程序的调整方法流程图;图3(a)为本申请实施例提供的原始SQL程序1对应的树结构示意图;图3(b)为本申请实施例提供的原始SQL程序2对应的树结构示意图;图3(c)为本申请实施例提供的原始SQL程序1和原始SQL程序2的最大匹配子树示意图;图4为本申请实施例提供的一种服务器的示意图;图5为本申请实施例提供的一种服务器的示意图。具体实施方式下面通过附图和实施例,对本申请的技术方案做进一步的详细描述。本申请提供的SQL程序的计算方法及服务器,通过对原始SQL程序进行分组和重组,提取到多个原始SQL程序中公用的计算逻辑,将该公用的计算逻辑及计算逻辑的优化逻辑结果保存在第二缓存表中,将该优化逻辑结果的内容保存在第一缓存表中,使用公用的计算逻辑的优化逻辑结果代替原始SQL程序中的匹配的公用的计算逻辑,构建出优化SQL程序,并将优化SQL程序保存在优化数据库中。在服务器对原始SQL程序进行计算时,服务器根据原始SQL程序的标识信息在优化数据库中获取对应的优化SQL程序,通过对优化SQL程序的计算完成对原始SQL程序的计算。从而实现服务器自动对要进行运算的原始SQL程序进行优化得到优化SQL程序,提高对原始SQL程序计算的效率,以及减轻服务器对源数据的访问负担。本申请实施例提供的SQL程序的计算方法和服务器在实际应用时,作为一种新的计算方法可应用于被开源语法分析器Antlr支持的数据库系统的大数据处理方案中,在服务器对大量的SQL程序进行计算时,通过对原始SQL程序的分解和重组,提取到多个SQL程序中公用的计算逻辑,并将该公用的计算逻辑及该计算逻辑的优化逻辑结果保存在缓存表中,使用公用的优化逻辑结果代替原始SQL程序中的匹配的部分,构建出优化SQL程序。通过对SQL程序的计算实现对原始SQL程序的计算,提高了对原始SQL程序计算的效率,以及减轻了服务器对源数据的访问负担。如图1所示,其为本申请实施例提供的一种SQL程序的计算方法流程图。该实施例主体是服务器,其中详细描述了如何对原始SQL程序进行计算。本申请实施例SQL程序的计算方法具体包括以下步骤:步骤101,服务器获取待计算的原始SQL程序,所述原始SQL程序携带有标识信息;具体地,当服务器需要对大量的原始SQL程序进行计算时,可以首先访问原始数据库,将要进行计算的数据库从原始数据库中提取出来。其中,原始数据库中保存了所有需要进行计算的原始SQL程序。每一个SQL程序都有一个唯一的标识信息,在原始数据库中除了保存SQL程序外,还保存了对应的SQL程序的标识信息。步骤102,根据所述原始SQL程序的标识信息,在优化数据库中提取所述标识信息对应的优化SQL程序;其中,所述优化SQL程序是所述服务器对原始数据库中的所有原始SQL程序进行分解和重组的优化处理后得到的,所述优化SQL程序包括优化逻辑结果;服务器在离线时,可以首先对原始数据库中的原始SQL程序进行优化调整,并将得到本文档来自技高网...
结构化查询语言程序的计算方法、调整方法和服务器

【技术保护点】
一种结构化查询语言SQL程序的计算方法,其特征在于,所述方法包括:服务器获取待计算的原始SQL程序,所述原始SQL程序携带有标识信息;根据所述原始SQL程序的标识信息,在优化数据库中提取所述标识信息对应的优化SQL程序;其中,所述优化SQL程序是所述服务器对原始数据库中的所有原始SQL程序进行分解和重组的优化处理后得到的,所述优化SQL程序包括优化逻辑结果;根据所述优化SQL程序的优化逻辑结果的内容,对所述优化SQL程序进行计算,以获得所述原始SQL程序的计算结果。

【技术特征摘要】
1.一种结构化查询语言SQL程序的计算方法,其特征在于,所述方法包括:服务器获取待计算的原始SQL程序,所述原始SQL程序携带有标识信息;根据所述原始SQL程序的标识信息,在优化数据库中提取所述标识信息对应的优化SQL程序;其中,所述优化SQL程序是所述服务器对原始数据库中的所有原始SQL程序进行分解和重组的优化处理后得到的,所述优化SQL程序包括优化逻辑结果;根据所述优化SQL程序的优化逻辑结果的内容,对所述优化SQL程序进行计算,以获得所述原始SQL程序的计算结果;所述服务器对原始数据库中的所有原始SQL程序进行分解和重组的优化处理具体为:使用语法解析器,对所有所述原始SQL程序按照最小的语法结构词进行拆分处理获得语法节点,并且将拆分后的所有语法节点按照各个节点之间的原始语法关系组装为一个语法树;对所有原始SQL程序的语法节点组装后的所述语法树之间进行匹配运算,得到匹配的最大子树;将所述匹配的最大子树的计算逻辑的所述优化逻辑结果保存在第二缓存表中;使用第二缓存表中保存的所述计算逻辑的优化逻辑结果替换所述原始SQL程序中与所述匹配的最大子树对应的子程序,得到优化SQL程序。2.根据权利要求1所述的SQL程序的计算方法,其特征在于,所述获取待计算的原始SQL程序之后,还包括:根据所述原始SQL程序的标识信息,在所述优化数据库中不能获取到所述标识信息对应的优化SQL程序时,对所述原始SQL程序进行计算。3.根据权利要求1所述的SQL程序的计算方法,其特征在于,所述方法还包括:将所述优化逻辑结果的内容存放于第一缓存表中。4.根据权利要求1所述的SQL程序的计算方法,其特征在于,所述使用第二缓存表中保存的所述计算逻辑的优化逻辑结果替换所述原始SQL程序中与所述匹配的最大子树对应的子程序,得到优化SQL程序具体为:使用所述第二缓存表中保存的所述的优化逻辑结果替换所述语法树中与所述优化逻辑结果所对应的最大子树相应的优化分支,所述优化分支是所述原始SQL程序中与所述匹配的最大子树对应的子程序的树形结构;从所述优化分支向所述语法树的根部扫描,得到所述优化SQL程序的树形结构,从而得到所述优化SQL程序。5.根据权利要求1所述的SQL程序的计算方法,其特征在于,所述使用所述第二缓存表中保存的所述的优化逻辑结果替换所述语法树中与所述优化逻辑结果所对应的最大子树相应的优化分支之前还包括:使用语法解析器对每一条所述原始SQL程序按照最小的语法结构进行拆分处理,并且将拆分后的所有语法节点按照各个粒度之间的语法关系组装为一个语法树。6.一种结构化查询语言SQL程序的调整方法,其特征在于,所述方法包括:使用语法解析器对所有原始SQL程序按照最小的语法结构词进行拆分处理获得语法节点,并且将拆分后的所有语法节点按照各个节点之间的原始语法关系组装为一个语法树;对所有原始SQL程序的语法节点组装后的所述语法树之间进行匹配运算,得到匹配的最大子树;将所述匹配的最大子树的计算逻辑的优化逻辑结果保存在第二...

【专利技术属性】
技术研发人员:黄明
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1